import { AxiosInstance, RawAxiosRequestConfig, AxiosPromise } from 'axios';

/**
 * MarzbanAPI
 * Unified GUI Censorship Resistant Solution Powered by Xray
 *
 * The version of the OpenAPI document: 0.8.4
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
interface ConfigurationParameters {
    apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
    username?: string;
    password?: string;
    accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
    basePath?: string;
    serverIndex?: number;
    baseOptions?: any;
    formDataCtor?: new () => any;
}
declare class Configuration {
    /**
     * parameter for apiKey security
     * @param name security name
     * @memberof Configuration
     */
    apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
    /**
     * parameter for basic security
     *
     * @type {string}
     * @memberof Configuration
     */
    username?: string;
    /**
     * parameter for basic security
     *
     * @type {string}
     * @memberof Configuration
     */
    password?: string;
    /**
     * parameter for oauth2 security
     * @param name security name
     * @param scopes oauth2 scope
     * @memberof Configuration
     */
    accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
    /**
     * override base path
     *
     * @type {string}
     * @memberof Configuration
     */
    basePath?: string;
    /**
     * override server index
     *
     * @type {number}
     * @memberof Configuration
     */
    serverIndex?: number;
    /**
     * base options for axios calls
     *
     * @type {any}
     * @memberof Configuration
     */
    baseOptions?: any;
    /**
     * The FormData constructor that will be used to create multipart form data
     * requests. You can inject this here so that execution environments that
     * do not support the FormData class can still run the generated client.
     *
     * @type {new () => FormData}
     */
    formDataCtor?: new () => any;
    constructor(param?: ConfigurationParameters);
    /**
     * Check if the given MIME is a JSON MIME.
     * JSON MIME examples:
     *   application/json
     *   application/json; charset=UTF8
     *   APPLICATION/JSON
     *   application/vnd.company+json
     * @param mime - MIME (Multipurpose Internet Mail Extensions)
     * @return True if the given MIME is JSON, false otherwise.
     */
    isJsonMime(mime: string): boolean;
}

/**
 * MarzbanAPI
 * Unified GUI Censorship Resistant Solution Powered by Xray
 *
 * The version of the OpenAPI document: 0.8.4
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

/**
 *
 * @export
 * @interface RequestArgs
 */
interface RequestArgs {
    url: string;
    options: RawAxiosRequestConfig;
}
/**
 *
 * @export
 * @class BaseAPI
 */
declare class BaseAPI {
    protected basePath: string;
    protected axios: AxiosInstance;
    protected configuration: Configuration | undefined;
    constructor(configuration?: Configuration, basePath?: string, axios?: AxiosInstance);
}

/**
 * MarzbanAPI
 * Unified GUI Censorship Resistant Solution Powered by Xray
 *
 * The version of the OpenAPI document: 0.8.4
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

/**
 *
 * @export
 * @interface Admin
 */
interface Admin {
    /**
     *
     * @type {string}
     * @memberof Admin
     */
    'username': string;
    /**
     *
     * @type {boolean}
     * @memberof Admin
     */
    'is_sudo': boolean;
    /**
     *
     * @type {number}
     * @memberof Admin
     */
    'telegram_id'?: number | null;
    /**
     *
     * @type {string}
     * @memberof Admin
     */
    'discord_webhook'?: string | null;
    /**
     *
     * @type {number}
     * @memberof Admin
     */
    'users_usage'?: number | null;
}
/**
 *
 * @export
 * @interface AdminCreate
 */
interface AdminCreate {
    /**
     *
     * @type {string}
     * @memberof AdminCreate
     */
    'username': string;
    /**
     *
     * @type {boolean}
     * @memberof AdminCreate
     */
    'is_sudo': boolean;
    /**
     *
     * @type {number}
     * @memberof AdminCreate
     */
    'telegram_id'?: number | null;
    /**
     *
     * @type {string}
     * @memberof AdminCreate
     */
    'discord_webhook'?: string | null;
    /**
     *
     * @type {number}
     * @memberof AdminCreate
     */
    'users_usage'?: number | null;
    /**
     *
     * @type {string}
     * @memberof AdminCreate
     */
    'password': string;
}
/**
 *
 * @export
 * @interface AdminModify
 */
interface AdminModify {
    /**
     *
     * @type {string}
     * @memberof AdminModify
     */
    'password'?: string | null;
    /**
     *
     * @type {boolean}
     * @memberof AdminModify
     */
    'is_sudo': boolean;
    /**
     *
     * @type {number}
     * @memberof AdminModify
     */
    'telegram_id'?: number | null;
    /**
     *
     * @type {string}
     * @memberof AdminModify
     */
    'discord_webhook'?: string | null;
}
/**
 *
 * @export
 * @interface Conflict
 */
interface Conflict {
    /**
     *
     * @type {string}
     * @memberof Conflict
     */
    'detail'?: string;
}
/**
 *
 * @export
 * @interface CoreStats
 */
interface CoreStats {
    /**
     *
     * @type {string}
     * @memberof CoreStats
     */
    'version': string;
    /**
     *
     * @type {boolean}
     * @memberof CoreStats
     */
    'started': boolean;
    /**
     *
     * @type {string}
     * @memberof CoreStats
     */
    'logs_websocket': string;
}
/**
 *
 * @export
 * @interface Forbidden
 */
interface Forbidden {
    /**
     *
     * @type {string}
     * @memberof Forbidden
     */
    'detail'?: string;
}
/**
 *
 * @export
 * @interface HTTPException
 */
interface HTTPException {
    /**
     *
     * @type {string}
     * @memberof HTTPException
     */
    'detail': string;
}
/**
 *
 * @export
 * @interface HTTPValidationError
 */
interface HTTPValidationError {
    /**
     *
     * @type {Array<ValidationError>}
     * @memberof HTTPValidationError
     */
    'detail'?: Array<ValidationError>;
}
/**
 *
 * @export
 * @interface NextPlanModel
 */
interface NextPlanModel {
    /**
     *
     * @type {number}
     * @memberof NextPlanModel
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {number}
     * @memberof NextPlanModel
     */
    'expire'?: number | null;
    /**
     *
     * @type {boolean}
     * @memberof NextPlanModel
     */
    'add_remaining_traffic'?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof NextPlanModel
     */
    'fire_on_either'?: boolean;
}
/**
 *
 * @export
 * @interface NodeCreate
 */
interface NodeCreate {
    /**
     *
     * @type {string}
     * @memberof NodeCreate
     */
    'name': string;
    /**
     *
     * @type {string}
     * @memberof NodeCreate
     */
    'address': string;
    /**
     *
     * @type {number}
     * @memberof NodeCreate
     */
    'port'?: number;
    /**
     *
     * @type {number}
     * @memberof NodeCreate
     */
    'api_port'?: number;
    /**
     *
     * @type {number}
     * @memberof NodeCreate
     */
    'usage_coefficient'?: number;
    /**
     *
     * @type {boolean}
     * @memberof NodeCreate
     */
    'add_as_new_host'?: boolean;
}
/**
 *
 * @export
 * @interface NodeModify
 */
interface NodeModify {
    /**
     *
     * @type {string}
     * @memberof NodeModify
     */
    'name'?: string | null;
    /**
     *
     * @type {string}
     * @memberof NodeModify
     */
    'address'?: string | null;
    /**
     *
     * @type {number}
     * @memberof NodeModify
     */
    'port'?: number | null;
    /**
     *
     * @type {number}
     * @memberof NodeModify
     */
    'api_port'?: number | null;
    /**
     *
     * @type {number}
     * @memberof NodeModify
     */
    'usage_coefficient'?: number | null;
    /**
     *
     * @type {NodeStatus}
     * @memberof NodeModify
     */
    'status'?: NodeStatus | null;
}
/**
 *
 * @export
 * @interface NodeResponse
 */
interface NodeResponse {
    /**
     *
     * @type {string}
     * @memberof NodeResponse
     */
    'name': string;
    /**
     *
     * @type {string}
     * @memberof NodeResponse
     */
    'address': string;
    /**
     *
     * @type {number}
     * @memberof NodeResponse
     */
    'port'?: number;
    /**
     *
     * @type {number}
     * @memberof NodeResponse
     */
    'api_port'?: number;
    /**
     *
     * @type {number}
     * @memberof NodeResponse
     */
    'usage_coefficient'?: number;
    /**
     *
     * @type {number}
     * @memberof NodeResponse
     */
    'id': number;
    /**
     *
     * @type {string}
     * @memberof NodeResponse
     */
    'xray_version'?: string | null;
    /**
     *
     * @type {NodeStatus}
     * @memberof NodeResponse
     */
    'status': NodeStatus;
    /**
     *
     * @type {string}
     * @memberof NodeResponse
     */
    'message'?: string | null;
}
/**
 *
 * @export
 * @interface NodeSettings
 */
interface NodeSettings {
    /**
     *
     * @type {string}
     * @memberof NodeSettings
     */
    'min_node_version'?: string;
    /**
     *
     * @type {string}
     * @memberof NodeSettings
     */
    'certificate': string;
}
/**
 *
 * @export
 * @enum {string}
 */
declare const NodeStatus: {
    readonly Connected: "connected";
    readonly Connecting: "connecting";
    readonly Error: "error";
    readonly Disabled: "disabled";
};
type NodeStatus = typeof NodeStatus[keyof typeof NodeStatus];
/**
 *
 * @export
 * @interface NodeUsageResponse
 */
interface NodeUsageResponse {
    /**
     *
     * @type {number}
     * @memberof NodeUsageResponse
     */
    'node_id'?: number | null;
    /**
     *
     * @type {string}
     * @memberof NodeUsageResponse
     */
    'node_name': string;
    /**
     *
     * @type {number}
     * @memberof NodeUsageResponse
     */
    'uplink': number;
    /**
     *
     * @type {number}
     * @memberof NodeUsageResponse
     */
    'downlink': number;
}
/**
 *
 * @export
 * @interface NodesUsageResponse
 */
