///
import { MobilettoConnection, MobilettoMetadata } from "mobiletto-base";
import { MobilettoOrmFieldValue, MobilettoOrmFindOpts, MobilettoOrmIdArg, MobilettoOrmObject, MobilettoOrmPredicate, MobilettoOrmPurgeOpts, MobilettoOrmPurgeResults, MobilettoOrmTypeDef, MobilettoOrmTypeDefConfig } from "mobiletto-orm-typedef";
export type MobilettoOrmStorageResolver = () => Promise;
export type MobilettoOrmObjectInstance = {
storage: MobilettoConnection;
object: MobilettoOrmObject;
name: string;
data?: Buffer;
};
export type MobilettoOrmMetadata = MobilettoMetadata & {
data?: Buffer;
object?: MobilettoOrmObject;
};
export type MobilettoOrmRepository = {
typeDef: MobilettoOrmTypeDef;
factory: MobilettoOrmRepositoryFactory;
id: (thing: T) => string | null;
idField: (thing: T) => string | null;
validate: (thing: T, current?: T) => Promise;
create: (thing: T) => Promise;
update: (editedThing: T) => Promise;
remove: (thing: MobilettoOrmIdArg) => Promise;
purge: (idVal: MobilettoOrmIdArg, opts?: MobilettoOrmPurgeOpts) => Promise;
exists: (id: MobilettoOrmIdArg) => Promise;
resolveId: (idVal: MobilettoOrmIdArg, ctx?: string) => string;
findById: (idVal: MobilettoOrmIdArg, opts?: MobilettoOrmFindOpts) => Promise;
safeFindById: (id: MobilettoOrmIdArg, opts?: MobilettoOrmFindOpts) => Promise;
find: (opts: MobilettoOrmFindOpts) => Promise;
count: (predicate: MobilettoOrmPredicate) => Promise;
findBy: (field: string, value: MobilettoOrmFieldValue, opts?: MobilettoOrmFindOpts) => Promise;
safeFindBy: (field: string, value: MobilettoOrmFieldValue, opts?: MobilettoOrmFindOpts) => Promise;
safeFindFirstBy: (field: string, value: MobilettoOrmFieldValue, opts?: MobilettoOrmFindOpts) => Promise;
existsWith: (field: string, value: MobilettoOrmFieldValue) => Promise;
findVersionsById: (id: MobilettoOrmIdArg, redact?: boolean) => Promise>;
findAll: (opts?: MobilettoOrmFindOpts) => Promise;
findAllIncludingRemoved: () => Promise;
findSingleton: () => Promise;
};
export type MobilettoOrmRepositoryFactory = {
storages: MobilettoConnection[] | MobilettoOrmStorageResolver;
repository: (typeDef: MobilettoOrmTypeDefConfig | MobilettoOrmTypeDef) => MobilettoOrmRepository;
};