/**
 * INTENT GATEWAY Types
 * @packageDocumentation
 */
import type { TenantContext } from "../common/tenant-context.js";
import type { ID, TrustLevel } from "../common/types.js";
import type { Intent } from "../common/types.js";
import type { SubmitOptions } from "../intent/types.js";
export declare const JURISDICTIONS: readonly ["GLOBAL", "EU", "US", "US-FED", "US-DOD", "UK", "CA", "AU", "JP", "KR", "SG", "CH", "CN", "IN", "BR", "IL", "AE", "SA"];
export type Jurisdiction = (typeof JURISDICTIONS)[number];
export declare const INDUSTRIES: readonly ["general", "healthcare", "finance", "defense", "government", "education", "energy", "telecom", "automotive", "pharma"];
export type Industry = (typeof INDUSTRIES)[number];
export declare const CRYPTO_SUITES: readonly ["standard", "fips-140-2", "sm-national", "post-quantum", "cnsa-2.0"];
export type CryptoSuite = (typeof CRYPTO_SUITES)[number];
export declare const PROOF_ANCHORING_METHODS: readonly ["database", "merkle-tree", "blockchain-l2", "tsa-rfc3161", "hardware-hsm"];
export type ProofAnchoringMethod = (typeof PROOF_ANCHORING_METHODS)[number];
export declare const CONSENT_MODELS: readonly ["implicit", "opt-out", "opt-in", "explicit-granular", "dual-consent"];
export type ConsentModel = (typeof CONSENT_MODELS)[number];
export declare const ESCALATION_MODES: readonly ["log-only", "flag-review", "block-escalate", "hard-block"];
export type EscalationMode = (typeof ESCALATION_MODES)[number];
export declare const AI_ACT_CLASSIFICATIONS: readonly ["unacceptable", "high-risk", "gpai", "limited-risk", "minimal-risk"];
export type AiActClassification = (typeof AI_ACT_CLASSIFICATIONS)[number];
export declare const AI_ACT_HIGH_RISK_CATEGORIES: readonly ["biometric-identification", "critical-infrastructure", "education-vocational", "employment-worker-management", "essential-services", "law-enforcement", "migration-asylum-border", "justice-democratic"];
export type AiActHighRiskCategory = (typeof AI_ACT_HIGH_RISK_CATEGORIES)[number];
export type JurisdictionSource = "tenant-config" | "metadata-inference" | "default";
export interface JurisdictionContext {
    primaryJurisdictions: Jurisdiction[];
    industry: Industry;
    dataResidency: string;
    crossBorderTransfer: boolean;
    source: JurisdictionSource;
}
export interface GovernanceRegime {
    regimeId: string;
    name: string;
    jurisdictions: Jurisdiction[];
    policyNamespaces: string[];
    cryptoSuite: CryptoSuite;
    proofAnchoring: ProofAnchoringMethod;
    auditRetentionDays: number;
    consentModel: ConsentModel;
    escalationMode: EscalationMode;
    dataResidency: string;
    externalServicesAllowed: boolean;
    minimumTrustLevel: TrustLevel;
    aiActClassification?: AiActClassification;
    aiActHighRiskCategory?: AiActHighRiskCategory;
    conformityAssessmentRequired: boolean;
    transparencyRequired: boolean;
    fedrampImpactLevel?: "low" | "moderate" | "high";
    metadata: Record<string, unknown>;
}
export type PolicyConstraintType = "retention" | "crypto" | "consent" | "escalation" | "data-residency" | "trust-level" | "external-services" | "proof-anchoring" | "access-control" | "processing-restriction" | "audit-requirement" | "security-clearance";
export type EnforcementLevel = "advisory" | "required" | "mandatory" | "blocking";
export interface PolicyConstraint {
    id: string;
    type: PolicyConstraintType;
    rule: string;
    enforcement: EnforcementLevel;
    sourceBundleId: string;
    sourceJurisdiction: Jurisdiction;
    value: unknown;
}
export type ConflictSeverity = "low" | "medium" | "high" | "critical";
export interface PolicyConflict {
    constraintType: PolicyConstraintType;
    constraints: PolicyConstraint[];
    description: string;
    severity: ConflictSeverity;
}
export interface ComposedPolicySet {
    constraints: PolicyConstraint[];
    sourceBundles: string[];
    resolvedConflicts: PolicyConflict[];
    unresolvedConflicts: PolicyConflict[];
    isValid: boolean;
    composedAt: number;
}
export interface GatewayDispatchResult {
    intent: Intent;
    regime: GovernanceRegime;
    jurisdictionContext: JurisdictionContext;
    policySet: ComposedPolicySet;
    warnings: string[];
}
export interface TenantJurisdictionConfig {
    jurisdictions: Jurisdiction[];
    industry: Industry;
    dataResidency?: string;
    customPolicyBundles?: string[];
    regimeOverrides?: Partial<Pick<GovernanceRegime, "cryptoSuite" | "proofAnchoring" | "consentModel" | "escalationMode" | "minimumTrustLevel">>;
}
export interface IntentGatewayConfig {
    enabled: boolean;
    defaultJurisdiction: Jurisdiction;
    defaultIndustry: Industry;
    regimeCacheTtlMs: number;
    blockOnConflicts: boolean;
    logRegimeDecisions: boolean;
}
export declare const DEFAULT_GATEWAY_CONFIG: IntentGatewayConfig;
export type { ID, TrustLevel, Intent, TenantContext, SubmitOptions };
//# sourceMappingURL=types.d.ts.map