interface NodesUsageResponse {
    /**
     *
     * @type {Array<NodeUsageResponse>}
     * @memberof NodesUsageResponse
     */
    'usages': Array<NodeUsageResponse>;
}
/**
 *
 * @export
 * @interface NotFound
 */
interface NotFound {
    /**
     *
     * @type {string}
     * @memberof NotFound
     */
    'detail'?: string;
}
/**
 *
 * @export
 * @interface Port
 */
interface Port {
}
/**
 *
 * @export
 * @interface ProxyHost
 */
interface ProxyHost {
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'remark': string;
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'address': string;
    /**
     *
     * @type {number}
     * @memberof ProxyHost
     */
    'port'?: number | null;
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'sni'?: string | null;
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'host'?: string | null;
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'path'?: string | null;
    /**
     *
     * @type {ProxyHostSecurity}
     * @memberof ProxyHost
     */
    'security'?: ProxyHostSecurity;
    /**
     *
     * @type {ProxyHostALPN}
     * @memberof ProxyHost
     */
    'alpn'?: ProxyHostALPN;
    /**
     *
     * @type {ProxyHostFingerprint}
     * @memberof ProxyHost
     */
    'fingerprint'?: ProxyHostFingerprint;
    /**
     *
     * @type {boolean}
     * @memberof ProxyHost
     */
    'allowinsecure'?: boolean | null;
    /**
     *
     * @type {boolean}
     * @memberof ProxyHost
     */
    'is_disabled'?: boolean | null;
    /**
     *
     * @type {boolean}
     * @memberof ProxyHost
     */
    'mux_enable'?: boolean | null;
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'fragment_setting'?: string | null;
    /**
     *
     * @type {string}
     * @memberof ProxyHost
     */
    'noise_setting'?: string | null;
    /**
     *
     * @type {boolean}
     * @memberof ProxyHost
     */
    'random_user_agent'?: boolean | null;
    /**
     *
     * @type {boolean}
     * @memberof ProxyHost
     */
    'use_sni_as_host'?: boolean | null;
}
/**
 *
 * @export
 * @enum {string}
 */
declare const ProxyHostALPN: {
    readonly Empty: "";
    readonly H3: "h3";
    readonly H2: "h2";
    readonly Http11: "http/1.1";
    readonly H3h2http11: "h3,h2,http/1.1";
    readonly H3h2: "h3,h2";
    readonly H2http11: "h2,http/1.1";
};
type ProxyHostALPN = typeof ProxyHostALPN[keyof typeof ProxyHostALPN];
/**
 *
 * @export
 * @enum {string}
 */
declare const ProxyHostFingerprint: {
    readonly Empty: "";
    readonly Chrome: "chrome";
    readonly Firefox: "firefox";
    readonly Safari: "safari";
    readonly Ios: "ios";
    readonly Android: "android";
    readonly Edge: "edge";
    readonly _360: "360";
    readonly Qq: "qq";
    readonly Random: "random";
    readonly Randomized: "randomized";
};
type ProxyHostFingerprint = typeof ProxyHostFingerprint[keyof typeof ProxyHostFingerprint];
/**
 *
 * @export
 * @enum {string}
 */
declare const ProxyHostSecurity: {
    readonly InboundDefault: "inbound_default";
    readonly None: "none";
    readonly Tls: "tls";
};
type ProxyHostSecurity = typeof ProxyHostSecurity[keyof typeof ProxyHostSecurity];
/**
 *
 * @export
 * @interface ProxyInbound
 */
interface ProxyInbound {
    /**
     *
     * @type {string}
     * @memberof ProxyInbound
     */
    'tag': string;
    /**
     *
     * @type {ProxyTypes}
     * @memberof ProxyInbound
     */
    'protocol': ProxyTypes;
    /**
     *
     * @type {string}
     * @memberof ProxyInbound
     */
    'network': string;
    /**
     *
     * @type {string}
     * @memberof ProxyInbound
     */
    'tls': string;
    /**
     *
     * @type {Port}
     * @memberof ProxyInbound
     */
    'port': Port;
}
/**
 *
 * @export
 * @enum {string}
 */
declare const ProxyTypes: {
    readonly Vmess: "vmess";
    readonly Vless: "vless";
    readonly Trojan: "trojan";
    readonly Shadowsocks: "shadowsocks";
};
type ProxyTypes = typeof ProxyTypes[keyof typeof ProxyTypes];
/**
 *
 * @export
 * @interface SubscriptionUserResponse
 */
interface SubscriptionUserResponse {
    /**
     *
     * @type {object}
     * @memberof SubscriptionUserResponse
     */
    'proxies': object;
    /**
     *
     * @type {number}
     * @memberof SubscriptionUserResponse
     */
    'expire'?: number | null;
    /**
     *
     * @type {number}
     * @memberof SubscriptionUserResponse
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {UserDataLimitResetStrategy}
     * @memberof SubscriptionUserResponse
     */
    'data_limit_reset_strategy'?: UserDataLimitResetStrategy;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'sub_updated_at'?: string | null;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'sub_last_user_agent'?: string | null;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'online_at'?: string | null;
    /**
     *
     * @type {number}
     * @memberof SubscriptionUserResponse
     */
    'on_hold_expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'on_hold_timeout'?: string | null;
    /**
     *
     * @type {NextPlanModel}
     * @memberof SubscriptionUserResponse
     */
    'next_plan'?: NextPlanModel | null;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'username': string;
    /**
     *
     * @type {UserStatus}
     * @memberof SubscriptionUserResponse
     */
    'status': UserStatus;
    /**
     *
     * @type {number}
     * @memberof SubscriptionUserResponse
     */
    'used_traffic': number;
    /**
     *
     * @type {number}
     * @memberof SubscriptionUserResponse
     */
    'lifetime_used_traffic'?: number;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'created_at': string;
    /**
     *
     * @type {Array<string>}
     * @memberof SubscriptionUserResponse
     */
    'links'?: Array<string>;
    /**
     *
     * @type {string}
     * @memberof SubscriptionUserResponse
     */
    'subscription_url'?: string;
}
/**
 *
 * @export
 * @interface SystemStats
 */
interface SystemStats {
    /**
     *
     * @type {string}
     * @memberof SystemStats
     */
    'version': string;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'mem_total': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'mem_used': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'cpu_cores': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'cpu_usage': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'total_user': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'online_users': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'users_active': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'users_on_hold': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'users_disabled': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'users_expired': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'users_limited': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'incoming_bandwidth': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'outgoing_bandwidth': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'incoming_bandwidth_speed': number;
    /**
     *
     * @type {number}
     * @memberof SystemStats
     */
    'outgoing_bandwidth_speed': number;
}
/**
 *
 * @export
 * @interface Token
 */
interface Token {
    /**
     *
     * @type {string}
     * @memberof Token
     */
    'access_token': string;
    /**
     *
     * @type {string}
     * @memberof Token
     */
    'token_type'?: string;
}
/**
 *
 * @export
 * @interface Unauthorized
 */
interface Unauthorized {
    /**
     *
     * @type {string}
     * @memberof Unauthorized
     */
    'detail'?: string;
}
/**
 *
 * @export
 * @interface UserCreate
 */
interface UserCreate {
    /**
     *
     * @type {{ [key: string]: object; }}
     * @memberof UserCreate
     */
    'proxies'?: {
        [key: string]: object;
    };
    /**
     *
     * @type {number}
     * @memberof UserCreate
     */
    'expire'?: number | null;
    /**
     *
     * @type {number}
     * @memberof UserCreate
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {UserDataLimitResetStrategy}
     * @memberof UserCreate
     */
    'data_limit_reset_strategy'?: UserDataLimitResetStrategy;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserCreate
     */
    'inbounds'?: {
        [key: string]: Array<string>;
    };
    /**
     *
     * @type {string}
     * @memberof UserCreate
     */
    'note'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserCreate
     */
    'sub_updated_at'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserCreate
     */
    'sub_last_user_agent'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserCreate
     */
    'online_at'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserCreate
     */
    'on_hold_expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserCreate
     */
    'on_hold_timeout'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserCreate
     */
    'auto_delete_in_days'?: number | null;
    /**
     *
     * @type {NextPlanModel}
     * @memberof UserCreate
     */
    'next_plan'?: NextPlanModel | null;
    /**
     *
     * @type {string}
     * @memberof UserCreate
     */
    'username': string;
    /**
     *
     * @type {UserStatusCreate}
     * @memberof UserCreate
     */
    'status'?: UserStatusCreate;
}
/**
 *
 * @export
 * @enum {string}
 */
declare const UserDataLimitResetStrategy: {
    readonly NoReset: "no_reset";
    readonly Day: "day";
    readonly Week: "week";
    readonly Month: "month";
    readonly Year: "year";
};
type UserDataLimitResetStrategy = typeof UserDataLimitResetStrategy[keyof typeof UserDataLimitResetStrategy];
/**
 *
 * @export
 * @interface UserModify
 */
interface UserModify {
    /**
     *
     * @type {{ [key: string]: object; }}
     * @memberof UserModify
     */
    'proxies'?: {
        [key: string]: object;
    };
    /**
     *
     * @type {number}
     * @memberof UserModify
     */
    'expire'?: number | null;
    /**
     *
     * @type {number}
     * @memberof UserModify
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {UserDataLimitResetStrategy}
     * @memberof UserModify
     */
    'data_limit_reset_strategy'?: UserDataLimitResetStrategy;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserModify
     */
    'inbounds'?: {
        [key: string]: Array<string>;
    };
    /**
     *
     * @type {string}
     * @memberof UserModify
     */
    'note'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserModify
     */
    'sub_updated_at'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserModify
     */
    'sub_last_user_agent'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserModify
     */
    'online_at'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserModify
     */
    'on_hold_expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserModify
     */
    'on_hold_timeout'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserModify
     */
    'auto_delete_in_days'?: number | null;
    /**
     *
     * @type {NextPlanModel}
     * @memberof UserModify
     */
    'next_plan'?: NextPlanModel | null;
    /**
     *
     * @type {UserStatusModify}
     * @memberof UserModify
     */
    'status'?: UserStatusModify;
}
/**
 *
 * @export
 * @interface UserResponse
 */
