export const __esModule: boolean; declare const App_base: { new (config?: {}): { rawTemplates: any; templates: {}; Portal: { new (props: any, env: any, node: any): { setup(): void; props: any; env: any; __owl__: any; render(deep?: boolean): void; }; template: string; props: { target: { type: StringConstructor; }; slots: boolean; }; }; dev: any; translateFn: any; translatableAttributes: any; getRawTemplate: any; customDirectives: any; runtimeUtils: { __globals__: any; withDefault: (value: any, defaultValue: any) => any; zero: symbol; isBoundary: symbol; callSlot: (ctx: any, parent: any, key: any, name: any, dynamic: any, extra: any, defaultContent: any) => any; capture: (ctx: any) => any; withKey: (elem: any, k: any) => any; prepareList: (collection: any) => (number | any[])[]; setContextValue: (ctx: any, key: any, value: any) => void; shallowEqual: (l1: any, l2: any) => boolean; toNumber: (val: any) => any; validateProps: (name: any, props: any, comp: any) => void; LazyValue: { new (fn: any, ctx: any, component: any, node: any, key: any): { fn: any; ctx: any; component: any; node: any; key: any; evaluate(): any; toString(): any; }; }; safeOutput: (value: any, defaultValue: any) => { key: any; child: any; mount(parent: any, afterNode: any): void; parentEl: any; moveBeforeDOMNode(node: any, parent: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any, withBeforeRemove: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; createCatcher: (eventsSpec: any) => (child: any, handlers: any) => { handlerFns: any[]; afterNode: Text | null; child: any; handlerData: any; mount(parent: any, afterNode: any): void; parentEl: any; wrapHandlerData(): void; moveBeforeDOMNode(node: any, parent?: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any, withBeforeRemove: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; markRaw: (value: any) => any; OwlError: { new (message?: string): { name: string; message: string; stack?: string; cause?: unknown; }; new (message?: string, options?: ErrorOptions): { name: string; message: string; stack?: string; cause?: unknown; }; }; makeRefWrapper: (node: any) => (name: any, fn: any) => any; }; hasGlobalValues: boolean; addTemplate(name: any, template: any): void; addTemplates(xml: any): void; getTemplate(name: any): any; _compileTemplate(name: any, template: any): void; callTemplate(owner: any, subTemplate: any, ctx: any, parent: any, key: any): { key: any; child: any; mount(parent: any, afterNode: any): void; parentEl: any; moveBeforeDOMNode(node: any, parent: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any, withBeforeRemove: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; }; registerTemplate(name: any, fn: any): void; }; export class App extends App_base { constructor(Root: any, config?: {}); scheduler: { tasks: Set; frame: number; delayedRenders: any[]; cancelledNodes: Set; processing: boolean; requestAnimationFrame: ((callback: FrameRequestCallback) => number) & typeof requestAnimationFrame; addFiber(fiber: any): void; scheduleDestroy(node: any): void; /** * Process all current tasks. This only applies to the fibers that are ready. * Other tasks are left unchanged. */ flush(): void; processTasks(): void; processFiber(fiber: any): void; }; subRoots: Set; root: { fiber: any; bdom: any; status: number; forceNextRender: boolean; nextProps: any; children: any; refs: {}; willStart: any[]; willUpdateProps: any[]; willUnmount: any[]; mounted: any[]; willPatch: any[]; patched: any[]; willDestroy: any[]; app: any; parent: any; props: any; parentKey: any; childEnv: any; component: any; renderFn: any; mountComponent(target: any, options: any): void; initiateRender(fiber: any): Promise; render(deep: any): Promise; cancel(): void; _cancel(): void; destroy(): void; _destroy(): void; updateAndRender(props: any, parentFiber: any): Promise; /** * Finds a child that has dom that is not yet updated, and update it. This * method is meant to be used only in the context of repatching the dom after * a mounted hook failed and was handled. */ updateDom(): void; /** * Sets a ref to a given HTMLElement. * * @param name the name of the ref to set * @param el the HTMLElement to set the ref to. The ref is not set if the el * is null, but useRef will not return elements that are not in the DOM */ setRef(name: any, el: any): void; firstNode(): any; mount(parent: any, anchor: any): void; moveBeforeDOMNode(node: any, parent: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(): void; _patch(): void; beforeRemove(): void; remove(): void; readonly name: any; readonly subscriptions: { target: any; keys: any[]; }[]; } | null; name: any; Root: any; warnIfNoStaticProps: any; env: any; props: any; mount(target: any, options: any): Promise; createRoot(Root: any, config?: {}): { node: { fiber: any; bdom: any; status: number; forceNextRender: boolean; nextProps: any; children: any; refs: {}; willStart: any[]; willUpdateProps: any[]; willUnmount: any[]; mounted: any[]; willPatch: any[]; patched: any[]; willDestroy: any[]; app: any; parent: any; props: any; parentKey: any; childEnv: any; component: any; renderFn: any; mountComponent(target: any, options: any): void; initiateRender(fiber: any): Promise; render(deep: any): Promise; cancel(): void; _cancel(): void; destroy(): void; _destroy(): void; updateAndRender(props: any, parentFiber: any): Promise; /** * Finds a child that has dom that is not yet updated, and update it. This * method is meant to be used only in the context of repatching the dom after * a mounted hook failed and was handled. */ updateDom(): void; /** * Sets a ref to a given HTMLElement. * * @param name the name of the ref to set * @param el the HTMLElement to set the ref to. The ref is not set if the el * is null, but useRef will not return elements that are not in the DOM */ setRef(name: any, el: any): void; firstNode(): any; mount(parent: any, anchor: any): void; moveBeforeDOMNode(node: any, parent: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(): void; _patch(): void; beforeRemove(): void; remove(): void; readonly name: any; readonly subscriptions: { target: any; keys: any[]; }[]; }; mount: (target: any, options: any) => Promise; destroy: () => void; }; makeNode(Component: any, props: any): { fiber: any; bdom: any; status: number; forceNextRender: boolean; nextProps: any; children: any; refs: {}; willStart: any[]; willUpdateProps: any[]; willUnmount: any[]; mounted: any[]; willPatch: any[]; patched: any[]; willDestroy: any[]; app: any; parent: any; props: any; parentKey: any; childEnv: any; component: any; renderFn: any; mountComponent(target: any, options: any): void; initiateRender(fiber: any): Promise; render(deep: any): Promise; cancel(): void; _cancel(): void; destroy(): void; _destroy(): void; updateAndRender(props: any, parentFiber: any): Promise; /** * Finds a child that has dom that is not yet updated, and update it. This * method is meant to be used only in the context of repatching the dom after * a mounted hook failed and was handled. */ updateDom(): void; /** * Sets a ref to a given HTMLElement. * * @param name the name of the ref to set * @param el the HTMLElement to set the ref to. The ref is not set if the el * is null, but useRef will not return elements that are not in the DOM */ setRef(name: any, el: any): void; firstNode(): any; mount(parent: any, anchor: any): void; moveBeforeDOMNode(node: any, parent: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(): void; _patch(): void; beforeRemove(): void; remove(): void; readonly name: any; readonly subscriptions: { target: any; keys: any[]; }[]; }; mountNode(node: any, target: any, options: any): Promise; destroy(): void; createComponent(name: any, isStatic: any, hasSlotsProp: any, hasDynamicPropList: any, propList: any): (props: any, key: any, ctx: any, parent: any, C: any) => any; handleError(...args: any[]): void; } export class Component { constructor(props: any, env: any, node: any); props: any; env: any; __owl__: any; setup(): void; render(deep?: boolean): void; } export class EventBus extends EventTarget { trigger(name: any, payload: any): void; } export class OwlError extends Error { } export namespace __info__ { import version_1 = App.version; export { version_1 as version }; } /** * Creates a batched version of a callback so that all calls to it in the same * microtick will only call the original callback once. * * @param callback the callback to batch * @returns a batched version of the original callback */ export function batched(callback: any): (...args: any[]) => Promise; export namespace blockDom { export { config }; export { mount$1 as mount }; export { patch }; export { remove }; export { list }; export { multi }; export { text }; export { toggler }; export { createBlock }; export { html }; export { comment }; } export function htmlEscape(str: any): { readonly [index: number]: string; toString(): string; charAt(pos: number): string; charCodeAt(index: number): number; concat(...strings: string[]): string; indexOf(searchString: string, position?: number): number; lastIndexOf(searchString: string, position?: number): number; localeCompare(that: string): number; localeCompare(that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; localeCompare(that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; match(regexp: string | RegExp): RegExpMatchArray | null; match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; replace(searchValue: string | RegExp, replaceValue: string): string; replace(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; search(regexp: string | RegExp): number; search(searcher: { [Symbol.search](string: string): number; }): number; slice(start?: number, end?: number): string; split(separator: string | RegExp, limit?: number): string[]; split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; substring(start: number, end?: number): string; toLowerCase(): string; toLocaleLowerCase(locales?: string | string[]): string; toLocaleLowerCase(locales?: Intl.LocalesArgument): string; toUpperCase(): string; toLocaleUpperCase(locales?: string | string[]): string; toLocaleUpperCase(locales?: Intl.LocalesArgument): string; trim(): string; readonly length: number; substr(from: number, length?: number): string; valueOf(): string; codePointAt(pos: number): number | undefined; includes(searchString: string, position?: number): boolean; endsWith(searchString: string, endPosition?: number): boolean; normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; normalize(form?: string): string; repeat(count: number): string; startsWith(searchString: string, position?: number): boolean; anchor(name: string): string; big(): string; blink(): string; bold(): string; fixed(): string; fontcolor(color: string): string; fontsize(size: number): string; fontsize(size: string): string; italics(): string; link(url: string): string; small(): string; strike(): string; sub(): string; sup(): string; padStart(maxLength: number, fillString?: string): string; padEnd(maxLength: number, fillString?: string): string; trimEnd(): string; trimStart(): string; trimLeft(): string; trimRight(): string; matchAll(regexp: RegExp): IterableIterator; replaceAll(searchValue: string | RegExp, replaceValue: string): string; replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; at(index: number): string | undefined; isWellFormed(): boolean; toWellFormed(): string; [Symbol.iterator](): IterableIterator; }; export function loadFile(url: any): Promise; /** * Mark an object or array so that it is ignored by the reactivity system * * @param value the value to mark * @returns the object itself */ export function markRaw(value: any): any; export function markup(valueOrStrings: any, ...placeholders: any[]): { readonly [index: number]: string; toString(): string; charAt(pos: number): string; charCodeAt(index: number): number; concat(...strings: string[]): string; indexOf(searchString: string, position?: number): number; lastIndexOf(searchString: string, position?: number): number; localeCompare(that: string): number; localeCompare(that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; localeCompare(that: string, locales?: Intl.LocalesArgument, options?: Intl.CollatorOptions): number; match(regexp: string | RegExp): RegExpMatchArray | null; match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; replace(searchValue: string | RegExp, replaceValue: string): string; replace(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; search(regexp: string | RegExp): number; search(searcher: { [Symbol.search](string: string): number; }): number; slice(start?: number, end?: number): string; split(separator: string | RegExp, limit?: number): string[]; split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; substring(start: number, end?: number): string; toLowerCase(): string; toLocaleLowerCase(locales?: string | string[]): string; toLocaleLowerCase(locales?: Intl.LocalesArgument): string; toUpperCase(): string; toLocaleUpperCase(locales?: string | string[]): string; toLocaleUpperCase(locales?: Intl.LocalesArgument): string; trim(): string; readonly length: number; substr(from: number, length?: number): string; valueOf(): string; codePointAt(pos: number): number | undefined; includes(searchString: string, position?: number): boolean; endsWith(searchString: string, endPosition?: number): boolean; normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; normalize(form?: string): string; repeat(count: number): string; startsWith(searchString: string, position?: number): boolean; anchor(name: string): string; big(): string; blink(): string; bold(): string; fixed(): string; fontcolor(color: string): string; fontsize(size: number): string; fontsize(size: string): string; italics(): string; link(url: string): string; small(): string; strike(): string; sub(): string; sup(): string; padStart(maxLength: number, fillString?: string): string; padEnd(maxLength: number, fillString?: string): string; trimEnd(): string; trimStart(): string; trimLeft(): string; trimRight(): string; matchAll(regexp: RegExp): IterableIterator; replaceAll(searchValue: string | RegExp, replaceValue: string): string; replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; at(index: number): string | undefined; isWellFormed(): boolean; toWellFormed(): string; [Symbol.iterator](): IterableIterator; }; export function mount(C: any, target: any, config?: {}): Promise; export function onError(callback: any): void; export function onMounted(fn: any): void; export function onPatched(fn: any): void; export function onRendered(fn: any): void; export function onWillDestroy(fn: any): void; export function onWillPatch(fn: any): void; export function onWillRender(fn: any): void; export function onWillStart(fn: any): void; export function onWillUnmount(fn: any): void; export function onWillUpdateProps(fn: any): void; /** * Creates a reactive proxy for an object. Reading data on the reactive object * subscribes to changes to the data. Writing data on the object will cause the * notify callback to be called if there are suscriptions to that data. Nested * objects and arrays are automatically made reactive as well. * * Whenever you are notified of a change, all subscriptions are cleared, and if * you would like to be notified of any further changes, you should go read * the underlying data again. We assume that if you don't go read it again after * being notified, it means that you are no longer interested in that data. * * Subscriptions: * + Reading a property on an object will subscribe you to changes in the value * of that property. * + Accessing an object's keys (eg with Object.keys or with `for..in`) will * subscribe you to the creation/deletion of keys. Checking the presence of a * key on the object with 'in' has the same effect. * - getOwnPropertyDescriptor does not currently subscribe you to the property. * This is a choice that was made because changing a key's value will trigger * this trap and we do not want to subscribe by writes. This also means that * Object.hasOwnProperty doesn't subscribe as it goes through this trap. * * @param target the object for which to create a reactive proxy * @param callback the function to call when an observed property of the * reactive has changed * @returns a proxy that tracks changes to it */ export function reactive(target: any, callback?: () => never): any; export function status(component: any): "new" | "cancelled" | "mounted" | "destroyed" | undefined; /** * Given a reactive objet, return the raw (non reactive) underlying object * * @param value a reactive value * @returns the underlying value */ export function toRaw(value: any): any; export function useChildSubEnv(envExtension: any): void; export function useComponent(): any; /** * This hook will run a callback when a component is mounted and patched, and * will run a cleanup function before patching and before unmounting the * the component. * * @template T * @param {Effect} effect the effect to run on component mount and/or patch * @param {()=>[...T]} [computeDependencies=()=>[NaN]] a callback to compute * dependencies that will decide if the effect needs to be cleaned up and * run again. If the dependencies did not change, the effect will not run * again. The default value returns an array containing only NaN because * NaN !== NaN, which will cause the effect to rerun on every patch. */ export function useEffect(effect: Effect, computeDependencies?: (() => [...T]) | undefined): void; /** * This hook is useful as a building block for some customized hooks, that may * need a reference to the env of the component calling them. */ export function useEnv(): any; /** * When a component needs to listen to DOM Events on element(s) that are not * part of his hierarchy, we can use the `useExternalListener` hook. * It will correctly add and remove the event listener, whenever the * component is mounted and unmounted. * * Example: * a menu needs to listen to the click on window to be closed automatically * * Usage: * in the constructor of the OWL component that needs to be notified, * `useExternalListener(window, 'click', this._doSomething);` * */ export function useExternalListener(target: any, eventName: any, handler: any, eventParams: any): void; /** * The purpose of this hook is to allow components to get a reference to a sub * html node or component. */ export function useRef(name: any): { readonly el: any; }; /** * Creates a reactive object that will be observed by the current component. * Reading data from the returned object (eg during rendering) will cause the * component to subscribe to that data and be rerendered when it changes. * * @param state the state to observe * @returns a reactive object that will cause the component to re-render on * relevant changes * @see reactive */ export function useState(state: any): any; /** * This hook is a simple way to let components use a sub environment. Note that * like for all hooks, it is important that this is only called in the * constructor method. */ export function useSubEnv(envExtension: any): void; /** * Main validate function */ export function validate(obj: any, spec: any): void; export function validateType(key: any, value: any, descr: any): any; export function whenReady(fn: any): Promise; export function xml(...args: any[]): string; export namespace xml { let nextId: number; } declare var version: string; declare namespace config { let shouldNormalizeDom: boolean; function mainEventHandler(data: any, ev: any, currentTarget: any): boolean; } declare function mount$1(vnode: any, fixture: any, afterNode?: null): void; declare function patch(vnode1: any, vnode2: any, withBeforeRemove?: boolean): void; declare function remove(vnode: any, withBeforeRemove?: boolean): void; declare function list(children: any): { children: any; mount(parent: any, afterNode: any): void; anchor: Text | undefined; parentEl: any; moveBeforeDOMNode(node: any, parent?: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any, withBeforeRemove: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; declare function multi(children: any): { children: any; mount(parent: any, afterNode: any): void; anchors: any[] | undefined; parentEl: any; moveBeforeDOMNode(node: any, parent?: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any, withBeforeRemove: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; declare function text(str: any): { mount(parent: any, afterNode: any): void; patch(other: any): void; text: any; mountNode(node: any, parent: any, afterNode: any): void; parentEl: any; el: any; moveBeforeDOMNode(node: any, parent?: any): void; moveBeforeVNode(other: any, afterNode: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; declare function toggler(key: any, child: any): { key: any; child: any; mount(parent: any, afterNode: any): void; parentEl: any; moveBeforeDOMNode(node: any, parent: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any, withBeforeRemove: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; /** * Compiling blocks is a multi-step process: * * 1. build an IntermediateTree from the HTML element. This intermediate tree * is a binary tree structure that encode dynamic info sub nodes, and the * path required to reach them * 2. process the tree to build a block context, which is an object that aggregate * all dynamic info in a list, and also, all ref indexes. * 3. process the context to build appropriate builder/setter functions * 4. make a dynamic block class, which will efficiently collect references and * create/update dynamic locations/children * * @param str * @returns a new block type, that can build concrete blocks */ declare function createBlock(str: any): any; declare function html(str: any): { content: any[]; html: any; mount(parent: any, afterNode: any): void; parentEl: any; moveBeforeDOMNode(node: any, parent?: any): void; moveBeforeVNode(other: any, afterNode: any): void; patch(other: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; declare function comment(str: any): { mount(parent: any, afterNode: any): void; patch(): void; text: any; mountNode(node: any, parent: any, afterNode: any): void; parentEl: any; el: any; moveBeforeDOMNode(node: any, parent?: any): void; moveBeforeVNode(other: any, afterNode: any): void; beforeRemove(): void; remove(): void; firstNode(): any; toString(): any; }; export {};