import type { AnySchema, Schema } from './schema.js'; import type { Transport } from './types.js'; type TransportFactory = (urlOrConfig: any, options?: any) => Transport; export type PackageMap = Record; export type FactoryMap = Record; /** * Create a `parse` function that uses a custom package map for dynamic imports. * * Override specific transport types while keeping defaults for the rest. * Useful for creating protocol-specific parse variants (e.g. electrum-cash). */ export declare function createParse(overrides: PackageMap): (input: string) => Promise>; /** * Create a synchronous `parse` function using pre-imported factory functions. * * Unlike `createParse` which uses dynamic imports, this variant accepts * already-loaded factory functions, making it fully synchronous. * * @example * ```typescript * import { webSocket } from '@rpckit/websocket/electrum-cash' * import { fallback } from '@rpckit/fallback' * import { createParseSync } from '@rpckit/core' * * const parseSync = createParseSync({ webSocket, fallback }) * const transport = parseSync('fallback(wss://a.com,wss://b.com)?eagerConnect=true') * ``` */ export declare function createParseSync(factories: FactoryMap): (input: string) => Transport; /** * Parse a transport one-liner string into a Transport instance. * * @example * ```typescript * // Simple transports * const ws = await parse('wss://example.com') * const tcp = await parse('tcp+tls://host:50002?timeout=10000') * * // Meta-transports * const fb = await parse('fallback(wss://a.com,tcp://b.com)') * const cl = await parse('cluster(2,ws://1.com,ws://2.com,ws://3.com)') * * // Nested * const nested = await parse('fallback(wss://a.com,cluster(2,ws://1.com,ws://2.com))') * * // With options * const withOpts = await parse('wss://example.com?timeout=10000&keepAlive=30000') * const batched = await parse('wss://example.com?batchSize=10&batchWait=50') * const fbRanked = await parse('fallback(wss://a.com,tcp://b.com)?rank=true') * ``` * * Supported schemes: * - `wss://`, `ws://` → @rpckit/websocket * - `tcp://`, `tcp+tls://` → @rpckit/tcp * - `http://`, `https://` → @rpckit/http * - `fallback(...)` → @rpckit/fallback * - `cluster(quorum,...)` → @rpckit/cluster * * Supported options (via query params): * - `timeout` - Request timeout in ms * - `keepAlive` - Keep-alive ping interval in ms * - `batch` - Enable batching (true/false) * - `batchSize` - Max requests per batch * - `batchWait` - Max wait time before flushing batch (ms) * - `disabledCooldown` - Cooldown in ms before re-enabling batching after server rejection (default: 5000) * - `rank` - Enable health ranking for fallback (true/false) * - `eagerConnect` - Connect all fallback transports in parallel (true/false) * - `clientName` - Client name for electrum-cash handshake (default: 'rpckit') * - `protocolVersion` - Protocol version for electrum-cash handshake (default: '1.6') * * Packages are loaded dynamically at runtime. Missing packages throw an error. */ export declare function parse(input: string): Promise>; export {}; //# sourceMappingURL=parse.d.ts.map