import { ProviderConfig, SubsciptionCacheItem, SupportProviderEnum } from '../types';
import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
export default abstract class Provider {
    name: string;
    readonly type: SupportProviderEnum;
    readonly config: ProviderConfig;
    supportGetSubscriptionUserInfo: boolean;
    passGatewayRequestUserAgent: boolean;
    protected constructor(name: string, config: ProviderConfig);
    static requestCacheableResource(url: string, options?: {
        requestUserAgent?: string;
    }): Promise<SubsciptionCacheItem>;
    determineRequestUserAgent(requestUserAgent?: string | undefined): string | undefined;
    get nextPort(): number;
    getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
    getNodeList: GetNodeListFunction;
}
