export interface BusinessData {
    id: string;
    title: string;
    data: any;
    metadata?: Record<string, any>;
}
export interface BusinessSummary {
    title: string;
    description?: string;
    amount?: number;
    customFields?: Record<string, any>;
}
export interface DataChanges {
    [field: string]: {
        old: any;
        new: any;
    };
}
export type ApprovalResult = 'APPROVED' | 'REJECTED' | 'WITHDRAWN' | 'CANCELLED';
export interface BusinessTypeMetadata {
    type: string;
    displayName: string;
    icon: string;
    color: string;
    getBusinessData: (businessId: string) => Promise<BusinessData>;
    getBusinessSummary: (businessId: string) => Promise<BusinessSummary>;
    syncDataChanges?: (businessId: string, changes: DataChanges, operatorId: string) => Promise<void>;
    onApprovalComplete?: (businessId: string, result: ApprovalResult, comment?: string) => Promise<void>;
    detailRoute: (businessId: string, instanceId: string) => string;
    listFields?: string[];
}
export declare class BusinessTypeRegistry {
    private readonly logger;
    private readonly registry;
    register(metadata: BusinessTypeMetadata): void;
    getMetadata(type: string): BusinessTypeMetadata | undefined;
    getAllTypes(): string[];
    getAllMetadata(): BusinessTypeMetadata[];
    getBatchSummaries(items: Array<{
        businessType: string;
        businessId: string;
    }>): Promise<Array<{
        businessType: string;
        businessId: string;
        summary: BusinessSummary | null;
        metadata: Pick<BusinessTypeMetadata, 'displayName' | 'icon' | 'color'> | null;
        error?: string;
    }>>;
    getBusinessData(businessType: string, businessId: string): Promise<BusinessData | null>;
    getDetailRoute(businessType: string, businessId: string, instanceId: string): string | null;
    syncDataChanges(businessType: string, businessId: string, changes: DataChanges, operatorId: string): Promise<void>;
    notifyApprovalComplete(businessType: string, businessId: string, result: ApprovalResult, comment?: string): Promise<void>;
    getBusinessDataForCondition(businessType: string, businessId: string): Promise<Record<string, any>>;
}
