ton-provider-system 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -797,89 +797,6 @@ declare function createDefaultRegistry(logger?: Logger): ProviderRegistry;
797
797
  */
798
798
  declare function createRegistryFromData(data: RpcConfig, logger?: Logger): ProviderRegistry;
799
799
 
800
- /**
801
- * Unified Provider System - Health Checker
802
- *
803
- * Tests provider connectivity, measures latency, and compares block heights.
804
- * Identifies stale, degraded, or offline providers.
805
- */
806
-
807
- interface HealthCheckConfig {
808
- /** Request timeout in milliseconds */
809
- timeoutMs: number;
810
- /** Maximum blocks behind before marking as stale */
811
- maxBlocksBehind: number;
812
- /** Latency threshold (ms) for degraded status */
813
- degradedLatencyMs: number;
814
- }
815
- /**
816
- * Health Checker
817
- *
818
- * Tests provider health by calling getMasterchainInfo and measuring
819
- * latency and block height.
820
- */
821
- declare class HealthChecker {
822
- private config;
823
- private logger;
824
- private results;
825
- private highestSeqno;
826
- constructor(config?: Partial<HealthCheckConfig>, logger?: Logger);
827
- /**
828
- * Test a single provider's health
829
- */
830
- testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
831
- /**
832
- * Test multiple providers in parallel with staggered batches
833
- */
834
- testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
835
- /**
836
- * Get the last health result for a provider
837
- */
838
- getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
839
- /**
840
- * Get all results for a network
841
- */
842
- getResultsForNetwork(network: Network): ProviderHealthResult[];
843
- /**
844
- * Get available providers for a network (status = available or degraded)
845
- */
846
- getAvailableProviders(network: Network): ProviderHealthResult[];
847
- /**
848
- * Get the best provider for a network (lowest latency among available)
849
- */
850
- getBestProvider(network: Network): ProviderHealthResult | undefined;
851
- /**
852
- * Get highest known seqno for a network
853
- */
854
- getHighestSeqno(network: Network): number;
855
- /**
856
- * Clear all results
857
- */
858
- clearResults(): void;
859
- /**
860
- * Mark a provider as degraded (e.g., on 429 error)
861
- */
862
- markDegraded(providerId: string, network: Network, error?: string): void;
863
- /**
864
- * Mark a provider as offline
865
- */
866
- markOffline(providerId: string, network: Network, error?: string): void;
867
- private getResultKey;
868
- /**
869
- * Get endpoint URL for a provider (handles dynamic providers like Orbs)
870
- */
871
- private getEndpoint;
872
- /**
873
- * Call getMasterchainInfo API
874
- */
875
- private callGetMasterchainInfo;
876
- private sleep;
877
- }
878
- /**
879
- * Create a health checker with default configuration
880
- */
881
- declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger): HealthChecker;
882
-
883
800
  /**
884
801
  * Unified Provider System - Rate Limiter
885
802
  *
@@ -1030,6 +947,104 @@ declare function createRateLimiter(rps: number, logger?: Logger): TokenBucketRat
1030
947
  */
1031
948
  declare function createRateLimiterManager(logger?: Logger): RateLimiterManager;
1032
949
 
