import type mssql from 'mssql';
import { entityKind } from "../entity.js";
import type { Logger } from "../logger.js";
import { MsSqlDatabase } from "../mssql-core/db.js";
import { MsSqlDialect } from "../mssql-core/dialect.js";
import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.js";
import { type DrizzleConfig } from "../utils.js";
import type { NodeMsSqlClient, NodeMsSqlPreparedQueryHKT, NodeMsSqlQueryResultHKT } from "./session.js";
import { NodeMsSqlSession } from "./session.js";
export interface MsSqlDriverOptions {
    logger?: Logger;
}
export declare class NodeMsSqlDriver {
    private client;
    private dialect;
    private options;
    static readonly [entityKind]: string;
    constructor(client: NodeMsSqlClient, dialect: MsSqlDialect, options?: MsSqlDriverOptions);
    createSession(schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined): NodeMsSqlSession<Record<string, unknown>, TablesRelationalConfig>;
}
export { MsSqlDatabase } from "../mssql-core/db.js";
export type NodeMsSqlDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = MsSqlDatabase<NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, TSchema>;
export type NodeMsSqlDrizzleConfig<TSchema extends Record<string, unknown> = Record<string, never>> = Omit<DrizzleConfig<TSchema>, 'schema'> & ({
    schema: TSchema;
} | {
    schema?: undefined;
});
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NodeMsSqlClient = mssql.ConnectionPool>(...params: [
    TClient | string
] | [
    TClient | string,
    DrizzleConfig<TSchema>
] | [
    (DrizzleConfig<TSchema> & ({
        connection: string | mssql.ConnectionPool;
    } | {
        client: TClient;
    }))
]): NodeMsSqlDatabase<TSchema> & {
    $client: TClient;
};
export declare namespace drizzle {
    function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NodeMsSqlDatabase<TSchema> & {
        $client: '$client is not available on drizzle.mock()';
    };
}
