import { ClassType } from "jackson-js/dist/@types";
import { MessagePayloadCompression, VerbType } from "./constants";
import { MessageConfig, Message, TRN, TMN } from "./message";
export declare class ExtendedMessageLocation {
    Bucket: string;
    MetadataKey: string;
    constructor(bucket: string, key: string);
}
export declare class MessagePayload {
    Body: any;
    Compression: MessagePayloadCompression;
    constructor(compression: MessagePayloadCompression, body: any);
}
export interface EventMessageConfig extends MessageConfig {
    Verb: VerbType;
    Attributes?: Record<string, string>;
    ExtendedLocation?: ExtendedMessageLocation;
    Payload?: MessagePayload;
}
export declare class EventMessage extends Message {
    Trn: TRN;
    Attributes: Record<string, string>;
    ExtendedLocation?: ExtendedMessageLocation;
    private Payload?;
    Verb: VerbType;
    static construct(tmn: TMN, trn: TRN, ServiceTrn: TRN, config: EventMessageConfig): EventMessage;
    constructor(tmn: TMN, trn: TRN, ServiceTrn: TRN, config?: EventMessageConfig | undefined);
    getVerb(): VerbType;
    private setPayload;
    private getPayloadBody;
    hasPayload(): boolean;
    GetPayload<T>(creatorClass: ClassType<any>, isArray?: boolean): T;
    addAttribute(key: string, value: string): void;
    isExtended(): boolean;
    getExtendedMessageMetadataBucket(): string;
    getExtendedMessageMetadataReference(): string;
}
