import type { Account, Address, Chain, Client, Hash, Transport, WriteContractErrorType } from 'viem'; import type { Prettify, WriteTransactionParameters } from '../../../../types/index.js'; import { type ClientWithOverridesErrorType } from '../../../../utils/clientWithOverrides.js'; import { type ResolverSetterScope } from '../../../../utils/v2/roles/resolverResource.js'; import { type ResolverRole } from '../../../../utils/v2/roles/resolverRoles.js'; type BaseParameters = { /** The resolver address */ resolverAddress: Address; /** The account to grant roles to */ targetAccount: Address; }; export type GrantResolverRolesRootParameters = BaseParameters & { /** Grant roles on the root resource: every name, every record of that type */ scope: 'root'; /** The resolver roles to grant */ roles: ResolverRole[]; }; export type GrantResolverRolesSetterParameters = BaseParameters & { /** * Grant one setter's role for a single argument (a coin type, a text key, * ...) across every name on the resolver. The role is implied by the setter. */ scope: 'setter'; /** The setter argument to scope the role to */ setter: ResolverSetterScope; }; export type GrantResolverRolesBaseParameters = GrantResolverRolesRootParameters | GrantResolverRolesSetterParameters; export type GrantResolverRolesReturnType = Hash; export type GrantResolverRolesErrorType = WriteContractErrorType | ClientWithOverridesErrorType; export declare const grantResolverRolesWriteParameters: (client: Client, params: GrantResolverRolesBaseParameters) => { readonly abi: readonly [{ readonly name: "grantRootRoles"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "roleBitmap"; readonly type: "uint256"; }, { readonly name: "account"; readonly type: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; }]; readonly functionName: "grantRootRoles"; readonly args: readonly [bigint, `0x${string}`]; readonly address: `0x${string}`; readonly chain: chain; readonly account: account; } | { readonly abi: readonly [{ readonly name: "grantSetterRoles"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "setter"; readonly type: "bytes"; }, { readonly name: "account"; readonly type: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; }]; readonly functionName: "grantSetterRoles"; readonly args: readonly [`0x${string}`, `0x${string}`]; readonly address: `0x${string}`; readonly chain: chain; readonly account: account; }; export type GrantResolverRolesParameters = Prettify>; /** * Grant roles on a PermissionedResolver (V2). * * Roles are never scoped to a name; a resolver is already per account. The * `scope` parameter picks between: * * - **`'root'`**: grant roles on the root resource, covering every name and * every record of those types. The caller must hold the admin variant of * each role on root. * * - **`'setter'`**: grant one setter's role for a single argument (`setAddress` * for one coin type, `setText` for one text key, `setData`, `setABI`, * `setInterface`) across every name. The caller must hold that role's admin * variant on root or on the argument's resource. * * @param client - Wallet client * @param parameters - {@link GrantResolverRolesParameters} * @returns Transaction hash. {@link GrantResolverRolesReturnType} * * @example * // Grant roles globally * const hash = await grantResolverRoles(walletClient, { * resolverAddress: '0x...', * targetAccount: '0xOTHER', * scope: 'root', * roles: ['ROLE_SET_TEXT', 'ROLE_SET_ADDRESS'], * }) * * @example * // Grant ROLE_SET_TEXT for the `avatar` key only * const hash = await grantResolverRoles(walletClient, { * resolverAddress: '0x...', * targetAccount: '0xOTHER', * scope: 'setter', * setter: { kind: 'text', key: 'avatar' }, * }) * * @example * // Grant ROLE_SET_ADDRESS for coin type 60 only * const hash = await grantResolverRoles(walletClient, { * resolverAddress: '0x...', * targetAccount: '0xOTHER', * scope: 'setter', * setter: { kind: 'address', coinType: 60n }, * }) */ export declare function grantResolverRoles(client: Client, params: GrantResolverRolesParameters): Promise; export {}; //# sourceMappingURL=grantResolverRoles.d.ts.map