/// <reference types="node" />
import { WebhooksEvent } from "../domain/webhooks";
export declare class ApiVersionMismatchError extends Error {
    readonly eventApiVersion: string;
    readonly sdkApiVersion: string;
    constructor(message: string, eventApiVersion: string, sdkApiVersion: string);
    name: string;
}
export interface InMemorySecretKeyStore extends SecretKeyStore {
    storeSecretKey(keyId: string, secretKey: string): void;
    removeSecretKey(keyId: string): void;
    clear(): void;
}
export declare type RequestHeaders = {
    [header: string]: string | string[] | undefined;
};
export declare type SecretKeyCallback = (e: Error | null, secretKey: string | null) => void;
export declare class SecretKeyNotAvailableError extends Error {
    readonly keyId: string;
    constructor(message: string, keyId: string);
    name: string;
}
export interface SecretKeyStore {
    getSecretKey(keyId: string, cb: SecretKeyCallback): void;
}
export declare type UnmarshalCallback = (e: Error | null, event: WebhooksEvent | null) => void;
export declare type ValidateCallback = (e: Error | null) => void;
export interface WebhooksContext {
    getSecretKey(keyId: string, cb: SecretKeyCallback): void;
}
export interface WebhooksHelper {
    init(context: WebhooksContext): WebhooksHelper;
    validate(body: string | Buffer, requestHeaders: RequestHeaders, cb: ValidateCallback): void;
    unmarshal(body: string | Buffer, requestHeaders: RequestHeaders, cb: UnmarshalCallback): void;
    readonly inMemorySecretKeyStore: InMemorySecretKeyStore;
}
