import type { PublisherBaseEventType } from '../events/baseEventSchemas';
import type { CommonEventDefinition } from '../events/eventTypes';
import type { PublisherMessageMetadataType } from './baseMessageSchemas';
export type IdGenerator = () => string;
export type TimestampGenerator = () => string;
export type MetadataFillerOptions = {
    serviceId: string;
    idGenerator?: IdGenerator;
    timestampGenerator?: TimestampGenerator;
    defaultVersion?: string;
};
export type MetadataFiller<T extends PublisherBaseEventType = PublisherBaseEventType, D = CommonEventDefinition, M = PublisherMessageMetadataType> = {
    produceMetadata(currentMessage: T, eventDefinition: D, precedingMessageMetadata?: M): M;
    produceId(): string;
    produceTimestamp(): string;
    produceCurrentServiceId(): string;
};
export declare class CommonMetadataFiller implements MetadataFiller {
    private readonly serviceId;
    readonly produceId: IdGenerator;
    readonly produceTimestamp: TimestampGenerator;
    private readonly defaultVersion;
    constructor(options: MetadataFillerOptions);
    produceCurrentServiceId(): string;
    produceMetadata(_currentMessage: PublisherBaseEventType, eventDefinition: Pick<CommonEventDefinition, 'schemaVersion'>, precedingMessageMetadata?: Omit<PublisherMessageMetadataType, 'producedBy'>): PublisherMessageMetadataType;
}
