import { MySqlAsyncPreparedQuery, MySqlAsyncSession } from "./session.cjs";
import { entityKind } from "../../entity.cjs";
import { Assume } from "../../utils.cjs";
import { QueryPromise } from "../../query-promise.cjs";
import { MySqlTable } from "../table.cjs";
import { MySqlPreparedQueryConfig, MySqlQueryResultHKT, MySqlQueryResultKind } from "../session.cjs";
import { MySqlDeleteBase, MySqlDeleteHKTBase } from "../query-builders/delete.cjs";

//#region src/mysql-core/async/delete.d.ts
type MySqlAsyncDelete<TTable extends MySqlTable = MySqlTable, TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT> = MySqlAsyncDeleteBase<TTable, TQueryResult, true, never>;
type MySqlAsyncDeletePrepare<T extends AnyMySqlAsyncDelete> = MySqlAsyncPreparedQuery<MySqlPreparedQueryConfig & {
  execute: MySqlQueryResultKind<T['_']['queryResult'], never>;
  iterator: never;
}>;
type AnyMySqlAsyncDelete = MySqlAsyncDeleteBase<any, any, any, any>;
interface MySqlAsyncDeleteHKT extends MySqlDeleteHKTBase {
  _type: MySqlAsyncDeleteBase<Assume<this['table'], MySqlTable>, Assume<this['queryResult'], MySqlQueryResultHKT>, this['dynamic'], this['excludedMethods']>;
}
interface MySqlAsyncDeleteBase<TTable extends MySqlTable, TQueryResult extends MySqlQueryResultHKT, TDynamic extends boolean = false, TExcludedMethods extends string = never> extends QueryPromise<MySqlQueryResultKind<TQueryResult, never>> {}
declare class MySqlAsyncDeleteBase<TTable extends MySqlTable, TQueryResult extends MySqlQueryResultHKT, TDynamic extends boolean = false, TExcludedMethods extends string = never> extends MySqlDeleteBase<MySqlAsyncDeleteHKT, TTable, TQueryResult, TDynamic, TExcludedMethods> {
  static readonly [entityKind]: string;
  protected session: MySqlAsyncSession<TQueryResult, any>;
  prepare(): MySqlAsyncDeletePrepare<this>;
  execute: ReturnType<this['prepare']>['execute'];
  private createIterator;
  iterator: ReturnType<this["prepare"]>["iterator"];
}
//#endregion
export { AnyMySqlAsyncDelete, MySqlAsyncDelete, MySqlAsyncDeleteBase, MySqlAsyncDeleteHKT, MySqlAsyncDeletePrepare };
//# sourceMappingURL=delete.d.cts.map