950
+ /**
951
+ * Unified Provider System - Health Checker
952
+ *
953
+ * Tests provider connectivity, measures latency, and compares block heights.
954
+ * Identifies stale, degraded, or offline providers.
955
+ */
956
+
957
+ interface HealthCheckConfig {
958
+ /** Request timeout in milliseconds */
959
+ timeoutMs: number;
960
+ /** Maximum blocks behind before marking as stale */
961
+ maxBlocksBehind: number;
962
+ /** Latency threshold (ms) for degraded status */
963
+ degradedLatencyMs: number;
964
+ }
965
+ /**
966
+ * Health Checker
967
+ *
968
+ * Tests provider health by calling getMasterchainInfo and measuring
969
+ * latency and block height.
970
+ */
971
+ declare class HealthChecker {
972
+ private config;
973
+ private logger;
974
+ private results;
975
+ private highestSeqno;
976
+ private rateLimiter;
977
+ constructor(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager);
978
+ /**
979
+ * Set rate limiter (can be set after construction)
980
+ */
981
+ setRateLimiter(rateLimiter: RateLimiterManager | null): void;
982
+ /**
983
+ * Test a single provider's health
984
+ */
985
+ testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
986
+ /**
987
+ * Test multiple providers in parallel with staggered batches
988
+ *
989
+ * @param batchSize - Number of providers to test in parallel (default: 2)
990
+ * @param batchDelayMs - Delay between batches in milliseconds (default: 500 to avoid rate limits)
991
+ */
992
+ testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
993
+ /**
994
+ * Get the last health result for a provider
995
+ */
996
+ getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
997
+ /**
998
+ * Get all results for a network
999
+ */
1000
+ getResultsForNetwork(network: Network): ProviderHealthResult[];
1001
+ /**
1002
+ * Get available providers for a network (status = available or degraded)
1003
+ */
1004
+ getAvailableProviders(network: Network): ProviderHealthResult[];
1005
+ /**
1006
+ * Get the best provider for a network (lowest latency among available)
1007
+ */
1008
+ getBestProvider(network: Network): ProviderHealthResult | undefined;
1009
+ /**
1010
+ * Get highest known seqno for a network
1011
+ */
1012
+ getHighestSeqno(network: Network): number;
1013
+ /**
1014
+ * Clear all results
1015
+ */
1016
+ clearResults(): void;
1017
+ /**
1018
+ * Mark a provider as degraded (e.g., on 429 error)
1019
+ */
1020
+ markDegraded(providerId: string, network: Network, error?: string): void;
1021
+ /**
1022
+ * Mark a provider as offline
1023
+ */
1024
+ markOffline(providerId: string, network: Network, error?: string): void;
1025
+ private getResultKey;
1026
+ /**
1027
+ * Get endpoint URL for a provider (handles dynamic providers like Orbs)
1028
+ */
1029
+ private getEndpoint;
1030
+ /**
1031
+ * Normalize endpoint for provider-specific requirements
1032
+ *
1033
+ * Note: normalizeV2Endpoint now handles all provider-specific cases correctly,
1034
+ * including Tatum (/jsonRPC), OnFinality (/public or /rpc), QuickNode, and GetBlock.
1035
+ */
1036
+ private normalizeEndpointForProvider;
1037
+ /**
1038
+ * Call getMasterchainInfo API with provider-specific handling
1039
+ */
1040
+ private callGetMasterchainInfo;
1041
+ private sleep;
1042
+ }
1043
+ /**
1044
+ * Create a health checker with default configuration
1045
+ */
1046
+ declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager): HealthChecker;
1047
+
1033
1048
  /**
1034
1049
  * Unified Provider System - Provider Selector
1035
1050
  *
@@ -1522,7 +1537,10 @@ declare function createBrowserAdapterForNetwork(network: Network, configPath?: s
1522
1537
  * - toncenter.com: POST to /api/v2/jsonRPC
1523
1538
  * - Chainstack: POST to /api/v2/jsonRPC (needs /jsonRPC suffix!)
1524
1539
  * - TON Access (orbs): Already returns correct JSON-RPC endpoint
1525
- * - QuickNode: Usually needs /jsonRPC appended
1540
+ * - QuickNode: Needs /jsonRPC appended to base URL
1541
+ * - GetBlock: Needs /jsonRPC appended to base URL
1542
+ * - Tatum: Gateway URLs need /jsonRPC appended (gateway.tatum.io/jsonRPC)
1543
+ * - OnFinality: Uses /public or /rpc path with query params - preserve query params
1526
1544
  */
1527
1545
  declare function normalizeV2Endpoint(endpoint: string): string;
