/** * A structure which can hold any value type, even undefined, * and can itself be const, while still allowing the value to * be added later. */ export interface Holder { isPresent(): this is ValuedHolder; setValue(value: T): unknown; readonly value: T | undefined; } /** * A {@link Holder} without a value, yet. */ export interface EmptyHolder extends Holder { setValue(value: T): asserts this is ValuedHolder; readonly value: undefined; } /** * A {@link Holder} whose value has been set. */ export interface ValuedHolder extends Holder { setValue(value: T): never; readonly value: T; } export declare function holder(value: T): ValuedHolder; export declare function holder(): EmptyHolder; //# sourceMappingURL=holder.d.ts.map