import type { Account, Address, Chain, Client, EncodeFunctionDataErrorType, Hash, Transport, WriteContractErrorType } from 'viem'; import type { Prettify, WriteTransactionParameters } from '../../../../types/index.js'; import { type ClientWithOverridesErrorType } from '../../../../utils/clientWithOverrides.js'; export type DeploySubregistryWriteParametersParameters = { /** The factory contract address */ factoryAddress: Address; /** The subregistry implementation contract address */ implAddress: Address; /** The admin address for the subregistry (defaults to client.account.address) */ adminAddress?: Address; /** The role bitmap for the admin (defaults to full permissions) */ roleBitmap?: bigint; /** * The salt for proxy deployment. * If omitted, a random 256-bit salt is drawn on every call, so each call * encodes a different deploy. Pass one when the same deploy has to be built * more than once (e.g. for a gas estimate and then the send). * * The factory derives the proxy address from `(msg.sender, salt)`, so an * account reusing a salt targets an address it already occupies and the * deploy reverts. */ salt?: bigint; }; export type DeploySubregistryWriteParametersReturnType = ReturnType; export type DeploySubregistryWriteParametersErrorType = EncodeFunctionDataErrorType; export declare const deploySubregistryWriteParameters: (client: Client, { factoryAddress, implAddress, adminAddress, roleBitmap, salt, }: DeploySubregistryWriteParametersParameters) => { readonly address: `0x${string}`; readonly abi: readonly [{ readonly inputs: readonly [{ readonly name: "implementation"; readonly type: "address"; }, { readonly name: "salt"; readonly type: "uint256"; }, { readonly name: "data"; readonly type: "bytes"; }]; readonly name: "deployProxy"; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly name: "proxyAddress"; readonly type: "address"; }, { readonly indexed: false; readonly name: "salt"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "ProxyDeployed"; readonly anonymous: false; readonly type: "event"; }]; readonly functionName: "deployProxy"; readonly args: readonly [`0x${string}`, bigint, `0x${string}`]; readonly chain: chain; readonly account: Account; }; export type DeploySubregistryParameters = Prettify>; export type DeploySubregistryReturnType = Hash; export type DeploySubregistryErrorType = DeploySubregistryWriteParametersErrorType | ClientWithOverridesErrorType | WriteContractErrorType; /** * Deploys a subregistry contract via a verifiable proxy factory. * @param client - {@link Client} * @param options - {@link DeploySubregistryParameters} * @returns Transaction hash. {@link DeploySubregistryReturnType} * * @example * import { createWalletClient, custom } from 'viem' * import { mainnet } from 'viem/chains' * import { addEnsContracts } from '@ensdomains/ensjs' * import { deploySubregistry } from '@ensdomains/ensjs/wallet/v2' * * const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' }) * const wallet = createWalletClient({ * account, * chain: addEnsContracts(mainnet), * transport: custom(window.ethereum), * }) * const hash = await deploySubregistry(wallet, { * factoryAddress: '0x24e32c34effb021cc360b6a4e1de2850dcc59956', * implAddress: '0xc3ae19b222d527d3cdda617953ab878a35527e54', * }) * // 0x... */ export declare function deploySubregistry(client: Client, { factoryAddress, implAddress, adminAddress, roleBitmap, salt, ...txArgs }: DeploySubregistryParameters): Promise; //# sourceMappingURL=deploySubregistry.d.ts.map