declare const machine: import("xstate").StateMachine<any, import("./types").AutopilotEvents, {
    [x: string]: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
        context: import("./types").AutopilotContext;
    }, import("xstate").EventObject>>;
}, {
    src: "doProcessUserRequest";
    logic: import("xstate").PromiseActorLogic<void, {
        context: import("./types").AutopilotContext;
    }, import("xstate").EventObject>;
    id: string;
}, import("xstate").Values<{
    appendSpeech: {
        type: "appendSpeech";
        params: unknown;
    };
    cleanSpeech: {
        type: "cleanSpeech";
        params: unknown;
    };
    increaseIdleTimeoutCount: {
        type: "increaseIdleTimeoutCount";
        params: unknown;
    };
    resetIdleTimeoutCount: {
        type: "resetIdleTimeoutCount";
        params: unknown;
    };
    resetState: {
        type: "resetState";
        params: unknown;
    };
    setSpeaking: {
        type: "setSpeaking";
        params: unknown;
    };
    setSpeakingDone: {
        type: "setSpeakingDone";
        params: unknown;
    };
    greetUser: {
        type: "greetUser";
        params: unknown;
    };
    goodbye: {
        type: "goodbye";
        params: unknown;
    };
    announceSystemError: {
        type: "announceSystemError";
        params: unknown;
    };
    interruptPlayback: {
        type: "interruptPlayback";
        params: unknown;
    };
    announceIdleTimeout: {
        type: "announceIdleTimeout";
        params: unknown;
    };
}>, import("xstate").Values<{
    isSpeaking: {
        type: "isSpeaking";
        params: unknown;
    };
    idleTimeoutCountExceedsMax: {
        type: "idleTimeoutCountExceedsMax";
        params: unknown;
    };
    hasSpeechResult: {
        type: "hasSpeechResult";
        params: unknown;
    };
}>, "IDLE_TIMEOUT" | "MAX_SPEECH_WAIT_TIMEOUT" | "SESSION_TIMEOUT", "hangup" | "greeting" | "idle" | "listeningToUser" | "transitioningToIdle" | "processingUserRequest" | "waitingForSpeechTimeout", string, {
    conversationSettings: import("..").ConversationSettings;
    languageModel: import("..").LanguageModel;
    voice: import("..").Voice;
}, {}, import("xstate").EventObject, import("xstate").MetaObject, {
    /** @xstate-layout N4IgpgJg5mDOIC5QDMB2BBAkgOigJzDABcBLVKAYgG0AGAXUVAAcB7WE0l1RkAD0QCMADgHYAzAHYAnADYJYgExCaMmSJkAaEAE9EUsQFZsUiaoUGpAhQsMSAvna1os2EhAA2YCgGUACgFF-AGEACQB9bwAVdAAlSNoGJBBWdk5uJP4EAQMAFiFxHLkJbLEaAxkBCS1dLIEcnPFFZSkpHIklQwcnDBw3Tx8A4PCY-28AVQAZePoeFI4SLh5MyzFsBUrzHJMrAxtqxAkcoxyFHMqt0pbsrpBnXo8vXlgiAEMiMGwX5He8AApMAAiE38YUimAAsv4APJjSIASgod1cDwSszY80WGUQMgMRgEUhokgMYjyMlKAn2WQUJmwEnK23a5jEQhuSL6j2ebw+Xx+-yBILBkJh8MRPWRnioAkSzHRaSWgjqNGwQnkNAU0iEYi1VR0emy2Bk+iOpU1bRkrLFRDwL1QqQWqDIUEiLEwD2oMySczlWIQygUtOyORohX0uLJlKkBlE7WJNEqZJVKgtLncJGeYAd5GdY1gYDwA0CoTC-gAcgDUZ7Zfb5VkNdgDMUVAZTYGDJSxDjjMShLGJNI+wJzY5bmLU+nM06WDm8wWhsWy5Lpckq5jQJkBGVRKdTKozhZLO2o8qtQY44dynSysmcGP3hPs7n835C8NRpNpkuvdWfZUpPkGwIVjWJquQKBGg7GB2ZQ0CYYhSDY17YAA7i88zkAAYiweDeEwhAAMYABaRCQAC2YAsAArkQs5FlEsQfmidqrnwggduIzYKCopw0DQdLlJSuISNgbRBpY1LrKcOSIShaFQJh2G4WAhHEWRlHUc+c4jOMUwVjKTHpGuiBiHU9YqFs6y8SqFSUiI4jWJYBKamSJIGNJqGkBhWE4fhRGkeRVEUE8rzvJ83x5r84LoAAGhEgxFgA6lgkSghC0KwgiSIyR5cleYpyl+WpunLvpNZ5A0Hb1AmwaSZS5iiLsWpklYwg9hILLDpl7mOvJ3lKb5qkBUFXKhbykUxRpCVJSlQrpaKLhZd1uU+Sp-lEIujEYgZLEIKeeK4lsgFtW1pRtrqO0CKswZRsGZJBsIQ7dC4TB4CweFwOw5DTngMRgAAjhRcDURAXAfGQABuLAANYfEiz2ve9jpfT9-2Awg4OvW89oJEVX7MeuuwyNgarNpU8akqdNRWPUxg8TQQjrDI9lSR1Ypw29sAfVASN-QDzw0eEdFxDjK5beuPYNJqhyWGamp05SchGHIvEXUIhrGQIDjDqgLAQHAPB3Bt3qGQgAC0F2E8SphCH+GqHEolIm0YLTO-T1u5Gq9SIfghDZYb37GybQj-pIag2zbJxCBGCiE200ikko9TyIh7J+3jiANv6FSDtSFSJ4SUcx328HBoSdKdCzLhWja+mOs6rqeKnot6kY5JRpIzIkh2EZbMq8GM8ISjwQ2iG3hmtdTo+jc1tkEEcXBKzWzIvGUhIKjGNS0iAcyZ6uRXOALZ5CnLQVVFTz60fYC1JxFzxOL8Wd8+0qcViEtH8inIhBE2lAFFMGfxuARMiIP8eQ6Z00MJHM6F1rDCVMDBOkcCVAPRHE9F67NObcxRs8f+21rBHiOvBQcZwWianlgScQJho7kkULkXeDggA */
    readonly context: ({ input }: {
        input: any;
    }) => {
        sessionRef: any;
        voice: any;
        languageModel: any;
        speechBuffer: string;
        firstMessage: any;
        goodbyeMessage: any;
        transferMessage: any;
        transferPhoneNumber: any;
        systemErrorMessage: any;
        idleMessage: any;
        idleTimeout: any;
        maxIdleTimeoutCount: any;
        idleTimeoutCount: number;
        maxSpeechWaitTimeout: any;
        isSpeaking: boolean;
        sessionStartTime: number;
        maxSessionDuration: any;
    };
    readonly id: "fnAI";
    readonly initial: "greeting";
    readonly states: {
        readonly greeting: {
            readonly always: {
                readonly target: "idle";
                readonly description: "Transition to idle after the initial greeting.";
            };
            readonly entry: {
                readonly type: "greetUser";
            };
        };
        readonly idle: {
            readonly entry: {
                readonly type: "cleanSpeech";
            };
            readonly on: {
                readonly SPEECH_START: {
                    readonly target: "listeningToUser";
                    readonly description: "Event from VAD system.";
                };
                readonly SPEECH_RESULT: {
                    readonly target: "listeningToUser";
                    readonly description: "Detected speech before SPEECH_START event.";
                    readonly actions: readonly [{
                        readonly type: "appendSpeech";
                    }];
                };
            };
            readonly after: {
                readonly IDLE_TIMEOUT: readonly [{
                    readonly target: "hangup";
                    readonly actions: {
                        readonly type: "goodbye";
                    };
                    readonly guard: import("xstate/dist/declarations/src/guards").GuardPredicate<any, import("./types").AutopilotEvents, unknown, {
                        type: "idleTimeoutCountExceedsMax";
                        params: undefined;
                    }>;
                }, {
                    readonly target: "transitioningToIdle";
                    readonly actions: readonly [{
                        readonly type: "increaseIdleTimeoutCount";
                    }, {
                        readonly type: "announceIdleTimeout";
                    }];
                }];
            };
        };
        readonly transitioningToIdle: {
            readonly always: {
                readonly target: "idle";
            };
        };
        readonly listeningToUser: {
            readonly entry: readonly [{
                readonly type: "interruptPlayback";
            }, {
                readonly type: "resetIdleTimeoutCount";
            }, {
                readonly type: "setSpeaking";
            }];
            readonly on: {
                readonly SPEECH_END: readonly [{
                    readonly target: "processingUserRequest";
                    readonly guard: "hasSpeechResult";
                    readonly actions: readonly [{
                        readonly type: "setSpeakingDone";
                    }];
                    readonly description: "Process the request immediately since we already speech.";
                }, {
                    readonly target: "waitingForSpeechTimeout";
                    readonly guard: import("xstate/dist/declarations/src/guards").GuardPredicate<any, {
                        type: "SPEECH_END";
                    }, unknown, {
                        type: "hasSpeechResult";
                        params: undefined;
                    }>;
                    readonly actions: readonly [{
                        readonly type: "setSpeakingDone";
                    }];
                    readonly description: "Wait for more speech since we don't have any speech yet.";
                }];
                readonly SPEECH_RESULT: readonly [{
                    readonly actions: {
                        readonly type: "appendSpeech";
                    };
                    readonly guard: "isSpeaking";
                    readonly description: "The user is still speaking. With only want to append the speech.";
                }];
            };
        };
        readonly waitingForSpeechTimeout: {
            readonly on: {
                readonly SPEECH_START: {
                    readonly target: "listeningToUser";
                    readonly description: "User started speaking again.";
                };
                readonly SPEECH_RESULT: {
                    readonly target: "processingUserRequest";
                    readonly actions: {
                        readonly type: "appendSpeech";
                    };
                    readonly description: "Append final speech and process the request.";
                };
            };
            readonly after: {
                readonly MAX_SPEECH_WAIT_TIMEOUT: readonly [{
                    readonly target: "processingUserRequest";
                    readonly description: "Proceed to process the request as we have speech and the user is not speaking.";
                    readonly guard: "hasSpeechResult";
                }, {
                    readonly target: "idle";
                    readonly description: "We have no speech and the user is not speaking. Return to idle.";
                }];
            };
        };
        readonly hangup: {
            readonly type: "final";
        };
        readonly processingUserRequest: {
            readonly on: {
                readonly SPEECH_START: {
                    readonly target: "listeningToUser";
                    readonly description: "Event from VAD or similar system.";
                    readonly actions: readonly [{
                        readonly type: "cleanSpeech";
                    }];
                };
            };
            readonly invoke: {
                readonly src: "doProcessUserRequest";
                readonly description: "Process the user request";
                readonly input: ({ context }: {
                    context: any;
                    event: import("./types").AutopilotEvents;
                    self: import("xstate").ActorRef<import("xstate").MachineSnapshot<any, import("./types").AutopilotEvents, Record<string, import("xstate").AnyActorRef>, import("xstate").StateValue, string, unknown, any, any>, import("./types").AutopilotEvents, import("xstate").AnyEventObject>;
                }) => {
                    context: any;
                };
                readonly onDone: {
                    readonly target: "idle";
                };
            };
        };
    };
}>;
export { machine };
