import { type Address, type Chain, type EncodeFunctionDataErrorType, type MulticallErrorType } from 'viem'; import type { RequireClientContracts } from '../../../clients/chain.js'; import type { ErrorType } from '../../../errors/utils.js'; import type { DecodedAddr, DecodedText, Prettify } from '../../../types/index.js'; import { type DecodeAbiResultErrorType, type DecodeAbiResultFromPrimitiveTypesErrorType, type DecodeAbiResultReturnType, type GetAbiParametersErrorType } from '../../../utils/resolver/getAbi.js'; import { type DecodeAddressResultErrorType, type DecodeAddressResultFromPrimitiveTypesErrorType, type GetAddressParametersErrorType } from '../../../utils/resolver/getAddress.js'; import { type DecodeContentHashResultErrorType, type DecodeContentHashResultFromPrimitiveTypesErrorType, type GetContentHashErrorType, type GetContentHashReturnType } from '../../../utils/resolver/getContentHash.js'; import { type DecodeTextResultErrorType, type DecodeTextResultFromPrimitiveTypesErrorType, type GetTextParametersErrorType } from '../../../utils/resolver/getText.js'; import { type ResolveNameDataErrorType } from './resolveNameData.js'; export type GetRecordsParameters = { /** Name to get records for */ name: string; /** Text record key array */ texts?: texts; /** Coin record id/symbol array */ coins?: coins; /** If true, will fetch content hash */ contentHash?: contentHash; /** If true, will fetch ABI */ abi?: abi; /** Optional specific resolver address, for fallback or for all results */ resolver?: { /** Resolver address */ address: Address; /** If true, will only use resolver if main fetch fails */ fallbackOnly?: boolean; }; /** Batch gateway URLs to use for resolving CCIP-read requests. */ gatewayUrls?: string[]; /** Block number to read at. CCIP-read (offchain) responses are not pinned to this block. */ blockNumber?: bigint; /** Don't throw on invalid coinTypes */ ignoreInvalidCoinTypes?: boolean; }; type WithContentHashResult = { /** Retrieved content hash record for name */ contentHash: GetContentHashReturnType; }; type WithAbiResult = { /** Retrieved ABI record for name */ abi: DecodeAbiResultReturnType; }; type WithTextsResult = { /** Retrieved text records for name */ texts: DecodedText[]; }; type WithCoinsResult = { /** Retrieved coins for name */ coins: DecodedAddr[]; }; type CreateCallsErrorType = GetTextParametersErrorType | DecodeTextResultFromPrimitiveTypesErrorType | DecodeTextResultErrorType | GetAddressParametersErrorType | DecodeAddressResultFromPrimitiveTypesErrorType | DecodeAddressResultErrorType | GetContentHashErrorType | DecodeContentHashResultFromPrimitiveTypesErrorType | DecodeContentHashResultErrorType | GetAbiParametersErrorType | DecodeAbiResultFromPrimitiveTypesErrorType | DecodeAbiResultErrorType; export type GetRecordsReturnType = Prettify<(contentHash extends true ? WithContentHashResult : {}) & (abi extends true ? WithAbiResult : {}) & (texts extends readonly string[] ? WithTextsResult : {}) & (coins extends readonly (string | number)[] ? WithCoinsResult : {}) & { /** Resolver address used for fetch */ resolverAddress: Address; }>; export type GetRecordsErrorType = CreateCallsErrorType | MulticallErrorType | ResolveNameDataErrorType | EncodeFunctionDataErrorType | ErrorType; /** * Gets arbitrary records for a name * @param client - {@link Client} * @param parameters - {@link GetRecordsParameters} * @returns Records data object. {@link GetRecordsReturnType} * * @example * import { createPublicClient, http } from 'viem' * import { mainnet } from 'viem/chains' * import { addEnsContracts } from '@ensdomains/ensjs' * import { getRecords } from '@ensdomains/ensjs/public' * * const client = createPublicClient({ * chain: addEnsContracts(mainnet), * transport: http(), * }) * const result = await getRecords(client, { * name: 'ens.eth', * texts: ['com.twitter', 'com.github'], * coins: ['ETH'], * contentHash: true, * }) * // { texts: [{ key: 'com.twitter', value: 'ensdomains' }, { key: 'com.github', value: 'ensdomains' }], coins: [{ id: 60, name: 'ETH', value: '0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7' }], contentHash: { protocolType: 'ipns', decoded: 'k51qzi5uqu5djdczd6zw0grmo23j2vkj9uzvujencg15s5rlkq0ss4ivll8wqw' } } */ export declare function getRecords(client: RequireClientContracts, { name, resolver, texts, coins, contentHash, abi, gatewayUrls, blockNumber, ignoreInvalidCoinTypes, }: GetRecordsParameters): Promise>; export {}; //# sourceMappingURL=getRecords.d.ts.map