import { PublishBatchRequestEntry } from "@aws-sdk/client-sns";
import { HandleResult } from "../sqs";
import { CommandMessage, EventMessage, TRN } from "../message";
import Context from "../context/context";
export declare enum RESERVED_ARNS {
    INGRESS_ARN = "ingress-arn"
}
export interface PublisherConfig {
    region: string;
    serviceTrn: TRN;
    arns: Record<string, string>;
}
export declare class Publisher {
    private config;
    private client;
    constructor(config: PublisherConfig);
    /**
     * Publish messages to topic
     */
    publish: (ctx: Context, topic: string, ...messages: (CommandMessage | EventMessage)[]) => Promise<void>;
    createBatchMessageEntries: (ctx: Context, messages: Array<CommandMessage | EventMessage>) => Promise<Array<PublishBatchRequestEntry>>;
    defaultHandlerPosthook: (ctx: Context, topic: string) => (ctx: Context, result: HandleResult) => Promise<Error | undefined>;
}
