import FetchChatTokenResponse from "./Model/FetchChatTokenResponse";
import IDataMaskingInfo from "./Interfaces/IDataMaskingInfo";
import IEmailTranscriptOptionalParams from "./Interfaces/IEmailTranscriptOptionalParams";
import IGetChatTokenOptionalParams from "./Interfaces/IGetChatTokenOptionalParams";
import IGetChatTranscriptsOptionalParams from "./Interfaces/IGetChatTranscriptsOptionalParams";
import IGetLWIDetailsOptionalParams from "./Interfaces/IGetLWIDetailsOptionalParams";
import IGetQueueAvailabilityOptionalParams from "./Interfaces/IGetQueueAvailabilityOptionalParams";
import IGetSurveyInviteLinkOptionalParams from "./Interfaces/IGetSurveyInviteLinkOptionalParams";
import IOmnichannelConfiguration from "./Interfaces/IOmnichannelConfiguration";
import IReconnectableChatsParams from "./Interfaces/IReconnectableChatsParams";
import ISDK from "./Interfaces/ISDK";
import ISDKConfiguration from "./Interfaces/ISDKConfiguration";
import ISecondaryChannelEventOptionalParams from "./Interfaces/ISecondaryChannelEventOptionalParams";
import ISendTypingIndicatorOptionalParams from "./Interfaces/ISendTypingIndicatorOptionalParams";
import ISessionCloseOptionalParams from "./Interfaces/ISessionCloseOptionalParams";
import ISessionInitOptionalParams from "./Interfaces/ISessionInitOptionalParams";
import ISubmitPostChatResponseOptionalParams from "./Interfaces/ISubmitPostChatResponseOptionalParams";
import IValidateAuthChatRecordOptionalParams from "./Interfaces/IValidateAuthChatRecordOptionalParams";
import OCSDKLogger from "./Common/OCSDKLogger";
import QueueAvailability from "./Model/QueueAvailability";
import ReconnectAvailability from "./Model/ReconnectAvailability";
import ReconnectMappingRecord from "./Model/ReconnectMappingRecord";
export default class SDK implements ISDK {
    private omnichannelConfiguration;
    private configuration;
    private logger?;
    private static defaultRequestTimeoutConfig;
    private static defaultConfiguration;
    liveChatVersion: number;
    sessionId?: string;
    constructor(omnichannelConfiguration: IOmnichannelConfiguration, configuration?: ISDKConfiguration, logger?: OCSDKLogger | undefined);
    /**
     * Fetches chat config.
     * @param requestId: RequestId to use to get chat config (Optional).
     */
    getChatConfig(requestId: string, bypassCache?: boolean): Promise<object | void>;
    /**
     * Fetches LWI details.
     * @param requestId: RequestId to use to get chat config (Optional).
     * @param getLWIDetailsOptionalParams: Optional parameters for get LWI Details.
     */
    getLWIDetails(requestId: string, getLWIDetailsOptionalParams?: IGetLWIDetailsOptionalParams): Promise<object>;
    /**
     * Fetches the chat token from Omnichannel to join T1 thread.
     * @param requestId: RequestId to use for getchattoken (Optional).
     * @param getChatTokenOptionalParams: Optional parameters for get chat token.
     */
    getChatToken(requestId: string, getChatTokenOptionalParams?: IGetChatTokenOptionalParams, currentRetryCount?: number): Promise<FetchChatTokenResponse>;
    /**
     * Fetches the reconnectable chats from omnichannel from the given user information in JWT token(claim name: sub).
     * @param reconnectableChatsParams Mandate parameters for get reconnectable chats.
     */
    getReconnectableChats(reconnectableChatsParams: IReconnectableChatsParams): Promise<ReconnectMappingRecord | void>;
    /**
   * Fetches the reconnectable chats from omnichannel from the given user information in JWT token(claim name: sub).
   * @param reconnectableChatsParams Mandate parameters for get reconnectable chats.
   */
    getReconnectAvailability(reconnectId: string): Promise<ReconnectAvailability | void>;
    /**
     *
     * @param requestId: RequestId to use for session init.
     * @param queueAvailabilityOptionalParams: Optional parameters for session init.
     */
    getAgentAvailability(requestId: string, queueAvailabilityOptionalParams?: IGetQueueAvailabilityOptionalParams): Promise<QueueAvailability>;
    /**
     * Starts a session to omnichannel.
     * @param requestId: RequestId to use for session init.
     * @param sessionInitOptionalParams: Optional parameters for session init.
     */
    sessionInit(requestId: string, sessionInitOptionalParams?: ISessionInitOptionalParams): Promise<void>;
    /**
     * Closes the omnichannel session.
     * @param requestId: RequestId to use for session close (same request id for session init).
     * @param sessionCloseOptionalParams: Optional parameters for session close.
     */
    sessionClose(requestId: string, sessionCloseOptionalParams?: ISessionCloseOptionalParams): Promise<void>;
    /**
     * Validate the auth chat record exists in database.
     * @param requestId: RequestId for validateAuthChatRecord (same request id for session init).
     * @param validateAuthChatRecordOptionalParams: Optional parameters for validateAuthChatRecord.
     */
    validateAuthChatRecord(requestId: string, validateAuthChatRecordOptionalParams: IValidateAuthChatRecordOptionalParams): Promise<object>;
    /**
     * Submits post chat response.
     * @param requestId RequestId of the omnichannel session.
     * @param postChatResponse Post chat response to submit.
     * @param submitPostChatResponseOptionalParams: Optional parameters for submit post chat response.
     */
    submitPostChatResponse(requestId: string, postChatResponse: object, submitPostChatResponseOptionalParams?: ISubmitPostChatResponseOptionalParams): Promise<void>;
    /**
     * Submits post chat response.
     * @param requestId RequestId of the omnichannel session.
     * @param postChatResponse Post chat response to submit.
     * @param submitPostChatResponseOptionalParams: Optional parameters for submit post chat response.
     */
    getSurveyInviteLink(surveyOwnerId: string, surveyInviteAPIRequestBody: object, getsurveyInviteLinkOptionalParams?: IGetSurveyInviteLinkOptionalParams): Promise<object>;
    /**
     * Get chat transcripts for customer.
     * @param requestId RequestId of the omnichannel session.
     * @param chatId Chat thread Id.
     * @param token Skype token.
     * @param getChatTranscriptsOptionalParams Optional parameters for get chat transcripts.
     */
    getChatTranscripts(requestId: string, chatId: string, token: string, getChatTranscriptsOptionalParams?: IGetChatTranscriptsOptionalParams): Promise<string>;
    /**
     * Email transcript to customer.
     * @param requestId RequestId of the omnichannel session.
     * @param token Skype token.
     * @param emailRequestBody Email request body.
     * @param emailTranscriptOptionalParams Optional parameters for email transcript.
     */
    emailTranscript(requestId: string, token: string, emailRequestBody: object, emailTranscriptOptionalParams?: IEmailTranscriptOptionalParams): Promise<void>;
    /**
     * Fetch data masking info of the org.
     * @param requestId RequestId of the omnichannel session (Optional).
     */
    fetchDataMaskingInfo(requestId: string): Promise<IDataMaskingInfo>;
    /**
     * Makes a secondary channel event network call to Omnichannel.
     * @param requestId RequestId to use for secondary channel event
     * @param secondaryChannelEventRequestBody secondaryChannel event request body
     * @param secondaryChannelEventOptionalParams Optional parameters for secondary channel events.
     */
    makeSecondaryChannelEventRequest(requestId: string, secondaryChannelEventRequestBody: object, secondaryChannelEventOptionalParams?: ISecondaryChannelEventOptionalParams): Promise<void>;
    /** Send typing indicator
     * @param requestId RequestId of the omnichannel session.
     */
    sendTypingIndicator(requestId: string, currentLiveChatVersion: number, sendTypingIndicatorOptionalParams?: ISendTypingIndicatorOptionalParams): Promise<void>;
    /**
     * Helper function for logging.
     *
     * @param logLevel Log level for logging.
     * @param telemetryEventType Telemetry event type in which event will be logged.
     * @param description Description of the event.
     * @param requestId Request ID
     * @param response Response
     * @param elapsedTimeInMilliseconds Elapsed time in ms
     * @param requestPath Request path
     * @param method Method
     * @param error Error
     * @param data Data
     */
    private logWithLogger;
    private setAuthCodeNonce;
    private setSessionIdHeader;
}
