import { PRODUCER_KEY_HEADER, PRODUCER_SIGNATURE_HEADER, PRODUCER_TIMESTAMP_HEADER, signProducerRequest } from "./producer-client.ts";
export { PRODUCER_KEY_HEADER, PRODUCER_SIGNATURE_HEADER, PRODUCER_TIMESTAMP_HEADER, signProducerRequest, };
export type ProducerCredential = {
    key_id: string;
    app_id: string;
    label: string;
    secret: string;
    categories: string[];
    max_recipients: number;
    hourly_limit: number;
    disabled_at: Date | null;
    created_at: Date;
};
export type HeaderReader = (name: string) => string | null;
export declare function newProducerKeyId(): string;
export declare function newProducerSecret(): string;
export declare function authenticateProducer(header: HeaderReader, rawBody: string | undefined): Promise<{
    credential: ProducerCredential;
    signature: string;
}>;
export declare function claimProducerRequest(credential: ProducerCredential, signature: string): Promise<"accepted" | "replay" | "rate_limited">;
export declare function releaseProducerRequest(credential: ProducerCredential, signature: string): Promise<void>;
export declare function pruneProducerRequests(): Promise<void>;
export declare function listProducers(appId?: string): Promise<ProducerCredential[]>;
export declare function createProducer(input: {
    appId: string;
    label: string;
    categories: string[];
    maxRecipients: number;
    hourlyLimit: number;
}): Promise<{
    credential: ProducerCredential;
    secret: string;
}>;
export declare function revokeProducer(keyId: string): Promise<boolean>;
