import { LockContext } from '../../db/DBAdapter.js';
import { Schema } from '../../db/schema/Schema.js';
import type { AbstractPowerSyncDatabase } from '../AbstractPowerSyncDatabase.js';
import { CreateDiffTriggerOptions, DiffTriggerOperation, TrackDiffOptions, TriggerManager, TriggerManagerConfig, TriggerRemoveCallback } from './TriggerManager.js';
export type TriggerManagerImplOptions = TriggerManagerConfig & {
    db: AbstractPowerSyncDatabase;
    schema: Schema;
};
export type TriggerManagerImplConfiguration = {
    useStorageByDefault: boolean;
};
export declare const DEFAULT_TRIGGER_MANAGER_CONFIGURATION: TriggerManagerImplConfiguration;
/**
 * @internal
 * @experimental
 */
export declare class TriggerManagerImpl implements TriggerManager {
    protected options: TriggerManagerImplOptions;
    protected schema: Schema;
    protected defaultConfig: TriggerManagerImplConfiguration;
    protected cleanupTimeout: ReturnType<typeof setTimeout> | null;
    protected isDisposed: boolean;
    constructor(options: TriggerManagerImplOptions);
    protected get db(): AbstractPowerSyncDatabase;
    protected getUUID(): Promise<string>;
    protected removeTriggers(tx: LockContext, triggerIds: string[]): Promise<void>;
    dispose(): void;
    /**
     * Updates default config settings for platform specific use-cases.
     */
    updateDefaults(config: TriggerManagerImplConfiguration): void;
    protected generateTriggerName(operation: DiffTriggerOperation, destinationTable: string, triggerId: string): string;
    /**
     * Cleanup any SQLite triggers or tables that are no longer in use.
     */
    cleanupResources(): Promise<void>;
    createDiffTrigger(options: CreateDiffTriggerOptions): Promise<() => Promise<void>>;
    trackTableDiff(options: TrackDiffOptions): Promise<TriggerRemoveCallback>;
}
