// Capability Registry - Type Definitions

import {
  Capability,
  CapabilityBinding,
  CapabilityDependency,
  CreateCapabilityRequest,
  UpdateCapabilityRequest,
} from '@/shared/solacenet/types';

export interface CapabilityRegistryService {
  getAllCapabilities(): Promise<Capability[]>;
  getCapabilityById(capabilityId: string): Promise<Capability | null>;
  getCapabilityDependencies(capabilityId: string): Promise<CapabilityDependency[]>;
  createCapability(request: CreateCapabilityRequest): Promise<Capability>;
  updateCapability(capabilityId: string, request: UpdateCapabilityRequest): Promise<Capability>;
  deleteCapability(capabilityId: string): Promise<void>;
  validateDependencies(capabilityId: string, dependencies: string[]): Promise<boolean>;
  getCapabilityBindings(capabilityId: string): Promise<CapabilityBinding[]>;
  createCapabilityBinding(
    capabilityId: string,
    region: string,
    providerId?: string,
    config?: Record<string, unknown>
  ): Promise<CapabilityBinding>;
}
