import { Dispatch, SetStateAction } from 'react';
export declare enum AuthMethod {
    Loginkey = "LOGINKEY",
    Saml = "SAML",
    SamlWithLoginkey = "SAMLLOGINKEY"
}
export interface AuthParams {
    url: string;
    puid: string;
    groupId: string | number;
    method?: AuthMethod | string;
    headers?: Object;
    body?: URLSearchParams;
    debug?: boolean;
    errorHandler?: (message: string, hideError?: boolean) => void;
}
interface LoginKey {
    key: string;
    expiration: number;
}
interface JoinParams {
    cobrowseKey: string;
    openLocation?: string;
    debug?: boolean;
    sessionStateHandler?: (activeSession: boolean) => void;
}
export interface PresenceParams {
    presenceCallback: Dispatch<SetStateAction<boolean>>;
    permissionsCallback: () => void;
    visitorId: string;
    debug?: boolean;
    endSessionCallback?: (data: any) => void;
    startSessionCallback?: (data: any) => void;
}
interface EventListenerParams {
    endSessionCallback?: (data: any) => void;
    debug?: boolean;
}
export declare enum ErrorUserMessages {
    LoginKeyError = "There are issues with authentication, please refresh the page",
    ConnectPresenceError = "There are issues with connecting to the presence service, please try again or refresh the page",
    PresenceAuthorizationError = "Partner User Id \"{0}\" not found or invalid, contact your administrator",
    PresenceDeclinedError = "The website visitor declined cobrowse session",
    LookupSessionNotFoundError = "Session not found. Check that the key is correct",
    LookupSessionError = "There are issues connecting cobrowse session, please try again or refresh the page",
    JoinSessionError = "There are issues with the visitor joining the cobrowse session, please try again or refresh the page",
    InviteSessionError = "There are issues with inviting the visitor to the mobile camera share session, please try again or refresh the page",
    InviteSessionBusinessError = "{0}, please try again or refresh the page",
    EndPresenceError = "There are issues with ending the cobrowse session, please try again or refresh the page",
    EndCobrowseError = "There are issues with ending the cobrowse session, please try again or refresh the page"
}
export declare class AgentService {
    protected Agent: any;
    protected loginKeyParams: LoginKey;
    protected auth: AuthParams;
    protected sessionInfo: any;
    protected scheduleLoginKeyRenewRef: number;
    protected scheduleEndSessionCheck: number;
    private openedWindow;
    constructor(auth: AuthParams);
    authWithLoginkey: (auth: AuthParams, regenerate?: boolean) => Promise<void>;
    private defaultLogger;
    defaultErrorHandler(error: Error, context?: string, userMessage?: string, hideError?: boolean): void;
    getLoginkey: (auth: AuthParams) => Promise<LoginKey>;
    get loginKey(): string;
    get puid(): string;
    get groupId(): string | number;
    protected scheduleLoginKeyRenew: (regenerate?: boolean) => number;
    handleEvents: () => void;
    presenceFailedAuthorizationHandler: (payload: any) => Promise<boolean>;
    authWithSaml: (idpid: string) => void;
    authWithSamlLoginKey: (idpid: string) => void;
    setAgentListeners: (eventParams: EventListenerParams) => void;
    connectPresence: (presence: PresenceParams) => Promise<void>;
    disconnectPresence: () => Promise<void>;
    cobrowseService: (join: JoinParams) => void;
    cancelEndSessionCheck: () => void;
    lookupService: (join: JoinParams) => Promise<string>;
    lookupServiceCancel: () => void;
    presenceStartSession: (sessionKey: string, acceptHandler: () => void, declineHandler: () => void) => Promise<void>;
    presenceDisconnect: () => Promise<void>;
    setPresenceVisitorId: (visitorId: string) => void;
    registerEventsHandler: (handler: (eventName: string, eventData: any) => void) => void;
    getBackendUrl: (path: any) => string;
    checkSession: (sessionCode: string) => Promise<any>;
    presenceEndSession: (visitorId: string) => Promise<void>;
    cobrowseEndSession: (sessionCode: string) => Promise<void>;
    hasAgentWindow: () => boolean;
    closeAgentWindow: () => boolean;
    openWindow: (url: string, params: string, closeHandler: (reason: any) => void) => void;
    checkPermissions: (permissions: {
        name: string;
        expectedValue: any;
        handler: (hasPermission: boolean) => void;
    }[]) => void;
    getPresenceJwtTokenClaims(): {};
}
export {};
