import { Query } from '../../../query/domain';
import { Index, Source, Relation, EntityMapping, PropertyMapping, MappingConfigService, SentenceAction } from 'lambdaorm-base';
import { DdlBuilder, DialectService } from '../../domain';
import { OrmH3lp } from '../../../shared/infrastructure';
export declare abstract class DdlBuilderBase implements DdlBuilder {
    protected readonly source: Source;
    protected readonly mapping: MappingConfigService;
    protected readonly dialect: DialectService;
    protected readonly helper: OrmH3lp;
    constructor(source: Source, mapping: MappingConfigService, dialect: DialectService, helper: OrmH3lp);
    abstract truncateEntity(entity: EntityMapping): Query | undefined;
    abstract setNull(entity: EntityMapping, relation: Relation): Query | undefined;
    abstract dropFk(entity: EntityMapping, relation: Relation): Query | undefined;
    abstract dropIndex(entity: EntityMapping, index: Index): Query | undefined;
    abstract dropSequence(entity: EntityMapping): Query | undefined;
    abstract dropEntity(entity: EntityMapping): Query | undefined;
    abstract dropPk(entity: EntityMapping): Query | undefined;
    abstract dropUk(entity: EntityMapping): Query | undefined;
    abstract createEntity(entity: EntityMapping): Query | undefined;
    abstract addProperty(entity: EntityMapping, property: PropertyMapping): Query | undefined;
    /**
     * @deprecated Use alterPropertyType or alterPropertyNullable
     */
    abstract alterProperty(entity: EntityMapping, property: PropertyMapping): Query | undefined;
    abstract alterPropertyType(entity: EntityMapping, property: PropertyMapping): Query | undefined;
    abstract alterPropertyRequired(entity: EntityMapping, property: PropertyMapping): Query | undefined;
    abstract dropProperty(entity: EntityMapping, property: PropertyMapping): Query | undefined;
    abstract addPk(entity: EntityMapping, primaryKey: string[]): Query | undefined;
    abstract addUk(entity: EntityMapping, uniqueKey: string[]): Query | undefined;
    abstract addFk(entity: EntityMapping, relation: Relation): Query | undefined;
    abstract createFk(entity: EntityMapping, relation: Relation): Query | undefined;
    abstract createIndex(entity: EntityMapping, index: Index): Query | undefined;
    abstract createSequence(entity: EntityMapping): Query | undefined;
    objects(): Query;
    tables(names: string[]): Query;
    views(names: string[]): Query;
    primaryKeys(tableNames: string[]): Query;
    uniqueKeys(tableNames: string[]): Query;
    foreignKeys(tableNames: string[]): Query;
    indexes(tableNames: string[]): Query;
    sequences(): Query;
    protected createQuery(action: SentenceAction, sentence: string, entity: string, description: string, query?: string): Query;
}
