/**
 * ERP Sustainability Adapters — infrastructure layer for multi-ERP integration.
 *
 * Implements the Anti-Corruption Layer pattern for 10 enterprise ERP systems.
 * Each adapter translates between the ERP's native wire format and the
 * internal domain model (MaterialSustainability, SupplierCompliance, etc.).
 *
 * Supported ERP systems:
 *   1. SAP S/4HANA      — OData + BAPI (MARA, EKPO, LIPS, QMEL, AFKO, CHVW, LFA1)
 *   2. Oracle ERP Cloud  — REST (Fusion Procurement, Quality)
 *   3. Oracle NetSuite   — SuiteQL + SuiteTalk REST (Items, Vendors, QA)
 *   4. Microsoft Dynamics — Dataverse OData (Products, Vendors, Quality Orders)
 *   5. Infor CloudSuite  — ION API + Data Lake (Items, Suppliers, QC)
 *   6. Epicor Kinetic     — REST v2 (Parts, Suppliers, Inspections)
 *   7. Sage X3           — REST (Products, BPs, Quality)
 *   8. IFS Cloud         — OData (InventoryParts, Suppliers, QualityPlans)
 *   9. Workday           — SOAP/REST (Spend, Suppliers, PRISM Analytics)
 *  10. PeopleSoft        — Component Interface (Items, Vendors, Quality)
 *
 * Domain model is ERP-agnostic — only the wire-format mappers change.
 */
export interface MaterialSustainability {
    readonly materialNumber: string;
    readonly recycledPercent: number;
    readonly organicCertified: boolean;
    readonly sustainabilityCertification: string | null;
}
export interface SupplierCompliance {
    readonly vendorId: string;
    readonly sustainabilityTier: 'gold' | 'silver' | 'bronze' | 'uncertified';
    readonly lastAuditDate: string;
    readonly complianceStatus: 'compliant' | 'conditional' | 'non-compliant';
}
export interface DyeComplianceResult {
    readonly notificationId: string;
    readonly dyeCompliance: boolean;
    readonly reachStatus: 'passed' | 'failed' | 'pending';
    readonly oekoTexClass: string | null;
    readonly testResults: readonly LabTestResult[];
}
export interface LabTestResult {
    readonly chemicalId: string;
    readonly result: number;
    readonly thresholdPassed: boolean;
}
export interface BatchTraceability {
    readonly batchId: string;
    readonly materialNumber: string;
    readonly dyeLot: string;
    readonly originCountry: string;
    readonly fiberBlend: string;
    readonly carbonKg: number;
    readonly waterLiters: number;
    readonly energyKwh: number;
}
/** Loosely-typed record from any ERP. Each ERP adapter knows its own keys. */
export interface ERPWireRecord {
    [key: string]: unknown;
}
export interface ERPSustainabilityAdapter {
    readonly erpId: string;
    readonly displayName: string;
    mapMaterial(record: ERPWireRecord): MaterialSustainability;
    mapVendor(record: ERPWireRecord): SupplierCompliance;
    mapQuality(record: ERPWireRecord): DyeComplianceResult;
    mapBatch(record: ERPWireRecord): BatchTraceability;
}
/**
 * Get the sustainability adapter for a given ERP system.
 * Returns undefined if the ERP is not in the registry.
 */
export declare function getERPAdapter(erpId: string): ERPSustainabilityAdapter | undefined;
/**
 * List all registered ERP adapters.
 */
export declare function listERPAdapters(): readonly ERPSustainabilityAdapter[];
/**
 * Get all registered ERP IDs.
 */
export declare function listERPAdapterIds(): readonly string[];
export declare function mapSAPMaterialToDomain(record: ERPWireRecord): MaterialSustainability;
export declare function mapDomainMaterialToSAP(domain: MaterialSustainability): ERPWireRecord;
export declare function mapSAPVendorToDomain(record: ERPWireRecord): SupplierCompliance;
export declare function mapSAPQualityToDomain(record: ERPWireRecord): DyeComplianceResult;
export declare function mapSAPBatchToDomain(record: ERPWireRecord): BatchTraceability;
/** Minimum recycled content percentage to qualify as "recycled material" */
export declare const THRESHOLD_RECYCLED_PCT = 5;
/** Minimum organic content percentage to qualify as "organic material" */
export declare const THRESHOLD_ORGANIC_PCT = 2;
/** Maximum restricted dye substance percentage (REACH compliance) */
export declare const THRESHOLD_DYE_PCT = 10;
export declare function meetsRecycledThreshold(pct: number): boolean;
export declare function meetsOrganicThreshold(pct: number): boolean;
export declare function meetsDyeThreshold(pct: number): boolean;
//# sourceMappingURL=sap-adapter.d.ts.map