export interface IObjectStorageConfig {
  objstPort: number;
  uiPort: number;
  storageDirectory: string;
  accessCredentials: Array<{ accessKeyId: string; secretAccessKey: string }>;
  adminPassword: string;
  region: string;
  // 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 const defaultConfig: IObjectStorageConfig = {
  objstPort: 9000,
  uiPort: 3000,
  storageDirectory: '/data',
  accessCredentials: [{ accessKeyId: 'admin', secretAccessKey: 'admin' }],
  adminPassword: 'admin',
  region: 'us-east-1',
  clusterEnabled: false,
  clusterNodeId: '',
  clusterQuicPort: 4433,
  clusterSeedNodes: [],
  erasureDataShards: 4,
  erasureParityShards: 2,
  erasureChunkSizeBytes: 4194304,
  drivePaths: [],
  clusterHeartbeatIntervalMs: 5000,
  clusterHeartbeatTimeoutMs: 30000,
};
