/** * OCI Distribution Specification specific interfaces */ /** * OCI manifest structure */ export interface IOciManifest { schemaVersion: number; mediaType: string; config: { mediaType: string; size: number; digest: string; }; layers: Array<{ mediaType: string; size: number; digest: string; urls?: string[]; }>; subject?: { mediaType: string; size: number; digest: string; }; annotations?: { [key: string]: string }; } /** * OCI Image Index (manifest list) */ export interface IOciImageIndex { schemaVersion: number; mediaType: string; manifests: Array<{ mediaType: string; size: number; digest: string; platform?: { architecture: string; os: string; 'os.version'?: string; 'os.features'?: string[]; variant?: string; features?: string[]; }; annotations?: { [key: string]: string }; }>; subject?: { mediaType: string; size: number; digest: string; }; annotations?: { [key: string]: string }; } /** * Upload session for chunked blob uploads */ export interface IUploadSession { uploadId: string; repository: string; chunks: Buffer[]; totalSize: number; createdAt: Date; lastActivity: Date; } /** * Tag list response */ export interface ITagList { name: string; tags: string[]; } /** * Referrers response */ export interface IReferrersResponse { schemaVersion: number; mediaType: string; manifests: Array<{ mediaType: string; size: number; digest: string; artifactType?: string; annotations?: { [key: string]: string }; }>; } /** * Pagination options for listing */ export interface IPaginationOptions { /** Maximum number of results to return */ n?: number; /** Last entry from previous request */ last?: string; }