import type { Abi, AbiEvent, Address, ExtractAbiEvent, ExtractAbiEventNames } from 'abitype'; import type { AbiEventParametersToPrimitiveTypes, GetEventArgs } from './contract.js'; import type { Hash, Hex } from './misc.js'; export type Log = { /** The address from which this log originated */ address: Address; /** Hash of block containing this log or `null` if pending */ blockHash: pending extends true ? null : Hash; /** Number of block containing this log or `null` if pending */ blockNumber: pending extends true ? null : quantity; /** Contains the non-indexed arguments of the log */ data: Hex; /** Index of this log within its block or `null` if pending */ logIndex: pending extends true ? null : index; /** Hash of the transaction that created this log or `null` if pending */ transactionHash: pending extends true ? null : Hash; /** Index of the transaction that created this log or `null` if pending */ transactionIndex: pending extends true ? null : index; /** `true` if this filter has been destroyed and is invalid */ removed: boolean; } & GetInferredLogValues; type Topics = head extends readonly [ infer _Head, ...infer Tail extends AbiEvent['inputs'] ] ? _Head extends { indexed: true; } ? [Hex, ...Topics] : Topics : base; type GetTopics : undefined : undefined, _Args = _AbiEvent extends AbiEvent ? AbiEventParametersToPrimitiveTypes<_AbiEvent['inputs']> : never, _FailedToParseArgs = ([_Args] extends [never] ? true : false) | (readonly unknown[] extends _Args ? true : false)> = true extends _FailedToParseArgs ? [Hex, ...Hex[]] | [] : abiEvent extends AbiEvent ? Topics : _AbiEvent extends AbiEvent ? Topics<_AbiEvent['inputs']> : [Hex, ...Hex[]] | []; type GetInferredLogValues : string> = abi extends Abi ? eventName extends string ? { args: GetEventArgs; /** The event name decoded from `topics`. */ eventName: eventName; /** List of order-dependent topics */ topics: GetTopics; } : { [name in _EventNames]: { args: GetEventArgs; /** The event name decoded from `topics`. */ eventName: name; /** List of order-dependent topics */ topics: GetTopics; }; }[_EventNames] : { topics: [Hex, ...Hex[]] | []; }; export {}; //# sourceMappingURL=log.d.ts.map