export interface IServerStatus {
  running: boolean;
  objstPort: number;
  uiPort: number;
  uptime: number;
  startedAt: number;
  bucketCount: number;
  totalObjectCount: number;
  totalStorageBytes: number;
  storageDirectory: string;
  region: string;
  authEnabled: boolean;
}

export interface IServerConfig {
  objstPort: number;
  uiPort: number;
  region: string;
  storageDirectory: string;
  authEnabled: boolean;
  corsEnabled: boolean;
  // Cluster
  clusterEnabled: boolean;
  clusterNodeId: string;
  clusterQuicPort: number;
  clusterSeedNodes: string[];
  // Erasure coding
  erasureDataShards: number;
  erasureParityShards: number;
  erasureChunkSizeBytes: number;
  // Multi-drive
  drivePaths: string[];
  // Cluster heartbeat
  clusterHeartbeatIntervalMs: number;
  clusterHeartbeatTimeoutMs: number;
}

export interface IObjstCredential {
  accessKeyId: string;
  secretAccessKey: string;
}

export interface IConnectionInfo {
  endpoint: string;
  port: number;
  useSsl: boolean;
  accessKey: string;
  region: string;
}
