import type DBAPIClient from '../dbapi-client'; import type HestiaClient from '../hestia-client'; import ImagesAPIClient from '../images-api-client'; import LeadsAPIClient from '../leads-api-client'; import SearchesAPIClient from '../searches-api-client'; import UsersAPIClient from '../users-api-client'; import Pagination from './helpers/pagination'; export interface ModelError { message: string; status?: number; type?: string; } export interface ModelStatic { findById?(id: number | string): Promise<{ result: T | null; errors: ModelError[] | null; }>; findOne?(searchParams: { [key: string]: any; }): Promise<{ result: T | null; errors: ModelError[] | null; }>; findAll?(searchParams: { [key: string]: any; }): Promise<{ results: T[]; pagination: Pagination | null; errors: ModelError[] | null; }>; } export default abstract class Model { /** @hidden */ static isInitialized: boolean; /** * serializer is a pure function that takes a model instance and returns a plain * object that describes how to convert the model to JSON */ static serializer: (model: any) => any; /** @hidden */ protected static dbapi: DBAPIClient; /** @hidden */ protected static hestia: HestiaClient; /** @hidden */ protected static usersApi: UsersAPIClient; /** @hidden */ protected static adminUsersApi: UsersAPIClient; /** @hidden */ protected static leadsApi: LeadsAPIClient; /** @hidden */ protected static imagesApi: ImagesAPIClient; /** @hidden */ protected static searchesApi: SearchesAPIClient; /** @hidden */ protected dbapiData: DBAPIData | undefined; /** @hidden */ protected hestiaData: HestiaData | undefined; /** @hidden */ protected imagesAPIData: ImagesAPIData | undefined; /** @hidden */ protected memo: { [key: string]: any; }; /** * Initializes the base model with API clients. * This must be called once before models can be used. * @hidden */ static init({ dbapi, hestia, usersApi, adminUsersApi, leadsApi, imagesApi, searchesApi, }: { dbapi: DBAPIClient; hestia: HestiaClient; usersApi: UsersAPIClient; adminUsersApi: UsersAPIClient; leadsApi: LeadsAPIClient; imagesApi: ImagesAPIClient; searchesApi: SearchesAPIClient; }): void; /** @hidden */ constructor({ dbapiData, hestiaData, imagesAPIData, }?: { dbapiData?: DBAPIData; hestiaData?: HestiaData; imagesAPIData?: ImagesAPIData; }); /** Retrieves a value from raw API data. Prioritises DBAPI data if available */ get(key: string): any; /** Special method to define behaviour of JSON.stringify() on model instance */ toJSON(): any; } //# sourceMappingURL=model.d.ts.map