import type { Settings, FieldTypes, IdType, SnakeCase } from './types'; import { VroomDb } from './server/createDb'; export default function createVroom(options: Options): { install(app: any): void; create: (model: ModelName, data: Partial, SnakeCase>[ModelName], "id">>) => Promise, SnakeCase>[ModelName]>; update: (model: ModelName, id: IdType["id"], data: Partial, SnakeCase>[ModelName], "id">>) => Promise, SnakeCase>[ModelName]>; delete: (model: ModelName, id: IdType["id"]) => Promise; get: (model: ModelName, id: IdType["id"], settings?: { include?: string[]; } | undefined) => Promise, SnakeCase>[ModelName]>; getSingleton: (model: ModelName, filter?: { [key: string]: any; } | undefined) => Promise, SnakeCase>[ModelName]>; updateSingleton: (model: ModelName, data: Partial, SnakeCase>[ModelName], "id">>, filter?: { [key: string]: any; } | undefined) => Promise, SnakeCase>[ModelName]>; list: (model: ModelName, settings?: { filter?: any; pagination?: { page?: number; limit?: number; cursor?: number | string; }; sort?: { field: string; dir?: "ASC" | "DESC"; }[]; include?: string[]; } | undefined) => Promise, SnakeCase>[ModelName][]>; api: { intercept: { error: ((e: import("./ServerError").default) => void) | null; }; headers: any; requestOptions: import("./types").FetchRequestOptions; get(url: string, params?: { [key: string]: string | number; }, extraHeaders?: any): any; post(url: string, body?: any[] | { [key: string]: unknown; } | FormData, params?: { [key: string]: string | number; }, extraHeaders?: any): any; patch(url: string, body?: any[] | { [key: string]: unknown; } | FormData, params?: { [key: string]: string | number; }, extraHeaders?: any): any; delete(url: string, body?: any[] | { [key: string]: unknown; } | FormData, params?: { [key: string]: string | number; }, extraHeaders?: any): any; }; db: VroomDb["id"], SnakeCase>; settings: Omit; server: import("./server/Server").default<(FieldTypes, SnakeCase> extends infer T ? { [K in keyof T]: import("./server/createDb").Collection, SnakeCase>[K]>; } : never) | null, FieldTypes, SnakeCase>[ReturnType]> | null; stores: FieldTypes, SnakeCase> extends infer T_1 ? { [K_1 in keyof T_1]: Options["models"][K_1] extends { singleton: boolean; } ? import("pinia").StoreDefinition, SnakeCase>[K_1], "id">; }, {}, (Options["models"][K_1]["itemActions"] extends infer T_2 ? { [Property in keyof T_2]: (id: Omit, SnakeCase>[K_1], "id">["id"], data?: any) => Promise, SnakeCase>[K_1], "id">>; } : never) & { update: (data: Partial, SnakeCase>[K_1]>, filter?: object) => Promise, SnakeCase>[K_1], "id">>; }> : import("pinia").StoreDefinition, SnakeCase>[K_1][]; }, { single: () => (id: import("./types").ID) => FieldTypes, SnakeCase>[K_1]; }, (Options["models"][K_1]["itemActions"] extends infer T_3 ? { [Property_1 in keyof T_3]: (id: FieldTypes, SnakeCase>[K_1]["id"], data?: any) => Promise, SnakeCase>[K_1]>; } : never) & { create: (data: Partial, SnakeCase>[K_1]>) => Promise, SnakeCase>[K_1]>; bulkCreate: (data: Partial, SnakeCase>[K_1]>[]) => Promise, SnakeCase>[K_1]>; update: (id: FieldTypes, SnakeCase>[K_1]["id"], data: Partial, SnakeCase>[K_1]>) => Promise, SnakeCase>[K_1]>; bulkUpdate: (data: Partial, SnakeCase>[K_1]>[]) => Promise, SnakeCase>[K_1]>; localUpdate: (id: FieldTypes, SnakeCase>[K_1]["id"], data: Partial, SnakeCase>[K_1]>) => Promise, SnakeCase>[K_1]>; delete: (id: FieldTypes, SnakeCase>[K_1]["id"]) => Promise; bulkDelete: (ids: FieldTypes, SnakeCase>[K_1]["id"][]) => Promise; }>; } : never; cache: import("pinia").StoreDefinition<"vroom:cache", { ids: { [key: string]: { [i: string]: number; [i: number]: number; }; }; timeout: ReturnType | null; }, {}, { subscribe(model: string, ids: import("./types").ID[]): void; garbageCollect(): void; scheduleGarbageCollection(): void; unsubscribe(model: string, ids: import("./types").ID[]): void; }>; types: FieldTypes, SnakeCase>; useList: (model: ModelName, options?: { filter?: ({ [key in keyof FieldTypes, SnakeCase>[ModelName]]?: (FieldTypes, SnakeCase>[ModelName][key] | import("vue").Ref, SnakeCase>[ModelName][key] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName][key] | undefined>) | undefined; } | import("vue").Ref<{ [key in keyof FieldTypes, SnakeCase>[ModelName]]?: (FieldTypes, SnakeCase>[ModelName][key] | import("vue").Ref, SnakeCase>[ModelName][key] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName][key] | undefined>) | undefined; } | undefined> | import("vue").ComputedRef<{ [key in keyof FieldTypes, SnakeCase>[ModelName]]?: (FieldTypes, SnakeCase>[ModelName][key] | import("vue").Ref, SnakeCase>[ModelName][key] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName][key] | undefined>) | undefined; } | undefined>) | undefined; pagination?: ({ page?: number | import("vue").Ref | import("vue").ComputedRef; limit?: number | import("vue").Ref | import("vue").ComputedRef; cursor?: (IdType["id"] | import("vue").Ref["id"] | undefined> | import("vue").ComputedRef["id"] | undefined>) | undefined; } | import("vue").Ref<{ page?: number | import("vue").Ref | import("vue").ComputedRef; limit?: number | import("vue").Ref | import("vue").ComputedRef; cursor?: (IdType["id"] | import("vue").Ref["id"] | undefined> | import("vue").ComputedRef["id"] | undefined>) | undefined; } | undefined> | import("vue").ComputedRef<{ page?: number | import("vue").Ref | import("vue").ComputedRef; limit?: number | import("vue").Ref | import("vue").ComputedRef; cursor?: (IdType["id"] | import("vue").Ref["id"] | undefined> | import("vue").ComputedRef["id"] | undefined>) | undefined; } | undefined>) | undefined; sort?: ({ field: keyof FieldTypes, SnakeCase>[ModelName] | import("vue").Ref, SnakeCase>[ModelName] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName] | undefined>; dir: "ASC" | "DESC" | import("vue").Ref<"ASC" | "DESC" | undefined> | import("vue").ComputedRef<"ASC" | "DESC" | undefined>; }[] | import("vue").Ref<{ field: keyof FieldTypes, SnakeCase>[ModelName] | import("vue").Ref, SnakeCase>[ModelName] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName] | undefined>; dir: "ASC" | "DESC" | import("vue").Ref<"ASC" | "DESC" | undefined> | import("vue").ComputedRef<"ASC" | "DESC" | undefined>; }[] | undefined> | import("vue").ComputedRef<{ field: keyof FieldTypes, SnakeCase>[ModelName] | import("vue").Ref, SnakeCase>[ModelName] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName] | undefined>; dir: "ASC" | "DESC" | import("vue").Ref<"ASC" | "DESC" | undefined> | import("vue").ComputedRef<"ASC" | "DESC" | undefined>; }[] | undefined>) | undefined; include?: ((keyof FieldTypes, SnakeCase>[ModelName])[] | import("vue").Ref<(keyof FieldTypes, SnakeCase>[ModelName])[] | undefined> | import("vue").ComputedRef<(keyof FieldTypes, SnakeCase>[ModelName])[] | undefined>) | undefined; mergePages?: boolean; path?: string; loadOnUpdate?: boolean; lazy?: boolean | import("vue").Ref | import("vue").ComputedRef; throttle?: number; }) => { items: import("vue").ComputedRef, SnakeCase>[ModelName][]>; create: (data: Partial, SnakeCase>[ModelName]>) => any; pushId: (id: IdType["id"]) => void; refresh: () => void; isLoading: import("vue").ComputedRef; isFailed: import("vue").ComputedRef; error: any; meta: [{ nextCursor?: IdType["id"] | undefined; page: number; pages: number; results: number; } & { [K_2 in keyof Options["models"]]: Options["models"][K_2]["metaTypes"]; }[ModelName]] extends [import("vue").Ref] ? import("vue").Ref & { nextCursor?: IdType["id"] | undefined; page: number; pages: number; results: number; } & { [K_2 in keyof Options["models"]]: Options["models"][K_2]["metaTypes"]; }[ModelName] : import("vue").Ref["id"] | undefined; page: number; pages: number; results: number; } & { [K_2 in keyof Options["models"]]: Options["models"][K_2]["metaTypes"]; }[ModelName]>>; }; useSingle: (model: ModelName, id: import("./components/createUseSingle").R["id"]>, options?: { include?: import("./components/createUseSingle").R<(keyof FieldTypes, SnakeCase>[ModelName])[]> | undefined; path?: string; loadOnUpdate?: boolean; lazy?: boolean; preferCache?: boolean; }) => { item: import("vue").ComputedRef, SnakeCase>[ModelName] | null>; refresh: () => void; isLoading: import("vue").ComputedRef; isFailed: import("vue").ComputedRef; error: any; }; useSingleton: (model: ModelName, options?: { filter?: ({ [key in keyof FieldTypes, SnakeCase>[ModelName]]?: (FieldTypes, SnakeCase>[ModelName][key] | import("vue").Ref, SnakeCase>[ModelName][key] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName][key] | undefined>) | undefined; } | import("vue").Ref<{ [key in keyof FieldTypes, SnakeCase>[ModelName]]?: (FieldTypes, SnakeCase>[ModelName][key] | import("vue").Ref, SnakeCase>[ModelName][key] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName][key] | undefined>) | undefined; } | undefined> | import("vue").ComputedRef<{ [key in keyof FieldTypes, SnakeCase>[ModelName]]?: (FieldTypes, SnakeCase>[ModelName][key] | import("vue").Ref, SnakeCase>[ModelName][key] | undefined> | import("vue").ComputedRef, SnakeCase>[ModelName][key] | undefined>) | undefined; } | undefined>) | undefined; path?: string; loadOnUpdate?: boolean; }) => { item: import("vue").ComputedRef, SnakeCase>[ModelName]>; refresh: () => void; isLoading: import("vue").ComputedRef; isFailed: import("vue").ComputedRef; error: any; }; };