import { type AbiType, type EventSelector } from '@aztec/foundation/abi';
import { z } from 'zod';
import { L1EventPayload } from './l1_payload/l1_event_payload.js';
import { type UnencryptedL2Log } from './unencrypted_l2_log.js';
/**
 * Represents metadata for an event decoder, including all information needed to reconstruct it.
 */
export declare class EventMetadata<T> {
    readonly decode: (payload: L1EventPayload | UnencryptedL2Log) => T | undefined;
    readonly eventSelector: EventSelector;
    readonly abiType: AbiType;
    readonly fieldNames: string[];
    constructor(event: {
        eventSelector: EventSelector;
        abiType: AbiType;
        fieldNames: string[];
    });
    static decodeEvent<T>(eventSelector: EventSelector, abiType: AbiType): (payload: L1EventPayload | UnencryptedL2Log | undefined) => T | undefined;
    static get schema(): z.ZodEffects<z.ZodObject<{
        eventSelector: z.ZodType<EventSelector, any, string>;
        abiType: z.ZodType<AbiType, z.ZodTypeDef, AbiType>;
        fieldNames: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        eventSelector: EventSelector;
        abiType: AbiType;
        fieldNames: string[];
    }, {
        eventSelector: string;
        abiType: AbiType;
        fieldNames: string[];
    }>, EventMetadata<unknown>, {
        eventSelector: string;
        abiType: AbiType;
        fieldNames: string[];
    }>;
}
//# sourceMappingURL=event_metadata.d.ts.map