import * as yup from 'yup'; export declare type RequiredKeys = { [K in keyof T]-?: string extends K ? never : number extends K ? never : {} extends Pick ? never : K; } extends { [_ in keyof T]-?: infer U; } ? U extends keyof T ? U : never : never; export declare type OptionalKeys = { [K in keyof T]-?: string extends K ? never : number extends K ? never : {} extends Pick ? K : never; } extends { [_ in keyof T]-?: infer U; } ? U extends keyof T ? U : never : never; export declare type FlatConvectorModel = { [L in Exclude, keyof ConvectorModel>]?: T[L]; } & { [L in Exclude, keyof ConvectorModel>]: T[L]; }; export interface History { value: T; txId: string; timestamp: number; } export declare abstract class ConvectorModel> { private static type; static schema>(this: Function & { prototype: T; }): yup.ObjectSchema & { id: string; type: string; }>; static getOne>(this: new (content: any) => T, id: string, type?: new (content: any) => T, storageOptions?: any): Promise; static query(type: new (content: any) => T, ...args: any[]): Promise; static getAll>(this: new (content: any) => T, type?: string): Promise; id: string; readonly abstract type: string; constructor(); constructor(id: string); constructor(content: { [key in keyof T]?: T[key]; }); update(content: { [key in keyof T]?: T[key]; }): Promise; fetch(storageOptions?: any): Promise; history(): Promise[]>; save(storageOptions?: any): Promise; clone(): T; toJSON(skipEmpty?: boolean): { [key in keyof T]?: T[key]; }; delete(storageOptions?: any): Promise; private assign(content, defaults?); }