import mysql from "mysql2/promise"; import { MySqlTable } from 'drizzle-orm/mysql-core/table'; import { MySqlColumn, MySqlInsertValue } from 'drizzle-orm/mysql-core/index'; import { MySql2Database } from 'drizzle-orm/mysql2/driver'; import { Column, Placeholder, SQL } from 'drizzle-orm'; import type { MySqlTransaction } from 'drizzle-orm/mysql-core/session'; declare let db: MySql2Database; export declare const initDatabaseConnection: (config: mysql.PoolOptions, schema: Record) => void; export declare class DatabaseModel { static run(SQL: string, params: unknown[], trx?: mysql.Pool): Promise; static transaction(): Promise<((transaction: (tx: MySqlTransaction, import("drizzle-orm").ExtractTablesWithRelations>>, config?: import("drizzle-orm/mysql-core/session").MySqlTransactionConfig) => Promise, config?: import("drizzle-orm/mysql-core/session").MySqlTransactionConfig) => Promise)>; static rawTransaction(fn: (connection: any) => Promise): Promise; static useTable(table: ITable, trx?: typeof db): { new (): {}; remove(where: Partial<{ [K in keyof ITable]: ITable[K] extends Column, object, object> ? ITable[K]["_"]["data"] | ITable[K]["_"]["data"][] : never; }>, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; } | "*"; }): Promise<{ affectedRows: number; }>; add | MySqlInsertValue[]>(data: T, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; } | "*"; }): Promise<({ [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; } extends infer T_1 ? { [K in keyof T_1]: { [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; }[K]; } : never) extends infer T_2 ? T_2 extends ({ [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; } extends infer T_1 ? { [K in keyof T_1]: { [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; }[K]; } : never) ? T_2 extends undefined ? import("drizzle-orm/mysql2").MySqlRawQueryResult : T_2[] : never : never>; save(data: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; }, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; } | "*"; }): Promise<(({ [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; } extends infer T ? { [K in keyof T]: { [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; }[K]; } : never) extends infer T_1 ? T_1 extends ({ [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; } extends infer T ? { [K in keyof T]: { [Key_1 in import("drizzle-orm/mysql-core/index").PrimaryKeyKeys & string as Key_1]: import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["notNull"] extends true ? import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"] : import("drizzle-orm/mysql-core/index").GetPrimarySerialOrDefaultKeys[Key_1]["_"]["data"]; }[K]; } : never) ? T_1 extends undefined ? import("drizzle-orm/mysql2").MySqlRawQueryResult : T_1[] : never : never) | { affectedRows: number; }>; update(data: { [Key in keyof ITable["$inferSelect"]]: SQL | Placeholder | ITable["$inferSelect"][Key]; } | { [Key_1 in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key_1]; }, where: Partial<{ [K in keyof ITable]: ITable[K] extends Column, object, object> ? ITable[K]["_"]["data"] | ITable[K]["_"]["data"][] : never; }>, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key_1 in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key_1]; } | "*"; }): Promise<{ affectedRows: number; }>; find(where: Partial<{ [K in keyof ITable]: ITable[K] extends Column, object, object> ? ITable[K]["_"]["data"] | ITable[K]["_"]["data"][] : never; }>, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; } | "*"; }): Promise; findOne(where: Partial<{ [K in keyof ITable]: ITable[K] extends Column, object, object> ? ITable[K]["_"]["data"] | ITable[K]["_"]["data"][] : never; }>, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; } | "*"; }): Promise; upsert>(insert: T, update: T, options?: { debug?: boolean; ignore?: boolean; limit?: number; offset?: number; fields?: { [Key in keyof ITable["$inferInsert"]]: SQL | Placeholder | ITable["$inferInsert"][Key]; } | "*"; }): Promise<{ affectedRows: number; }>; }; } export {};