import type { Database } from "bun:sqlite";
import type { App } from "./app.js";
type TxContext = {
    app: App;
    db: () => Database;
    getTxInfo: () => TxAppInfo | null;
    setTxInfo: (info: TxAppInfo | null) => void;
};
export declare function RunInTransaction(ctx: TxContext, fn: (txApp: App) => Error | null | Promise<Error | null>): Promise<Error | null>;
export declare function RunInTransactionSync(ctx: TxContext, fn: (txApp: App) => Error | null): Error | null;
export declare function AuxRunInTransaction(app: App, db: () => Database, fn: (txApp: App) => Error | null | Promise<Error | null>): Promise<Error | null>;
export declare function AuxRunInTransactionSync(app: App, db: () => Database, fn: (txApp: App) => Error | null): Error | null;
export declare class TxAppInfo {
    #private;
    OnComplete(fn: (txErr: Error | null) => Error | null | Promise<Error | null>): void;
    runAfterFuncs(txErr: Error | null): Promise<Error | null>;
    runAfterFuncsSync(txErr: Error | null): Error | null;
}
export {};
