import type { AST } from 'node-sql-parser';
/**
 * The slice of `node-sql-parser`'s `Parser` the data satellite uses. Typed structurally so the guardrail
 * files (`sql-validator`, `tenant-scope`, `limit`) never import the package at module load — they take a
 * parser instance. `node-sql-parser` stays an **optional lazy peer**: only {@link loadSqlParser} imports it,
 * and only when the `data` tool is actually built.
 */
export interface SqlParserLike {
    astify(sql: string, opt?: {
        database?: string;
    }): AST | AST[];
    sqlify(ast: AST, opt?: {
        database?: string;
    }): string;
    tableList(sql: string, opt?: {
        database?: string;
    }): string[];
}
/** Re-export the parser AST type for the guardrail files (type-only — erased at compile). */
export type { AST } from 'node-sql-parser';
/**
 * Lazily import `node-sql-parser` and build a single shared {@link SqlParserLike}. The import lives here
 * (not at any module's top level) so the package is only pulled in when the `data` tool is configured —
 * keeping `node-sql-parser` an optional peer, exactly like `@adonisjs/lucid` is for the stores.
 */
export declare function loadSqlParser(): Promise<SqlParserLike>;
//# sourceMappingURL=parser.d.ts.map