import { ExecutableBuilder } from "../core/executable-builder"; import { DatabaseBase, DatabaseResult } from "../definitions/database-definition"; import { MapperTable } from "../mapper-table"; import { ValueTypeToParse } from "../core/utils"; import { SqlCompilable } from "./sql-compilable"; import { QueryCompiled } from "../core/query-compiled"; import { SqlExecutable } from "./sql-executable"; import { Observable } from "rxjs"; export declare abstract class SqlBase implements SqlCompilable, SqlExecutable { protected readonly _executableBuilder: ExecutableBuilder; protected readonly mapperTable: MapperTable; protected readonly database: DatabaseBase; protected readonly enableLog: boolean; protected get mainScriptLength(): number; private _mainScriptLength; constructor({ mapperTable, database, enableLog }: { mapperTable: MapperTable; database?: DatabaseBase; enableLog?: boolean; }); execute({ cascade, database }?: { cascade?: boolean; database?: DatabaseBase; }): Observable; compile(cascade?: boolean): QueryCompiled[]; protected compileDependency(cascade: boolean): QueryCompiled[]; protected compileDependencyByValue(dependency: MapperTable): QueryCompiled[]; protected compileValuesDependency(dependency: MapperTable, valuesDependencyArray: ValueTypeToParse[][], fieldReferenceSubItem: string): QueryCompiled[]; protected abstract dependencies(): MapperTable[]; protected abstract model(): T | Array; protected abstract builderCompiled(): QueryCompiled | QueryCompiled[]; protected abstract resolveDependency(dependency: MapperTable): QueryCompiled; protected abstract checkDatabaseResult(promise: Observable): Observable; protected resolveDependencyByValue(dependency: MapperTable, value: ValueTypeToParse, index: number): QueryCompiled; protected getDatabase(database: DatabaseBase): DatabaseBase; protected checkAndPush(scripts: QueryCompiled[], push: QueryCompiled | QueryCompiled[]): void; }