import { EntityDict, OperateOption, OperationResult, StorageSchema, TxnOption } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { AsyncContext, AsyncRowStore } from "oak-domain/lib/store/AsyncRowStore"; import { CreateEntityOption } from "./Translator"; import { AggregationResult, SelectOption } from "oak-domain/lib/types"; export type { Plan } from './migration'; import type { MigrationPlanningOptions, Plan } from './migration'; export interface DbStore> extends AsyncRowStore { checkRelationAsync>(entity: T, operation: Omit, context: Cxt): Promise; connect: () => Promise; disconnect: () => Promise; exec(script: string, txnId?: string): Promise; supportsTransactionalDdl(): boolean; initialize(options: CreateEntityOption): Promise; aggregate(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): Promise>; operate(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OperateOption): Promise>; select(entity: T, selection: ED[T]['Selection'], context: Cxt, option: SelectOption): Promise[]>; count(entity: T, selection: Pick, context: Cxt, option: SelectOption): Promise; begin(option?: TxnOption): Promise; commit(txnId: string): Promise; rollback(txnId: string): Promise; readSchema(): Promise>; makeUpgradePlan(options?: MigrationPlanningOptions): Promise; diffSchema(schemaOld: StorageSchema, schemaNew: StorageSchema, options?: MigrationPlanningOptions): Plan; }