/**
 * GTM DataLayer Bridge
 *
 * Subscribes to the EventBus and pushes events to window.dataLayer
 * so customers' existing GTM setups can surface Syntro events.
 */
export interface GtmBridgeConfig {
    /** EventBus to subscribe to */
    eventBus: {
        subscribe: (filter: {
            names?: string[];
            patterns?: string[];
        }, callback: (event: {
            name: string;
            props?: Record<string, unknown>;
            source?: string;
            ts: number;
        }) => void) => () => void;
    };
    /** Prefix for event names in dataLayer. @default "syntro" */
    prefix?: string;
    /** Optional filter -- return true to include event, false to skip */
    eventFilter?: (eventName: string) => boolean;
}
export interface GtmBridge {
    destroy: () => void;
}
declare global {
    interface Window {
        dataLayer?: Array<Record<string, unknown>>;
    }
}
/**
 * Create a GTM DataLayer bridge that forwards EventBus events to window.dataLayer.
 */
export declare function createGtmBridge(config: GtmBridgeConfig): GtmBridge;
