import { Deferred } from '../core/utils/concurrency'; /** * @template {typeof Model} T * @param {T} ModelClass * @param {Object} params * @param {Object} [options] * @param {Function} [options.beforeFirstLoad] * @returns {InstanceType} */ export function useModel(ModelClass: T, params: Object, options?: { beforeFirstLoad?: Function | undefined; } | undefined): InstanceType; /** * @template {typeof Model} T * @param {T} ModelClass * @param {Object} params * @param {Object} [options] * @param {Function} [options.lazy=false] * @returns {InstanceType} */ export function useModelWithSampleData(ModelClass: T, params: Object, options?: { lazy?: Function | undefined; } | undefined): InstanceType; export function _makeFieldFromPropertyDefinition(name: any, definition: any, relatedPropertyField: any): any; export function addPropertyFieldDefs(orm: any, resModel: any, context: any, fields: any, groupBy: any): Promise; /** * @typedef {import("@web/env").OdooEnv} OdooEnv * @typedef {import("@web/search/search_model").SearchParams} SearchParams * @typedef {import("services").ServiceFactories} Services */ export class Model { static services: any[]; /** * @param {OdooEnv} env * @param {SearchParams} params * @param {Services} services */ constructor(env: OdooEnv, params: SearchParams, services: Services); env: import('../env').OdooEnv; orm: import('../core/orm_service').ORM; bus: any; isReady: boolean; whenReady: Deferred; /** * @param {SearchParams} params * @param {Services} services */ setup(): void; /** * @param {Partial} _params */ load(_params: Partial): Promise; /** * This function is meant to be overriden by models that want to implement * the sample data feature. It should return true iff the last loaded state * actually contains data. If not, another load will be done (if the sample * feature is enabled) with the orm service substituted by another using the * SampleServer, to have sample data to display instead of an empty screen. * * @returns {boolean} */ hasData(): boolean; /** * This function is meant to be overriden by models that want to combine * sample data with real groups that exist on the server. * * @returns {boolean} */ getGroups(): boolean; notify(): void; } export type OdooEnv = import('../env').OdooEnv; export type SearchParams = import('../search/search_model').SearchParams; export type Services = import('services').ServiceFactories;