import { AxiosInstance } from 'axios';
import { Site } from '../Sites';
import { ObjectWithPrivateValues } from './ObjectWithPrivateValues';
import { Controller } from '../Controller';
import { Debugger } from 'debug';
export interface IObjectSubController {
    instance: AxiosInstance;
    controller: Controller;
}
export declare class _ObjectSubController extends ObjectWithPrivateValues {
    protected get config(): IObjectSubController;
    protected set config(value: IObjectSubController);
    protected get controllerInstance(): AxiosInstance;
    protected set controllerInstance(value: AxiosInstance);
    protected get controller(): Controller;
    protected set controller(value: Controller);
    protected get site(): Site;
    protected set site(value: Site);
    constructor(config: IObjectSubController);
    toJSON(): Partial<this>;
    protected get instance(): AxiosInstance;
    protected set instance(value: AxiosInstance);
    getInstance(): AxiosInstance;
    getController(): Controller;
    protected checkNeeds(minVersion?: string, unifiOs?: boolean): boolean;
    /**
     *
     * @param minVersion - the minimal semver version for this object
     * @param unifiOs - need to be unifiOs ? or Unifi Controller ? if no need, pass undefined
     * @param parameterName - a name for the parameter
     */
    protected checkNeedVersion(minVersion?: string, unifiOs?: boolean, parameterName?: string): void;
    /**
     *
     * @param key - the key object that need to be only supported on some versions
     * @param value - the value store in this object
     * @param minVersion - the minimal semver version for this object
     * @param unifiOs - need to be unifiOs ? or Unifi Controller ? if no need, pass undefined
     * @param allowUndefined - to undefined check ?
     */
    protected needVersion<T>(key: keyof this, value?: T, minVersion?: string, unifiOs?: boolean, allowUndefined?: boolean): boolean;
    protected get debug(): Debugger;
    protected set debug(value: Debugger);
}
