import type { ClientWithEns } from '../../contracts/consts.js'; import type { BaseResolverEvent, ContenthashChanged, DomainEvent, MulticoinAddrChanged, RegistrationEvent, ResolverEvent } from './events.js'; export type GetNameHistoryParameters = { /** Name to get history for */ name: string; }; type FlattenedEvent = { [K in keyof TEvent]: TEvent[K] extends { id: string; } ? string : TEvent[K]; }; type ReturnDomainEvent = FlattenedEvent; type ReturnRegistrationEvent = FlattenedEvent; type ReturnResolverEvent = FlattenedEvent | (BaseResolverEvent & { type: 'MulticoinAddrChanged'; coinType: string; coinName: string | null; decoded: boolean; addr: string | null; }) | (BaseResolverEvent & { type: 'ContenthashChanged'; decoded: boolean; contentHash: string | null; protocolType: string | null; })>; export type GetNameHistoryReturnType = { /** Array of domain events */ domainEvents: ReturnDomainEvent[]; /** Array of registration events */ registrationEvents: ReturnRegistrationEvent[] | null; /** Array of resolver events */ resolverEvents: ReturnResolverEvent[] | null; } | null; /** * Gets the history of a name from the subgraph. * It's recommended to use a custom subgraph URL to avoid rate limiting. * @see {@link ../../../../../docs/basics/custom-subgraph-uris.md | Custom Subgraph URIs Guide} * * @param client - {@link ClientWithEns} * @param parameters - {@link GetNameHistoryParameters} * @returns History object, or null if name could not be found. {@link GetNameHistoryReturnType} * * @example * import { createPublicClient, http } from 'viem' * import { mainnet } from 'viem/chains' * import { addEnsContracts } from '@etn-sc/ensjs' * import { getNameHistory } from '@etn-sc/ensjs/subgraph' * * const client = createPublicClient({ * chain: addEnsContracts(mainnet), * transport: http(), * }) * const result = await getNameHistory(client, { name: 'ens.eth' }) */ declare const getNameHistory: (client: ClientWithEns, { name }: GetNameHistoryParameters) => Promise; export default getNameHistory;