import type { AssignedBlock, NetworkPlan, Subnet } from '../core/models/network-plan.js'; import { NetworkPlanService } from '../services/network-plan.service.js'; interface PlanState { plan: NetworkPlan | null; planService: NetworkPlanService; currentFilename: string | null; loadPlan: (plan: NetworkPlan) => void; setCurrentFilename: (filename: string | null) => void; setPlanName: (name: string) => void; addSubnet: (subnet: Subnet) => void; updateSubnet: (index: number, name: string, vlanId: number, expectedDevices: number, description?: string) => void; removeSubnet: (index: number) => Subnet | null; calculatePlan: () => void; updateBaseIp: (newBaseIp: string) => void; setGrowthPercentage: (growthPercentage: number) => void; setManualNetworkAddress: (index: number, networkAddress: string, lock: boolean) => void; setNetworkLocked: (index: number, locked: boolean) => void; clearPlan: () => void; setAssignedBlocks: (blocks: AssignedBlock[]) => void; addAssignedBlock: (block: Omit) => AssignedBlock | null; removeAssignedBlock: (blockId: string) => boolean; setSourceBlockId: (index: number, sourceBlockId: string | undefined) => void; updateSpaceReport: () => void; allocateSubnetFromAvailableSpace: (subnetId: string, networkAddress: string, sourceBlockId: string) => boolean; } export declare const usePlanStore: { (): PlanState; (selector: (state: PlanState) => U): U; } & Omit, "setState"> & { setState(nextStateOrUpdater: PlanState | Partial | ((state: import("immer").WritableDraft) => void), shouldReplace?: false): void; setState(nextStateOrUpdater: PlanState | ((state: import("immer").WritableDraft) => void), shouldReplace: true): void; } & { use: { plan: () => NetworkPlan | null; planService: () => NetworkPlanService; currentFilename: () => string | null; loadPlan: () => (plan: NetworkPlan) => void; setCurrentFilename: () => (filename: string | null) => void; setPlanName: () => (name: string) => void; addSubnet: () => (subnet: Subnet) => void; updateSubnet: () => (index: number, name: string, vlanId: number, expectedDevices: number, description?: string) => void; removeSubnet: () => (index: number) => Subnet | null; calculatePlan: () => () => void; updateBaseIp: () => (newBaseIp: string) => void; setGrowthPercentage: () => (growthPercentage: number) => void; setManualNetworkAddress: () => (index: number, networkAddress: string, lock: boolean) => void; setNetworkLocked: () => (index: number, locked: boolean) => void; clearPlan: () => () => void; setAssignedBlocks: () => (blocks: AssignedBlock[]) => void; addAssignedBlock: () => (block: Omit) => AssignedBlock | null; removeAssignedBlock: () => (blockId: string) => boolean; setSourceBlockId: () => (index: number, sourceBlockId: string | undefined) => void; updateSpaceReport: () => () => void; allocateSubnetFromAvailableSpace: () => (subnetId: string, networkAddress: string, sourceBlockId: string) => boolean; }; }; export {};