import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface VPC {
    id: number;
    label: string;
    description?: string;
    region: string;
    subnets: VPCSubnet[];
    created: string;
    updated: string;
    tags?: string[];
}
export interface VPCSubnet {
    id: number;
    label: string;
    ipv4: string;
    created: string;
    updated: string;
    tags?: string[];
}
export interface CreateVPCRequest {
    label: string;
    region: string;
    description?: string;
    tags?: string[];
}
export interface UpdateVPCRequest {
    label?: string;
    description?: string;
    tags?: string[];
}
export interface CreateSubnetRequest {
    label: string;
    ipv4: string;
    tags?: string[];
}
export interface UpdateSubnetRequest {
    label?: string;
    tags?: string[];
}
export interface NodeBalancerVPCConfig {
    id: number;
    nodebalancer_id: number;
    vpc_id: number;
    subnet_id: number;
    ipv4_range: string;
}
export interface VPCIP {
    address: string;
    region: string;
    type: string;
    subnet_id: number;
    linode_id?: number;
    gateway?: boolean;
    vpc_id: number;
    created: string;
    updated: string;
}
export interface VPCsClient {
    getVPCs: (params?: PaginationParams) => Promise<PaginatedResponse<VPC>>;
    getVPC: (id: number) => Promise<VPC>;
    createVPC: (data: CreateVPCRequest) => Promise<VPC>;
    updateVPC: (id: number, data: UpdateVPCRequest) => Promise<VPC>;
    deleteVPC: (id: number) => Promise<void>;
    getSubnets: (vpcId: number, params?: PaginationParams) => Promise<PaginatedResponse<VPCSubnet>>;
    getSubnet: (vpcId: number, subnetId: number) => Promise<VPCSubnet>;
    createSubnet: (vpcId: number, data: CreateSubnetRequest) => Promise<VPCSubnet>;
    updateSubnet: (vpcId: number, subnetId: number, data: UpdateSubnetRequest) => Promise<VPCSubnet>;
    deleteSubnet: (vpcId: number, subnetId: number) => Promise<void>;
    getVPCIPs: (vpcId: number, params?: PaginationParams) => Promise<PaginatedResponse<VPCIP>>;
    getAllVPCIPs: (params?: PaginationParams) => Promise<PaginatedResponse<VPCIP>>;
    getNodeBalancerVPCs: (nodeBalancerId: number, params?: PaginationParams) => Promise<PaginatedResponse<NodeBalancerVPCConfig>>;
    getNodeBalancerVPC: (nodeBalancerId: number, nodeBalancerVpcConfigId: number) => Promise<NodeBalancerVPCConfig>;
}
export declare function createVPCsClient(axios: AxiosInstance): VPCsClient;
