UNPKG

viem

Version:

TypeScript Interface for Ethereum

45 lines 1.34 kB
import type { Address } from 'abitype'; import type { OneOf } from '../../../types/utils.js'; import type { Policy } from './policy.js'; /** @internal */ export type CustomPermission<data = unknown, type = { custom: string; }> = { data: data; type: type; }; /** @internal */ export type NativeTokenTransferPermission = { type: 'native-token-transfer'; data: { /** Native token ticker (e.g. ETH). */ ticker: string; }; }; /** @internal */ export type Erc20TokenTransferPermission = { type: 'erc20-token-transfer'; data: { /** ERC20 address. */ address: Address; /** Native token ticker (e.g. ETH). */ ticker: string; }; }; /** @internal */ export type ContractCallPermission = { type: 'contract-call'; data: { /** Contract address. */ address: Address; /** Set of contract signatures to permit. */ calls: string[]; }; }; export type Permission<uint256 = bigint> = OneOf<NativeTokenTransferPermission | Erc20TokenTransferPermission | ContractCallPermission | CustomPermission> & { /** Set of policies for the permission. */ policies: readonly Policy<uint256>[]; /** Whether or not the wallet must grant the permission. */ required?: boolean | undefined; }; //# sourceMappingURL=permission.d.ts.map