/**
 * Shell only.
 * This file exists to give the semantic rewriter something stable to target.
 * None of this is meant to run at runtime.
 */
type S2EventName = 'success' | 'failure';
type S2Listener = (payload: unknown) => void;
export declare class S2Query<TData = unknown> {
    readonly clientId: string;
    readonly sqlQuery: string;
    readonly sqlParams?: unknown;
    readonly executed: boolean;
    readonly loading: boolean;
    readonly error: Error | null;
    /** Internal state placeholder (server decides array/object; we don't care here). */
    data: TData | null;
    private listeners;
    constructor(clientId: string, sqlQuery: string, sqlParams?: unknown, executed?: boolean, loading?: boolean, error?: Error | null);
    on(event: S2EventName, fn: S2Listener): () => boolean;
    /** Shell: rewritten by transform. */
    execute(): TData;
    /** Shell: rewritten by transform. */
    reset(): void;
}
export declare class S2Client {
    private static serial;
    readonly id: string;
    constructor(id?: string);
    query<TData = unknown>(sqlQuery: string, sqlParams?: unknown): S2Query<TData>;
}
export declare const s2client: S2Client;
export declare function createS2Client(id?: string): S2Client;
export {};
