import * as _ from "@preserves/core"; import * as _i_Actor from "../runtime/actor"; export const $Observe = Symbol.for("Observe"); export type _ptr = _i_Actor.Ref; export type _val = _.Value<_ptr>; export type Observe = {"label": symbol, "observer": _ptr}; export const _toPtr = (v: _val) => {let result: undefined | _ptr; result = _i_Actor.toRef(v); return result;}; export function Observe({label, observer}: {label: symbol, observer: _ptr}): Observe {return {"label": label, "observer": observer};} export function asObserve(v: _val): Observe { let result = toObserve(v); if (result === void 0) throw new TypeError(`Invalid Observe: ${_.stringify(v)}`); return result; } export function toObserve(v: _val): undefined | Observe { let result: undefined | Observe; if (_.Record.isRecord<_val, _.Tuple<_val>, _ptr>(v)) { let _tmp0: (null) | undefined; _tmp0 = _.is(v.label, $Observe) ? null : void 0; if (_tmp0 !== void 0) { let _tmp1: (symbol) | undefined; _tmp1 = typeof v[0] === 'symbol' ? v[0] : void 0; if (_tmp1 !== void 0) { let _tmp2: (_ptr) | undefined; _tmp2 = _toPtr(v[1]); if (_tmp2 !== void 0) {result = {"label": _tmp1, "observer": _tmp2};}; }; }; }; return result; } export function fromObserve(_v: Observe): _val {return _.Record($Observe, [_v["label"], _v["observer"]]);}