import { z } from 'zod'; import { WireguardNodeConfigValidator, ProviderValidator, ShadowsocksNodeConfigValidator, HttpNodeConfigValidator, HttpsNodeConfigValidator, TrojanNodeConfigValidator, ShadowsocksrNodeConfigValidator, Socks5NodeConfigValidator, VmessNodeConfigValidator, SnellNodeConfigValidator, TuicNodeConfigValidator, SurgioConfigValidator, ArtifactValidator, RemoteSnippetValidator, NodeFilterTypeValidator, SortedNodeFilterTypeValidator, Hysteria2NodeConfigValidator, ClashCoreValidator, VlessNodeConfigValidator, AnyTLSNodeConfigValidator, TailscaleNodeConfigValidator, MasqueNodeConfigValidator, TrustTunnelNodeConfigValidator } from './validators'; import type { Provider, GetNodeListParams } from './provider'; export declare enum NodeTypeEnum { HTTPS = "https", HTTP = "http", Shadowsocks = "shadowsocks", Shadowsocksr = "shadowsocksr", Snell = "snell", Vmess = "vmess", Vless = "vless", Trojan = "trojan", Socks5 = "socks5", Tuic = "tuic", Wireguard = "wireguard", Hysteria2 = "hysteria2", AnyTLS = "anytls", Tailscale = "tailscale", Masque = "masque", TrustTunnel = "trust-tunnel" } export declare enum SupportProviderEnum { Clash = "clash", Custom = "custom", ShadowsocksSubscribe = "shadowsocks_subscribe", ShadowsocksrSubscribe = "shadowsocksr_subscribe", ShadowsocksJsonSubscribe = "shadowsocks_json_subscribe", V2rayNSubscribe = "v2rayn_subscribe", BlackSSL = "blackssl", Ssd = "ssd", Trojan = "trojan" } export type CommandConfigBeforeNormalize = z.input; export type CommandConfigAfterNormalize = z.infer; export type CommandConfig = CommandConfigAfterNormalize & { publicUrl: string; output: string; urlBase: string; providerDir: string; templateDir: string; configDir: string; }; export type RemoteSnippetConfig = z.infer; export interface RemoteSnippet extends RemoteSnippetConfig { readonly main: (...args: string[]) => string; readonly text: string; } export type ArtifactConfig = z.infer; export type ArtifactConfigInput = z.input; export type ProviderConfig = z.infer; export interface BlackSSLProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.BlackSSL; readonly username: string; readonly password: string; } export interface ShadowsocksJsonSubscribeProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.ShadowsocksJsonSubscribe; readonly url: string; readonly udpRelay?: boolean; } export interface ShadowsocksSubscribeProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.ShadowsocksSubscribe; readonly url: string; readonly udpRelay?: boolean; } export interface ShadowsocksrSubscribeProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.ShadowsocksrSubscribe; readonly url: string; readonly udpRelay?: boolean; } export interface V2rayNSubscribeProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.V2rayNSubscribe; readonly url: string; readonly compatibleMode?: boolean; readonly skipCertVerify?: boolean; readonly udpRelay?: boolean; readonly tls13?: boolean; } export interface ClashProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.Clash; readonly url: string; readonly udpRelay?: boolean; readonly tls13?: boolean; } export interface SsdProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.Ssd; readonly url: string; readonly udpRelay?: boolean; } export type AsyncCustomProviderNodeList = (params: GetNodeListParams) => Promise>; export interface CustomProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.Custom; readonly nodeList: ReadonlyArray | AsyncCustomProviderNodeList; } export interface TrojanProviderConfig extends ProviderConfig { readonly type: SupportProviderEnum.Trojan; readonly url: string; readonly udpRelay?: boolean; readonly tls13?: boolean; } export type HttpNodeConfigInput = z.infer; export type HttpNodeConfig = z.infer & SurgioInternals; export type HttpsNodeConfigInput = z.infer; export type HttpsNodeConfig = z.infer & SurgioInternals; export type TrojanNodeConfigInput = z.infer; export type TrojanNodeConfig = z.infer & SurgioInternals; export type ShadowsocksNodeConfigInput = z.infer; export type ShadowsocksNodeConfig = z.infer & SurgioInternals; export type ShadowsocksrNodeConfigInput = z.infer; export type ShadowsocksrNodeConfig = z.infer & SurgioInternals; export type Socks5NodeConfigInput = z.infer; export type Socks5NodeConfig = z.infer & SurgioInternals; export type SnellNodeConfigInput = z.infer; export type SnellNodeConfig = z.infer & SurgioInternals; export type VmessNodeConfigInput = z.infer; export type VmessNodeConfig = z.infer & SurgioInternals; export type VlessNodeConfigInput = z.infer; export type VlessNodeConfig = z.infer & SurgioInternals; export type TuicNodeConfigInput = z.input; export type TuicNodeConfig = z.infer & SurgioInternals; export type WireguardNodeConfigInput = z.input; export type WireguardNodeConfig = z.infer & SurgioInternals; export type Hysteria2NodeConfigInput = z.input; export type Hysteria2NodeConfig = z.infer & SurgioInternals; export type AnyTLSNodeConfigInput = z.input; export type AnyTLSNodeConfig = z.infer & SurgioInternals; export type TailscaleNodeConfigInput = z.input; export type TailscaleNodeConfig = z.infer & SurgioInternals; export type MasqueNodeConfigInput = z.input; export type MasqueNodeConfig = z.infer & SurgioInternals; export type TrustTunnelNodeConfigInput = z.input; export type TrustTunnelNodeConfig = z.infer & SurgioInternals; export interface SurgioInternals { provider?: Provider; } export interface SubscriptionUserinfo { readonly upload: number; readonly download: number; readonly total: number; readonly expire: number; } export interface SubsciptionCacheItem { readonly body: string; subscriptionUserInfo?: SubscriptionUserinfo; } export type NodeFilterType = z.infer; export type SortedNodeFilterType = z.infer; export type PossibleNodeConfigType = HttpsNodeConfig | HttpNodeConfig | ShadowsocksNodeConfig | ShadowsocksrNodeConfig | SnellNodeConfig | VmessNodeConfig | VlessNodeConfig | TrojanNodeConfig | Socks5NodeConfig | TuicNodeConfig | WireguardNodeConfig | Hysteria2NodeConfig | AnyTLSNodeConfig | TailscaleNodeConfig | MasqueNodeConfig | TrustTunnelNodeConfig; export type PossibleProviderConfigType = BlackSSLProviderConfig | ClashProviderConfig | CustomProviderConfig | ShadowsocksJsonSubscribeProviderConfig | ShadowsocksrSubscribeProviderConfig | ShadowsocksSubscribeProviderConfig | SsdProviderConfig | TrojanProviderConfig | V2rayNSubscribeProviderConfig; export type ClashCoreType = z.infer;