import { Column } from './Column';
import { Select } from './Select';
import { Insert } from './Insert';
import { Update } from './Update';
import { Delete } from './Delete';
import { Join } from './Join';
import { Count } from './Count';
import { MapOptions, Mapper } from '../utils/Mapper';
import { PropertyOptions } from '../utils/Property';
import { Database } from '../data/Database';
import { Json } from '../types/Json';
export declare class Table extends Mapper {
    protected readonly map: {
        column: <T = unknown>(name: string, options?: PropertyOptions<T>) => Column;
        item: (property: string, options?: PropertyOptions) => import("../utils/Property").Property;
        ignore: (property?: string) => import("../utils/Mapper").Mapping;
        skipIn: (property: string) => import("../utils/Mapper").Mapping;
        skipOut: (property: string) => import("../utils/Mapper").Mapping;
        func: (property: string, funcIn: import("..").Get<import("..").Optional<import("../types/Json").JsonValue>, Json>, funcOut: import("..").Get<import("..").Optional<import("../types/Json").JsonValue>, Json>) => import("../utils/Mapper").Mapping;
        add: (funcIn: import("..").Get<import("../types/Json").JsonValue, Json>) => import("../utils/Mapper").Mapping;
        map: (mapper: import("..").Construct<Mapper>, property?: string) => import("../utils/Mapper").Mapping;
        propsToList: (...maps: import("../utils/Mapper").Mapping[]) => import("../utils/Mapper").Mapping;
        list: (mapper: import("../utils/Mapper").Mapping, property: string) => import("../utils/Mapper").Mapping;
    };
    readonly id: Column;
    constructor(options?: MapOptions);
    get db(): Database;
    get count(): Count;
    prop: <T = unknown>(name: string, options?: PropertyOptions<T>) => Column;
    select: (...columns: Column[]) => Select;
    insert: (fields: Json) => Insert;
    update: (fields: Json) => Update;
    delete: () => Delete;
    readonly join: (t: Table) => Join;
}
