import { MetadataAlgorithm, ConsumerParameter } from '@oceanprotocol/ddo-js'; import { StorageObject, EncryptMethod } from './File'; export type ComputeResultType = 'algorithmLog' | 'output' | 'configrationLog' | 'publishLog'; export interface RunningPlatform { architecture: string; os: string; } export type ComputeResourceType = 'cpu' | 'ram' | 'disk' | 'gpu'; export interface ComputeResourcesPricingInfo { id: string; price: number; } export interface ComputeEnvFees { feeToken: string; prices: ComputeResourcesPricingInfo[]; } export interface ComputeEnvFeesStructure { [chainId: string]: ComputeEnvFees[]; } export interface ComputeResourceRequest { id: string; amount: number; } export interface ComputeResource { id: string; type?: ComputeResourceType; kind?: string; total?: number; min?: number; max: number; description?: string; init?: { [key: string]: any; }; inUse?: number; } export interface ComputeEnvironmentAccessOptions { addresses?: string[]; accessLists?: any; } export interface ComputeEnvironmentFreeOptions { access?: ComputeEnvironmentAccessOptions; storageExpiry?: number; maxJobDuration?: number; maxJobs?: number; resources?: ComputeResource[]; } export interface ComputeEnvironment { id: string; description?: string; consumerAddress: string; access?: ComputeEnvironmentAccessOptions; storageExpiry?: number; minJobDuration?: number; maxJobDuration?: number; maxJobs?: number; runningJobs: number; runningfreeJobs?: number; queuedJobs?: number; queuedFreeJobs?: number; queMaxWaitTime?: number; queMaxWaitTimeFree?: number; runMaxWaitTime?: number; runMaxWaitTimeFree?: number; fees: ComputeEnvFeesStructure; resources?: ComputeResource[]; free?: ComputeEnvironmentFreeOptions; platform?: RunningPlatform; } export interface ComputeResult { filename: string; filesize: number; type: ComputeResultType; index?: number; } export type ComputeJobMetadata = { [key: string]: string | number | boolean; }; export interface ComputeJob { owner: string; did?: string; jobId: string; dateCreated: string; dateFinished: string; status: number; statusText: string; results: ComputeResult[]; inputDID?: string[]; algoDID?: string; agreementId?: string; expireTimestamp: number; metadata?: ComputeJobMetadata; terminationDetails?: { exitCode?: number; OOMKilled?: boolean; }; } export interface ComputeJobPayment { chainId: number; token: string; lockTx: string | null; claimTx: string | null; cancelTx: string | null; cost: number; } export interface NodeComputeJob extends ComputeJob { environment?: string; stopRequested?: boolean; resources?: ComputeResourceRequest[]; isFree?: boolean; algoStartTimestamp?: string; algoStopTimestamp?: string; payment?: ComputeJobPayment; algoDuration?: number; queueMaxWaitTime?: number; jobIdHash?: string; maxJobDuration?: number; } export interface ComputeOutputEncryption { encryptMethod: EncryptMethod.AES; key: string; } export interface ComputeOutput { remoteStorage?: StorageObject; encryption?: ComputeOutputEncryption; } export interface ComputeAsset { fileObject?: StorageObject; documentId: string; serviceId: string; transferTxId?: string; userdata?: { [key: string]: any; }; } export interface ExtendedMetadataAlgorithm extends MetadataAlgorithm { container: { entrypoint: string; image: string; tag: string; checksum: string; dockerfile?: string; additionalDockerFiles?: { [key: string]: any; }; consumerParameters?: ConsumerParameter[]; }; } export interface ComputeAlgorithm { fileObject?: StorageObject; documentId?: string; serviceId?: string; meta?: ExtendedMetadataAlgorithm; transferTxId?: string; algocustomdata?: { [key: string]: any; }; userdata?: { [key: string]: any; }; envs?: { [key: string]: string; }; } export interface ComputePayment { chainId: number; token: string; maxJobDuration: number; } export interface ValidationResponse { isValid: boolean; message: string; } export interface dockerRegistryAuth { username?: string; password?: string; auth?: string; } export type ComputeResultStream = AsyncIterable;