import { EventEmitter } from 'events'; import _ from 'lodash'; import { Environment } from 'nunjucks'; import { GetNodeListParams, PossibleProviderType } from '../provider'; import { ArtifactConfig, ArtifactConfigInput, CommandConfig, PossibleNodeConfigType, RemoteSnippet, SubscriptionUserinfo } from '../types'; export interface ArtifactOptions { readonly remoteSnippetList?: ReadonlyArray; readonly templateEngine?: Environment; } export type ExtendableRenderContext = Record; export declare class Artifact extends EventEmitter { surgioConfig: CommandConfig; private options; initProgress: number; artifact: ArtifactConfig; providerNameList: ReadonlyArray; nodeConfigListMap: Map>; providerMap: Map; nodeList: PossibleNodeConfigType[]; subscriptionUserInfo?: SubscriptionUserinfo; subscriptionUserInfoMap: Map; private customFilters; private netflixFilter; private youtubePremiumFilter; constructor(surgioConfig: CommandConfig, artifactConfig: ArtifactConfigInput, options?: ArtifactOptions); get isReady(): boolean; getRenderContext(extendRenderContext?: ExtendableRenderContext): { readonly netflixFilter: NonNullable<((nodeConfig: PossibleNodeConfigType) => boolean) | { readonly filter: (nodeList: ReadonlyArray) => ReadonlyArray; readonly supportSort: true; } | undefined>; readonly youtubePremiumFilter: NonNullable<((nodeConfig: PossibleNodeConfigType) => boolean) | { readonly filter: (nodeList: ReadonlyArray) => ReadonlyArray; readonly supportSort: true; } | undefined>; readonly customFilters: Record boolean) | { readonly filter: (nodeList: ReadonlyArray) => ReadonlyArray; readonly supportSort: true; }>; readonly customParams: Readonly>; readonly usFilter: import("../types").NodeFilterType; readonly hkFilter: import("../types").NodeFilterType; readonly japanFilter: import("../types").NodeFilterType; readonly koreaFilter: import("../types").NodeFilterType; readonly singaporeFilter: import("../types").NodeFilterType; readonly germanyFilter: import("../types").NodeFilterType; readonly taiwanFilter: import("../types").NodeFilterType; readonly chinaBackFilter: import("../types").NodeFilterType; readonly chinaOutFilter: import("../types").NodeFilterType; readonly shadowsocksFilter: import("../types").NodeFilterType; readonly shadowsocksrFilter: import("../types").NodeFilterType; readonly vmessFilter: import("../types").NodeFilterType; readonly v2rayFilter: import("../types").NodeFilterType; readonly snellFilter: import("../types").NodeFilterType; readonly tuicFilter: import("../types").NodeFilterType; readonly httpFilter: import("../types").NodeFilterType; readonly httpsFilter: import("../types").NodeFilterType; readonly trojanFilter: import("../types").NodeFilterType; readonly socks5Filter: import("../types").NodeFilterType; readonly wireguardFilter: import("../types").NodeFilterType; readonly hysteria2Filter: import("../types").NodeFilterType; readonly vlessFilter: import("../types").NodeFilterType; readonly anytlsFilter: import("../types").NodeFilterType; readonly tailscaleFilter: import("../types").NodeFilterType; readonly proxyTestUrl: string | undefined; readonly proxyTestInterval: number | undefined; readonly internetTestUrl: string | undefined; readonly internetTestInterval: number | undefined; readonly downloadUrl: string; readonly snippet: (filePath: string) => RemoteSnippet; readonly remoteSnippets: _.Dictionary; readonly nodeList: PossibleNodeConfigType[]; readonly provider: string; readonly providerName: string; readonly artifactName: string; readonly getDownloadUrl: (name: string) => string; readonly getUrl: (p: string) => string; readonly getNodeNames: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType, separator?: string) => string; readonly getClashNodes: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => Record[]; readonly getClashNodeNames: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType, prependNodeNames?: ReadonlyArray, defaultNodeNames?: ReadonlyArray) => ReadonlyArray; readonly getSingboxNodes: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => Record[]; readonly getSingboxNodeNames: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => ReadonlyArray; readonly getSingboxEndpoints: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => Record[]; readonly getSurgeNodes: (nodeList: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getSurgeNodeNames: (nodeList: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getSurgeTailscaleNodes: (nodeList: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getSurgeWireguardNodes: (nodeList: ReadonlyArray) => string; readonly getSurfboardNodes: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getSurfboardNodeNames: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getShadowsocksNodes: (list: ReadonlyArray, groupName?: string) => string; readonly getShadowsocksNodesJSON: (list: ReadonlyArray) => string; readonly getShadowsocksrNodes: (list: ReadonlyArray, groupName: string) => string; readonly getV2rayNNodes: (list: ReadonlyArray) => string; readonly getQuantumultXNodes: (nodeList: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getQuantumultXNodeNames: (nodeList: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getLoonNodes: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType) => string; readonly getLoonNodeNames: (list: ReadonlyArray, filter?: import("../types").NodeFilterType | import("../types").SortedNodeFilterType, separator?: string) => string; readonly toUrlSafeBase64: (str: string) => string; readonly toBase64: (str: string) => string; readonly encodeURIComponent: typeof encodeURIComponent; }; init(params?: { getNodeListParams?: GetNodeListParams; }): Promise; getMergedCustomParams(extendableCustomParams?: Record): Readonly>; render(templateEngine?: Environment, extendRenderContext?: ExtendableRenderContext): string; private providerMapper; }