import { PrimaryKeyType } from "./../core/enums/primary-key-type";
import { MapperSettingsModel } from "./mapper-settings-model";
import { ReturnExpression } from "lambda-expression";
import { GetMapper } from "./interface-get-mapper";
import { MetadataTable } from "../metadata-table";
import { DatabaseHelper } from "../database-helper";
export declare class MapperBase implements GetMapper {
    private _databaseHelper;
    protected _defaultSettings: MapperSettingsModel;
    private _mappers;
    constructor(_databaseHelper: DatabaseHelper, _defaultSettings?: MapperSettingsModel);
    /**
     * Auto Mapper Table for Model, primary key and all column initialized in model class
     * @param newable Type Model
     * @param keyColumn Expression primary key
     * @param isAutoIncrement If primary key is autoincrement, default 'false'
     * @param readOnly if column is readonly, default 'false'
     * @param settings settings mapper, default settings construtor
     * @deprecated use {@link mapper} instead.
     */
    autoMapper<TReturn, T>(newable: new () => T, keyColumn: ReturnExpression<TReturn, T>, primaryKeyType?: PrimaryKeyType, keyType?: new () => TReturn, readOnly?: boolean, settings?: MapperSettingsModel): MetadataTable<T>;
    /**
     * Mapper Table for Model
     * @param newable Type Model
     * @param readOnly if column is readonly, default 'false'
     * @deprecated use {@link mapper} with tableName overload instead.
     */
    mapper<T>(newable: new () => T, readOnly?: boolean): MetadataTable<T>;
    /**
     * Mapper Table for Model
     * @param newable Type Model
     * @param tableName Table Name
     * @param readOnly if column is readonly, default 'false'
     */
    mapper<T>(newable: new () => T, tableName: string, readOnly?: boolean): MetadataTable<T>;
    has<T>(tKey: (new () => T) | string): boolean;
    get<T>(tKey: (new () => T) | string): MetadataTable<T>;
    getThrowErrorNotFound<T>(tKey: (new () => T) | string): MetadataTable<T>;
    forEachMapper(callbackfn: (value: MetadataTable<any>, key: string, map: Map<string, MetadataTable<any>>) => void, thisArg?: any): void;
    clear(): void;
    private push;
}
