import { LogConfig } from "./config/log"; import { APIConfig } from "./config/api"; import { MetricsConfig } from "./config/metrics"; import { StatsConfig } from "./config/stats"; import { DNSConfig } from "./config/dns"; import { RoutingConfig } from "./config/routing"; import { PolicyConfig } from "./config/policy"; import { ReverseConfig } from "./config/reverse"; import { FakeDNSConfig } from "./config/fakedns"; import { ObservatoryConfig, BurstObservatoryConfig } from "./config/observatory"; import { InboundConfig } from "./config/inbound"; import { OutboundConfig } from "./config/outbound"; /** * Root Xray-Core configuration object. * This is the top-level interface representing the complete xray JSON config file. * * @see https://xtls.github.io/en/config/ * @example * ```typescript * import { XrayConfig } from 'xray-typed'; * * const config: XrayConfig = { * log: { loglevel: 'warning' }, * inbounds: [{ protocol: 'vless', port: 443, ... }], * outbounds: [{ protocol: 'freedom', tag: 'direct' }], * routing: { rules: [...] } * }; * ``` */ export interface XrayConfig { /** Remnawave Custom Field, snippet configuration for rule matching. */ snippets?: string[]; /** Version configuration. */ version?: VersionConfig; /** Log configuration. */ log?: LogConfig; /** DNS configuration (built-in DNS server). */ dns?: DNSConfig; /** Inbound connections. */ inbounds?: InboundConfig[]; /** Outbound connections. */ outbounds?: OutboundConfig[]; /** Routing rules and balancers. */ routing?: RoutingConfig; /** Connection policy settings. */ policy?: PolicyConfig; /** Global transport settings (deprecated, prefer per-inbound/outbound streamSettings). */ transport?: Record; /** Reverse proxy configuration (bridge/portal). */ reverse?: ReverseConfig; /** Fake DNS configuration. */ fakeDns?: FakeDNSConfig; /** Observatory configuration for outbound health monitoring. */ observatory?: ObservatoryConfig; /** Burst Observatory configuration for outbound health monitoring. */ burstObservatory?: BurstObservatoryConfig; /** gRPC API configuration. */ api?: APIConfig; /** Metrics endpoint configuration. */ metrics?: MetricsConfig; /** Statistics module (presence enables stats). */ stats?: StatsConfig; /** Remnawave Custom */ integrations?: RemnawaveIntegrations; } interface IntegrationCert { name: string; cert: string | string[]; key: string | string[]; } interface RemnawaveIntegrations { certs?: IntegrationCert[]; } /** * Version constraint configuration. * Prevents running a config on an incompatible Xray-Core version. * Both fields are optional — omitted or empty means no constraint. * Versions follow Xray's x.y.z syntax (e.g. "25.8.3"). * * @since Xray-Core 25.8.3 */ export interface VersionConfig { /** Minimum required Xray-Core version (e.g. "25.8.3"). Empty or omitted = no lower bound. */ min?: string; /** Maximum allowed Xray-Core version. Empty or omitted = no upper bound. */ max?: string; } /** * All top-level keys of XrayConfig in canonical order. * Use with `sortXrayConfig` or for your own normalization logic. */ export declare const XRAY_CONFIG_KEY_ORDER: readonly ["snippets", "version", "log", "dns", "inbounds", "outbounds", "routing", "policy", "transport", "stats", "reverse", "fakeDns", "observatory", "burstObservatory", "api", "metrics"]; /** Union of all top-level XrayConfig key names. */ export type XrayConfigKey = (typeof XRAY_CONFIG_KEY_ORDER)[number]; /** * Returns a new XrayConfig with keys sorted in canonical order. * Unknown keys (not in the standard set) are appended at the end * in their original order. * * @example * ```typescript * import { sortXrayConfig } from 'xray-typed'; * * const normalized = sortXrayConfig(rawConfig); * const json = JSON.stringify(normalized, null, 2); * ``` */ export declare function sortXrayConfig(config: T): T; export {}; //# sourceMappingURL=xray-config.d.ts.map