/** * @template T * @typedef {import('../schema.js').Schema} Schema */ /** * @template {delta.AbstractDelta} DeltaA * @template {delta.AbstractDelta} DeltaB */ export class Binding { /** * @param {RDT} a * @param {RDT} b * @param {dt.Template} template */ constructor(a: RDT, b: RDT, template: dt.Template); /** * @type {dt.Transformer} */ t: dt.Transformer; a: RDT; b: RDT; _mux: mux.mutex; _achanged: (delta: DeltaA) => void; _bchanged: (delta: DeltaB) => void; destroy: () => void; } export function bind>(a: RDT, b: RDT ? DeltaB : never>, template: dt.Template): Binding ? DeltaB : never>; export function deltaRDT($delta: Schema): DeltaRDT; export const $domDelta: any; export function domRDT(dom: Element): DomRDT>; export type Schema = import("../schema.js").Schema; /** * Abstract Interface for a delta-based Replicated Data Type. */ export type RDT = ObservableV2<{ "change": (delta: Delta) => void; "destroy": (rdt: RDT) => void; }> & { update: (delta: Delta) => any; destroy: () => void; }; export type DomDelta = delta.RecursiveNode; import * as delta from './delta.js'; import * as dt from './t3.test.js'; import * as mux from '../mutex.js'; /** * @template {delta.AbstractDelta} Delta * @implements RDT * @extends {ObservableV2<{ change: (delta: Delta) => void, 'destroy': (rdt:DeltaRDT)=>void }>} */ declare class DeltaRDT extends ObservableV2<{ change: (delta: Delta) => void; destroy: (rdt: DeltaRDT) => void; }> implements RDT { /** * @param {Schema} $delta */ constructor($delta: Schema); $delta: s.Schema; /** * @type {Delta?} */ state: Delta | null; _mux: mux.mutex; /** * @param {Delta} delta */ update: (delta: Delta) => any; } /** * @typedef {delta.RecursiveNode} DomDelta */ /** * @template {DomDelta} [D=DomDelta] * @implements RDT * @extends {ObservableV2<{ change: (delta: D)=>void, destroy: (rdt:DomRDT)=>void }>}>} */ declare class DomRDT> extends ObservableV2<{ change: (delta: D) => void; destroy: (rdt: DomRDT) => void; }> implements RDT { /** * @param {Element} observedNode */ constructor(observedNode: Element); observedNode: Element; _mux: mux.mutex; observer: MutationObserver; /** * @param {MutationRecord[]} mutations */ _mutationHandler: (mutations: MutationRecord[]) => any; /** * @param {D} delta */ update: (delta: D) => void; } import { ObservableV2 } from '../observable.js'; import * as s from '../schema.js'; export {}; //# sourceMappingURL=binding.d.ts.map