import { type CodaliStorageObjectPrivacyFlags, type CodaliStorageObjectRef, type CodaliStorageObjectRetentionClass, type CodaliStoragePrivacyClassification, type CodaliStoragePrivacyMetadata } from "./CodaliStorageContracts.js"; export type CodaliDatasetPrivacyPurpose = "training" | "export" | "eval" | "replay" | "durable_persistence"; export type CodaliDatasetSecretFindingKind = "sensitive_key" | "bearer_token" | "openai_api_key" | "cloud_access_key" | "github_token" | "jwt" | "private_key" | "env_secret_assignment" | "connector_api_key"; export type CodaliDatasetEligibilityBlockerCode = "secrets_detected" | "privacy_training_not_allowed" | "privacy_export_not_allowed" | "object_training_not_allowed" | "object_export_not_allowed" | "object_eval_not_allowed" | "object_replay_not_allowed" | "retention_do_not_store" | "redaction_required" | "policy_override_requires_admin_audit" | "policy_override_not_requested" | "policy_override_hard_blocked"; export interface CodaliDatasetSecretFinding { kind: CodaliDatasetSecretFindingKind; path: string; redacted: boolean; } export interface CodaliDatasetSecretDetectionResult { containsSecrets: boolean; findings: CodaliDatasetSecretFinding[]; redactedPayload: TPayload; } export interface CodaliDatasetTenantScope { tenantId: string; tenantSalt: string; } export interface CodaliDatasetIdentifierInput { tenantId: string; requesterId?: string; conversationId?: string; repoId?: string; sourceId?: string; reviewerId?: string; deletionGroupId?: string; } export interface CodaliDatasetHashedIdentifiers { tenantHash: string; requesterHash?: string; conversationHash?: string; repoHash?: string; sourceHash?: string; reviewerHash?: string; deletionGroupHash?: string; } export interface CodaliDatasetPrivacyAllowances { uploadAllowed?: boolean; trainingAllowed?: boolean; evalAllowed?: boolean; replayAllowed?: boolean; exportAllowed?: boolean; } export interface CodaliDatasetPrivacyMetadataInput { tenant: CodaliDatasetTenantScope; identifiers: Omit; inputPayload?: unknown; outputPayload?: unknown; evidencePayloads?: unknown[]; classification?: CodaliStoragePrivacyClassification; containsPersonalData?: boolean; containsTenantPrivateData?: boolean; containsSourceCode?: boolean; containsCustomerData?: boolean; personalDataRedacted?: boolean; allowances?: CodaliDatasetPrivacyAllowances; retentionClass?: CodaliStorageObjectRetentionClass; policyTags?: string[]; retentionUntil?: string; metadata?: Record; now?: string; } export interface CodaliDatasetPrivacyEnvelope { privacy: CodaliStoragePrivacyMetadata; privacyFlags: CodaliStorageObjectPrivacyFlags; hashedIdentifiers: CodaliDatasetHashedIdentifiers; redactedPayloads: { inputPayload?: unknown; outputPayload?: unknown; evidencePayloads?: unknown[]; }; secretFindings: CodaliDatasetSecretFinding[]; eligibility: { trainingAllowed: boolean; evalAllowed: boolean; replayAllowed: boolean; exportAllowed: boolean; durablePersistenceAllowed: boolean; blockers: CodaliDatasetEligibilityBlocker[]; }; } export interface CodaliDatasetEligibilityBlocker { code: CodaliDatasetEligibilityBlockerCode; message: string; path?: string; } export interface CodaliDatasetEligibilityDecision { purpose: CodaliDatasetPrivacyPurpose; allowed: boolean; blockers: CodaliDatasetEligibilityBlocker[]; auditEvents?: CodaliDatasetPolicyAuditEvent[]; } export interface CodaliDatasetPolicyOverride { purpose: CodaliDatasetPrivacyPurpose; allow: boolean; adminActorId?: string; auditEventId?: string; reason?: string; approvedAt?: string; } export interface CodaliDatasetPolicyAuditEvent { auditEventId: string; adminActorId: string; purpose: CodaliDatasetPrivacyPurpose; reason: string; approvedAt: string; originalBlockers: CodaliDatasetEligibilityBlockerCode[]; } export interface CodaliDatasetPayloadReadInput { purpose: Exclude; objectRef: CodaliStorageObjectRef; privacy: CodaliStoragePrivacyMetadata; policyOverride?: CodaliDatasetPolicyOverride; readPayload: (objectRef: CodaliStorageObjectRef) => Promise | TPayload; } export type CodaliDatasetPayloadReadResult = { ok: true; decision: CodaliDatasetEligibilityDecision; payload: TPayload; } | { ok: false; decision: CodaliDatasetEligibilityDecision; }; export declare class CodaliDatasetPrivacyError extends Error { readonly decision: CodaliDatasetEligibilityDecision; constructor(decision: CodaliDatasetEligibilityDecision); } export declare const detectAndRedactCodaliDatasetSecrets: (payload: TPayload) => CodaliDatasetSecretDetectionResult; export declare const hashCodaliDatasetIdentifier: (tenant: CodaliDatasetTenantScope, scope: keyof CodaliDatasetHashedIdentifiers, value: string) => string; export declare const hashCodaliDatasetIdentifiers: (tenant: CodaliDatasetTenantScope, identifiers: Omit) => CodaliDatasetHashedIdentifiers; export declare const evaluateCodaliDatasetDurablePersistence: (retentionClass: CodaliStorageObjectRetentionClass) => CodaliDatasetEligibilityDecision; export declare const evaluateCodaliDatasetObjectPayloadRead: (purpose: Exclude, objectRef: CodaliStorageObjectRef, privacy: CodaliStoragePrivacyMetadata) => CodaliDatasetEligibilityDecision; export declare const applyCodaliDatasetPolicyOverride: (decision: CodaliDatasetEligibilityDecision, override?: CodaliDatasetPolicyOverride) => CodaliDatasetEligibilityDecision; export declare const assertCodaliDatasetObjectPayloadReadAllowed: (purpose: Exclude, objectRef: CodaliStorageObjectRef, privacy: CodaliStoragePrivacyMetadata) => void; export declare const assertCodaliDatasetDurablePersistenceAllowed: (retentionClass: CodaliStorageObjectRetentionClass) => void; export declare const readCodaliDatasetObjectPayload: (input: CodaliDatasetPayloadReadInput) => Promise>; export declare const generateCodaliDatasetPrivacyMetadata: (input: CodaliDatasetPrivacyMetadataInput) => CodaliDatasetPrivacyEnvelope; //# sourceMappingURL=CodaliDatasetPrivacyEngine.d.ts.map