import * as _ from "@preserves/core"; export const $Observe = Symbol.for("Observe"); export const Observe = _.Record.makeConstructor<{"_field0": symbol, "_field1": _ptr}, _ptr>()($Observe, ["_field0","_field1"]); export type Observe = _.Record<(typeof $Observe), [symbol, _ptr], _ptr>; export type _ptr = never; export type _val = _.Value<_ptr>; export function isObserve(v: any): v is Observe { return ( _.Record.isRecord<_val, _.Tuple<_val>, _ptr>(v) && _.is(v.label, $Observe) && ((v.length === 2) && typeof v[0] === 'symbol' && _.isPointer(v[1])) ); } export function asObserve(v: any): Observe { if (!isObserve(v)) {throw new TypeError(`Invalid Observe: ${_.stringify(v)}`);} else {return v;}; }