import { LWWRegister } from "../crdt/LWW.ts";
import VersionVector from "../crdt/VersionVector.ts";
import StateSession from "../orset/session/StateSession.ts";
import { type TickReceipt } from "../types/TickReceipt.ts";
import { PatchDiff } from "../types/PatchDiff.ts";
import { EventId } from "../utils/EventId.ts";
import { type PatchLike } from "./JoinReducer.ts";
type ReducerPropValue = string | number | boolean | null | Uint8Array | ReducerPropValue[] | {
    [key: string]: ReducerPropValue;
};
export declare class ReducerSessionFrame {
    readonly session: StateSession;
    readonly prop: Map<string, LWWRegister<ReducerPropValue>>;
    readonly observedFrontier: VersionVector;
    readonly edgeBirthEvent: Map<string, EventId>;
    constructor(fields: {
        readonly session: StateSession;
        readonly prop: Map<string, LWWRegister<ReducerPropValue>>;
        readonly observedFrontier: VersionVector;
        readonly edgeBirthEvent: Map<string, EventId>;
    });
    propSize(): number;
    hasProp(encodedKey: string): boolean;
    getEncodedProp(encodedKey: string): LWWRegister<ReducerPropValue> | undefined;
}
export declare function applyFastInSession(frame: ReducerSessionFrame, patch: PatchLike, // nosemgrep: ts-no-like-types -- 0025C
patchSha: string): Promise<void>;
export declare function applyWithDiffInSession(frame: ReducerSessionFrame, patch: PatchLike, // nosemgrep: ts-no-like-types -- 0025C
patchSha: string): Promise<PatchDiff>;
export declare function applyWithReceiptInSession(frame: ReducerSessionFrame, patch: PatchLike, // nosemgrep: ts-no-like-types -- 0025C
patchSha: string): Promise<TickReceipt>;
export declare function reducePatchesInSession(patches: ReadonlyArray<{
    readonly patch: PatchLike;
    readonly sha: string;
}>, // nosemgrep: ts-no-like-types -- 0025C
frame: ReducerSessionFrame): Promise<ReducerSessionFrame>;
export declare function reducePatchesInSession(patches: ReadonlyArray<{
    readonly patch: PatchLike;
    readonly sha: string;
}>, // nosemgrep: ts-no-like-types -- 0025C
frame: ReducerSessionFrame, options: {
    readonly receipts: true;
}): Promise<{
    frame: ReducerSessionFrame;
    receipts: TickReceipt[];
}>;
export declare function reducePatchesInSession(patches: ReadonlyArray<{
    readonly patch: PatchLike;
    readonly sha: string;
}>, // nosemgrep: ts-no-like-types -- 0025C
frame: ReducerSessionFrame, options: {
    readonly trackDiff: true;
}): Promise<{
    frame: ReducerSessionFrame;
    diff: PatchDiff;
}>;
export declare function joinFrames(left: ReducerSessionFrame, right: ReducerSessionFrame): Promise<ReducerSessionFrame>;
export {};
