import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface Volume {
    id: number;
    label: string;
    status: string;
    region: string;
    size: number;
    linode_id: number | null;
    created: string;
    updated: string;
    filesystem_path: string;
    tags: string[];
}
export interface VolumeType {
    id: string;
    label: string;
    region: string;
    minimum: number;
    maximum: number;
}
export interface CreateVolumeRequest {
    label: string;
    size: number;
    region?: string;
    linode_id?: number;
    config_id?: number;
    tags?: string[];
    encryption?: 'enabled' | 'disabled';
}
export interface UpdateVolumeRequest {
    label?: string;
    tags?: string[];
}
export interface AttachVolumeRequest {
    linode_id: number;
    config_id?: number;
}
export interface ResizeVolumeRequest {
    size: number;
}
export interface CloneVolumeRequest {
    label: string;
}
export interface LinodeVolumesClient {
    getVolumes: (params?: PaginationParams) => Promise<PaginatedResponse<Volume>>;
    getVolumeById: (id: number) => Promise<Volume>;
    createVolume: (data: CreateVolumeRequest) => Promise<Volume>;
    updateVolume: (id: number, data: UpdateVolumeRequest) => Promise<Volume>;
    deleteVolume: (id: number) => Promise<{}>;
    attachVolume: (id: number, data: AttachVolumeRequest) => Promise<{}>;
    detachVolume: (id: number) => Promise<{}>;
    resizeVolume: (id: number, data: ResizeVolumeRequest) => Promise<{}>;
    cloneVolume: (id: number, data: CloneVolumeRequest) => Promise<Volume>;
    getVolumeTypes: () => Promise<PaginatedResponse<VolumeType>>;
}
export declare function createVolumesClient(axios: AxiosInstance): LinodeVolumesClient;
