/**
* @since 2.0.0
*/
import type * as FiberId from "./FiberId.js";
import type * as FiberRef from "./FiberRef.js";
import type * as FiberRefs from "./FiberRefs.js";
/**
* A `FiberRefsPatch` captures the changes in `FiberRef` values made by a single
* fiber as a value. This allows fibers to apply the changes made by a workflow
* without inheriting all the `FiberRef` values of the fiber that executed the
* workflow.
*
* @since 2.0.0
* @category models
*/
export type FiberRefsPatch = Empty | Add | Remove | Update | AndThen;
/**
* @since 2.0.0
* @category models
*/
export interface Empty {
readonly _tag: "Empty";
}
/**
* @since 2.0.0
* @category models
*/
export interface Add {
readonly _tag: "Add";
readonly fiberRef: FiberRef.FiberRef<unknown>;
readonly value: unknown;
}
/**
* @since 2.0.0
* @category models
*/
export interface Remove {
readonly _tag: "Remove";
readonly fiberRef: FiberRef.FiberRef<unknown>;
}
/**
* @since 2.0.0
* @category models
*/
export interface Update {
readonly _tag: "Update";
readonly fiberRef: FiberRef.FiberRef<unknown>;
readonly patch: unknown;
}
/**
* @since 2.0.0
* @category models
*/
export interface AndThen {
readonly _tag: "AndThen";
readonly first: FiberRefsPatch;
readonly second: FiberRefsPatch;
}
/**
* @since 2.0.0
* @category constructors
*/
export declare const empty: FiberRefsPatch;
/**
* Constructs a patch that describes the changes between the specified
* collections of `FiberRef`
*
* @since 2.0.0
* @category constructors
*/
export declare const diff: (oldValue: FiberRefs.FiberRefs, newValue: FiberRefs.FiberRefs) => FiberRefsPatch;
/**
* Combines this patch and the specified patch to create a new patch that
* describes applying the changes from this patch and the specified patch
* sequentially.
*
* @since 2.0.0
* @category constructors
*/
export declare const combine: {
/**
* Combines this patch and the specified patch to create a new patch that
* describes applying the changes from this patch and the specified patch
* sequentially.
*
* @since 2.0.0
* @category constructors
*/
(that: FiberRefsPatch): (self: FiberRefsPatch) => FiberRefsPatch;
/**
* Combines this patch and the specified patch to create a new patch that
* describes applying the changes from this patch and the specified patch
* sequentially.
*
* @since 2.0.0
* @category constructors
*/
(self: FiberRefsPatch, that: FiberRefsPatch): FiberRefsPatch;
};
/**
* Applies the changes described by this patch to the specified collection
* of `FiberRef` values.
*
* @since 2.0.0
* @category destructors
*/
export declare const patch: {
/**
* Applies the changes described by this patch to the specified collection
* of `FiberRef` values.
*
* @since 2.0.0
* @category destructors
*/
(fiberId: FiberId.Runtime, oldValue: FiberRefs.FiberRefs): (self: FiberRefsPatch) => FiberRefs.FiberRefs;
/**
* Applies the changes described by this patch to the specified collection
* of `FiberRef` values.
*
* @since 2.0.0
* @category destructors
*/
(self: FiberRefsPatch, fiberId: FiberId.Runtime, oldValue: FiberRefs.FiberRefs): FiberRefs.FiberRefs;
};
//# sourceMappingURL=FiberRefsPatch.d.ts.map