$params * @return array> */ public function query(string $sql, array $params = []): array; /** * Execute a non-SELECT statement (INSERT/UPDATE/DELETE). * * @param string $sql * @param array $params * @return int affected rows */ public function execute(string $sql, array $params = []): int; /** * Run a callback within a transaction. * Rolls back on throwable and rethrows it. * * @template T * @param callable($this):T $callback * @return mixed */ public function transaction(callable $callback): mixed; /** * Return the underlying driver connection (e.g., PDO). * @return mixed */ public function getNative(): mixed; /** * Get last inserted ID if supported. */ public function lastInsertId(): ?string; }