interface UserResponse {
    /**
     *
     * @type {object}
     * @memberof UserResponse
     */
    'proxies': object;
    /**
     *
     * @type {number}
     * @memberof UserResponse
     */
    'expire'?: number | null;
    /**
     *
     * @type {number}
     * @memberof UserResponse
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {UserDataLimitResetStrategy}
     * @memberof UserResponse
     */
    'data_limit_reset_strategy'?: UserDataLimitResetStrategy;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserResponse
     */
    'inbounds'?: {
        [key: string]: Array<string>;
    };
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'note'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'sub_updated_at'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'sub_last_user_agent'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'online_at'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserResponse
     */
    'on_hold_expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'on_hold_timeout'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserResponse
     */
    'auto_delete_in_days'?: number | null;
    /**
     *
     * @type {NextPlanModel}
     * @memberof UserResponse
     */
    'next_plan'?: NextPlanModel | null;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'username': string;
    /**
     *
     * @type {UserStatus}
     * @memberof UserResponse
     */
    'status': UserStatus;
    /**
     *
     * @type {number}
     * @memberof UserResponse
     */
    'used_traffic': number;
    /**
     *
     * @type {number}
     * @memberof UserResponse
     */
    'lifetime_used_traffic'?: number;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'created_at': string;
    /**
     *
     * @type {Array<string>}
     * @memberof UserResponse
     */
    'links'?: Array<string>;
    /**
     *
     * @type {string}
     * @memberof UserResponse
     */
    'subscription_url'?: string;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserResponse
     */
    'excluded_inbounds'?: {
        [key: string]: Array<string>;
    };
    /**
     *
     * @type {Admin}
     * @memberof UserResponse
     */
    'admin'?: Admin | null;
}
/**
 *
 * @export
 * @enum {string}
 */
declare const UserStatus: {
    readonly Active: "active";
    readonly Disabled: "disabled";
    readonly Limited: "limited";
    readonly Expired: "expired";
    readonly OnHold: "on_hold";
};
type UserStatus = typeof UserStatus[keyof typeof UserStatus];
/**
 *
 * @export
 * @enum {string}
 */
declare const UserStatusCreate: {
    readonly Active: "active";
    readonly OnHold: "on_hold";
};
type UserStatusCreate = typeof UserStatusCreate[keyof typeof UserStatusCreate];
/**
 *
 * @export
 * @enum {string}
 */
declare const UserStatusModify: {
    readonly Active: "active";
    readonly Disabled: "disabled";
    readonly OnHold: "on_hold";
};
type UserStatusModify = typeof UserStatusModify[keyof typeof UserStatusModify];
/**
 *
 * @export
 * @interface UserTemplateCreate
 */
interface UserTemplateCreate {
    /**
     *
     * @type {string}
     * @memberof UserTemplateCreate
     */
    'name'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserTemplateCreate
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {number}
     * @memberof UserTemplateCreate
     */
    'expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserTemplateCreate
     */
    'username_prefix'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserTemplateCreate
     */
    'username_suffix'?: string | null;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserTemplateCreate
     */
    'inbounds'?: {
        [key: string]: Array<string>;
    };
}
/**
 *
 * @export
 * @interface UserTemplateModify
 */
interface UserTemplateModify {
    /**
     *
     * @type {string}
     * @memberof UserTemplateModify
     */
    'name'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserTemplateModify
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {number}
     * @memberof UserTemplateModify
     */
    'expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserTemplateModify
     */
    'username_prefix'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserTemplateModify
     */
    'username_suffix'?: string | null;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserTemplateModify
     */
    'inbounds'?: {
        [key: string]: Array<string>;
    };
}
/**
 *
 * @export
 * @interface UserTemplateResponse
 */
interface UserTemplateResponse {
    /**
     *
     * @type {string}
     * @memberof UserTemplateResponse
     */
    'name'?: string | null;
    /**
     *
     * @type {number}
     * @memberof UserTemplateResponse
     */
    'data_limit'?: number | null;
    /**
     *
     * @type {number}
     * @memberof UserTemplateResponse
     */
    'expire_duration'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserTemplateResponse
     */
    'username_prefix'?: string | null;
    /**
     *
     * @type {string}
     * @memberof UserTemplateResponse
     */
    'username_suffix'?: string | null;
    /**
     *
     * @type {{ [key: string]: Array<string>; }}
     * @memberof UserTemplateResponse
     */
    'inbounds'?: {
        [key: string]: Array<string>;
    };
    /**
     *
     * @type {number}
     * @memberof UserTemplateResponse
     */
    'id': number;
}
/**
 *
 * @export
 * @interface UserUsageResponse
 */
interface UserUsageResponse {
    /**
     *
     * @type {number}
     * @memberof UserUsageResponse
     */
    'node_id'?: number | null;
    /**
     *
     * @type {string}
     * @memberof UserUsageResponse
     */
    'node_name': string;
    /**
     *
     * @type {number}
     * @memberof UserUsageResponse
     */
    'used_traffic': number;
}
/**
 *
 * @export
 * @interface UserUsagesResponse
 */
interface UserUsagesResponse {
    /**
     *
     * @type {string}
     * @memberof UserUsagesResponse
     */
    'username': string;
    /**
     *
     * @type {Array<UserUsageResponse>}
     * @memberof UserUsagesResponse
     */
    'usages': Array<UserUsageResponse>;
}
/**
 *
 * @export
 * @interface UsersResponse
 */
interface UsersResponse {
    /**
     *
     * @type {Array<UserResponse>}
     * @memberof UsersResponse
     */
    'users': Array<UserResponse>;
    /**
     *
     * @type {number}
     * @memberof UsersResponse
     */
    'total': number;
}
/**
 *
 * @export
 * @interface UsersUsagesResponse
 */
interface UsersUsagesResponse {
    /**
     *
     * @type {Array<UserUsageResponse>}
     * @memberof UsersUsagesResponse
     */
    'usages': Array<UserUsageResponse>;
}
/**
 *
 * @export
 * @interface ValidationError
 */
interface ValidationError {
    /**
     *
     * @type {Array<ValidationErrorLocInner>}
     * @memberof ValidationError
     */
    'loc': Array<ValidationErrorLocInner>;
    /**
     *
     * @type {string}
     * @memberof ValidationError
     */
    'msg': string;
    /**
     *
     * @type {string}
     * @memberof ValidationError
     */
    'type': string;
}
/**
 *
 * @export
 * @interface ValidationErrorLocInner
 */
interface ValidationErrorLocInner {
}
/**
 * AdminApi - axios parameter creator
 * @export
 */
