import { EventTypeName } from './types.js';
import '../event-bus.protocol.js';
import '../../../types/drizzle.js';
import 'drizzle-orm/node-postgres';

interface EventMetadata {
    type: EventTypeName;
    tier: 'domain' | 'audit';
    direction: 'inbound' | 'change' | 'outbound' | null;
    pool: 'events_inbound' | 'events_change' | 'events_outbound' | null;
    aggregate?: string;
    source?: string;
    destination?: string;
    version: number;
    retry: {
        attempts: number;
        backoff: 'linear' | 'exponential';
    };
}
declare const eventRegistry: {
    readonly contact_created: {
        readonly type: "contact_created";
        readonly tier: "domain";
        readonly direction: "change";
        readonly pool: "events_change";
        readonly aggregate: "contact";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
    readonly contact_marked_champion: {
        readonly type: "contact_marked_champion";
        readonly tier: "domain";
        readonly direction: "change";
        readonly pool: "events_change";
        readonly aggregate: "contact";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
    readonly contact_merged: {
        readonly type: "contact_merged";
        readonly tier: "domain";
        readonly direction: "change";
        readonly pool: "events_change";
        readonly aggregate: "contact";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
    readonly crm_sync_started: {
        readonly type: "crm_sync_started";
        readonly tier: "audit";
        readonly direction: null;
        readonly pool: null;
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
    readonly deal_created: {
        readonly type: "deal_created";
        readonly tier: "domain";
        readonly direction: "change";
        readonly pool: "events_change";
        readonly aggregate: "deal";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
    readonly deal_stage_changed: {
        readonly type: "deal_stage_changed";
        readonly tier: "domain";
        readonly direction: "change";
        readonly pool: "events_change";
        readonly aggregate: "deal";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
    readonly stripe_payment_received: {
        readonly type: "stripe_payment_received";
        readonly tier: "domain";
        readonly direction: "inbound";
        readonly pool: "events_inbound";
        readonly source: "stripe";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 5;
            readonly backoff: "exponential";
        };
    };
    readonly webhook_outbound_contact_sync: {
        readonly type: "webhook_outbound_contact_sync";
        readonly tier: "domain";
        readonly direction: "outbound";
        readonly pool: "events_outbound";
        readonly aggregate: "contact";
        readonly destination: "crm";
        readonly version: 1;
        readonly retry: {
            readonly attempts: 3;
            readonly backoff: "exponential";
        };
    };
};
declare function getEventMetadata<T extends EventTypeName>(type: T): EventMetadata;

export { type EventMetadata, eventRegistry, getEventMetadata };
