UNPKG

wagmi

Version:

React Hooks for Ethereum

533 lines • 13.9 kB
import { Actions } from '@wagmi/core/tempo'; import { useChainId } from '../../hooks/useChainId.js'; import { useConfig } from '../../hooks/useConfig.js'; import { useMutation, useQuery, } from '../../utils/query.js'; /** * Hook for getting information about the current zone authorization token. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { data, isLoading } = Hooks.zone.useAuthorizationTokenInfo({ * chainId: zoneChain.id, * }) * * if (isLoading) return <div>Loading...</div> * return <div>Expires At: {data?.expiresAt.toString()}</div> * } * ``` * * @param parameters - Parameters. * @returns Query result with the current authorization token info. */ export function useAuthorizationTokenInfo(parameters = {}) { const config = useConfig(parameters); const chainId = useChainId({ config }); const options = Actions.zone.getAuthorizationTokenInfo.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, }); return useQuery(options); } /** * Hook for getting deposit processing status for a Tempo block number. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { data, isLoading } = Hooks.zone.useDepositStatus({ * chainId: zoneChain.id, * tempoBlockNumber: 42n, * }) * * if (isLoading) return <div>Loading...</div> * return <div>Processed: {String(data?.processed)}</div> * } * ``` * * @param parameters - Parameters. * @returns Query result with the current deposit status. */ export function useDepositStatus(parameters = {}) { const config = useConfig(parameters); const chainId = useChainId({ config }); const options = Actions.zone.getDepositStatus.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, }); return useQuery(options); } /** * Hook for getting the withdrawal fee for a given gas limit. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { data, isLoading } = Hooks.zone.useWithdrawalFee({ * chainId: zoneChain.id, * gas: 21_000n, * }) * * if (isLoading) return <div>Loading...</div> * return <div>Fee: {data?.toString()}</div> * } * ``` * * @param parameters - Parameters. * @returns Query result with the withdrawal fee. */ export function useWithdrawalFee(parameters = {}) { const config = useConfig(parameters); const chainId = useChainId({ config }); const options = Actions.zone.getWithdrawalFee.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, }); return useQuery(options); } /** * Hook for getting the current zone metadata. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { data, isLoading } = Hooks.zone.useZoneInfo({ * chainId: zoneChain.id, * }) * * if (isLoading) return <div>Loading...</div> * return <div>Zone ID: {data?.zoneId}</div> * } * ``` * * @param parameters - Parameters. * @returns Query result with the current zone metadata. */ export function useZoneInfo(parameters = {}) { const config = useConfig(parameters); const chainId = useChainId({ config }); const options = Actions.zone.getZoneInfo.queryOptions(config, { ...parameters, chainId: parameters.chainId ?? chainId, }); return useQuery(options); } /** * Hook for signing and storing a zone authorization token. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { mutate, isPending } = Hooks.zone.useSignAuthorizationToken() * * return ( * <button * onClick={() => mutate({ chainId: zoneChain.id })} * disabled={isPending} * > * Sign Zone Token * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useSignAuthorizationToken(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.signAuthorizationToken(config, variables); }, mutationKey: ['signAuthorizationToken'], }); } /** * Hook for depositing tokens into a zone on the parent Tempo chain. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate, isPending } = Hooks.zone.useDeposit() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * token: '0x20c0000000000000000000000000000000000001', * zoneId: 7, * }) * } * disabled={isPending} * > * Deposit * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useDeposit(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.deposit(config, variables); }, mutationKey: ['deposit'], }); } /** * Hook for depositing tokens into a zone on the parent Tempo chain. * * Note: This is a synchronous hook that waits for the transaction * to be included on a block before returning a response. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate, isPending } = Hooks.zone.useDepositSync() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * token: '0x20c0000000000000000000000000000000000001', * zoneId: 7, * }) * } * disabled={isPending} * > * Deposit * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useDepositSync(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.depositSync(config, variables); }, mutationKey: ['depositSync'], }); } /** * Hook for depositing tokens into a zone on the parent Tempo chain with an * encrypted recipient and memo. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate, isPending } = Hooks.zone.useEncryptedDeposit() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * token: '0x20c0000000000000000000000000000000000001', * zoneId: 7, * }) * } * disabled={isPending} * > * Encrypted Deposit * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useEncryptedDeposit(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.encryptedDeposit(config, variables); }, mutationKey: ['encryptedDeposit'], }); } /** * Hook for depositing tokens into a zone on the parent Tempo chain with an * encrypted recipient and memo. * * Note: This is a synchronous hook that waits for the transaction * to be included on a block before returning a response. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * * function App() { * const { mutate, isPending } = Hooks.zone.useEncryptedDepositSync() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * token: '0x20c0000000000000000000000000000000000001', * zoneId: 7, * }) * } * disabled={isPending} * > * Encrypted Deposit * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useEncryptedDepositSync(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.encryptedDepositSync(config, variables); }, mutationKey: ['encryptedDepositSync'], }); } /** * Hook for requesting a withdrawal from a zone to the parent Tempo chain. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { mutate, isPending } = Hooks.zone.useRequestWithdrawal() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * chainId: zoneChain.id, * token: '0x20c0000000000000000000000000000000000001', * }) * } * disabled={isPending} * > * Request Withdrawal * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useRequestWithdrawal(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.requestWithdrawal(config, variables); }, mutationKey: ['requestWithdrawal'], }); } /** * Hook for requesting a withdrawal from a zone to the parent Tempo chain. * * Note: This is a synchronous hook that waits for the transaction * to be included on a block before returning a response. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { mutate, isPending } = Hooks.zone.useRequestWithdrawalSync() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * chainId: zoneChain.id, * token: '0x20c0000000000000000000000000000000000001', * }) * } * disabled={isPending} * > * Request Withdrawal * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useRequestWithdrawalSync(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.requestWithdrawalSync(config, variables); }, mutationKey: ['requestWithdrawalSync'], }); } /** * Hook for requesting a verifiable withdrawal from a zone to the parent Tempo * chain. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { mutate, isPending } = Hooks.zone.useRequestVerifiableWithdrawal() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * chainId: zoneChain.id, * revealTo: * '0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', * token: '0x20c0000000000000000000000000000000000001', * }) * } * disabled={isPending} * > * Request Verifiable Withdrawal * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useRequestVerifiableWithdrawal(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.requestVerifiableWithdrawal(config, variables); }, mutationKey: ['requestVerifiableWithdrawal'], }); } /** * Hook for requesting a verifiable withdrawal from a zone to the parent Tempo * chain. * * Note: This is a synchronous hook that waits for the transaction * to be included on a block before returning a response. * * @example * ```tsx * import { Hooks } from 'wagmi/tempo' * import { zone } from 'viem/tempo/zones' * * const zoneChain = zone(7) * * function App() { * const { mutate, isPending } = Hooks.zone.useRequestVerifiableWithdrawalSync() * * return ( * <button * onClick={() => * mutate({ * amount: 1_000_000n, * chainId: zoneChain.id, * revealTo: * '0x0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', * token: '0x20c0000000000000000000000000000000000001', * }) * } * disabled={isPending} * > * Request Verifiable Withdrawal * </button> * ) * } * ``` * * @param parameters - Parameters. * @returns Mutation result. */ export function useRequestVerifiableWithdrawalSync(parameters = {}) { const { mutation = {} } = parameters; const config = useConfig(parameters); return useMutation({ ...mutation, async mutationFn(variables) { return Actions.zone.requestVerifiableWithdrawalSync(config, variables); }, mutationKey: ['requestVerifiableWithdrawalSync'], }); } //# sourceMappingURL=zone.js.map