{"version":3,"sources":["src/common.speech/Transcription/ConversationRequestSession.ts"],"names":[],"mappings":"AAGA,OAAO,EAIH,OAAO,EACV,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,0BAA0B;IACnC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,6BAA6B,CAAoB;IACzD,OAAO,CAAC,aAAa,CAAS;gBAElB,SAAS,EAAE,MAAM;IAM7B,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/C;IAEM,oBAAoB,2DAE1B;IAEM,eAAe,6CAIrB;IAEM,8BAA8B,gDAMpC;IAEM,wBAAwB,2CAM9B;IAEM,OAAO,2BAQb;IAED,OAAO,CAAC,UAAU,CAEjB;CAEJ","file":"ConversationRequestSession.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n\nimport {\n    createNoDashGuid,\n    Deferred,\n    IDetachable,\n    Promise,\n} from \"../../common/Exports\";\n\n/**\n * Placeholder class for the Conversation Request Session. Based off RequestSession.\n * TODO: define what telemetry is required.\n */\nexport class ConversationRequestSession {\n    private privIsDisposed: boolean = false;\n    private privDetachables: IDetachable[] = new Array<IDetachable>();\n    private privRequestId: string;\n    private privRequestCompletionDeferral: Deferred<boolean>;\n    private privSessionId: string;\n\n    constructor(sessionId: string) {\n        this.privSessionId = sessionId;\n        this.privRequestId = createNoDashGuid();\n        this.privRequestCompletionDeferral = new Deferred<boolean>();\n    }\n\n    public get sessionId(): string {\n        return this.privSessionId;\n    }\n\n    public get requestId(): string {\n        return this.privRequestId;\n    }\n\n    public get completionPromise(): Promise<boolean> {\n        return this.privRequestCompletionDeferral.promise();\n    }\n\n    public onPreConnectionStart = (authFetchEventId: string, connectionId: string): void => {\n        this.privSessionId = connectionId;\n    }\n\n    public onAuthCompleted = (isError: boolean, error?: string): void => {\n        if (isError) {\n            this.onComplete();\n        }\n    }\n\n    public onConnectionEstablishCompleted = (statusCode: number, reason?: string): void => {\n        if (statusCode === 200) {\n            return;\n        } else if (statusCode === 403) {\n            this.onComplete();\n        }\n    }\n\n    public onServiceTurnEndResponse = (continuousRecognition: boolean): void => {\n        if (!continuousRecognition) {\n            this.onComplete();\n        } else {\n            this.privRequestId = createNoDashGuid();\n        }\n    }\n\n    public dispose = (error?: string): void => {\n        if (!this.privIsDisposed) {\n            // we should have completed by now. If we did not its an unknown error.\n            this.privIsDisposed = true;\n            for (const detachable of this.privDetachables) {\n                detachable.detach();\n            }\n        }\n    }\n\n    private onComplete = (): void => {\n        //\n    }\n\n}\n"]}