import { Naja, Options } from '../Naja'; import { TypedEventListener } from '../utils'; declare module '../Naja' { interface Payload { snippets?: Record; } } export type SnippetUpdateOperation = ((snippet: Element, content: string) => void | Promise) | { updateElement(snippet: Element, content: string): void | Promise; updateIndex(currentContent: string, newContent: string): string; }; export declare class SnippetHandler extends EventTarget { readonly op: Record<'replace' | 'prepend' | 'append', SnippetUpdateOperation>; constructor(naja: Naja); static findSnippets(predicate?: (snippet: Element) => boolean, document?: Document): Record; updateSnippets(snippets: Record, fromCache?: boolean, options?: Options): Promise; updateSnippet(snippet: Element, content: string, fromCache: boolean, options: Options): Promise; addEventListener: (type: K, listener: TypedEventListener, options?: boolean | AddEventListenerOptions) => void; removeEventListener: (type: K, listener: TypedEventListener, options?: boolean | AddEventListenerOptions) => void; } export type BeforeUpdateEvent = CustomEvent<{ snippet: Element; content: string; fromCache: boolean; operation: SnippetUpdateOperation; changeOperation: (value: SnippetUpdateOperation) => void; options: Options; }>; export type PendingUpdateEvent = CustomEvent<{ snippet: Element; content: string; fromCache: boolean; operation: SnippetUpdateOperation; options: Options; }>; export type AfterUpdateEvent = CustomEvent<{ snippet: Element; content: string; fromCache: boolean; operation: SnippetUpdateOperation; options: Options; }>; interface SnippetHandlerEventMap { beforeUpdate: BeforeUpdateEvent; pendingUpdate: PendingUpdateEvent; afterUpdate: AfterUpdateEvent; } export {};