import { DyNTS_SqliteColumnInfo } from '../_models/interfaces/dynts-sqlite-reader.interface';
/**
* `DyNTS_Sqlite_Reader_Util` (BFR-AM-009) — **read-only** SQLite reader statikus util. Egy IZOLÁLT,
* opcionális natív függőséggel (`better-sqlite3`, read-only mode) ad általános, domain-agnosztikus
* SQLite-olvasást: `listTables` / `getSchema` / `readTable` / `query` (SELECT-only).
*
* **Read-only garancia (kétréteg):**
* 1. a DB MINDIG `{ readonly: true }`-vel nyílik (a SQLite-engine elutasít minden írást),
* 2. a `query()` ráadásul forrás-szinten egy **SELECT-only guard**-ot tesz (csak `SELECT`/`WITH`
* kezdetű, single-statement SQL fut) — így a destruktív SQL még a DB-rétegig sem jut el.
*
* **Fail-soft (no-silent-failure):** hiányzó `path` / nem-létező fájl / megnyitás-hiba / tiltott SQL
* → tiszta, strukturált `DyFM_Error` (errorCode + deskriptív message), NEM hang/crash/néma-[]. A DB
* MINDIG zárul (try/finally).
*
* **Opcionális natív dep:** a `better-sqlite3` peer-dep `optional:true` — a consumer CSAK akkor adja
* hozzá, ha SQLite-ot olvas. A `/mcp`-vel diszjunkt; ez a util egy import-ban él, így a require
* tényleges hívásig (statikus metódus) nem terheli a nem-SQLite consumert.
*/
export declare class DyNTS_Sqlite_Reader_Util {
/** A hibák issuer-e (a strukturált DyFM_Error-okhoz). */
private static readonly issuer;
/** A `query()` SELECT-only guard regex-e: a (trimmelt, lowercase) SQL `select`/`with`-tel kezdődik. */
private static readonly SELECT_ONLY;
/**
* Egy tábla ÖSSZES sorának read-only olvasása (`SELECT * FROM
`). A `table` nevet
* `sqlite_master` ellen validáljuk (csak létező táblanév fut, így nincs SQL-injekciós felület a
* tábla-néven). Nem-létező tábla → strukturált hiba (NEM néma-[]).
*/
static readTable(dbPath: string, table: string): unknown[];
/**
* Egy tetszőleges **SELECT-only** lekérdezés read-only futtatása. A guard elutasít minden nem-SELECT
* (insert/update/delete/drop/attach/pragma-write/…) SQL-t → `DyNTS-SQLITE-READONLY-001`. A
* `params` opcionális prepared-statement paraméterek (pozícionális `?` vagy named `@x`).
*/
static query(dbPath: string, sql: string, params?: unknown[] | {
[key: string]: unknown;
}): unknown[];
/** A DB ÖSSZES (nem-belső) táblanevének read-only listája (`sqlite_master`, ABC-sorrendben). */
static listTables(dbPath: string): string[];
/**
* Egy tábla séma-leírása (`PRAGMA table_info()` — a SQLite read-only introspekciója). A
* `table` nevet `sqlite_master` ellen validáljuk (nem-létező → strukturált hiba). Az oszlop-info
* (`cid`/`name`/`type`/`notNull`/`defaultValue`/`primaryKey`) normalizált shape-ben tér vissza.
*/
static getSchema(dbPath: string, table: string): DyNTS_SqliteColumnInfo[];
/**
* A DB read-only megnyitása + a callback futtatása + GARANTÁLT zárás (try/finally). A `path`
* validálva (üres/nem-létező → strukturált hiba); a megnyitás-/olvasás-hibát strukturált
* `DyFM_Error`-rá fordítjuk (a már-DyFM_Error-t NEM csomagoljuk újra). A `readonly:true` az
* első védvonal (a SQLite-engine elutasít minden írást).
*/
private static withDb;
/** A SELECT-only guard: nem-SELECT/WITH kezdetű VAGY multi-statement SQL → strukturált hiba. */
private static assertSelectOnly;
/** Egy tábla létezésének read-only ellenőrzése (`sqlite_master`). */
private static tableExists;
}
//# sourceMappingURL=dynts-sqlite-reader.util.d.ts.map