/**
 * Copyright IBM Corp. 2024, 2025
 */

import { OpenAPIV3 } from 'openapi-types';
import { OpenAPISecurityRequirement } from '../../api-authoring/interfaces/api-spec-handler.interface.js';
import { OperationsMetadata } from '../../lfs/models/asset-metadata.model.js';

export interface FormViewTableData {
  id: string;
  [column: string]: React.ReactNode | string | boolean;
}

export interface FormViewTableDataWithOperations {
  id: string;
  name: string;
  version: string;
  operations: string;
  operationsList?: OperationsMetadata[];
}
export interface OverrideQuotaList {
  id: string;
  name: string;
  version: string;
  operation: string;
  rateLimitCount: string;
  operationsList: OperationsMetadata[];
}

export interface OverrideUpdateData {
  name: string;
  version: string;
  operation: string;
  selectedQuotaOption: string;
  withQuota: { [key: string]: any };
}

export interface SecurityRequirementsTableProps {
  data: FormViewTableData[];
  tableTitle: string;
  headers: { key: string; header: string }[];
  emptyStateTitle: string;
  emptyStateContent: string;
  buttonLabel: string;
  onAddButtonClick: () => void;
  handleRowDelete: (row: FormViewTableData) => void;
  security: OpenAPIV3.SecurityRequirementObject[];
  handleUpdate: (
    prevSecuityName: string,
    security: OpenAPISecurityRequirement,
  ) => void;
}
