import { it as VisualEditingNode } from "./types.js";
import { u as createDatasetMutator } from "./types2.js";
import * as _sanity_client16 from "@sanity/client";
import { SanityClient } from "@sanity/client";
import * as _sanity_mutate__unstable_machine5 from "@sanity/mutate/_unstable_machine";
import * as xstate91 from "xstate";
import { ActorRefFrom } from "xstate";
import { SanityEncoder, Transaction } from "@sanity/mutate";
type MutatorActor = ActorRefFrom<ReturnType<typeof createDatasetMutator>>;
type EmptyActor = typeof emptyActor;
declare const emptyActor: xstate91.ActorRef<xstate91.Snapshot<undefined>, xstate91.AnyEventObject, xstate91.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) => xstate91.StateMachine<{
  client: SanityClient;
  sharedListener?: ReturnType<typeof _sanity_mutate__unstable_machine5.createSharedListener>;
  id: string;
  cache?: Map<string, _sanity_client16.SanityDocument | null>;
  remote: _sanity_client16.SanityDocument | null | undefined;
  local: _sanity_client16.SanityDocument | null | undefined;
  mutationEvents: _sanity_client16.MutationEvent[];
  stagedChanges: _sanity_mutate__unstable_machine5.MutationGroup[];
  stashedChanges: _sanity_mutate__unstable_machine5.MutationGroup[];
  error: unknown;
  fetchRemoteSnapshotAttempts: number;
  submitTransactionsAttempts: number;
}, _sanity_client16.WelcomeEvent | _sanity_client16.ReconnectEvent | _sanity_client16.MutationEvent | {
  type: "error";
} | {
  type: "retry";
} | {
  type: "connect";
} | {
  type: "reconnect";
} | {
  type: "welcome";
} | {
  type: "mutate";
  mutations: SanityEncoder.Mutation[];
} | {
  type: "submit";
} | {
  type: "xstate.done.actor.getDocument";
  output: _sanity_client16.SanityDocument;
} | {
  type: "xstate.done.actor.submitTransactions";
  output: undefined;
}, {
  [x: string]: xstate91.ActorRefFromLogic<xstate91.PromiseActorLogic<void | _sanity_client16.SanityDocument<Record<string, any>> | undefined, {
    client: SanityClient;
    id: string;
  }, xstate91.EventObject>> | xstate91.ActorRefFromLogic<xstate91.PromiseActorLogic<void, {
    client: SanityClient;
    transactions: Transaction[];
  }, xstate91.EventObject>> | xstate91.ActorRefFromLogic<xstate91.ObservableActorLogic<_sanity_client16.WelcomeEvent | _sanity_client16.ReconnectEvent | _sanity_client16.MutationEvent, {
    listener: ReturnType<typeof _sanity_mutate__unstable_machine5.createSharedListener>;
    id: string;
  }, xstate91.EventObject>> | undefined;
  getDocument?: xstate91.ActorRefFromLogic<xstate91.PromiseActorLogic<void | _sanity_client16.SanityDocument<Record<string, any>> | undefined, {
    client: SanityClient;
    id: string;
  }, xstate91.EventObject>> | undefined;
  submitTransactions?: xstate91.ActorRefFromLogic<xstate91.PromiseActorLogic<void, {
    client: SanityClient;
    transactions: Transaction[];
  }, xstate91.EventObject>> | undefined;
}, {
  src: "fetch remote snapshot";
  logic: xstate91.PromiseActorLogic<void | _sanity_client16.SanityDocument<Record<string, any>> | undefined, {
    client: SanityClient;
    id: string;
  }, xstate91.EventObject>;
  id: "getDocument";
} | {
  src: "submit mutations as transactions";
  logic: xstate91.PromiseActorLogic<void, {
    client: SanityClient;
    transactions: Transaction[];
  }, xstate91.EventObject>;
  id: "submitTransactions";
} | {
  src: "server-sent events";
  logic: xstate91.ObservableActorLogic<_sanity_client16.WelcomeEvent | _sanity_client16.ReconnectEvent | _sanity_client16.MutationEvent, {
    listener: ReturnType<typeof _sanity_mutate__unstable_machine5.createSharedListener>;
    id: string;
  }, xstate91.EventObject>;
  id: string | undefined;
}, {
  type: "assign error to context";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "clear error from context";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "connect to server-sent events";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "listen to server-sent events";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "stop listening to server-sent events";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "buffer remote mutation events";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "restore stashed changes";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "rebase fetched remote snapshot";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "apply mendoza patch";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "increment fetch attempts";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "reset fetch attempts";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "increment submit attempts";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "reset submit attempts";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "stage mutation";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "stash mutation";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "rebase local snapshot";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "send pristine event to parent";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "send sync event to parent";
  params: xstate91.NonReducibleUnknown;
} | {
  type: "send mutation event to parent";
  params: xstate91.NonReducibleUnknown;
}, never, "fetchRemoteSnapshotTimeout" | "submitTransactionsTimeout", "disconnected" | "connecting" | "reconnecting" | "connectFailure" | {
  connected: "loading" | "loadFailure" | {
    loaded: "pristine" | "dirty" | "submitting" | "submitFailure";
  };
}, "error" | "busy" | "ready", _sanity_mutate__unstable_machine5.DocumentMutatorMachineInput, xstate91.NonReducibleUnknown, xstate91.EventObject, xstate91.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