UNPKG

viem

Version:

TypeScript Interface for Ethereum

1,477 lines • 73.1 kB
import type { Address } from 'abitype'; import type { Account } from '../../accounts/types.js'; import type { ReadContractReturnType } from '../../actions/public/readContract.js'; import type { WatchContractEventParameters } from '../../actions/public/watchContractEvent.js'; import type { WriteContractReturnType } from '../../actions/wallet/writeContract.js'; import { writeContract } from '../../actions/wallet/writeContract.js'; import { writeContractSync } from '../../actions/wallet/writeContractSync.js'; import type { Client } from '../../clients/createClient.js'; import type { Transport } from '../../clients/transports/createTransport.js'; import type { BaseErrorType } from '../../errors/base.js'; import type { Chain } from '../../types/chain.js'; import type { ExtractAbiItem, GetEventArgs } from '../../types/contract.js'; import type { Log, Log as viem_Log } from '../../types/log.js'; import type { Compute, UnionOmit } from '../../types/utils.js'; import * as Abis from '../Abis.js'; import type { ReadParameters, WriteParameters } from '../internal/types.js'; import type { TransactionReceipt } from '../Transaction.js'; export type PolicyType = 'whitelist' | 'blacklist'; /** * Creates a new policy. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const { hash, policyId } = await Actions.policy.create(client, { * admin: '0x...', * type: 'whitelist', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash and policy ID. */ export declare function create<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: create.Parameters<chain, account>): Promise<create.ReturnValue>; export declare namespace create { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Omit<Args, 'admin'> & { /** Address of the policy admin. */ admin?: Address | undefined; }; type Args = { /** Optional array of accounts to initialize the policy with. */ addresses?: readonly Address[] | undefined; /** Address of the policy admin. */ admin: Address; /** Type of policy to create. */ type: PolicyType; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `createPolicy` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * actions.policy.create.call({ * admin: '0xfeed...fede', * type: 'whitelist', * }), * actions.policy.create.call({ * admin: '0xfeed...fede', * type: 'blacklist', * addresses: ['0x20c0...beef', '0x20c0...babe'], * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "createPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; } | { readonly name: "createPolicyWithAccounts"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address[]"; readonly name: "accounts"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }]; functionName: "createPolicy" | "createPolicyWithAccounts"; } & { args: readonly [admin: `0x${string}`, policyType: number] | readonly [admin: `0x${string}`, policyType: number, accounts: readonly `0x${string}`[]]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; /** * Extracts the `PolicyCreated` event from logs. * * @param logs - The logs. * @returns The `PolicyCreated` event. */ function extractEvent(logs: Log[]): Log<bigint, number, false, undefined, true, readonly [{ readonly name: "policyIdCounter"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "policyExists"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "policyData"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address"; readonly name: "admin"; }]; }, { readonly name: "isAuthorized"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedSender"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedRecipient"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedMintRecipient"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "compoundPolicyData"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; }, { readonly name: "createPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "createPolicyWithAccounts"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address[]"; readonly name: "accounts"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "setPolicyAdmin"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "admin"; }]; readonly outputs: readonly []; }, { readonly name: "modifyPolicyWhitelist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "allowed"; }]; readonly outputs: readonly []; }, { readonly name: "modifyPolicyBlacklist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "restricted"; }]; readonly outputs: readonly []; }, { readonly name: "createCompoundPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "PolicyAdminUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "admin"; readonly indexed: true; }]; }, { readonly name: "PolicyCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "uint8"; readonly name: "policyType"; }]; }, { readonly name: "WhitelistUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "account"; readonly indexed: true; }, { readonly type: "bool"; readonly name: "allowed"; }]; }, { readonly name: "BlacklistUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "account"; readonly indexed: true; }, { readonly type: "bool"; readonly name: "restricted"; }]; }, { readonly name: "CompoundPolicyCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "creator"; readonly indexed: true; }, { readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; }, { readonly name: "Unauthorized"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PolicyNotFound"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PolicyNotSimple"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidPolicyType"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "IncompatiblePolicyType"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "VirtualAddressNotAllowed"; readonly type: "error"; readonly inputs: readonly []; }], "PolicyCreated">; } /** * Creates a new policy. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const result = await Actions.policy.createSync(client, { * admin: '0x...', * type: 'whitelist', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt and event data. */ export declare function createSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: createSync.Parameters<chain, account>): Promise<createSync.ReturnValue>; export declare namespace createSync { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = create.Parameters<chain, account>; type Args = create.Args; type ReturnValue = Compute<GetEventArgs<typeof Abis.tip403Registry, 'PolicyCreated', { IndexedOnly: false; Required: true; }> & { receipt: TransactionReceipt; }>; type ErrorType = BaseErrorType; } /** * Sets the admin for a policy. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.policy.setAdmin(client, { * policyId: 2n, * admin: '0x...', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function setAdmin<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: setAdmin.Parameters<chain, account>): Promise<setAdmin.ReturnValue>; export declare namespace setAdmin { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args; type Args = { /** New admin address. */ admin: Address; /** Policy ID. */ policyId: bigint; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: setAdmin.Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `setPolicyAdmin` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * actions.policy.setAdmin.call({ * policyId: 2n, * admin: '0xfeed...fede', * }), * actions.policy.setAdmin.call({ * policyId: 3n, * admin: '0xfeed...babe', * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "setPolicyAdmin"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "admin"; }]; readonly outputs: readonly []; }]; functionName: "setPolicyAdmin"; } & { args: readonly [policyId: bigint, admin: `0x${string}`]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; /** * Extracts the `PolicyAdminUpdated` event from logs. * * @param logs - The logs. * @returns The `PolicyAdminUpdated` event. */ function extractEvent(logs: Log[]): Log<bigint, number, false, undefined, true, readonly [{ readonly name: "policyIdCounter"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "policyExists"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "policyData"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address"; readonly name: "admin"; }]; }, { readonly name: "isAuthorized"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedSender"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedRecipient"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedMintRecipient"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "compoundPolicyData"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; }, { readonly name: "createPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "createPolicyWithAccounts"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address[]"; readonly name: "accounts"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "setPolicyAdmin"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "admin"; }]; readonly outputs: readonly []; }, { readonly name: "modifyPolicyWhitelist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "allowed"; }]; readonly outputs: readonly []; }, { readonly name: "modifyPolicyBlacklist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "restricted"; }]; readonly outputs: readonly []; }, { readonly name: "createCompoundPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "PolicyAdminUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "admin"; readonly indexed: true; }]; }, { readonly name: "PolicyCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "uint8"; readonly name: "policyType"; }]; }, { readonly name: "WhitelistUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "account"; readonly indexed: true; }, { readonly type: "bool"; readonly name: "allowed"; }]; }, { readonly name: "BlacklistUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "account"; readonly indexed: true; }, { readonly type: "bool"; readonly name: "restricted"; }]; }, { readonly name: "CompoundPolicyCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "creator"; readonly indexed: true; }, { readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; }, { readonly name: "Unauthorized"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PolicyNotFound"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PolicyNotSimple"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidPolicyType"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "IncompatiblePolicyType"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "VirtualAddressNotAllowed"; readonly type: "error"; readonly inputs: readonly []; }], "PolicyAdminUpdated">; } /** * Sets the admin for a policy. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const result = await Actions.policy.setAdminSync(client, { * policyId: 2n, * admin: '0x...', * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt and event data. */ export declare function setAdminSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: setAdminSync.Parameters<chain, account>): Promise<setAdminSync.ReturnValue>; export declare namespace setAdminSync { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = setAdmin.Parameters<chain, account>; type Args = setAdmin.Args; type ReturnValue = Compute<GetEventArgs<typeof Abis.tip403Registry, 'PolicyAdminUpdated', { IndexedOnly: false; Required: true; }> & { receipt: TransactionReceipt; }>; type ErrorType = BaseErrorType; } /** * Modifies a policy whitelist. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.policy.modifyWhitelist(client, { * policyId: 2n, * account: '0x...', * allowed: true, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function modifyWhitelist<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: modifyWhitelist.Parameters<chain, account>): Promise<modifyWhitelist.ReturnValue>; export declare namespace modifyWhitelist { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args; type Args = { /** Target account address. */ address: Address; /** Whether the account is allowed. */ allowed: boolean; /** Policy ID. */ policyId: bigint; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: modifyWhitelist.Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `modifyPolicyWhitelist` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * actions.policy.modifyWhitelist.call({ * policyId: 2n, * address: '0x20c0...beef', * allowed: true, * }), * actions.policy.modifyWhitelist.call({ * policyId: 2n, * address: '0x20c0...babe', * allowed: false, * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "modifyPolicyWhitelist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "allowed"; }]; readonly outputs: readonly []; }]; functionName: "modifyPolicyWhitelist"; } & { args: readonly [policyId: bigint, account: `0x${string}`, allowed: boolean]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; /** * Extracts the `WhitelistUpdated` event from logs. * * @param logs - The logs. * @returns The `WhitelistUpdated` event. */ function extractEvent(logs: Log[]): Log<bigint, number, false, undefined, true, readonly [{ readonly name: "policyIdCounter"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "policyExists"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "policyData"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address"; readonly name: "admin"; }]; }, { readonly name: "isAuthorized"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedSender"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedRecipient"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "isAuthorizedMintRecipient"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "user"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "compoundPolicyData"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }]; readonly outputs: readonly [{ readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; }, { readonly name: "createPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "createPolicyWithAccounts"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "admin"; }, { readonly type: "uint8"; readonly name: "policyType"; }, { readonly type: "address[]"; readonly name: "accounts"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "setPolicyAdmin"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "admin"; }]; readonly outputs: readonly []; }, { readonly name: "modifyPolicyWhitelist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "allowed"; }]; readonly outputs: readonly []; }, { readonly name: "modifyPolicyBlacklist"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; }, { readonly type: "address"; readonly name: "account"; }, { readonly type: "bool"; readonly name: "restricted"; }]; readonly outputs: readonly []; }, { readonly name: "createCompoundPolicy"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; readonly outputs: readonly [{ readonly type: "uint64"; }]; }, { readonly name: "PolicyAdminUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "admin"; readonly indexed: true; }]; }, { readonly name: "PolicyCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "uint8"; readonly name: "policyType"; }]; }, { readonly name: "WhitelistUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "account"; readonly indexed: true; }, { readonly type: "bool"; readonly name: "allowed"; }]; }, { readonly name: "BlacklistUpdated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "updater"; readonly indexed: true; }, { readonly type: "address"; readonly name: "account"; readonly indexed: true; }, { readonly type: "bool"; readonly name: "restricted"; }]; }, { readonly name: "CompoundPolicyCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint64"; readonly name: "policyId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "creator"; readonly indexed: true; }, { readonly type: "uint64"; readonly name: "senderPolicyId"; }, { readonly type: "uint64"; readonly name: "recipientPolicyId"; }, { readonly type: "uint64"; readonly name: "mintRecipientPolicyId"; }]; }, { readonly name: "Unauthorized"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PolicyNotFound"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PolicyNotSimple"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidPolicyType"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "IncompatiblePolicyType"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "VirtualAddressNotAllowed"; readonly type: "error"; readonly inputs: readonly []; }], "WhitelistUpdated">; } /** * Modifies a policy whitelist. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const result = await Actions.policy.modifyWhitelistSync(client, { * policyId: 2n, * account: '0x...', * allowed: true, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt and event data. */ export declare function modifyWhitelistSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: modifyWhitelistSync.Parameters<chain, account>): Promise<modifyWhitelistSync.ReturnValue>; export declare namespace modifyWhitelistSync { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = modifyWhitelist.Parameters<chain, account>; type Args = modifyWhitelist.Args; type ReturnValue = Compute<GetEventArgs<typeof Abis.tip403Registry, 'WhitelistUpdated', { IndexedOnly: false; Required: true; }> & { receipt: TransactionReceipt; }>; type ErrorType = BaseErrorType; } /** * Modifies a policy blacklist. * * @example * ```ts * import { createClient, http } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * import { privateKeyToAccount } from 'viem/accounts' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.policy.modifyBlacklist(client, { * policyId: 2n, * account: '0x...', * restricted: true, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function modifyBlacklist<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: modifyBlacklist.Parameters<chain, account>): Promise<modifyBlacklist.ReturnValue>; export declare namespace modifyBlacklist { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args; type Args = { /** Target account address. */ address: Address; /** Policy ID. */ policyId: bigint; /** Whether the account is restricted. */ restricted: boolean; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: modifyBlacklist.Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `modifyPolicyBlacklist` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * cons