declare const AdminApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Activate all disabled users under a specific admin
     * @summary Activate All Disabled Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activateAllDisabledUsers: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Authenticate an admin and issue a token.
     * @summary Admin Token
     * @param {string} username
     * @param {string} password
     * @param {string | null} [grantType]
     * @param {string} [scope]
     * @param {string | null} [clientId]
     * @param {string | null} [clientSecret]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    adminToken: (username: string, password: string, grantType?: string | null, scope?: string, clientId?: string | null, clientSecret?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Create a new admin if the current admin has sudo privileges.
     * @summary Create Admin
     * @param {AdminCreate} adminCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createAdmin: (adminCreate: AdminCreate, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Disable all active users under a specific admin
     * @summary Disable All Active Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    disableAllActiveUsers: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve the usage of given admin.
     * @summary Get Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getAdminUsage: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Fetch a list of admins with optional filters for pagination and username.
     * @summary Get Admins
     * @param {number | null} [offset]
     * @param {number | null} [limit]
     * @param {string | null} [username]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getAdmins: (offset?: number | null, limit?: number | null, username?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve the current authenticated admin.
     * @summary Get Current Admin
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCurrentAdmin: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Modify an existing admin\'s details.
     * @summary Modify Admin
     * @param {string} username
     * @param {AdminModify} adminModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyAdmin: (username: string, adminModify: AdminModify, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Remove an admin from the database.
     * @summary Remove Admin
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeAdmin: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Resets usage of admin.
     * @summary Reset Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetAdminUsage: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * AdminApi - functional programming interface
 * @export
 */
declare const AdminApiFp: (configuration?: Configuration) => {
    /**
     * Activate all disabled users under a specific admin
     * @summary Activate All Disabled Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activateAllDisabledUsers(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Authenticate an admin and issue a token.
     * @summary Admin Token
     * @param {string} username
     * @param {string} password
     * @param {string | null} [grantType]
     * @param {string} [scope]
     * @param {string | null} [clientId]
     * @param {string | null} [clientSecret]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    adminToken(username: string, password: string, grantType?: string | null, scope?: string, clientId?: string | null, clientSecret?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Token>>;
    /**
     * Create a new admin if the current admin has sudo privileges.
     * @summary Create Admin
     * @param {AdminCreate} adminCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createAdmin(adminCreate: AdminCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Admin>>;
    /**
     * Disable all active users under a specific admin
     * @summary Disable All Active Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    disableAllActiveUsers(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Retrieve the usage of given admin.
     * @summary Get Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getAdminUsage(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<number>>;
    /**
     * Fetch a list of admins with optional filters for pagination and username.
     * @summary Get Admins
     * @param {number | null} [offset]
     * @param {number | null} [limit]
     * @param {string | null} [username]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getAdmins(offset?: number | null, limit?: number | null, username?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Admin>>>;
    /**
     * Retrieve the current authenticated admin.
     * @summary Get Current Admin
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCurrentAdmin(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Admin>>;
    /**
     * Modify an existing admin\'s details.
     * @summary Modify Admin
     * @param {string} username
     * @param {AdminModify} adminModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyAdmin(username: string, adminModify: AdminModify, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Admin>>;
    /**
     * Remove an admin from the database.
     * @summary Remove Admin
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeAdmin(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Resets usage of admin.
     * @summary Reset Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetAdminUsage(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Admin>>;
};
/**
 * AdminApi - factory interface
 * @export
 */
declare const AdminApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Activate all disabled users under a specific admin
     * @summary Activate All Disabled Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activateAllDisabledUsers(username: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Authenticate an admin and issue a token.
     * @summary Admin Token
     * @param {string} username
     * @param {string} password
     * @param {string | null} [grantType]
     * @param {string} [scope]
     * @param {string | null} [clientId]
     * @param {string | null} [clientSecret]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    adminToken(username: string, password: string, grantType?: string | null, scope?: string, clientId?: string | null, clientSecret?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Token>;
    /**
     * Create a new admin if the current admin has sudo privileges.
     * @summary Create Admin
     * @param {AdminCreate} adminCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createAdmin(adminCreate: AdminCreate, options?: RawAxiosRequestConfig): AxiosPromise<Admin>;
    /**
     * Disable all active users under a specific admin
     * @summary Disable All Active Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    disableAllActiveUsers(username: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Retrieve the usage of given admin.
     * @summary Get Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getAdminUsage(username: string, options?: RawAxiosRequestConfig): AxiosPromise<number>;
    /**
     * Fetch a list of admins with optional filters for pagination and username.
     * @summary Get Admins
     * @param {number | null} [offset]
     * @param {number | null} [limit]
     * @param {string | null} [username]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getAdmins(offset?: number | null, limit?: number | null, username?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<Admin>>;
    /**
     * Retrieve the current authenticated admin.
     * @summary Get Current Admin
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCurrentAdmin(options?: RawAxiosRequestConfig): AxiosPromise<Admin>;
    /**
     * Modify an existing admin\'s details.
     * @summary Modify Admin
     * @param {string} username
     * @param {AdminModify} adminModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyAdmin(username: string, adminModify: AdminModify, options?: RawAxiosRequestConfig): AxiosPromise<Admin>;
    /**
     * Remove an admin from the database.
     * @summary Remove Admin
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeAdmin(username: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Resets usage of admin.
     * @summary Reset Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetAdminUsage(username: string, options?: RawAxiosRequestConfig): AxiosPromise<Admin>;
};
/**
 * AdminApi - object-oriented interface
 * @export
 * @class AdminApi
 * @extends {BaseAPI}
 */
declare class AdminApi extends BaseAPI {
    /**
     * Activate all disabled users under a specific admin
     * @summary Activate All Disabled Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    activateAllDisabledUsers(username: string, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Authenticate an admin and issue a token.
     * @summary Admin Token
     * @param {string} username
     * @param {string} password
     * @param {string | null} [grantType]
     * @param {string} [scope]
     * @param {string | null} [clientId]
     * @param {string | null} [clientSecret]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    adminToken(username: string, password: string, grantType?: string | null, scope?: string, clientId?: string | null, clientSecret?: string | null, options?: RawAxiosRequestConfig): Promise<Token>;
    /**
     * Create a new admin if the current admin has sudo privileges.
     * @summary Create Admin
     * @param {AdminCreate} adminCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    createAdmin(adminCreate: AdminCreate, options?: RawAxiosRequestConfig): Promise<Admin>;
    /**
     * Disable all active users under a specific admin
     * @summary Disable All Active Users
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    disableAllActiveUsers(username: string, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Retrieve the usage of given admin.
     * @summary Get Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    getAdminUsage(username: string, options?: RawAxiosRequestConfig): Promise<number>;
    /**
     * Fetch a list of admins with optional filters for pagination and username.
     * @summary Get Admins
     * @param {number | null} [offset]
     * @param {number | null} [limit]
     * @param {string | null} [username]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    getAdmins(offset?: number | null, limit?: number | null, username?: string | null, options?: RawAxiosRequestConfig): Promise<Admin[]>;
    /**
     * Retrieve the current authenticated admin.
     * @summary Get Current Admin
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    getCurrentAdmin(options?: RawAxiosRequestConfig): Promise<Admin>;
    /**
     * Modify an existing admin\'s details.
     * @summary Modify Admin
     * @param {string} username
     * @param {AdminModify} adminModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    modifyAdmin(username: string, adminModify: AdminModify, options?: RawAxiosRequestConfig): Promise<Admin>;
    /**
     * Remove an admin from the database.
     * @summary Remove Admin
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    removeAdmin(username: string, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Resets usage of admin.
     * @summary Reset Admin Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    resetAdminUsage(username: string, options?: RawAxiosRequestConfig): Promise<Admin>;
}
/**
 * CoreApi - axios parameter creator
 * @export
 */
declare const CoreApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Get the current core configuration.
     * @summary Get Core Config
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCoreConfig: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve core statistics such as version and uptime.
     * @summary Get Core Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCoreStats: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Modify the core configuration and restart the core.
     * @summary Modify Core Config
     * @param {object} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyCoreConfig: (body: object, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Restart the core and all connected nodes.
     * @summary Restart Core
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    restartCore: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * CoreApi - functional programming interface
 * @export
 */
declare const CoreApiFp: (configuration?: Configuration) => {
    /**
     * Get the current core configuration.
     * @summary Get Core Config
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCoreConfig(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<object>>;
    /**
     * Retrieve core statistics such as version and uptime.
     * @summary Get Core Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCoreStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CoreStats>>;
    /**
     * Modify the core configuration and restart the core.
     * @summary Modify Core Config
     * @param {object} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyCoreConfig(body: object, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<object>>;
    /**
     * Restart the core and all connected nodes.
     * @summary Restart Core
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    restartCore(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
};
/**
 * CoreApi - factory interface
 * @export
 */
declare const CoreApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Get the current core configuration.
     * @summary Get Core Config
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCoreConfig(options?: RawAxiosRequestConfig): AxiosPromise<object>;
    /**
     * Retrieve core statistics such as version and uptime.
     * @summary Get Core Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getCoreStats(options?: RawAxiosRequestConfig): AxiosPromise<CoreStats>;
    /**
     * Modify the core configuration and restart the core.
     * @summary Modify Core Config
     * @param {object} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyCoreConfig(body: object, options?: RawAxiosRequestConfig): AxiosPromise<object>;
    /**
     * Restart the core and all connected nodes.
     * @summary Restart Core
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    restartCore(options?: RawAxiosRequestConfig): AxiosPromise<any>;
};
/**
 * CoreApi - object-oriented interface
 * @export
 * @class CoreApi
 * @extends {BaseAPI}
 */
declare class CoreApi extends BaseAPI {
    /**
     * Get the current core configuration.
     * @summary Get Core Config
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CoreApi
     */
    getCoreConfig(options?: RawAxiosRequestConfig): Promise<object>;
    /**
     * Retrieve core statistics such as version and uptime.
     * @summary Get Core Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CoreApi
     */
    getCoreStats(options?: RawAxiosRequestConfig): Promise<CoreStats>;
    /**
     * Modify the core configuration and restart the core.
     * @summary Modify Core Config
     * @param {object} body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CoreApi
     */
    modifyCoreConfig(body: object, options?: RawAxiosRequestConfig): Promise<object>;
    /**
     * Restart the core and all connected nodes.
     * @summary Restart Core
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CoreApi
     */
    restartCore(options?: RawAxiosRequestConfig): Promise<any>;
}
/**
 * DefaultApi - axios parameter creator
 * @export
 */
declare const DefaultApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     *
     * @summary Base
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    base: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * DefaultApi - functional programming interface
 * @export
 */
declare const DefaultApiFp: (configuration?: Configuration) => {
    /**
     *
     * @summary Base
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    base(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>>;
};
/**
 * DefaultApi - factory interface
 * @export
 */
declare const DefaultApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     *
     * @summary Base
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    base(options?: RawAxiosRequestConfig): AxiosPromise<string>;
};
/**
 * DefaultApi - object-oriented interface
 * @export
 * @class DefaultApi
 * @extends {BaseAPI}
 */
declare class DefaultApi extends BaseAPI {
    /**
     *
     * @summary Base
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DefaultApi
     */
    base(options?: RawAxiosRequestConfig): Promise<string>;
}
/**
 * NodeApi - axios parameter creator
 * @export
 */
declare const NodeApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Add a new node to the database and optionally add it as a host.
     * @summary Add Node
     * @param {NodeCreate} nodeCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addNode: (nodeCreate: NodeCreate, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve details of a specific node by its ID.
     * @summary Get Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNode: (nodeId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve the current node settings, including TLS certificate.
     * @summary Get Node Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNodeSettings: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve a list of all nodes. Accessible only to sudo admins.
     * @summary Get Nodes
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNodes: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve usage statistics for nodes within a specified date range.
     * @summary Get Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsage: (start?: string, end?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Update a node\'s details. Only accessible to sudo admins.
     * @summary Modify Node
     * @param {number} nodeId
     * @param {NodeModify} nodeModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyNode: (nodeId: number, nodeModify: NodeModify, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Trigger a reconnection for the specified node. Only accessible to sudo admins.
     * @summary Reconnect Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    reconnectNode: (nodeId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Delete a node and remove it from xray in the background.
     * @summary Remove Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeNode: (nodeId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * NodeApi - functional programming interface
 * @export
 */
declare const NodeApiFp: (configuration?: Configuration) => {
    /**
     * Add a new node to the database and optionally add it as a host.
     * @summary Add Node
     * @param {NodeCreate} nodeCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addNode(nodeCreate: NodeCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NodeResponse>>;
    /**
     * Retrieve details of a specific node by its ID.
     * @summary Get Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNode(nodeId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NodeResponse>>;
    /**
     * Retrieve the current node settings, including TLS certificate.
     * @summary Get Node Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNodeSettings(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NodeSettings>>;
    /**
     * Retrieve a list of all nodes. Accessible only to sudo admins.
     * @summary Get Nodes
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNodes(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<NodeResponse>>>;
    /**
     * Retrieve usage statistics for nodes within a specified date range.
     * @summary Get Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsage(start?: string, end?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NodesUsageResponse>>;
    /**
     * Update a node\'s details. Only accessible to sudo admins.
     * @summary Modify Node
     * @param {number} nodeId
     * @param {NodeModify} nodeModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyNode(nodeId: number, nodeModify: NodeModify, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NodeResponse>>;
    /**
     * Trigger a reconnection for the specified node. Only accessible to sudo admins.
     * @summary Reconnect Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    reconnectNode(nodeId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Delete a node and remove it from xray in the background.
     * @summary Remove Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeNode(nodeId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
};
/**
 * NodeApi - factory interface
 * @export
 */
declare const NodeApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Add a new node to the database and optionally add it as a host.
     * @summary Add Node
     * @param {NodeCreate} nodeCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addNode(nodeCreate: NodeCreate, options?: RawAxiosRequestConfig): AxiosPromise<NodeResponse>;
    /**
     * Retrieve details of a specific node by its ID.
     * @summary Get Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNode(nodeId: number, options?: RawAxiosRequestConfig): AxiosPromise<NodeResponse>;
    /**
     * Retrieve the current node settings, including TLS certificate.
     * @summary Get Node Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNodeSettings(options?: RawAxiosRequestConfig): AxiosPromise<NodeSettings>;
    /**
     * Retrieve a list of all nodes. Accessible only to sudo admins.
     * @summary Get Nodes
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getNodes(options?: RawAxiosRequestConfig): AxiosPromise<Array<NodeResponse>>;
    /**
     * Retrieve usage statistics for nodes within a specified date range.
     * @summary Get Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsage(start?: string, end?: string, options?: RawAxiosRequestConfig): AxiosPromise<NodesUsageResponse>;
    /**
     * Update a node\'s details. Only accessible to sudo admins.
     * @summary Modify Node
     * @param {number} nodeId
     * @param {NodeModify} nodeModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyNode(nodeId: number, nodeModify: NodeModify, options?: RawAxiosRequestConfig): AxiosPromise<NodeResponse>;
    /**
     * Trigger a reconnection for the specified node. Only accessible to sudo admins.
     * @summary Reconnect Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    reconnectNode(nodeId: number, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Delete a node and remove it from xray in the background.
     * @summary Remove Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeNode(nodeId: number, options?: RawAxiosRequestConfig): AxiosPromise<any>;
};
/**
 * NodeApi - object-oriented interface
 * @export
 * @class NodeApi
 * @extends {BaseAPI}
 */
declare class NodeApi extends BaseAPI {
    /**
     * Add a new node to the database and optionally add it as a host.
     * @summary Add Node
     * @param {NodeCreate} nodeCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    addNode(nodeCreate: NodeCreate, options?: RawAxiosRequestConfig): Promise<NodeResponse>;
    /**
     * Retrieve details of a specific node by its ID.
     * @summary Get Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    getNode(nodeId: number, options?: RawAxiosRequestConfig): Promise<NodeResponse>;
    /**
     * Retrieve the current node settings, including TLS certificate.
     * @summary Get Node Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    getNodeSettings(options?: RawAxiosRequestConfig): Promise<NodeSettings>;
    /**
     * Retrieve a list of all nodes. Accessible only to sudo admins.
     * @summary Get Nodes
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    getNodes(options?: RawAxiosRequestConfig): Promise<NodeResponse[]>;
    /**
     * Retrieve usage statistics for nodes within a specified date range.
     * @summary Get Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    getUsage(start?: string, end?: string, options?: RawAxiosRequestConfig): Promise<NodesUsageResponse>;
    /**
     * Update a node\'s details. Only accessible to sudo admins.
     * @summary Modify Node
     * @param {number} nodeId
     * @param {NodeModify} nodeModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    modifyNode(nodeId: number, nodeModify: NodeModify, options?: RawAxiosRequestConfig): Promise<NodeResponse>;
    /**
     * Trigger a reconnection for the specified node. Only accessible to sudo admins.
     * @summary Reconnect Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    reconnectNode(nodeId: number, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Delete a node and remove it from xray in the background.
     * @summary Remove Node
     * @param {number} nodeId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NodeApi
     */
    removeNode(nodeId: number, options?: RawAxiosRequestConfig): Promise<any>;
}
/**
 * SubscriptionApi - axios parameter creator
 * @export
 */
declare const SubscriptionApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Fetches the usage statistics for the user within a specified date range.
     * @summary User Get Usage
     * @param {string} token
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userGetUsage: (token: string, start?: string, end?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Provides a subscription link based on the user agent (Clash, V2Ray, etc.).
     * @summary User Subscription
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscription: (token: string, userAgent?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieves detailed information about the user\'s subscription.
     * @summary User Subscription Info
     * @param {string} token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscriptionInfo: (token: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Provides a subscription link based on the specified client type (e.g., Clash, V2Ray).
     * @summary User Subscription With Client Type
     * @param {string} clientType
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscriptionWithClientType: (clientType: string, token: string, userAgent?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * SubscriptionApi - functional programming interface
 * @export
 */
declare const SubscriptionApiFp: (configuration?: Configuration) => {
    /**
     * Fetches the usage statistics for the user within a specified date range.
     * @summary User Get Usage
     * @param {string} token
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userGetUsage(token: string, start?: string, end?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Provides a subscription link based on the user agent (Clash, V2Ray, etc.).
     * @summary User Subscription
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscription(token: string, userAgent?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Retrieves detailed information about the user\'s subscription.
     * @summary User Subscription Info
     * @param {string} token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscriptionInfo(token: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionUserResponse>>;
    /**
     * Provides a subscription link based on the specified client type (e.g., Clash, V2Ray).
     * @summary User Subscription With Client Type
     * @param {string} clientType
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscriptionWithClientType(clientType: string, token: string, userAgent?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
};
/**
 * SubscriptionApi - factory interface
 * @export
 */
declare const SubscriptionApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Fetches the usage statistics for the user within a specified date range.
     * @summary User Get Usage
     * @param {string} token
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userGetUsage(token: string, start?: string, end?: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Provides a subscription link based on the user agent (Clash, V2Ray, etc.).
     * @summary User Subscription
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscription(token: string, userAgent?: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Retrieves detailed information about the user\'s subscription.
     * @summary User Subscription Info
     * @param {string} token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscriptionInfo(token: string, options?: RawAxiosRequestConfig): AxiosPromise<SubscriptionUserResponse>;
    /**
     * Provides a subscription link based on the specified client type (e.g., Clash, V2Ray).
     * @summary User Subscription With Client Type
     * @param {string} clientType
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    userSubscriptionWithClientType(clientType: string, token: string, userAgent?: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
};
/**
 * SubscriptionApi - object-oriented interface
 * @export
 * @class SubscriptionApi
 * @extends {BaseAPI}
 */
declare class SubscriptionApi extends BaseAPI {
    /**
     * Fetches the usage statistics for the user within a specified date range.
     * @summary User Get Usage
     * @param {string} token
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */
    userGetUsage(token: string, start?: string, end?: string, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Provides a subscription link based on the user agent (Clash, V2Ray, etc.).
     * @summary User Subscription
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */
    userSubscription(token: string, userAgent?: string, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Retrieves detailed information about the user\'s subscription.
     * @summary User Subscription Info
     * @param {string} token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */
    userSubscriptionInfo(token: string, options?: RawAxiosRequestConfig): Promise<SubscriptionUserResponse>;
    /**
     * Provides a subscription link based on the specified client type (e.g., Clash, V2Ray).
     * @summary User Subscription With Client Type
     * @param {string} clientType
     * @param {string} token
     * @param {string} [userAgent]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */
    userSubscriptionWithClientType(clientType: string, token: string, userAgent?: string, options?: RawAxiosRequestConfig): Promise<any>;
}
/**
 * SystemApi - axios parameter creator
 * @export
 */
declare const SystemApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Get a list of proxy hosts grouped by inbound tag.
     * @summary Get Hosts
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getHosts: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve inbound configurations grouped by protocol.
     * @summary Get Inbounds
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getInbounds: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Fetch system stats including memory, CPU, and user metrics.
     * @summary Get System Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getSystemStats: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Modify proxy hosts and update the configuration.
     * @summary Modify Hosts
     * @param {{ [key: string]: Array<ProxyHost>; }} requestBody
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyHosts: (requestBody: {
        [key: string]: Array<ProxyHost>;
    }, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * SystemApi - functional programming interface
 * @export
 */
declare const SystemApiFp: (configuration?: Configuration) => {
    /**
     * Get a list of proxy hosts grouped by inbound tag.
     * @summary Get Hosts
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getHosts(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{
        [key: string]: Array<ProxyHost>;
    }>>;
    /**
     * Retrieve inbound configurations grouped by protocol.
     * @summary Get Inbounds
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getInbounds(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{
        [key: string]: Array<ProxyInbound>;
    }>>;
    /**
     * Fetch system stats including memory, CPU, and user metrics.
     * @summary Get System Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getSystemStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SystemStats>>;
    /**
     * Modify proxy hosts and update the configuration.
     * @summary Modify Hosts
     * @param {{ [key: string]: Array<ProxyHost>; }} requestBody
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyHosts(requestBody: {
        [key: string]: Array<ProxyHost>;
    }, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{
        [key: string]: Array<ProxyHost>;
    }>>;
};
/**
 * SystemApi - factory interface
 * @export
 */
declare const SystemApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Get a list of proxy hosts grouped by inbound tag.
     * @summary Get Hosts
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getHosts(options?: RawAxiosRequestConfig): AxiosPromise<{
        [key: string]: Array<ProxyHost>;
    }>;
    /**
     * Retrieve inbound configurations grouped by protocol.
     * @summary Get Inbounds
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getInbounds(options?: RawAxiosRequestConfig): AxiosPromise<{
        [key: string]: Array<ProxyInbound>;
    }>;
    /**
     * Fetch system stats including memory, CPU, and user metrics.
     * @summary Get System Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getSystemStats(options?: RawAxiosRequestConfig): AxiosPromise<SystemStats>;
    /**
     * Modify proxy hosts and update the configuration.
     * @summary Modify Hosts
     * @param {{ [key: string]: Array<ProxyHost>; }} requestBody
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyHosts(requestBody: {
        [key: string]: Array<ProxyHost>;
    }, options?: RawAxiosRequestConfig): AxiosPromise<{
        [key: string]: Array<ProxyHost>;
    }>;
};
/**
 * SystemApi - object-oriented interface
 * @export
 * @class SystemApi
 * @extends {BaseAPI}
 */
declare class SystemApi extends BaseAPI {
    /**
     * Get a list of proxy hosts grouped by inbound tag.
     * @summary Get Hosts
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SystemApi
     */
    getHosts(options?: RawAxiosRequestConfig): Promise<{
        [key: string]: ProxyHost[];
    }>;
    /**
     * Retrieve inbound configurations grouped by protocol.
     * @summary Get Inbounds
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SystemApi
     */
    getInbounds(options?: RawAxiosRequestConfig): Promise<{
        [key: string]: ProxyInbound[];
    }>;
    /**
     * Fetch system stats including memory, CPU, and user metrics.
     * @summary Get System Stats
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SystemApi
     */
    getSystemStats(options?: RawAxiosRequestConfig): Promise<SystemStats>;
    /**
     * Modify proxy hosts and update the configuration.
     * @summary Modify Hosts
     * @param {{ [key: string]: Array<ProxyHost>; }} requestBody
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SystemApi
     */
    modifyHosts(requestBody: {
        [key: string]: Array<ProxyHost>;
    }, options?: RawAxiosRequestConfig): Promise<{
        [key: string]: ProxyHost[];
    }>;
}
/**
 * UserApi - axios parameter creator
 * @export
 */
declare const UserApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Reset user by next plan
     * @summary Active Next Plan
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activeNextPlan: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Add a new user  - **username**: 3 to 32 characters, can include a-z, 0-9, and underscores. - **status**: User\'s status, defaults to `active`. Special rules if `on_hold`. - **expire**: UTC timestamp for account expiration. Use `0` for unlimited. - **data_limit**: Max data usage in bytes (e.g., `1073741824` for 1GB). `0` means unlimited. - **data_limit_reset_strategy**: Defines how/if data limit resets. `no_reset` means it never resets. - **proxies**: Dictionary of protocol settings (e.g., `vmess`, `vless`). - **inbounds**: Dictionary of protocol tags to specify inbound connections. - **note**: Optional text field for additional user information or notes. - **on_hold_timeout**: UTC timestamp when `on_hold` status should start or end. - **on_hold_expire_duration**: Duration (in seconds) for how long the user should stay in `on_hold` status. - **next_plan**: Next user plan (resets after use).
     * @summary Add User
     * @param {UserCreate} userCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addUser: (userCreate: UserCreate, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Delete users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided
     * @summary Delete Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteExpiredUsers: (expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided for filtering - If both are omitted, returns all expired users
     * @summary Get Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getExpiredUsers: (expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get user information
     * @summary Get User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUser: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get users usage
     * @summary Get User Usage
     * @param {string} username
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserUsage: (username: string, start?: string, end?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get all users
     * @summary Get Users
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {Array<string>} [username]
     * @param {string | null} [search]
     * @param {Array<string> | null} [admin]
     * @param {UserStatus} [status]
     * @param {string} [sort]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsers: (offset?: number, limit?: number, username?: Array<string>, search?: string | null, admin?: Array<string> | null, status?: UserStatus, sort?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get all users usage
     * @summary Get Users Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {Array<string> | null} [admin]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsersUsage: (start?: string, end?: string, admin?: Array<string> | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Modify an existing user  - **username**: Cannot be changed. Used to identify the user. - **status**: User\'s new status. Can be \'active\', \'disabled\', \'on_hold\', \'limited\', or \'expired\'. - **expire**: UTC timestamp for new account expiration. Set to `0` for unlimited, `null` for no change. - **data_limit**: New max data usage in bytes (e.g., `1073741824` for 1GB). Set to `0` for unlimited, `null` for no change. - **data_limit_reset_strategy**: New strategy for data limit reset. Options include \'daily\', \'weekly\', \'monthly\', or \'no_reset\'. - **proxies**: Dictionary of new protocol settings (e.g., `vmess`, `vless`). Empty dictionary means no change. - **inbounds**: Dictionary of new protocol tags to specify inbound connections. Empty dictionary means no change. - **note**: New optional text for additional user information or notes. `null` means no change. - **on_hold_timeout**: New UTC timestamp for when `on_hold` status should start or end. Only applicable if status is changed to \'on_hold\'. - **on_hold_expire_duration**: New duration (in seconds) for how long the user should stay in `on_hold` status. Only applicable if status is changed to \'on_hold\'. - **next_plan**: Next user plan (resets after use).  Note: Fields set to `null` or omitted will not be modified.
     * @summary Modify User
     * @param {string} username
     * @param {UserModify} userModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyUser: (username: string, userModify: UserModify, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Remove a user
     * @summary Remove User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeUser: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Reset user data usage
     * @summary Reset User Data Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetUserDataUsage: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Reset all users data usage
     * @summary Reset Users Data Usage
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetUsersDataUsage: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Revoke users subscription (Subscription link and proxies)
     * @summary Revoke User Subscription
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    revokeUserSubscription: (username: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Set a new owner (admin) for a user.
     * @summary Set Owner
     * @param {string} username
     * @param {string} adminUsername
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    setOwner: (username: string, adminUsername: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * UserApi - functional programming interface
 * @export
 */
declare const UserApiFp: (configuration?: Configuration) => {
    /**
     * Reset user by next plan
     * @summary Active Next Plan
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activeNextPlan(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
    /**
     * Add a new user  - **username**: 3 to 32 characters, can include a-z, 0-9, and underscores. - **status**: User\'s status, defaults to `active`. Special rules if `on_hold`. - **expire**: UTC timestamp for account expiration. Use `0` for unlimited. - **data_limit**: Max data usage in bytes (e.g., `1073741824` for 1GB). `0` means unlimited. - **data_limit_reset_strategy**: Defines how/if data limit resets. `no_reset` means it never resets. - **proxies**: Dictionary of protocol settings (e.g., `vmess`, `vless`). - **inbounds**: Dictionary of protocol tags to specify inbound connections. - **note**: Optional text field for additional user information or notes. - **on_hold_timeout**: UTC timestamp when `on_hold` status should start or end. - **on_hold_expire_duration**: Duration (in seconds) for how long the user should stay in `on_hold` status. - **next_plan**: Next user plan (resets after use).
     * @summary Add User
     * @param {UserCreate} userCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addUser(userCreate: UserCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
    /**
     * Delete users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided
     * @summary Delete Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteExpiredUsers(expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<string | null>>>;
    /**
     * Get users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided for filtering - If both are omitted, returns all expired users
     * @summary Get Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getExpiredUsers(expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<string | null>>>;
    /**
     * Get user information
     * @summary Get User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUser(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
    /**
     * Get users usage
     * @summary Get User Usage
     * @param {string} username
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserUsage(username: string, start?: string, end?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserUsagesResponse>>;
    /**
     * Get all users
     * @summary Get Users
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {Array<string>} [username]
     * @param {string | null} [search]
     * @param {Array<string> | null} [admin]
     * @param {UserStatus} [status]
     * @param {string} [sort]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsers(offset?: number, limit?: number, username?: Array<string>, search?: string | null, admin?: Array<string> | null, status?: UserStatus, sort?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UsersResponse>>;
    /**
     * Get all users usage
     * @summary Get Users Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {Array<string> | null} [admin]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsersUsage(start?: string, end?: string, admin?: Array<string> | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UsersUsagesResponse>>;
    /**
     * Modify an existing user  - **username**: Cannot be changed. Used to identify the user. - **status**: User\'s new status. Can be \'active\', \'disabled\', \'on_hold\', \'limited\', or \'expired\'. - **expire**: UTC timestamp for new account expiration. Set to `0` for unlimited, `null` for no change. - **data_limit**: New max data usage in bytes (e.g., `1073741824` for 1GB). Set to `0` for unlimited, `null` for no change. - **data_limit_reset_strategy**: New strategy for data limit reset. Options include \'daily\', \'weekly\', \'monthly\', or \'no_reset\'. - **proxies**: Dictionary of new protocol settings (e.g., `vmess`, `vless`). Empty dictionary means no change. - **inbounds**: Dictionary of new protocol tags to specify inbound connections. Empty dictionary means no change. - **note**: New optional text for additional user information or notes. `null` means no change. - **on_hold_timeout**: New UTC timestamp for when `on_hold` status should start or end. Only applicable if status is changed to \'on_hold\'. - **on_hold_expire_duration**: New duration (in seconds) for how long the user should stay in `on_hold` status. Only applicable if status is changed to \'on_hold\'. - **next_plan**: Next user plan (resets after use).  Note: Fields set to `null` or omitted will not be modified.
     * @summary Modify User
     * @param {string} username
     * @param {UserModify} userModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyUser(username: string, userModify: UserModify, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
    /**
     * Remove a user
     * @summary Remove User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeUser(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Reset user data usage
     * @summary Reset User Data Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetUserDataUsage(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
    /**
     * Reset all users data usage
     * @summary Reset Users Data Usage
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetUsersDataUsage(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
     * Revoke users subscription (Subscription link and proxies)
     * @summary Revoke User Subscription
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    revokeUserSubscription(username: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
    /**
     * Set a new owner (admin) for a user.
     * @summary Set Owner
     * @param {string} username
     * @param {string} adminUsername
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    setOwner(username: string, adminUsername: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserResponse>>;
};
/**
 * UserApi - factory interface
 * @export
 */
declare const UserApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Reset user by next plan
     * @summary Active Next Plan
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    activeNextPlan(username: string, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
    /**
     * Add a new user  - **username**: 3 to 32 characters, can include a-z, 0-9, and underscores. - **status**: User\'s status, defaults to `active`. Special rules if `on_hold`. - **expire**: UTC timestamp for account expiration. Use `0` for unlimited. - **data_limit**: Max data usage in bytes (e.g., `1073741824` for 1GB). `0` means unlimited. - **data_limit_reset_strategy**: Defines how/if data limit resets. `no_reset` means it never resets. - **proxies**: Dictionary of protocol settings (e.g., `vmess`, `vless`). - **inbounds**: Dictionary of protocol tags to specify inbound connections. - **note**: Optional text field for additional user information or notes. - **on_hold_timeout**: UTC timestamp when `on_hold` status should start or end. - **on_hold_expire_duration**: Duration (in seconds) for how long the user should stay in `on_hold` status. - **next_plan**: Next user plan (resets after use).
     * @summary Add User
     * @param {UserCreate} userCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addUser(userCreate: UserCreate, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
    /**
     * Delete users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided
     * @summary Delete Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteExpiredUsers(expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<string | null>>;
    /**
     * Get users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided for filtering - If both are omitted, returns all expired users
     * @summary Get Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getExpiredUsers(expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<string | null>>;
    /**
     * Get user information
     * @summary Get User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUser(username: string, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
    /**
     * Get users usage
     * @summary Get User Usage
     * @param {string} username
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserUsage(username: string, start?: string, end?: string, options?: RawAxiosRequestConfig): AxiosPromise<UserUsagesResponse>;
    /**
     * Get all users
     * @summary Get Users
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {Array<string>} [username]
     * @param {string | null} [search]
     * @param {Array<string> | null} [admin]
     * @param {UserStatus} [status]
     * @param {string} [sort]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsers(offset?: number, limit?: number, username?: Array<string>, search?: string | null, admin?: Array<string> | null, status?: UserStatus, sort?: string, options?: RawAxiosRequestConfig): AxiosPromise<UsersResponse>;
    /**
     * Get all users usage
     * @summary Get Users Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {Array<string> | null} [admin]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUsersUsage(start?: string, end?: string, admin?: Array<string> | null, options?: RawAxiosRequestConfig): AxiosPromise<UsersUsagesResponse>;
    /**
     * Modify an existing user  - **username**: Cannot be changed. Used to identify the user. - **status**: User\'s new status. Can be \'active\', \'disabled\', \'on_hold\', \'limited\', or \'expired\'. - **expire**: UTC timestamp for new account expiration. Set to `0` for unlimited, `null` for no change. - **data_limit**: New max data usage in bytes (e.g., `1073741824` for 1GB). Set to `0` for unlimited, `null` for no change. - **data_limit_reset_strategy**: New strategy for data limit reset. Options include \'daily\', \'weekly\', \'monthly\', or \'no_reset\'. - **proxies**: Dictionary of new protocol settings (e.g., `vmess`, `vless`). Empty dictionary means no change. - **inbounds**: Dictionary of new protocol tags to specify inbound connections. Empty dictionary means no change. - **note**: New optional text for additional user information or notes. `null` means no change. - **on_hold_timeout**: New UTC timestamp for when `on_hold` status should start or end. Only applicable if status is changed to \'on_hold\'. - **on_hold_expire_duration**: New duration (in seconds) for how long the user should stay in `on_hold` status. Only applicable if status is changed to \'on_hold\'. - **next_plan**: Next user plan (resets after use).  Note: Fields set to `null` or omitted will not be modified.
     * @summary Modify User
     * @param {string} username
     * @param {UserModify} userModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyUser(username: string, userModify: UserModify, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
    /**
     * Remove a user
     * @summary Remove User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeUser(username: string, options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Reset user data usage
     * @summary Reset User Data Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetUserDataUsage(username: string, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
    /**
     * Reset all users data usage
     * @summary Reset Users Data Usage
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    resetUsersDataUsage(options?: RawAxiosRequestConfig): AxiosPromise<any>;
    /**
     * Revoke users subscription (Subscription link and proxies)
     * @summary Revoke User Subscription
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    revokeUserSubscription(username: string, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
    /**
     * Set a new owner (admin) for a user.
     * @summary Set Owner
     * @param {string} username
     * @param {string} adminUsername
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    setOwner(username: string, adminUsername: string, options?: RawAxiosRequestConfig): AxiosPromise<UserResponse>;
};
/**
 * UserApi - object-oriented interface
 * @export
 * @class UserApi
 * @extends {BaseAPI}
 */
declare class UserApi extends BaseAPI {
    /**
     * Reset user by next plan
     * @summary Active Next Plan
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    activeNextPlan(username: string, options?: RawAxiosRequestConfig): Promise<UserResponse>;
    /**
     * Add a new user  - **username**: 3 to 32 characters, can include a-z, 0-9, and underscores. - **status**: User\'s status, defaults to `active`. Special rules if `on_hold`. - **expire**: UTC timestamp for account expiration. Use `0` for unlimited. - **data_limit**: Max data usage in bytes (e.g., `1073741824` for 1GB). `0` means unlimited. - **data_limit_reset_strategy**: Defines how/if data limit resets. `no_reset` means it never resets. - **proxies**: Dictionary of protocol settings (e.g., `vmess`, `vless`). - **inbounds**: Dictionary of protocol tags to specify inbound connections. - **note**: Optional text field for additional user information or notes. - **on_hold_timeout**: UTC timestamp when `on_hold` status should start or end. - **on_hold_expire_duration**: Duration (in seconds) for how long the user should stay in `on_hold` status. - **next_plan**: Next user plan (resets after use).
     * @summary Add User
     * @param {UserCreate} userCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    addUser(userCreate: UserCreate, options?: RawAxiosRequestConfig): Promise<UserResponse>;
    /**
     * Delete users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided
     * @summary Delete Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    deleteExpiredUsers(expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig): Promise<(string | null)[]>;
    /**
     * Get users who have expired within the specified date range.  - **expired_after** UTC datetime (optional) - **expired_before** UTC datetime (optional) - At least one of expired_after or expired_before must be provided for filtering - If both are omitted, returns all expired users
     * @summary Get Expired Users
     * @param {string | null} [expiredAfter]
     * @param {string | null} [expiredBefore]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    getExpiredUsers(expiredAfter?: string | null, expiredBefore?: string | null, options?: RawAxiosRequestConfig): Promise<(string | null)[]>;
    /**
     * Get user information
     * @summary Get User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    getUser(username: string, options?: RawAxiosRequestConfig): Promise<UserResponse>;
    /**
     * Get users usage
     * @summary Get User Usage
     * @param {string} username
     * @param {string} [start]
     * @param {string} [end]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    getUserUsage(username: string, start?: string, end?: string, options?: RawAxiosRequestConfig): Promise<UserUsagesResponse>;
    /**
     * Get all users
     * @summary Get Users
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {Array<string>} [username]
     * @param {string | null} [search]
     * @param {Array<string> | null} [admin]
     * @param {UserStatus} [status]
     * @param {string} [sort]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    getUsers(offset?: number, limit?: number, username?: Array<string>, search?: string | null, admin?: Array<string> | null, status?: UserStatus, sort?: string, options?: RawAxiosRequestConfig): Promise<UsersResponse>;
    /**
     * Get all users usage
     * @summary Get Users Usage
     * @param {string} [start]
     * @param {string} [end]
     * @param {Array<string> | null} [admin]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    getUsersUsage(start?: string, end?: string, admin?: Array<string> | null, options?: RawAxiosRequestConfig): Promise<UsersUsagesResponse>;
    /**
     * Modify an existing user  - **username**: Cannot be changed. Used to identify the user. - **status**: User\'s new status. Can be \'active\', \'disabled\', \'on_hold\', \'limited\', or \'expired\'. - **expire**: UTC timestamp for new account expiration. Set to `0` for unlimited, `null` for no change. - **data_limit**: New max data usage in bytes (e.g., `1073741824` for 1GB). Set to `0` for unlimited, `null` for no change. - **data_limit_reset_strategy**: New strategy for data limit reset. Options include \'daily\', \'weekly\', \'monthly\', or \'no_reset\'. - **proxies**: Dictionary of new protocol settings (e.g., `vmess`, `vless`). Empty dictionary means no change. - **inbounds**: Dictionary of new protocol tags to specify inbound connections. Empty dictionary means no change. - **note**: New optional text for additional user information or notes. `null` means no change. - **on_hold_timeout**: New UTC timestamp for when `on_hold` status should start or end. Only applicable if status is changed to \'on_hold\'. - **on_hold_expire_duration**: New duration (in seconds) for how long the user should stay in `on_hold` status. Only applicable if status is changed to \'on_hold\'. - **next_plan**: Next user plan (resets after use).  Note: Fields set to `null` or omitted will not be modified.
     * @summary Modify User
     * @param {string} username
     * @param {UserModify} userModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    modifyUser(username: string, userModify: UserModify, options?: RawAxiosRequestConfig): Promise<UserResponse>;
    /**
     * Remove a user
     * @summary Remove User
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    removeUser(username: string, options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Reset user data usage
     * @summary Reset User Data Usage
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    resetUserDataUsage(username: string, options?: RawAxiosRequestConfig): Promise<UserResponse>;
    /**
     * Reset all users data usage
     * @summary Reset Users Data Usage
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    resetUsersDataUsage(options?: RawAxiosRequestConfig): Promise<any>;
    /**
     * Revoke users subscription (Subscription link and proxies)
     * @summary Revoke User Subscription
     * @param {string} username
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    revokeUserSubscription(username: string, options?: RawAxiosRequestConfig): Promise<UserResponse>;
    /**
     * Set a new owner (admin) for a user.
     * @summary Set Owner
     * @param {string} username
     * @param {string} adminUsername
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    setOwner(username: string, adminUsername: string, options?: RawAxiosRequestConfig): Promise<UserResponse>;
}
/**
 * UserTemplateApi - axios parameter creator
 * @export
 */
declare const UserTemplateApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Add a new user template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Add User Template
     * @param {UserTemplateCreate} userTemplateCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addUserTemplate: (userTemplateCreate: UserTemplateCreate, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get User Template information with id
     * @summary Get User Template Endpoint
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserTemplateEndpoint: (templateId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get a list of User Templates with optional pagination
     * @summary Get User Templates
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserTemplates: (offset?: number, limit?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Modify User Template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Modify User Template
     * @param {number} templateId
     * @param {UserTemplateModify} userTemplateModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyUserTemplate: (templateId: number, userTemplateModify: UserTemplateModify, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Remove a User Template by its ID
     * @summary Remove User Template
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeUserTemplate: (templateId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * UserTemplateApi - functional programming interface
 * @export
 */
declare const UserTemplateApiFp: (configuration?: Configuration) => {
    /**
     * Add a new user template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Add User Template
     * @param {UserTemplateCreate} userTemplateCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addUserTemplate(userTemplateCreate: UserTemplateCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserTemplateResponse>>;
    /**
     * Get User Template information with id
     * @summary Get User Template Endpoint
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserTemplateEndpoint(templateId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserTemplateResponse>>;
    /**
     * Get a list of User Templates with optional pagination
     * @summary Get User Templates
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserTemplates(offset?: number, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<UserTemplateResponse>>>;
    /**
     * Modify User Template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Modify User Template
     * @param {number} templateId
     * @param {UserTemplateModify} userTemplateModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyUserTemplate(templateId: number, userTemplateModify: UserTemplateModify, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserTemplateResponse>>;
    /**
     * Remove a User Template by its ID
     * @summary Remove User Template
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeUserTemplate(templateId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
};
/**
 * UserTemplateApi - factory interface
 * @export
 */
declare const UserTemplateApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Add a new user template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Add User Template
     * @param {UserTemplateCreate} userTemplateCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    addUserTemplate(userTemplateCreate: UserTemplateCreate, options?: RawAxiosRequestConfig): AxiosPromise<UserTemplateResponse>;
    /**
     * Get User Template information with id
     * @summary Get User Template Endpoint
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserTemplateEndpoint(templateId: number, options?: RawAxiosRequestConfig): AxiosPromise<UserTemplateResponse>;
    /**
     * Get a list of User Templates with optional pagination
     * @summary Get User Templates
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getUserTemplates(offset?: number, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<UserTemplateResponse>>;
    /**
     * Modify User Template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Modify User Template
     * @param {number} templateId
     * @param {UserTemplateModify} userTemplateModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    modifyUserTemplate(templateId: number, userTemplateModify: UserTemplateModify, options?: RawAxiosRequestConfig): AxiosPromise<UserTemplateResponse>;
    /**
     * Remove a User Template by its ID
     * @summary Remove User Template
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    removeUserTemplate(templateId: number, options?: RawAxiosRequestConfig): AxiosPromise<any>;
};
/**
 * UserTemplateApi - object-oriented interface
 * @export
 * @class UserTemplateApi
 * @extends {BaseAPI}
 */
declare class UserTemplateApi extends BaseAPI {
    /**
     * Add a new user template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Add User Template
     * @param {UserTemplateCreate} userTemplateCreate
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserTemplateApi
     */
    addUserTemplate(userTemplateCreate: UserTemplateCreate, options?: RawAxiosRequestConfig): Promise<UserTemplateResponse>;
    /**
     * Get User Template information with id
     * @summary Get User Template Endpoint
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserTemplateApi
     */
    getUserTemplateEndpoint(templateId: number, options?: RawAxiosRequestConfig): Promise<UserTemplateResponse>;
    /**
     * Get a list of User Templates with optional pagination
     * @summary Get User Templates
     * @param {number} [offset]
     * @param {number} [limit]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserTemplateApi
     */
    getUserTemplates(offset?: number, limit?: number, options?: RawAxiosRequestConfig): Promise<UserTemplateResponse[]>;
    /**
     * Modify User Template  - **name** can be up to 64 characters - **data_limit** must be in bytes and larger or equal to 0 - **expire_duration** must be in seconds and larger or equat to 0 - **inbounds** dictionary of protocol:inbound_tags, empty means all inbounds
     * @summary Modify User Template
     * @param {number} templateId
     * @param {UserTemplateModify} userTemplateModify
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserTemplateApi
     */
    modifyUserTemplate(templateId: number, userTemplateModify: UserTemplateModify, options?: RawAxiosRequestConfig): Promise<UserTemplateResponse>;
    /**
     * Remove a User Template by its ID
     * @summary Remove User Template
     * @param {number} templateId
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserTemplateApi
     */
    removeUserTemplate(templateId: number, options?: RawAxiosRequestConfig): Promise<any>;
}

declare class AuthService {
    private configuration;
    private authPromise;
    constructor(configuration: Configuration);
    authenticate(username: string, password: string): Promise<void>;
    waitForAuth(): Promise<void>;
    retryAuth(): Promise<void>;
    get accessToken(): string;
    set accessToken(token: string);
}

type WebSocketEventMap = {
    open: Event;
    message: MessageEvent;
    close: CloseEvent;
    error: Event;
};

interface LogOptions {
    /** Interval for sending messages (in seconds) */
    interval?: number;
    /** Callback triggered when a message is received */
    onMessage: (data: WebSocketEventMap["message"]["data"]) => void;
    /** Callback triggered when a connection error occurs */
    onError?: (data: WebSocketEventMap["error"]) => void;
}
declare class LogsApi {
    private basePath;
    private authService;
    private activeConnections;
    private maxRetries;
    /**
     * Creates an API instance for handling logs via WebSocket.
     * @param basePath The base URL for WebSocket connections.
     * @param authService Authentication service for managing tokens.
     */
    constructor(basePath: string, authService: AuthService);
    /**
     * Ensures that an access token is available and refreshes it if necessary.
     * @private
     */
    private ensureAuthenticated;
    /**
     * Establishes a WebSocket connection to a specified endpoint.
     * @private
     * @param endpoint The API endpoint for the WebSocket connection.
     * @param options Connection options (callbacks, interval).
     * @param retryCount The number of retry attempts in case of failure (default is 0).
     * @returns A function to close the WebSocket connection.
     */
    private connect;
    /**
     * Connects to the core logs (`/api/core/logs`).
     * @param options Connection options (callbacks, interval).
     * @returns A function to close the WebSocket connection.
     */
    connectByCore(options: LogOptions): Promise<() => void>;
    /**
     * Connects to logs of a specific node (`/api/node/{nodeId}/logs`).
     * @param nodeId The ID of the node whose logs should be accessed.
     * @param options Connection options (callbacks, interval).
     * @returns A function to close the WebSocket connection.
     */
    connectByNode(nodeId: number | string, options: LogOptions): Promise<() => void>;
    /**
     * Closes all active WebSocket connections.
     */
    closeAllConnections(): void;
}

/**
 * Configuration interface for MarzbanSDK.
 *
 * @property {string} baseUrl - The base URL for the API.
 * @property {string} username - The username for authentication.
 * @property {string} password - The password for authentication.
 * @property {number} [retries] - Optional number of retries for failed requests.
 */
interface Config {
    baseUrl: string;
    username: string;
    password: string;
    retries?: number;
}
declare class MarzbanSDK {
    private client;
    private configuration;
    private authService;
    admin: AdminApi;
    core: CoreApi;
    node: NodeApi;
    user: UserApi;
    system: SystemApi;
    default: DefaultApi;
    subscription: SubscriptionApi;
    userTemplate: UserTemplateApi;
    logs: LogsApi;
    constructor(config: Config);
}

export { type Admin, AdminApi, AdminApiAxiosParamCreator, AdminApiFactory, AdminApiFp, type AdminCreate, type AdminModify, type Config, type Conflict, CoreApi, CoreApiAxiosParamCreator, CoreApiFactory, CoreApiFp, type CoreStats, DefaultApi, DefaultApiAxiosParamCreator, DefaultApiFactory, DefaultApiFp, type Forbidden, type HTTPException, type HTTPValidationError, type LogOptions, LogsApi, MarzbanSDK, type NextPlanModel, NodeApi, NodeApiAxiosParamCreator, NodeApiFactory, NodeApiFp, type NodeCreate, type NodeModify, type NodeResponse, type NodeSettings, NodeStatus, type NodeUsageResponse, type NodesUsageResponse, type NotFound, type Port, type ProxyHost, ProxyHostALPN, ProxyHostFingerprint, ProxyHostSecurity, type ProxyInbound, ProxyTypes, SubscriptionApi, SubscriptionApiAxiosParamCreator, SubscriptionApiFactory, SubscriptionApiFp, type SubscriptionUserResponse, SystemApi, SystemApiAxiosParamCreator, SystemApiFactory, SystemApiFp, type SystemStats, type Token, type Unauthorized, UserApi, UserApiAxiosParamCreator, UserApiFactory, UserApiFp, type UserCreate, UserDataLimitResetStrategy, type UserModify, type UserResponse, UserStatus, UserStatusCreate, UserStatusModify, UserTemplateApi, UserTemplateApiAxiosParamCreator, UserTemplateApiFactory, UserTemplateApiFp, type UserTemplateCreate, type UserTemplateModify, type UserTemplateResponse, type UserUsageResponse, type UserUsagesResponse, type UsersResponse, type UsersUsagesResponse, type ValidationError, type ValidationErrorLocInner };
