import { Chunk } from "@tsplus/stdlib/collections/Chunk/definition"; export declare const ChunkPatchSym: unique symbol; export type ChunkPatchSym = typeof ChunkPatchSym; export declare const ChunkPatchValueSym: unique symbol; export type ChunkPatchValueSym = typeof ChunkPatchValueSym; export declare const ChunkPatchPatchSym: unique symbol; export type ChunkPatchPatchSym = typeof ChunkPatchPatchSym; /** * A patch which describes updates to a chunk of values. * * @tsplus type Differ.Chunk.Patch */ export interface ChunkPatch { readonly [ChunkPatchSym]: ChunkPatchSym; readonly [ChunkPatchValueSym]: (_: Value) => Value; readonly [ChunkPatchPatchSym]: (_: Patch) => Patch; } /** * @tsplus type Differ.Chunk.Patch.Ops */ export interface ChunkPatchOps { readonly $: ChunkPatchAspects; } /** * @tsplus static Differ.Ops Chunk * @tsplus location "@tsplus/stdlib/collections/Chunk/patch/definition" */ export declare const ChunkPatch: ChunkPatchOps; /** * @tsplus type Differ.Chunk.Patch.Aspects */ export interface ChunkPatchAspects { } /** * @tsplus unify Differ.Chunk.Patch */ export declare function unifyChunkPatch>(self: X): ChunkPatch<[ X ] extends [{ [ChunkPatchValueSym]: (_: infer Value) => infer Value; }] ? Value : never, [ X ] extends [{ [ChunkPatchPatchSym]: (_: infer Patch) => infer Patch; }] ? Patch : never>; export declare abstract class BaseChunkPatch implements ChunkPatch { readonly [ChunkPatchSym]: ChunkPatchSym; readonly [ChunkPatchValueSym]: (_: Value) => Value; readonly [ChunkPatchPatchSym]: (_: Patch) => Patch; } export declare class AppendChunkPatch extends BaseChunkPatch { readonly values: Chunk; readonly _tag = "Append"; constructor(values: Chunk); } export declare class SliceChunkPatch extends BaseChunkPatch { readonly from: number; readonly until: number; readonly _tag = "Slice"; constructor(from: number, until: number); } export declare class UpdateChunkPatch extends BaseChunkPatch { readonly index: number; readonly patch: Patch; readonly _tag = "Update"; constructor(index: number, patch: Patch); } export declare class AndThenChunkPatch extends BaseChunkPatch { readonly first: ChunkPatch; readonly second: ChunkPatch; readonly _tag = "AndThen"; constructor(first: ChunkPatch, second: ChunkPatch); } export declare class EmptyChunkPatch extends BaseChunkPatch { readonly _tag = "Empty"; } export type ChunkPatchInstruction = AppendChunkPatch | SliceChunkPatch | UpdateChunkPatch | AndThenChunkPatch | EmptyChunkPatch; /** * @tsplus macro identity */ export declare function chunkPatchInstruction(self: ChunkPatch): ChunkPatchInstruction; //# sourceMappingURL=definition.d.ts.map