export type QueryMode = 'sync' | 'async' | undefined; export type Runtime = 'sqlite' | 'mysql' | 'postgres'; export type QueryDialect = 'universal' | Runtime; export type Deliver = Meta extends Either ? Result | Promise : Meta extends Sync ? Result : Promise; export interface QueryMeta { mode: QueryMode; dialect: QueryDialect; } export interface Sync extends QueryMeta { mode: 'sync'; dialect: Dialect; } export interface Async extends QueryMeta { mode: 'async'; dialect: Dialect; } export interface IsPostgres extends QueryMeta { dialect: 'postgres'; } export interface IsMysql extends QueryMeta { dialect: 'mysql'; } export interface IsSqlite extends QueryMeta { dialect: 'sqlite'; } export interface Either extends QueryMeta { mode: 'sync' | 'async'; dialect: QueryDialect; }