@tbookdev/vault-react-sui
v0.1.1
Published
React hooks and provider for TBook Vault Gateway on Sui
Readme
@tbookdev/vault-react-sui
Headless React hooks and provider for TBook Sui vault integrations.
This package assumes your app already provides:
QueryClientProviderfrom@tanstack/react-querySuiClientProviderandWalletProviderfrom@mysten/dapp-kit
Install
pnpm add @tbookdev/vault-react-sui @tbookdev/vault-sdk-suiProvider
import { TBookSuiVaultProvider } from "@tbookdev/vault-react-sui";
export function AppProviders({ children }: { children: React.ReactNode }) {
return (
<TBookSuiVaultProvider network="testnet" vaultId="rcusdp-sui">
{children}
</TBookSuiVaultProvider>
);
}Hooks
import {
useSuiDeposit,
useSuiTransactionHistory,
useSuiUsdcBalance,
useSuiVaultBalances,
useSuiVaultInfo,
} from "@tbookdev/vault-react-sui";
function VaultPanel() {
const vaultInfo = useSuiVaultInfo();
const balances = useSuiVaultBalances();
const usdc = useSuiUsdcBalance();
const history = useSuiTransactionHistory();
const deposit = useSuiDeposit();
return (
<button onClick={() => deposit.mutate({ amount: 100_000_000n })}>
Deposit 100 USDC
</button>
);
}Transaction Builders
local-sdk builds Sui transaction bytes in the browser through
@tbookdev/vault-sdk-sui. It is the default on every network.
The API server base URL is selected from network, independent of
txBuilderMode: testnet points at the deployed sandbox Gateway API, while
mainnet stays empty until the production Gateway API is deployed.
If gateway-api is selected on a network without a configured Gateway API,
the write hook reports a configuration error only when it tries to build the
transaction through the API.
<TBookSuiVaultProvider network="testnet" txBuilderMode="local-sdk">
{children}
</TBookSuiVaultProvider>gateway-api calls the selected TBook Gateway API to build unsigned transaction
bytes, then signs and executes them with the connected Sui wallet. Select it
explicitly when you want API-built transactions.
<TBookSuiVaultProvider
network="testnet"
txBuilderMode="gateway-api"
>
{children}
</TBookSuiVaultProvider>