/** * Evidence model * * Represents a compliance evidence record optionally backed by a file. * Evidence can be created with a file upload, with data fields only, or both. */ import type { EvidenceResponse } from "@artu-ai/shared"; import { EvidenceStatus } from "@artu-ai/shared"; import { BaseModel } from "./base"; /** * Evidence data as returned by the API. */ export type EvidenceData = EvidenceResponse; /** * Evidence model - represents a compliance evidence record. * * @example * ```typescript * const evidence = await sdk.evidence.retrieve("ev_123"); * * console.log(evidence.status); // "uploaded" * console.log(evidence.filename); // "contrato.pdf" * console.log(evidence.formattedSize); // "1.2 MB" * console.log(evidence.isAvailable); // true * ``` */ export declare class Evidence extends BaseModel { /** * Unique identifier for this evidence record */ get id(): string; /** * Scope for this evidence (MX, US) */ get scope(): "MX" | "US"; /** * Evidence type (scope-specific) */ get type(): string; /** * Evidence category */ get category(): string; /** * Lifecycle status */ get status(): EvidenceStatus; /** * Whether a file is attached to this evidence */ get hasFile(): boolean; /** * Original filename (undefined if no file attached) */ get filename(): string | undefined; /** * MIME content type (undefined if no file attached) */ get contentType(): string | undefined; /** * File size in bytes (undefined if no file attached) */ get size(): number | undefined; /** * Human-readable file size (e.g., "1.2 MB"). * Returns undefined if no file attached. */ get formattedSize(): string | undefined; /** * File extension derived from filename. * Returns empty string if no file or no extension. */ get extension(): string; /** * Whether the evidence is available (uploaded or verified) */ get isAvailable(): boolean; /** * Whether the evidence is pending a file upload */ get isPendingUpload(): boolean; /** * Whether the evidence has no file (data-only) */ get isNoFile(): boolean; /** * Whether the evidence has been submitted for review */ get isPendingReview(): boolean; /** * Whether the evidence has been verified */ get isVerified(): boolean; /** * Whether the evidence was rejected */ get isRejected(): boolean; /** * Evidence expiration date, if set */ get expiresAt(): Date | undefined; /** * Days until evidence expires (negative if already expired). * Returns undefined if no expiration is set. */ get daysUntilExpiry(): number | undefined; /** * Reason the evidence was rejected, if any */ get rejectionReason(): string | undefined; /** * Timestamp when the evidence was reviewed (verified or rejected) */ get reviewedAt(): Date | undefined; /** * Opaque ID of the user who reviewed the evidence */ get reviewedBy(): string | undefined; /** * Timestamp when the evidence was verified */ get verifiedAt(): Date | undefined; /** * Opaque ID of the user who verified the evidence */ get verifiedBy(): string | undefined; /** * Evidence-specific fields (extracted or provided data) */ get fields(): Record | undefined; /** * Get a specific field value */ getField(key: string): T | undefined; /** * External ID for idempotent operations */ get externalId(): string | undefined; /** * Custom metadata attached to the evidence */ get metadata(): Record | undefined; /** * Get a specific metadata value */ getMetadata(key: string): T | undefined; /** * When the evidence record was created */ get createdAt(): Date; /** * When the evidence record was last updated */ get updatedAt(): Date; /** * Whether this is Mexico evidence */ get isMexico(): boolean; } /** * Type guard for Evidence model */ export declare function isEvidence(value: unknown): value is Evidence;