export function sliceFromText(schema: any, text: string, marks?: readonly import('prosemirror-model').Mark[]): import('prosemirror-model').Slice;
export function toSliceContent(schema: any, content: any): import('prosemirror-model').Slice;
export function makeTextInsertIntent({ at, content, schema, user, date, source, replacementGroupHint, preserveExistingReviewState, }: {
    at: number;
    content: import('prosemirror-model').Slice | string;
    schema?: any;
    user: TrackedEditIntentUser;
    date: string;
    source: EditIntentSource;
    replacementGroupHint?: string;
    preserveExistingReviewState?: boolean;
}): TrackedEditIntent;
export function makeTextDeleteIntent({ from, to, user, date, source, replacementGroupHint, preserveExistingReviewState, }: {
    from: number;
    to: number;
    user: TrackedEditIntentUser;
    date: string;
    source: EditIntentSource;
    replacementGroupHint?: string;
    preserveExistingReviewState?: boolean;
}): TrackedEditIntent;
export function makeTextReplaceIntent({ from, to, content, schema, replacements, user, date, source, replacementGroupHint, preserveExistingReviewState, }: {
    from: number;
    to: number;
    content: import('prosemirror-model').Slice | string;
    schema?: any;
    replacements: "paired" | "independent";
    user: TrackedEditIntentUser;
    date: string;
    source: EditIntentSource;
    replacementGroupHint?: string;
    preserveExistingReviewState?: boolean;
}): TrackedEditIntent;
export function makeFormatIntent({ kind, from, to, mark, user, date, source }: {
    kind: "format-apply" | "format-remove";
    from: number;
    to: number;
    mark: import('prosemirror-model').Mark;
    user: TrackedEditIntentUser;
    date: string;
    source: EditIntentSource;
}): TrackedEditIntent;
export function intentKind(intent: TrackedEditIntent): string;
export type EditIntentSource = "native" | "document-api" | "programmatic";
export type TrackedEditIntentUser = {
    name: string;
    email: string;
    image?: string | undefined;
};
export type TrackedEditIntentBase = {
    source: EditIntentSource;
    user: TrackedEditIntentUser;
    date: string;
    replacementGroupHint?: string | undefined;
    /**
     * When true, the compiler may
     * probe for an adjacent tracked-delete span and move the insertion to
     * after it. Single-step user replace turns this on; multi-step transactions
     * leave it off so each granular op lands at its own position.
     */
    probeForDeletionSpan?: boolean | undefined;
    /**
     * When true, the compiler
     * must not collapse/refine existing tracked review marks even if the
     * current user owns them. Used by explicit direct mutations that are
     * re-routed through tracking only to protect existing review state.
     */
    preserveExistingReviewState?: boolean | undefined;
};
export type TrackedEditIntent = (TrackedEditIntentBase & {
    kind: "text-insert";
    at: number;
    content: import('prosemirror-model').Slice;
}) | (TrackedEditIntentBase & {
    kind: "text-delete";
    from: number;
    to: number;
}) | (TrackedEditIntentBase & {
    kind: "text-replace";
    from: number;
    to: number;
    content: import('prosemirror-model').Slice;
    replacements: "paired" | "independent";
}) | (TrackedEditIntentBase & {
    kind: "format-apply" | "format-remove";
    from: number;
    to: number;
    mark: import('prosemirror-model').Mark;
});
//# sourceMappingURL=edit-intent.d.ts.map