import type { TransactionVerificationMessageDto } from "@stakekit/api-hooks";
import type { SnapshotFromStore } from "@xstate/store";
import { Maybe } from "purify-ts";
import type { SKWallet } from "../../../domain/types/wallet";
import { useExitStakeStore } from "../../../providers/exit-stake-store";
import type { GetMaybeJust } from "../../../types/utils";
export declare const useUnstakeMachine: ({ onDone }: {
    onDone: () => void;
}) => [import("xstate").MachineSnapshot<{
    error: Maybe<Error>;
    transactionVerificationMessageDto: Maybe<TransactionVerificationMessageDto>;
    signedMessage: Maybe<string>;
    data: ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>;
}, {
    type: "UNSTAKE";
} | {
    type: "__GET_VERIFICATION_MESSAGE__";
    val: GetMaybeJust<ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>>;
} | {
    type: "__SUBMIT__";
    val: GetMaybeJust<ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>>;
} | {
    type: "__RESET__";
} | {
    type: "__GET_VERIFICATION_MESSAGE_SUCCESS__";
    val: TransactionVerificationMessageDto;
} | {
    type: "__GET_VERIFICATION_MESSAGE_ERROR__";
    val: Error;
} | {
    type: "CONTINUE_MESSAGE_SIGN";
} | {
    type: "CANCEL_MESSAGE_SIGN";
} | {
    type: "__SIGN_MESSAGE_SUCCESS__";
    val: string;
} | {
    type: "__SIGN_MESSAGE_ERROR__";
    val: Error;
} | {
    type: "__SUBMIT_SUCCESS__";
} | {
    type: "__SUBMIT_ERROR__";
}, {}, "done" | "initial" | "check" | "showPopup" | {
    signMessage: "error" | "loading";
} | {
    submit: "error" | "loading";
} | {
    getVerificationMessage: "error" | "loading";
}, string, import("xstate").NonReducibleUnknown, import("xstate").MetaObject, {
    states: {
        readonly initial: {};
        readonly check: {};
        readonly getVerificationMessage: {
            states: {
                readonly loading: {};
                readonly error: {};
            };
        };
        readonly showPopup: {};
        readonly signMessage: {
            states: {
                readonly loading: {};
                readonly error: {};
            };
        };
        readonly submit: {
            states: {
                readonly loading: {};
                readonly error: {};
            };
        };
        readonly done: {};
    };
}>, (event: {
    type: "UNSTAKE";
} | {
    type: "__GET_VERIFICATION_MESSAGE__";
    val: GetMaybeJust<ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>>;
} | {
    type: "__SUBMIT__";
    val: GetMaybeJust<ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>>;
} | {
    type: "__RESET__";
} | {
    type: "__GET_VERIFICATION_MESSAGE_SUCCESS__";
    val: TransactionVerificationMessageDto;
} | {
    type: "__GET_VERIFICATION_MESSAGE_ERROR__";
    val: Error;
} | {
    type: "CONTINUE_MESSAGE_SIGN";
} | {
    type: "CANCEL_MESSAGE_SIGN";
} | {
    type: "__SIGN_MESSAGE_SUCCESS__";
    val: string;
} | {
    type: "__SIGN_MESSAGE_ERROR__";
    val: Error;
} | {
    type: "__SUBMIT_SUCCESS__";
} | {
    type: "__SUBMIT_ERROR__";
}) => void, import("xstate").Actor<import("xstate").StateMachine<{
    error: Maybe<Error>;
    transactionVerificationMessageDto: Maybe<TransactionVerificationMessageDto>;
    signedMessage: Maybe<string>;
    data: ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>;
}, {
    type: "UNSTAKE";
} | {
    type: "__GET_VERIFICATION_MESSAGE__";
    val: GetMaybeJust<ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>>;
} | {
    type: "__SUBMIT__";
    val: GetMaybeJust<ReturnType<() => Maybe<GetMaybeJust<SnapshotFromStore<ReturnType<typeof useExitStakeStore>>["context"]["data"]> & {
        network: NonNullable<SKWallet["network"]>;
        address: NonNullable<SKWallet["address"]>;
        additionalAddresses: SKWallet["additionalAddresses"];
    }>>>;
} | {
    type: "__RESET__";
} | {
    type: "__GET_VERIFICATION_MESSAGE_SUCCESS__";
    val: TransactionVerificationMessageDto;
} | {
    type: "__GET_VERIFICATION_MESSAGE_ERROR__";
    val: Error;
} | {
    type: "CONTINUE_MESSAGE_SIGN";
} | {
    type: "CANCEL_MESSAGE_SIGN";
} | {
    type: "__SIGN_MESSAGE_SUCCESS__";
    val: string;
} | {
    type: "__SIGN_MESSAGE_ERROR__";
    val: Error;
} | {
    type: "__SUBMIT_SUCCESS__";
} | {
    type: "__SUBMIT_ERROR__";
}, {}, never, never, never, never, "done" | "initial" | "check" | "showPopup" | {
    signMessage: "error" | "loading";
} | {
    submit: "error" | "loading";
} | {
    getVerificationMessage: "error" | "loading";
}, string, import("xstate").NonReducibleUnknown, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, {
    states: {
        readonly initial: {};
        readonly check: {};
        readonly getVerificationMessage: {
            states: {
                readonly loading: {};
                readonly error: {};
            };
        };
        readonly showPopup: {};
        readonly signMessage: {
            states: {
                readonly loading: {};
                readonly error: {};
            };
        };
        readonly submit: {
            states: {
                readonly loading: {};
                readonly error: {};
            };
        };
        readonly done: {};
    };
}>>];
