import { type Account, type Address, type Hash, type Transport } from 'viem'; import type { ChainWithPns, ClientWithAccount } from '../../contracts/consts.js'; import type { AnyDate, Prettify, SimpleTransactionRequest, WriteTransactionParameters } from '../../types.js'; import { type EncodeFusesInputObject } from '../../utils/fuses.js'; type BaseCreateSubnameDataParameters = { /** 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; }; type RegistryCreateSubnameDataParameters = { contract: 'registry'; expiry?: never; fuses?: never; }; type NameWrapperCreateSubnameDataParameters = { contract: 'nameWrapper'; expiry?: AnyDate; fuses?: EncodeFusesInputObject; }; export type CreateSubnameDataParameters = BaseCreateSubnameDataParameters & (RegistryCreateSubnameDataParameters | NameWrapperCreateSubnameDataParameters); export type CreateSubnameDataReturnType = SimpleTransactionRequest; export type CreateSubnameParameters = Prettify>; export type CreateSubnameReturnType = Hash; export declare const makeFunctionData: (wallet: ClientWithAccount, { name, contract, owner, resolverAddress, expiry, fuses, }: CreateSubnameDataParameters) => CreateSubnameDataReturnType; /** * 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 { addPnsContracts } from '@pnsdomains/pnsjs' * import { createSubname } from '@pnsdomains/pnsjs/wallet' * * const wallet = createWalletClient({ * chain: addPnsContracts(mainnet), * transport: custom(window.ethereum), * }) * const hash = await createSubname(wallet, { * name: 'sub.pns.pls', * owner: '0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7', * contract: 'registry', * }) * // 0x... */ declare function createSubname(wallet: ClientWithAccount, { name, contract, owner, resolverAddress, expiry, fuses, ...txArgs }: CreateSubnameParameters): Promise; declare namespace createSubname { var makeFunctionData: (wallet: ClientWithAccount, { name, contract, owner, resolverAddress, expiry, fuses, }: CreateSubnameDataParameters) => SimpleTransactionRequest; } export default createSubname; //# sourceMappingURL=createSubname.d.ts.map