json-joy
Version:
Collection of libraries for building collaborative editing apps.
17 lines (16 loc) • 1.04 kB
TypeScript
import { type NodeBuilder, type nodes } from '../../json-crdt-patch';
import type { ExtNode } from './ExtNode';
import type { ModelApi } from '../model';
import type { JsonNode } from '../nodes';
import type { JsonNodeToSchema } from '../schema/types';
import type { ExtApi } from './types';
export type AnyExtension = Extension<any, any, any, any, any, any>;
export declare class Extension<Id extends number, DataNode extends JsonNode, ENode extends ExtNode<DataNode, any>, EApi extends ExtApi<ENode>, DataArgs extends any[] = any[], DataSchema extends NodeBuilder = JsonNodeToSchema<DataNode>> {
readonly id: Id;
readonly name: string;
readonly Node: new (data: DataNode) => ENode;
readonly Api: new (node: ENode, api: ModelApi<any>) => EApi;
readonly schema: (...args: DataArgs) => DataSchema;
constructor(id: Id, name: string, Node: new (data: DataNode) => ENode, Api: new (node: ENode, api: ModelApi<any>) => EApi, schema: (...args: DataArgs) => DataSchema);
new(...args: DataArgs): nodes.ext<Id, DataSchema>;
}