import { type Account, type Address, type Chain, type Hash } from 'viem'; import type { ChainWithContracts, RequireClientContracts } from '../../clients/chain.js'; import { AdditionalParameterSpecifiedError } from '../../errors/general.js'; import type { Prettify, SimpleTransactionRequest, WriteTransactionParameters } from '../../types/index.js'; import type { GetDnsImportDataReturnType } from './getDnsImportData.js'; type BaseImportDnsNameDataParameters = { /** Name to import */ name: string; /** Data returned from `getDnsImportData()` */ dnsImportData: GetDnsImportDataReturnType; /** Address to claim the name for */ address?: Address; /** Address of the resolver to use (default: `ensPublicResolver`) */ resolverAddress?: Address; }; type NoResolverImportDnsNameDataParameters = { address?: never; resolverAddress?: never; }; type ResolverImportDnsNameDataParameters = { address: Address; resolverAddress?: Address; }; export type ImportDnsNameDataParameters = BaseImportDnsNameDataParameters & (NoResolverImportDnsNameDataParameters | ResolverImportDnsNameDataParameters); export type ImportDnsNameDataReturnType = SimpleTransactionRequest; type ImportDnsNameContracts = 'ensLegacyDnsRegistrar' | 'ensPublicResolver'; export type ImportDnsNameParameters> = Prettify>; export type ImportDnsNameReturnType = Hash; export type ImportDnsNameErrorType = AdditionalParameterSpecifiedError | Error; export declare const makeFunctionData: (chain: ChainWithContracts, { name, dnsImportData, address, resolverAddress, }: ImportDnsNameDataParameters) => ImportDnsNameDataReturnType; /** * Creates a transaction to import a DNS name to ENS. * @param wallet - {@link ClientWithAccount} * @param parameters - {@link ImportDnsNameParameters} * @returns A transaction hash. {@link ImportDnsNameReturnType} * * @example * import { createPublicClient, createWalletClient, http, custom } from 'viem' * import { mainnet } from 'viem/chains' * import { addEnsContracts } from '@ensdomains/ensjs' * import { getDnsImportData, importDnsName } from '@ensdomains/ensjs/dns' * * const mainnetWithEns = addEnsContracts(mainnet) * const client = createPublicClient({ * chain: mainnetWithEns, * transport: http(), * }) * const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' }) * const wallet = createWalletClient({ * account, * chain: mainnetWithEns, * transport: custom(window.ethereum), * }) * const dnsImportData = await getDnsImportData(client, { * name: 'example.com', * }) * const hash = await importDnsName(wallet, { * name: 'example.com', * dnsImportData, * }) */ export declare function importDnsName>(wallet: RequireClientContracts, { name, address, dnsImportData, resolverAddress, ...txArgs }: ImportDnsNameParameters): Promise; export declare namespace importDnsName { var makeFunctionData: (chain: ChainWithContracts, { name, dnsImportData, address, resolverAddress, }: ImportDnsNameDataParameters) => ImportDnsNameDataReturnType; } export {}; //# sourceMappingURL=importDnsName.d.ts.map