/// <reference types="node" />
import { EventEmitter } from 'events';
import { JsonObject } from 'type-fest';
import { ViberClient } from 'messaging-api-viber';
import Session from '../session/Session';
import { Connector } from '../bot/Connector';
import ViberContext from './ViberContext';
import ViberEvent from './ViberEvent';
import { Sender, ViberRawEvent, ViberRequestBody, ViberRequestContext } from './ViberTypes';
declare type ConnectorOptionsWithoutClient = {
    accessToken: string;
    sender: Sender;
    origin?: string;
    skipLegacyProfile?: boolean;
};
declare type ConnectorOptionsWithClient = {
    client: ViberClient;
    skipLegacyProfile?: boolean;
};
export declare type ViberConnectorOptions = ConnectorOptionsWithoutClient | ConnectorOptionsWithClient;
export default class ViberConnector implements Connector<ViberRequestBody, ViberClient> {
    _accessToken: string;
    _client: ViberClient;
    _skipLegacyProfile: boolean;
    constructor(options: ViberConnectorOptions);
    _getRawEventFromRequest(body: ViberRequestBody): ViberRawEvent;
    get platform(): 'viber';
    get client(): ViberClient;
    getUniqueSessionKey(body: ViberRequestBody): string;
    updateSession(session: Session, body: ViberRequestBody): Promise<void>;
    mapRequestToEvents(body: ViberRequestBody): ViberEvent[];
    createContext(params: {
        event: ViberEvent;
        session: Session | null;
        initialState?: JsonObject | null;
        requestContext?: ViberRequestContext;
        emitter?: EventEmitter | null;
    }): ViberContext;
    verifySignature(rawBody: string, signature: string): boolean;
    preprocess({ method, headers, rawBody }: ViberRequestContext): {
        shouldNext: boolean;
        response?: undefined;
    } | {
        shouldNext: boolean;
        response: {
            status: number;
            body: {
                error: {
                    message: string;
                    request: {
                        rawBody: string;
                        headers: {
                            'x-viber-content-signature': string | undefined;
                        };
                    };
                };
            };
        };
    };
}
export {};
//# sourceMappingURL=ViberConnector.d.ts.map