/**
 * Company-Pack Builder — assembles a CompliancePackWithClassifiers from a list of
 * declarative capability-class rules.
 *
 * Customer-facing surface: a company pack is just a list of rules of the form
 *   { capability: 'capability:mcp', action: 'BLOCK' }
 * which compile into the lower-level pack/categoryActions/categoryClassifiers
 * shapes the PackEvaluator already understands.
 *
 * Publish-time licensing validation (PR-A, 2026-05-21):
 *   buildCompanyPack() accepts an optional `{ licensedPacks }` options object.
 *   When provided, each rule is checked against the capability catalog. Rules
 *   referencing vertical-pack capabilities that the org has NOT licensed throw
 *   UnlicensedCapabilityError with a structured context the route maps to 422.
 *   Capabilities not in the catalog are allowed with a console.warn (graceful
 *   degrade per Invariant 2 — our own infra failure must not block legit packs).
 *
 * @connexum/ai-governance  F-NEW-PRODUCT-CAPABILITY-CLASS-RULES + F-NEW-PRODUCT-COMPANY-PACK-CLASS
 */
import type { CompliancePackWithClassifiers, GovernanceAction } from '../classification/pack-driven-classifier.js';
import { type CapabilityClassId } from './capability-classes.js';
export interface CapabilityRule {
    capability: CapabilityClassId;
    action: GovernanceAction;
    /** Optional human-readable note for the audit log. */
    note?: string;
}
export interface CompanyPackInput {
    id: string;
    name: string;
    orgId: string;
    rules: CapabilityRule[];
    version?: string;
    description?: string;
    /**
     * F-NEW-PRODUCT-INFO-ACTION-SEPARATION — declares whether this company pack
     * activates info/action separation enforcement on bound agents.
     *   'none'         — no isolation (default)
     *   'sourced-only' — block consequential actions that act on data sourced
     *                    in the same cycle (recommended default for strict packs)
     *   'strict'       — any info-gathering in the cycle blocks ALL same-cycle
     *                    consequential actions
     */
    isolation?: 'none' | 'sourced-only' | 'strict';
}
export interface BuildCompanyPackOptions {
    /**
     * Pack IDs that the organisation has licensed.
     * When provided, any rule referencing a vertical-pack capability NOT in this
     * list causes buildCompanyPack to throw UnlicensedCapabilityError.
     *
     * Omitting this field (or passing []) disables vertical-capability gating
     * (backwards-compatible — existing callers that don't supply it are unaffected).
     * Callers SHOULD always supply it in production code paths.
     */
    licensedPacks?: string[];
}
/**
 * Build a CompliancePackWithClassifiers from a list of capability rules.
 *
 * The resulting pack is marked `authority: 'org-custom'` so it can be filtered
 * out of regulatory reporting, but it flows through the same evaluator path as
 * regulatory packs and produces the same ALLOW / DENY / PENDING verdicts.
 *
 * @throws UnlicensedCapabilityError when a rule references a vertical-pack
 *   capability the org has not licensed and `options.licensedPacks` is provided.
 */
export declare function buildCompanyPack(input: CompanyPackInput, options?: BuildCompanyPackOptions): CompliancePackWithClassifiers;
//# sourceMappingURL=company-pack-builder.d.ts.map