import { VerbType } from "./constants";
import { EventMessage, ExtendedMessageLocation, MessagePayload } from "./event-message";
import { MessageConfig, Message, TMN, TRN } from "./message";
export interface CommandMessageConfig extends MessageConfig {
    Arguments?: CommandMessageArguments;
    Callbacks?: Array<CommandMessageCallback>;
}
export declare class CommandMessage extends Message {
    Arguments?: CommandMessageArguments;
    Callbacks?: Array<CommandMessageCallback>;
    constructor(tmn: TMN, ServiceTrn: TRN, config?: CommandMessageConfig | undefined);
    getCallbackMessages: (servicetrn: TRN, result: any) => Array<EventMessage | CommandMessage>;
}
export interface CommandMessageArgumentsConfig {
    Presets?: any;
    Forwarded?: any;
}
export declare class CommandMessageArguments {
    Presets?: any;
    Forwarded?: string;
    constructor(config?: CommandMessageArgumentsConfig | undefined);
}
export interface CommandMessageCallbackConfig {
    Trn?: TRN;
    Verb?: VerbType;
    Attributes?: Record<string, string>;
    Arguments?: CommandMessageArguments;
    ExtendedLocation?: ExtendedMessageLocation;
    Payload?: MessagePayload;
    Callbacks?: Array<CommandMessageCallback>;
}
export declare class CommandMessageCallback {
    Tmn: TMN;
    Trn?: TRN;
    Attributes: Record<string, string>;
    Arguments?: CommandMessageArguments;
    Callbacks: Array<CommandMessageCallback>;
    ExtendedLocation?: ExtendedMessageLocation;
    Payload?: MessagePayload;
    Verb?: VerbType;
    constructor(tmn: TMN, config?: CommandMessageCallbackConfig | undefined);
    addAttribute(key: string, value: string): void;
    addCallback(callback: CommandMessageCallback): void;
    setArguments(args: CommandMessageArguments): void;
}