1528
1546
  /**
package/dist/index.d.ts CHANGED
@@ -797,89 +797,6 @@ declare function createDefaultRegistry(logger?: Logger): ProviderRegistry;
797
797
  */
798
798
  declare function createRegistryFromData(data: RpcConfig, logger?: Logger): ProviderRegistry;
799
799
 
800
- /**
801
- * Unified Provider System - Health Checker
802
- *
803
- * Tests provider connectivity, measures latency, and compares block heights.
804
- * Identifies stale, degraded, or offline providers.
805
- */
806
-
807
- interface HealthCheckConfig {
808
- /** Request timeout in milliseconds */
809
- timeoutMs: number;
810
- /** Maximum blocks behind before marking as stale */
811
- maxBlocksBehind: number;
812
- /** Latency threshold (ms) for degraded status */
813
- degradedLatencyMs: number;
814
- }
815
- /**
816
- * Health Checker
817
- *
818
- * Tests provider health by calling getMasterchainInfo and measuring
819
- * latency and block height.
820
- */
821
- declare class HealthChecker {
822
- private config;
823
- private logger;
824
- private results;
825
- private highestSeqno;
826
- constructor(config?: Partial<HealthCheckConfig>, logger?: Logger);
827
- /**
828
- * Test a single provider's health
829
- */
830
- testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
831
- /**
832
- * Test multiple providers in parallel with staggered batches
833
- */
834
- testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
835
- /**
836
- * Get the last health result for a provider
837
- */
838
- getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
839
- /**
840
- * Get all results for a network
841
- */
842
- getResultsForNetwork(network: Network): ProviderHealthResult[];
843
- /**
844
- * Get available providers for a network (status = available or degraded)
845
- */
846
- getAvailableProviders(network: Network): ProviderHealthResult[];
847
- /**
848
- * Get the best provider for a network (lowest latency among available)
849
- */
850
- getBestProvider(network: Network): ProviderHealthResult | undefined;
851
- /**
852
- * Get highest known seqno for a network
853
- */
854
- getHighestSeqno(network: Network): number;
855
- /**
856
- * Clear all results
857
- */
858
- clearResults(): void;
859
- /**
860
- * Mark a provider as degraded (e.g., on 429 error)
861
- */
862
- markDegraded(providerId: string, network: Network, error?: string): void;
863
- /**
864
- * Mark a provider as offline
865
- */
866
- markOffline(providerId: string, network: Network, error?: string): void;
867
- private getResultKey;
868
- /**
869
- * Get endpoint URL for a provider (handles dynamic providers like Orbs)
870
- */
871
- private getEndpoint;
872
- /**
873
- * Call getMasterchainInfo API
874
- */
875
- private callGetMasterchainInfo;
876
- private sleep;
877
- }
878
- /**
879
- * Create a health checker with default configuration
880
- */
881
- declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger): HealthChecker;
882
-
883
800
  /**
884
801
  * Unified Provider System - Rate Limiter
885
802
  *
@@ -1030,6 +947,104 @@ declare function createRateLimiter(rps: number, logger?: Logger): TokenBucketRat
1030
947
  */
1031
948
  declare function createRateLimiterManager(logger?: Logger): RateLimiterManager;
1032
949
 
