UPD — Universal Private DollarSDK Reference
React Hooks
UPDProvider, useUPD, useCollateral, and useStabilizer — React integration for the UPD SDK.
React Hooks
npm install @permissionless-technologies/upd-sdkUPDProvider
import { UPDProvider } from '@permissionless-technologies/upd-sdk/react'
function App() {
return (
<UPDProvider chainId={1}>
<YourApp />
</UPDProvider>
)
}useUPD
import { useUPD } from '@permissionless-technologies/upd-sdk/react'
import { formatUnits, parseUnits } from 'viem'
function UPDBalance() {
const { balance, isLoading, mint, burn } = useUPD()
if (isLoading) return <div>Loading...</div>
return (
<div>
<p>UPD Balance: {formatUnits(balance, 18)} UPD</p>
<button onClick={() => mint({ ethAmount: parseEther('1') })}>
Mint 1 ETH worth of UPD
</button>
</div>
)
}useUPD return values
| Property | Type | Description |
|---|---|---|
balance | bigint | UPD balance of connected wallet |
isLoading | boolean | Loading state |
mint | (params) => Promise<...> | Mint UPD |
burn | (params) => Promise<...> | Burn UPD |
stake | (params) => Promise<...> | Stake UPD |
unstake | (params) => Promise<...> | Unstake sUPD |
useCollateral
import { useCollateral } from '@permissionless-technologies/upd-sdk/react'
function SystemHealth() {
const { ratio, totalCollateral, totalSupply, ethPrice } = useCollateral()
return (
<div>
<p>Collateralization: {(Number(ratio) / 100).toFixed(1)}%</p>
<p>Total UPD supply: {formatUnits(totalSupply, 18)} UPD</p>
<p>ETH price: ${(Number(ethPrice) / 1e18).toFixed(2)}</p>
</div>
)
}useStabilizer
import { useStabilizer } from '@permissionless-technologies/upd-sdk/react'
function MyStabilizer({ tokenId }: { tokenId: bigint }) {
const { position, isLoading, depositCollateral, withdrawCollateral } = useStabilizer(tokenId)
if (isLoading) return <div>Loading...</div>
return (
<div>
<p>Allocated stETH: {formatUnits(position.allocatedStEth, 18)}</p>
<p>UPD backed: {formatUnits(position.updBacked, 18)}</p>
<p>Utilization: {position.utilization.toString()}%</p>
</div>
)
}