import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './instances';
export interface PlacementGroup {
    id: number;
    label: string;
    placement_group_type: string;
    placement_group_policy: string;
    region: string;
    linodes: number[];
    tags?: string[];
    created: string;
    updated: string;
}
export interface CreatePlacementGroupRequest {
    label: string;
    placement_group_type: 'anti_affinity:local';
    placement_group_policy?: 'strict' | 'flexible';
    region: string;
    tags?: string[];
}
export interface UpdatePlacementGroupRequest {
    label: string;
    tags?: string[];
}
export interface AssignInstancesRequest {
    linodes: number[];
}
export interface UnassignInstancesRequest {
    linodes: number[];
}
export interface PlacementClient {
    getPlacementGroups: (params?: PaginationParams) => Promise<PaginatedResponse<PlacementGroup>>;
    getPlacementGroup: (id: number) => Promise<PlacementGroup>;
    createPlacementGroup: (data: CreatePlacementGroupRequest) => Promise<PlacementGroup>;
    updatePlacementGroup: (id: number, data: UpdatePlacementGroupRequest) => Promise<PlacementGroup>;
    deletePlacementGroup: (id: number) => Promise<void>;
    assignInstances: (id: number, data: AssignInstancesRequest) => Promise<PlacementGroup>;
    unassignInstances: (id: number, data: UnassignInstancesRequest) => Promise<PlacementGroup>;
}
export declare function createPlacementClient(axios: AxiosInstance): PlacementClient;
