export interface Region { code: string; name: string; } export interface RegionGroup { key: string; name: string; regions: Region[]; total: number; } export interface ExtendedRegionGroup extends RegionGroup { isMainParent?: boolean; parentKey?: string; subGroups?: RegionGroup[]; } export interface UsedRegions { regions: Set; isGlobalUsed: boolean; isEUGroupUsed: boolean; byInstance: Map>; instanceNames?: Map; } export interface RegionSelectorProps { regionGroups: RegionGroup[]; selectedRegions?: string[]; onRegionsChange?: (regions: string[]) => void; usedRegions?: UsedRegions; isLoading?: boolean; showSelectionDisplay?: boolean; error?: string; maxVisibleBadges?: number; searchPlaceholder?: string; hide?: string[]; class?: string; }