import type { SubnetInfo } from '../calculators/subnet-calculator.js'; export type { SubnetInfo }; export interface Supernet { cidrPrefix: number; totalSize: number; usedSize: number; utilization: number; rangeEfficiency: number; networkAddress: string; } export interface AssignedBlock { id: string; networkAddress: string; cidrPrefix: number; totalCapacity: number; startInt: number; endInt: number; label?: string; assignedAt: Date; } export interface AvailableFragment { parentBlockId: string; networkAddress: string; capacity: number; startInt: number; endInt: number; } export interface BlockAllocationSummary { blockId: string; block: AssignedBlock; allocatedSubnetIds: string[]; usedCapacity: number; availableCapacity: number; utilizationPercent: number; fragments: AvailableFragment[]; } export interface SpaceAllocationReport { generatedAt: Date; totalAssignedCapacity: number; totalUsedCapacity: number; totalAvailableCapacity: number; overallUtilizationPercent: number; blockSummaries: BlockAllocationSummary[]; } export interface Subnet { id: string; name: string; vlanId: number; expectedDevices: number; description?: string; subnetInfo?: SubnetInfo; networkLocked: boolean; manualNetworkAddress?: string; sourceBlockId?: string; } export interface NetworkPlan { name: string; baseIp: string; subnets: Subnet[]; growthPercentage: number; supernet?: Supernet; createdAt: Date; updatedAt: Date; assignedBlocks?: AssignedBlock[]; spaceReport?: SpaceAllocationReport; } export declare function generateSubnetId(): string; export declare function generateBlockId(): string; export declare function createSubnet(name: string, vlanId: number, expectedDevices: number, description?: string): Subnet; export declare function createNetworkPlan(name: string, baseIp?: string): NetworkPlan; export declare function isValidVlanId(vlanId: number): boolean; export declare function isValidDeviceCount(count: number): boolean; export declare function isValidSubnetName(name: string): boolean; export declare function addSubnet(plan: NetworkPlan, subnetData: { name: string; vlan: number; expectedDevices: number; description?: string; }): NetworkPlan; export declare function removeSubnet(plan: NetworkPlan, subnetId: string): NetworkPlan; export declare function calculateSubnetRanges(plan: NetworkPlan): NetworkPlan;