{"version":3,"sources":["src/common.speech/DialogServiceTurnState.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAqB,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAyB,MAAM,8CAA8C,CAAC;AAE9G,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,eAAe,CAAgC;gBAEpC,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,MAAM;IAQ5E,IAAW,WAAW,IAAI,yBAAyB,CAIlD;IAEM,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,CAAC,EAAE,qBAAqB,GAAG,yBAAyB;IAQxH,cAAc,IAAI,IAAI;IAMtB,QAAQ,IAAI,IAAI;IAQvB,OAAO,CAAC,mBAAmB;CAU9B","file":"DialogServiceTurnState.d.ts","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { AudioOutputStream, PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager.js\";\r\nimport { ActivityPayloadResponse, MessageDataStreamType } from \"./ServiceMessages/ActivityResponsePayload.js\";\r\n\r\nexport class DialogServiceTurnState {\r\n    private privRequestId: string;\r\n    private privIsCompleted: boolean;\r\n    private privAudioStream: PullAudioOutputStreamImpl;\r\n    private privTimeoutToken: any;\r\n    private privTurnManager: DialogServiceTurnStateManager;\r\n\r\n    public constructor(manager: DialogServiceTurnStateManager, requestId: string) {\r\n        this.privRequestId = requestId;\r\n        this.privIsCompleted = false;\r\n        this.privAudioStream = null;\r\n        this.privTurnManager = manager;\r\n        this.resetTurnEndTimeout();\r\n    }\r\n\r\n    public get audioStream(): PullAudioOutputStreamImpl {\r\n        // Called when is needed to stream.\r\n        this.resetTurnEndTimeout();\r\n        return this.privAudioStream;\r\n    }\r\n\r\n    public processActivityPayload(payload: ActivityPayloadResponse, audioFormat?: AudioOutputFormatImpl): PullAudioOutputStreamImpl {\r\n        if (payload.messageDataStreamType === MessageDataStreamType.TextToSpeechAudio) {\r\n            this.privAudioStream = AudioOutputStream.createPullStream() as PullAudioOutputStreamImpl;\r\n            this.privAudioStream.format = (audioFormat !== undefined) ? audioFormat : AudioOutputFormatImpl.getDefaultOutputFormat();\r\n        }\r\n        return this.privAudioStream;\r\n    }\r\n\r\n    public endAudioStream(): void {\r\n        if (this.privAudioStream !== null && !this.privAudioStream.isClosed) {\r\n            this.privAudioStream.close();\r\n        }\r\n    }\r\n\r\n    public complete(): void {\r\n        if (this.privTimeoutToken !== undefined) {\r\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n            clearTimeout(this.privTimeoutToken);\r\n        }\r\n        this.endAudioStream();\r\n    }\r\n\r\n    private resetTurnEndTimeout(): void {\r\n        if (this.privTimeoutToken !== undefined) {\r\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n            clearTimeout(this.privTimeoutToken);\r\n        }\r\n        this.privTimeoutToken = setTimeout((): void => {\r\n            this.privTurnManager.CompleteTurn(this.privRequestId);\r\n            return;\r\n        }, 2000);\r\n    }\r\n}\r\n"]}