import { type Account, type Address, type Chain, type EncodeFunctionDataErrorType, type GetChainContractAddressErrorType, type Hash, type SendTransactionErrorType } from 'viem'; import type { ChainWithContracts, RequireClientContracts } from '../../../../clients/chain.js'; import { BaseError } from '../../../../errors/base.js'; import { InvalidContractTypeError, UnsupportedNameTypeError } from '../../../../errors/general.js'; import type { AnyDate, Prettify, SimpleTransactionRequest, WriteTransactionParameters } from '../../../../types/index.js'; import { type MakeLabelNodeAndParentErrorType } from '../../../../utils/name/makeLabelNodeAndParent.js'; import { type EncodeFusesErrorType, type EncodeFusesInputObject } from '../../../../utils/v1/nameWrapper/fuses.js'; import { type ExpiryToBigIntErrorType, type MakeDefaultExpiryErrorType, type WrappedLabelLengthCheckErrorType } from '../../../../utils/v1/nameWrapper/wrapper.js'; import { type GetWrapperDataErrorType } from '../../../public/v1/nameWrapper/getWrapperData.js'; type RegistryCreateSubnameDataParameters = { contract: 'registry'; expiry?: never; fuses?: never; }; type NameWrapperCreateSubnameDataParameters = { contract: 'nameWrapper'; expiry?: AnyDate; fuses?: EncodeFusesInputObject; }; declare class CreateSubnamePermissionDeniedError extends BaseError { parentName: string; name: string; constructor({ parentName }: { parentName: string; }); } declare class CreateSubnameParentNotLockedError extends BaseError { parentName: string; name: string; constructor({ parentName }: { parentName: string; }); } export type MakeCreateSubnameFunctionDataParameters = { /** Subname to create */ name: string; /** New owner of subname */ owner: Address; /** Contract to create subname on */ contract: 'registry' | 'nameWrapper'; /** Resolver address to set */ resolverAddress?: Address; /** Expiry to set (only on NameWrapper) */ expiry?: AnyDate; /** Fuses to set (only on NameWrapper) */ fuses?: EncodeFusesInputObject; } & (RegistryCreateSubnameDataParameters | NameWrapperCreateSubnameDataParameters); export type MakeCreateSubnameFunctionDataReturnType = SimpleTransactionRequest; export type MakeCreateSubnameFunctionDataErrorType = GetChainContractAddressErrorType | UnsupportedNameTypeError | MakeLabelNodeAndParentErrorType | EncodeFunctionDataErrorType | WrappedLabelLengthCheckErrorType | EncodeFusesErrorType | ExpiryToBigIntErrorType | MakeDefaultExpiryErrorType | InvalidContractTypeError; export declare const makeCreateSubnameFunctionData: (wallet: RequireClientContracts, { name, contract, owner, resolverAddress, expiry, fuses, }: MakeCreateSubnameFunctionDataParameters) => MakeCreateSubnameFunctionDataReturnType; type CheckCanCreateSubnameErrorType = GetWrapperDataErrorType | CreateSubnamePermissionDeniedError | EncodeFusesErrorType | CreateSubnameParentNotLockedError; export type CreateSubnameParameters | undefined> = Prettify>; export type CreateSubnameReturnType = Hash; export type CreateSubnameErrorType = CheckCanCreateSubnameErrorType | MakeCreateSubnameFunctionDataErrorType | SendTransactionErrorType; /** * Creates a subname * @param wallet - {@link ClientWithAccount} * @param parameters - {@link CreateSubnameParameters} * @returns Transaction hash. {@link CreateSubnameReturnType} * * @example * import { createWalletClient, custom } from 'viem' * import { mainnet } from 'viem/chains' * import { addEnsContracts } from '@ensdomains/ensjs' * import { createSubname } from '@ensdomains/ensjs/wallet/v1' * * const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' }) * const wallet = createWalletClient({ * account, * chain: addEnsContracts(mainnet), * transport: custom(window.ethereum), * }) * const hash = await createSubname(wallet, { * name: 'sub.ens.eth', * owner: '0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7', * contract: 'registry', * }) * // 0x... */ export declare function createSubname | undefined = ChainWithContracts<'ensPublicResolver' | 'ensNameWrapper' | 'ensLegacyRegistry'>>(wallet: RequireClientContracts, { name, contract, owner, resolverAddress, expiry, fuses, ...txArgs }: CreateSubnameParameters): Promise; export declare namespace createSubname { var makeFunctionData: (wallet: RequireClientContracts, { name, contract, owner, resolverAddress, expiry, fuses, }: MakeCreateSubnameFunctionDataParameters) => MakeCreateSubnameFunctionDataReturnType; } export {}; //# sourceMappingURL=createSubname.d.ts.map