wagmi
Version:
React Hooks for Ethereum
533 lines • 13.9 kB
JavaScript
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