import type { Address, Hex } from "viem"; import type { LucidlyClient } from "./client.js"; import type { TxResult, RoleName } from "./types.js"; export declare class RolesModule { private readonly c; constructor(c: LucidlyClient); /** Grant an arbitrary role id (or named role) to a user via RolesAuthority. */ grant(user: Address, role: RoleName | number, rolesAuthority?: Address): Promise; /** Revoke a role from a user. */ revoke(user: Address, role: RoleName | number, rolesAuthority?: Address): Promise; /** Grant STRATEGIST so an address can call manageVaultWithMerkleVerification. */ grantStrategist(strategist: Address, rolesAuthority?: Address): Promise; /** Check whether a user holds a role. */ hasRole(user: Address, role: RoleName | number, rolesAuthority?: Address): Promise; /** Set the Merkle manage root for a strategist (ManagerWithMerkleVerification.setManageRoot). */ setManageRoot(strategist: Address, root: Hex, manager?: Address): Promise; /** Read the current manage root for a strategist. */ getManageRoot(strategist: Address, manager?: Address): Promise; }