export declare const OrPatchSym: unique symbol; export type OrPatchSym = typeof OrPatchSym; export declare const OrPatchValueSym: unique symbol; export type OrPatchValueSym = typeof OrPatchValueSym; export declare const OrPatchValue2Sym: unique symbol; export type OrPatchValue2Sym = typeof OrPatchValueSym; export declare const OrPatchPatchSym: unique symbol; export type OrPatchPatchSym = typeof OrPatchPatchSym; export declare const OrPatchPatch2Sym: unique symbol; export type OrPatchPatch2Sym = typeof OrPatchPatch2Sym; /** * A patch which describes updates to either one value or another. * * @tsplus type Differ.Or.Patch */ export interface OrPatch { readonly [OrPatchSym]: OrPatchSym; readonly [OrPatchValueSym]: (_: Value) => Value; readonly [OrPatchValue2Sym]: (_: Value2) => Value2; readonly [OrPatchPatchSym]: (_: Patch) => Patch; readonly [OrPatchPatch2Sym]: (_: Patch2) => Patch2; } /** * @tsplus type Differ.Or.Patch.Ops */ export interface OrPatchOps { readonly $: OrPatchAspects; } /** * @tsplus static Differ.Ops Or * @tsplus location "@tsplus/stdlib/data/Differ/OrPatch/definition" */ export declare const OrPatch: OrPatchOps; /** * @tsplus type Differ.Or.Patch.Aspects */ export interface OrPatchAspects { } /** * @tsplus unify Differ.Or.Patch */ export declare function unifyOrPatch>(self: X): OrPatch<[ X ] extends [{ [OrPatchValueSym]: (_: infer Value) => infer Value; }] ? Value : never, [ X ] extends [{ [OrPatchValue2Sym]: (_: infer Value2) => infer Value2; }] ? Value2 : never, [ X ] extends [{ [OrPatchPatchSym]: (_: infer Patch) => infer Patch; }] ? Patch : never, [ X ] extends [{ [OrPatchPatch2Sym]: (_: infer Patch2) => infer Patch2; }] ? Patch2 : never>; export declare abstract class BaseOrPatch implements OrPatch { readonly [OrPatchSym]: OrPatchSym; readonly [OrPatchValueSym]: (_: Value) => Value; readonly [OrPatchValue2Sym]: (_: Value2) => Value2; readonly [OrPatchPatchSym]: (_: Patch) => Patch; readonly [OrPatchPatch2Sym]: (_: Patch2) => Patch2; } export declare class AndThenOrPatch extends BaseOrPatch { readonly first: OrPatch; readonly second: OrPatch; readonly _tag = "AndThen"; constructor(first: OrPatch, second: OrPatch); } export declare class EmptyOrPatch extends BaseOrPatch { readonly _tag = "Empty"; } export declare class SetLeftOrPatch extends BaseOrPatch { readonly value: Value; readonly _tag = "SetLeft"; constructor(value: Value); } export declare class SetRightOrPatch extends BaseOrPatch { readonly value: Value2; readonly _tag = "SetRight"; constructor(value: Value2); } export declare class UpdateLeftOrPatch extends BaseOrPatch { readonly patch: Patch; readonly _tag = "UpdateLeft"; constructor(patch: Patch); } export declare class UpdateRightOrPatch extends BaseOrPatch { readonly patch: Patch2; readonly _tag = "UpdateRight"; constructor(patch: Patch2); } export type OrPatchInstruction = AndThenOrPatch | EmptyOrPatch | SetLeftOrPatch | SetRightOrPatch | UpdateLeftOrPatch | UpdateRightOrPatch; /** * @tsplus macro identity */ export declare function orPatchInstruction(self: OrPatch): OrPatchInstruction; //# sourceMappingURL=definition.d.ts.map