import * as s from 'superstruct';
import type { Patch } from 'immer';
import type { SetOptional } from '@knapsack/utils';
import type { UUID, DateString } from './misc';
/**
 * Patch
 */
export type { Patch };
export declare const isPatch: (patch: unknown) => patch is Patch;
export declare const isPatches: (patches: unknown) => patches is Patch[];
/**
 * KsRemoteChange
 */
export type KsChange<Event extends {
    type: string;
} = {
    type: string;
}> = {
    patches: Patch[];
    inversePatches: Patch[];
    event: Event;
    id: UUID;
    date: DateString;
};
export type KsRemoteChange = SetOptional<KsChange, 'inversePatches' | 'event'>;
export declare const isKsRemoteChange: (change: unknown) => change is KsRemoteChange;
export declare const KsRemoteChangesStruct: s.Describe<KsRemoteChange[]>;
export declare const isKsRemoteChanges: (changes: unknown) => changes is KsRemoteChange[];
//# sourceMappingURL=changes.d.ts.map