import { it as VisualEditingNode } from "./types.js";
import { u as createDatasetMutator } from "./types2.js";
import { SanityClient } from "@sanity/client";
import { ActorRefFrom } from "xstate";
import { SanityEncoder, Transaction } from "@sanity/mutate";
type MutatorActor = ActorRefFrom<ReturnType<typeof createDatasetMutator>>;
type EmptyActor = typeof emptyActor;
declare const emptyActor: import("xstate").ActorRef<import("xstate").Snapshot<undefined>, import("xstate").AnyEventObject, import("xstate").AnyEventObject>;
declare let actor: MutatorActor | EmptyActor;
declare const listeners: Set<() => void>;
declare function isEmptyActor(actor: MutatorActor | EmptyActor): actor is EmptyActor;
declare function setActor(nextActor: MutatorActor): void;
declare const createDocumentMutator: (comlink: VisualEditingNode) => import("xstate").StateMachine<{
  client: SanityClient;
  sharedListener?: ReturnType<typeof import("@sanity/mutate/_unstable_machine").createSharedListener>;
  id: string;
  cache?: Map<string, import("@sanity/client").SanityDocument | null>;
  remote: import("@sanity/client").SanityDocument | null | undefined;
  local: import("@sanity/client").SanityDocument | null | undefined;
  mutationEvents: import("@sanity/client").MutationEvent[];
  stagedChanges: import("@sanity/mutate/_unstable_machine").MutationGroup[];
  stashedChanges: import("@sanity/mutate/_unstable_machine").MutationGroup[];
  error: unknown;
  fetchRemoteSnapshotAttempts: number;
  submitTransactionsAttempts: number;
}, import("@sanity/client").WelcomeEvent | import("@sanity/client").ReconnectEvent | import("@sanity/client").MutationEvent | {
  type: "error";
} | {
  type: "retry";
} | {
  type: "connect";
} | {
  type: "reconnect";
} | {
  type: "welcome";
} | {
  type: "mutate";
  mutations: SanityEncoder.Mutation[];
} | {
  type: "submit";
} | {
  type: "xstate.done.actor.getDocument";
  output: import("@sanity/client").SanityDocument;
} | {
  type: "xstate.done.actor.submitTransactions";
  output: undefined;
}, {
  [x: string]: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void | import("@sanity/client").SanityDocument<Record<string, any>> | undefined, {
    client: SanityClient;
    id: string;
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
    client: SanityClient;
    transactions: Transaction[];
  }, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").ObservableActorLogic<import("@sanity/client").WelcomeEvent | import("@sanity/client").ReconnectEvent | import("@sanity/client").MutationEvent, {
    listener: ReturnType<typeof import("@sanity/mutate/_unstable_machine").createSharedListener>;
    id: string;
  }, import("xstate").EventObject>> | undefined;
  getDocument?: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void | import("@sanity/client").SanityDocument<Record<string, any>> | undefined, {
    client: SanityClient;
    id: string;
  }, import("xstate").EventObject>> | undefined;
  submitTransactions?: import("xstate").ActorRefFromLogic<import("xstate").PromiseActorLogic<void, {
    client: SanityClient;
    transactions: Transaction[];
  }, import("xstate").EventObject>> | undefined;
}, {
  src: "fetch remote snapshot";
  logic: import("xstate").PromiseActorLogic<void | import("@sanity/client").SanityDocument<Record<string, any>> | undefined, {
    client: SanityClient;
    id: string;
  }, import("xstate").EventObject>;
  id: "getDocument";
} | {
  src: "submit mutations as transactions";
  logic: import("xstate").PromiseActorLogic<void, {
    client: SanityClient;
    transactions: Transaction[];
  }, import("xstate").EventObject>;
  id: "submitTransactions";
} | {
  src: "server-sent events";
  logic: import("xstate").ObservableActorLogic<import("@sanity/client").WelcomeEvent | import("@sanity/client").ReconnectEvent | import("@sanity/client").MutationEvent, {
    listener: ReturnType<typeof import("@sanity/mutate/_unstable_machine").createSharedListener>;
    id: string;
  }, import("xstate").EventObject>;
  id: string | undefined;
}, {
  type: "assign error to context";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "clear error from context";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "connect to server-sent events";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "listen to server-sent events";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "stop listening to server-sent events";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "buffer remote mutation events";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "restore stashed changes";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "rebase fetched remote snapshot";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "apply mendoza patch";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "increment fetch attempts";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "reset fetch attempts";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "increment submit attempts";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "reset submit attempts";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "stage mutation";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "stash mutation";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "rebase local snapshot";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "send pristine event to parent";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "send sync event to parent";
  params: import("xstate").NonReducibleUnknown;
} | {
  type: "send mutation event to parent";
  params: import("xstate").NonReducibleUnknown;
}, never, "fetchRemoteSnapshotTimeout" | "submitTransactionsTimeout", "disconnected" | "connecting" | "reconnecting" | "connectFailure" | {
  connected: "loading" | "loadFailure" | {
    loaded: "pristine" | "dirty" | "submitting" | "submitFailure";
  };
}, "error" | "busy" | "ready", import("@sanity/mutate/_unstable_machine").DocumentMutatorMachineInput, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, {
  id: "document-mutator";
  states: {
    readonly disconnected: {};
    readonly connecting: {};
    readonly connectFailure: {};
    readonly reconnecting: {};
    readonly connected: {
      states: {
        readonly loading: {};
        readonly loaded: {
          states: {
            readonly pristine: {};
            readonly dirty: {};
            readonly submitting: {};
            readonly submitFailure: {};
          };
        };
        readonly loadFailure: {};
      };
    };
  };
}>;
export { emptyActor as a, setActor as c, actor as i, EmptyActor as n, isEmptyActor as o, MutatorActor as r, listeners as s, createDocumentMutator as t };
//# sourceMappingURL=documentMutator.d.ts.map