import type { AxiosInstance } from 'axios';
import AxiosStaticInstanceProvider from "./provider";
export type ConfigPlugin = (axios: AxiosInstance, config: Config) => void;
export type PartialConstructorString = string | null;
export type PartialConstructorNumber = number | null;
export type PartialPluginConstructorPlugins = ConfigPlugin[] | null;
export default class Config {
private _host;
private _port;
private _protocol;
private _prefix;
private _axiosProvider;
private _axios;
private _plugins;
constructor(options?: {
protocol?: PartialConstructorString;
host?: PartialConstructorString;
port?: PartialConstructorNumber;
prefix?: PartialConstructorString;
plugins?: PartialPluginConstructorPlugins;
axiosProvider?: AxiosStaticInstanceProvider;
});
static forName(name: string): Config | null;
init(protocol: PartialConstructorString, host: PartialConstructorString, port: PartialConstructorNumber, prefix: PartialConstructorString, plugins: PartialPluginConstructorPlugins): void;
get host(): string;
set host(value: string);
get port(): number;
set port(value: number);
get protocol(): string;
set protocol(value: string);
get prefix(): string;
set prefix(value: string);
/**
* default value:
* http://localhost:8080
*/
get origin(): string;
/**
* if prefix = "/a"
* return "http://localhost:8080/a"
*/
get baseURL(): string;
get plugins(): PartialPluginConstructorPlugins;
set plugins(value: PartialPluginConstructorPlugins);
get axiosProvider(): AxiosStaticInstanceProvider;
set axiosProvider(value: AxiosStaticInstanceProvider);
/**
* register config global and return self.
* @param name
* @return {Config} config self
*/
register(name: string): Config;
/**
* remove self from global config store.
* @return {Config} - config self
*/
unregister(): Config;
requestAxiosInstance(): Promise;
}
export declare const config: Config;