/**
 * PartnerManager: Channel partner infrastructure for My Compliance Center.
 *
 * Manages the partner hierarchy: Connexum > Partner Orgs > Client Orgs.
 * Partners (compliance consultancies, health IT integrators) onboard their
 * clients, tune policies, and monitor governance posture across all sub-orgs.
 *
 * This is the #1 build priority per Thomas: channel partners are the bridge
 * to CISOs that direct sales cannot reach at seed stage.
 *
 * @module governance/partner-manager
 */
export interface PartnerManagerConfig {
    /** Maximum client orgs per partner */
    maxClientsPerPartner: number;
    /** Default commission rate (0.0-1.0) */
    defaultCommissionRate: number;
    /** Enable partner-level aggregate reporting */
    aggregateReporting: boolean;
}
export interface PartnerOrg {
    id: string;
    name: string;
    /** Contact email for the partner */
    contactEmail: string;
    /** Partner type */
    type: PartnerType;
    /** Commission rate for referrals (0.0-1.0) */
    commissionRate: number;
    /** Custom branding for client-facing reports */
    branding: PartnerBranding;
    /** IDs of client orgs managed by this partner */
    clientOrgIds: string[];
    /** Partner status */
    status: PartnerStatus;
    /** Onboarding templates this partner has configured */
    templates: OnboardingTemplate[];
    /** When the partner was registered */
    createdAt: string;
    /** Last activity */
    lastActiveAt: string;
}
export type PartnerType = 'compliance_consultancy' | 'health_it_integrator' | 'reseller' | 'technology_partner';
export type PartnerStatus = 'pending' | 'active' | 'suspended' | 'churned';
export interface PartnerBranding {
    logoUrl?: string;
    primaryColor?: string;
    accentColor?: string;
    companyName: string;
    reportFooter?: string;
    hidePoweredBy: boolean;
}
export interface OnboardingTemplate {
    id: string;
    name: string;
    /** Target vertical */
    vertical: string;
    /** Compliance packs to activate */
    packs: string[];
    /** Default policy rules */
    defaultPolicies: PolicyTemplate[];
    /** Description shown to partner when selecting template */
    description: string;
}
export interface PolicyTemplate {
    tool: string;
    action: 'ALLOW' | 'DENY' | 'REQUIRE_APPROVAL' | 'SHADOW';
    reason: string;
}
export interface ClientOrg {
    id: string;
    /** The partner that manages this client */
    partnerOrgId: string;
    name: string;
    contactEmail: string;
    /** Vertical this client operates in */
    vertical: string;
    /** Active compliance packs */
    activePacks: string[];
    /** Client status */
    status: 'onboarding' | 'active' | 'suspended' | 'churned';
    /** When the client was provisioned */
    createdAt: string;
}
export interface CommissionRecord {
    id: string;
    partnerOrgId: string;
    clientOrgId: string;
    /** Monthly revenue from this client */
    monthlyRevenue: number;
    /** Commission amount */
    commissionAmount: number;
    /** Period this commission covers */
    period: string;
    /** When the commission was recorded */
    createdAt: string;
}
export interface PartnerDashboardData {
    partner: PartnerOrg;
    clientCount: number;
    activeClientCount: number;
    /** Aggregate governance metrics across all clients */
    metrics: {
        totalAgents: number;
        totalEvents: number;
        totalBlocked: number;
        averageComplianceScore: number;
        falsePositiveRate: number;
    };
    /** Recent commissions */
    recentCommissions: CommissionRecord[];
    /** Clients needing attention (high false positive rate or low compliance) */
    clientsNeedingAttention: string[];
}
export declare class PartnerManager {
    private config;
    private partners;
    private clients;
    private commissions;
    constructor(config?: Partial<PartnerManagerConfig>);
    /**
     * Register a new channel partner.
     */
    registerPartner(input: {
        name: string;
        contactEmail: string;
        type: PartnerType;
        commissionRate?: number;
        branding?: Partial<PartnerBranding>;
    }): PartnerOrg;
    /**
     * Provision a new client organization under a partner.
     */
    provisionClient(partnerOrgId: string, input: {
        name: string;
        contactEmail: string;
        vertical: string;
        templateId?: string;
    }): ClientOrg;
    /**
     * Activate a client org (move from onboarding to active).
     */
    activateClient(clientOrgId: string): ClientOrg;
    /**
     * Add an onboarding template to a partner.
     */
    addTemplate(partnerOrgId: string, template: Omit<OnboardingTemplate, 'id'>): OnboardingTemplate;
    /**
     * Record a commission for a partner.
     */
    recordCommission(partnerOrgId: string, clientOrgId: string, monthlyRevenue: number, period: string): CommissionRecord;
    /**
     * Get aggregate dashboard data for a partner.
     */
    getPartnerDashboard(partnerOrgId: string): PartnerDashboardData;
    /**
     * Update partner branding.
     */
    updateBranding(partnerOrgId: string, branding: Partial<PartnerBranding>): PartnerOrg;
    /**
     * Get a partner by ID.
     */
    getPartner(partnerOrgId: string): PartnerOrg | undefined;
    /**
     * Get a client by ID.
     */
    getClient(clientOrgId: string): ClientOrg | undefined;
    /**
     * Get all clients for a partner.
     */
    getPartnerClients(partnerOrgId: string): ClientOrg[];
    /**
     * Get all commissions for a partner.
     */
    getCommissions(partnerOrgId: string): CommissionRecord[];
    /**
     * List all partners.
     */
    listPartners(): PartnerOrg[];
    /**
     * Suspend a partner.
     */
    suspendPartner(partnerOrgId: string): PartnerOrg;
}
//# sourceMappingURL=partner-manager.d.ts.map