import type { Database, Querier, Transaction, TransactionalDatabase } from './index.js'

type S = Record<string, unknown>

declare const db: Database<S>
declare const txDb: TransactionalDatabase<S>
declare const tx: Transaction<S>

// Database lacks .transaction — neon-http narrowing contract
// @ts-expect-error transaction is omitted from Database
db.transaction(async () => {})

// TransactionalDatabase has .transaction
void txDb.transaction(async (innerTx) => {
  const q: Querier<S> = innerTx
  void q
})

// Querier accepts both Database and Transaction
const fromDb: Querier<S> = db
const fromTx: Querier<S> = tx
void fromDb
void fromTx
