import { Extension, onChangePayload, onConnectPayload, onDisconnectPayload, onLoadDocumentPayload } from "@hocuspocus/server"; import { Transformer } from "@hocuspocus/transformer"; import { Doc } from "yjs"; //#region packages/extension-webhook/src/index.d.ts declare enum Events { onChange = "change", onConnect = "connect", onCreate = "create", onDisconnect = "disconnect" } interface Configuration { debounce: number | false | null; debounceMaxWait: number; secret: string; transformer: Transformer | { toYdoc: (document: any) => Doc; fromYdoc: (document: Doc) => any; }; url: string; events: Array; } declare class Webhook implements Extension { configuration: Configuration; debounced: Map; /** * Constructor */ constructor(configuration?: Partial); /** * Create a signature for the response body */ createSignature(body: string): string; /** * debounce the given function, using the given identifier */ debounce(id: string, func: Function): void; /** * Send a request to the given url containing the given data */ sendRequest(event: Events, payload: any): Promise<{ status: number; data: any; }>; /** * onChange hook */ onChange(data: onChangePayload): Promise; /** * onLoadDocument hook */ onLoadDocument(data: onLoadDocumentPayload): Promise; /** * onConnect hook */ onConnect(data: onConnectPayload): Promise; onDisconnect(data: onDisconnectPayload): Promise; } //#endregion export { Configuration, Events, Webhook };