import type {
  AuthUser,
  BaseModelCatalogItem,
  CatalogProvider,
  ClientCustomizationSettings,
  FileStorageChannel,
  FileStorageSettings,
  GatewayAccessRule,
  GatewayApiKey,
  GatewayAuditLog,
  GatewayNetworkProxyConfig,
  GatewayRunnerPolicy,
  GatewayTask,
  GatewayTenant,
  GatewayUser,
  GatewayWalletAccount,
  GatewayWalletTransaction,
  IntegrationPlatform,
  ModelCatalogResponse,
  ModelRateLimitStatus,
  PlatformModel,
  PricingRule,
  PricingRuleSet,
  RateLimitWindow,
  RuntimePolicySet,
  SecurityEventConnectionResponse,
  UserGroup,
} from '@easyai-ai-gateway/contracts';

export interface ConsoleData {
  accessRules: GatewayAccessRule[];
  auditLogs: GatewayAuditLog[];
  apiKeys: GatewayApiKey[];
  baseModels: BaseModelCatalogItem[];
  currentUser: AuthUser | null;
  currentUserGroups: UserGroup[];
  clientCustomizationSettings: ClientCustomizationSettings | null;
  fileStorageChannels: FileStorageChannel[];
  fileStorageSettings: FileStorageSettings | null;
  modelCatalog: ModelCatalogResponse;
  models: PlatformModel[];
  networkProxyConfig: GatewayNetworkProxyConfig | null;
  runnerPolicy: GatewayRunnerPolicy | null;
  platforms: IntegrationPlatform[];
  pricingRules: PricingRule[];
  pricingRuleSets: PricingRuleSet[];
  providers: CatalogProvider[];
  rateLimitWindows: RateLimitWindow[];
  modelRateLimits: ModelRateLimitStatus[];
  modelRateLimitsUpdatedAt: number | null;
  runtimePolicySets: RuntimePolicySet[];
  securityEventConnection: SecurityEventConnectionResponse | null;
  taskResult: GatewayTask | null;
  tasks: GatewayTask[];
  tenants: GatewayTenant[];
  userGroups: UserGroup[];
  users: GatewayUser[];
  walletAccounts: GatewayWalletAccount[];
  walletTransactions: GatewayWalletTransaction[];
}

export interface StatItem {
  label: string;
  value: number | string;
  tone: 'blue' | 'green' | 'violet' | 'amber' | 'cyan' | 'rose' | 'slate';
}