950
+ /**
951
+ * Unified Provider System - Health Checker
952
+ *
953
+ * Tests provider connectivity, measures latency, and compares block heights.
954
+ * Identifies stale, degraded, or offline providers.
955
+ */
956
+
957
+ interface HealthCheckConfig {
958
+ /** Request timeout in milliseconds */
959
+ timeoutMs: number;
960
+ /** Maximum blocks behind before marking as stale */
961
+ maxBlocksBehind: number;
962
+ /** Latency threshold (ms) for degraded status */
963
+ degradedLatencyMs: number;
964
+ }
965
+ /**
966
+ * Health Checker
967
+ *
968
+ * Tests provider health by calling getMasterchainInfo and measuring
969
+ * latency and block height.
970
+ */
971
+ declare class HealthChecker {
972
+ private config;
973
+ private logger;
974
+ private results;
975
+ private highestSeqno;
976
+ private rateLimiter;
977
+ constructor(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager);
978
+ /**
979
+ * Set rate limiter (can be set after construction)
980
+ */
981
+ setRateLimiter(rateLimiter: RateLimiterManager | null): void;
982
+ /**
983
+ * Test a single provider's health
984
+ */
985
+ testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
986
+ /**
987
+ * Test multiple providers in parallel with staggered batches
988
+ *
989
+ * @param batchSize - Number of providers to test in parallel (default: 2)
990
+ * @param batchDelayMs - Delay between batches in milliseconds (default: 500 to avoid rate limits)
991
+ */
992
+ testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
993
+ /**
994
+ * Get the last health result for a provider
995
+ */
996
+ getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
997
+ /**
998
+ * Get all results for a network
999
+ */
1000
+ getResultsForNetwork(network: Network): ProviderHealthResult[];
1001
+ /**
1002
+ * Get available providers for a network (status = available or degraded)
1003
+ */
1004
+ getAvailableProviders(network: Network): ProviderHealthResult[];
1005
+ /**
1006
+ * Get the best provider for a network (lowest latency among available)
1007
+ */
1008
+ getBestProvider(network: Network): ProviderHealthResult | undefined;
1009
+ /**
1010
+ * Get highest known seqno for a network
1011
+ */
1012
+ getHighestSeqno(network: Network): number;
1013
+ /**
1014
+ * Clear all results
1015
+ */
1016
+ clearResults(): void;
1017
+ /**
1018
+ * Mark a provider as degraded (e.g., on 429 error)
1019
+ */
1020
+ markDegraded(providerId: string, network: Network, error?: string): void;
1021
+ /**
1022
+ * Mark a provider as offline
1023
+ */
1024
+ markOffline(providerId: string, network: Network, error?: string): void;
1025
+ private getResultKey;
1026
+ /**
1027
+ * Get endpoint URL for a provider (handles dynamic providers like Orbs)
1028
+ */
1029
+ private getEndpoint;
1030
+ /**
1031
+ * Normalize endpoint for provider-specific requirements
1032
+ *
1033
+ * Note: normalizeV2Endpoint now handles all provider-specific cases correctly,
1034
+ * including Tatum (/jsonRPC), OnFinality (/public or /rpc), QuickNode, and GetBlock.
1035
+ */
1036
+ private normalizeEndpointForProvider;
1037
+ /**
1038
+ * Call getMasterchainInfo API with provider-specific handling
1039
+ */
1040
+ private callGetMasterchainInfo;
1041
+ private sleep;
1042
+ }
1043
+ /**
1044
+ * Create a health checker with default configuration
1045
+ */
1046
+ declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager): HealthChecker;
1047
+
1033
1048
  /**
1034
1049
  * Unified Provider System - Provider Selector
1035
1050
  *
@@ -1522,7 +1537,10 @@ declare function createBrowserAdapterForNetwork(network: Network, configPath?: s
1522
1537
  * - toncenter.com: POST to /api/v2/jsonRPC
1523
1538
  * - Chainstack: POST to /api/v2/jsonRPC (needs /jsonRPC suffix!)
1524
1539
  * - TON Access (orbs): Already returns correct JSON-RPC endpoint
1525
- * - QuickNode: Usually needs /jsonRPC appended
1540
+ * - QuickNode: Needs /jsonRPC appended to base URL
1541
+ * - GetBlock: Needs /jsonRPC appended to base URL
1542
+ * - Tatum: Gateway URLs need /jsonRPC appended (gateway.tatum.io/jsonRPC)
1543
+ * - OnFinality: Uses /public or /rpc path with query params - preserve query params
1526
1544
  */
1527
1545
  declare function normalizeV2Endpoint(endpoint: string): string;
1528
1546
  /**