import { type HasSql } from './Internal.js'; import type { Runtime } from './MetaData.js'; import { type Param } from './Param.js'; import { Sql } from './Sql.js'; import type { FieldData } from './expr/Field.js'; import type { JsonPath } from './expr/Json.js'; export declare abstract class Emitter { #private; sql: string; protected params: Array; abstract emitIdentifier(value: string): void; abstract emitValue(value: unknown): void; abstract emitInline(value: unknown): void; abstract emitJsonPath(path: JsonPath): void; abstract emitPlaceholder(value: string): void; constructor(runtime: Runtime); get hasParams(): boolean; bind(inputs?: Record): Array; processValue(value: unknown): unknown; emitIdentifierOrSelf(value: string): void; emitUnsafe(value: string): void; emitSelf(inner: Sql, name: string): void; inlineFields(inner: Sql, withTableName: boolean): void; inlineValues(inner: Sql): void; emitField({ targetName, fieldName }: FieldData): void; emitValueOrInline(value: unknown): void; emitUniversal(runtimes: Partial>): void; }