@shadow-corp/nearconnect 1.0.0

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.
Files changed (179) hide show
  1. package/README.md +546 -0
  2. package/build/InjectedWallet.d.ts +22 -0
  3. package/build/InjectedWallet.js +58 -0
  4. package/build/InjectedWallet.js.map +1 -0
  5. package/build/NearConnector.d.ts +151 -0
  6. package/build/NearConnector.js +536 -0
  7. package/build/NearConnector.js.map +1 -0
  8. package/build/ParentFrameWallet.d.ts +22 -0
  9. package/build/ParentFrameWallet.js +66 -0
  10. package/build/ParentFrameWallet.js.map +1 -0
  11. package/build/SandboxedWallet/code.d.ts +7 -0
  12. package/build/SandboxedWallet/code.js +324 -0
  13. package/build/SandboxedWallet/code.js.map +1 -0
  14. package/build/SandboxedWallet/executor.d.ts +23 -0
  15. package/build/SandboxedWallet/executor.js +338 -0
  16. package/build/SandboxedWallet/executor.js.map +1 -0
  17. package/build/SandboxedWallet/iframe.d.ts +18 -0
  18. package/build/SandboxedWallet/iframe.js +78 -0
  19. package/build/SandboxedWallet/iframe.js.map +1 -0
  20. package/build/SandboxedWallet/index.d.ts +24 -0
  21. package/build/SandboxedWallet/index.js +54 -0
  22. package/build/SandboxedWallet/index.js.map +1 -0
  23. package/build/actions/index.d.ts +3 -0
  24. package/build/actions/index.js +105 -0
  25. package/build/actions/index.js.map +1 -0
  26. package/build/actions/types.d.ts +76 -0
  27. package/build/actions/types.js +3 -0
  28. package/build/actions/types.js.map +1 -0
  29. package/build/connection/health.d.ts +213 -0
  30. package/build/connection/health.js +391 -0
  31. package/build/connection/health.js.map +1 -0
  32. package/build/connection/index.d.ts +4 -0
  33. package/build/connection/index.js +48 -0
  34. package/build/connection/index.js.map +1 -0
  35. package/build/connection/reconnect.d.ts +261 -0
  36. package/build/connection/reconnect.js +454 -0
  37. package/build/connection/reconnect.js.map +1 -0
  38. package/build/connection/retry.d.ts +187 -0
  39. package/build/connection/retry.js +427 -0
  40. package/build/connection/retry.js.map +1 -0
  41. package/build/connection/state.d.ts +222 -0
  42. package/build/connection/state.js +431 -0
  43. package/build/connection/state.js.map +1 -0
  44. package/build/errors.d.ts +177 -0
  45. package/build/errors.js +546 -0
  46. package/build/errors.js.map +1 -0
  47. package/build/hardware/errors.d.ts +36 -0
  48. package/build/hardware/errors.js +127 -0
  49. package/build/hardware/errors.js.map +1 -0
  50. package/build/hardware/index.d.ts +7 -0
  51. package/build/hardware/index.js +39 -0
  52. package/build/hardware/index.js.map +1 -0
  53. package/build/hardware/near-app.d.ts +95 -0
  54. package/build/hardware/near-app.js +291 -0
  55. package/build/hardware/near-app.js.map +1 -0
  56. package/build/hardware/transport.d.ts +94 -0
  57. package/build/hardware/transport.js +267 -0
  58. package/build/hardware/transport.js.map +1 -0
  59. package/build/hardware/types.d.ts +98 -0
  60. package/build/hardware/types.js +72 -0
  61. package/build/hardware/types.js.map +1 -0
  62. package/build/helpers/analytics.d.ts +191 -0
  63. package/build/helpers/analytics.js +304 -0
  64. package/build/helpers/analytics.js.map +1 -0
  65. package/build/helpers/base58.d.ts +6 -0
  66. package/build/helpers/base58.js +47 -0
  67. package/build/helpers/base58.js.map +1 -0
  68. package/build/helpers/events.d.ts +42 -0
  69. package/build/helpers/events.js +68 -0
  70. package/build/helpers/events.js.map +1 -0
  71. package/build/helpers/html.d.ts +8 -0
  72. package/build/helpers/html.js +30 -0
  73. package/build/helpers/html.js.map +1 -0
  74. package/build/helpers/indexdb.d.ts +14 -0
  75. package/build/helpers/indexdb.js +166 -0
  76. package/build/helpers/indexdb.js.map +1 -0
  77. package/build/helpers/manifest.d.ts +147 -0
  78. package/build/helpers/manifest.js +329 -0
  79. package/build/helpers/manifest.js.map +1 -0
  80. package/build/helpers/queue.d.ts +11 -0
  81. package/build/helpers/queue.js +48 -0
  82. package/build/helpers/queue.js.map +1 -0
  83. package/build/helpers/session.d.ts +119 -0
  84. package/build/helpers/session.js +289 -0
  85. package/build/helpers/session.js.map +1 -0
  86. package/build/helpers/simulation.d.ts +128 -0
  87. package/build/helpers/simulation.js +441 -0
  88. package/build/helpers/simulation.js.map +1 -0
  89. package/build/helpers/storage.d.ts +58 -0
  90. package/build/helpers/storage.js +190 -0
  91. package/build/helpers/storage.js.map +1 -0
  92. package/build/helpers/trust.d.ts +157 -0
  93. package/build/helpers/trust.js +340 -0
  94. package/build/helpers/trust.js.map +1 -0
  95. package/build/helpers/url.d.ts +1 -0
  96. package/build/helpers/url.js +13 -0
  97. package/build/helpers/url.js.map +1 -0
  98. package/build/helpers/uuid.d.ts +1 -0
  99. package/build/helpers/uuid.js +14 -0
  100. package/build/helpers/uuid.js.map +1 -0
  101. package/build/index.d.ts +21 -0
  102. package/build/index.js +167 -0
  103. package/build/index.js.map +1 -0
  104. package/build/popups/IframeWalletPopup.d.ts +16 -0
  105. package/build/popups/IframeWalletPopup.js +38 -0
  106. package/build/popups/IframeWalletPopup.js.map +1 -0
  107. package/build/popups/NearWalletsPopup.d.ts +25 -0
  108. package/build/popups/NearWalletsPopup.js +153 -0
  109. package/build/popups/NearWalletsPopup.js.map +1 -0
  110. package/build/popups/Popup.d.ts +22 -0
  111. package/build/popups/Popup.js +94 -0
  112. package/build/popups/Popup.js.map +1 -0
  113. package/build/popups/styles.d.ts +1 -0
  114. package/build/popups/styles.js +257 -0
  115. package/build/popups/styles.js.map +1 -0
  116. package/build/security/audit-log.d.ts +123 -0
  117. package/build/security/audit-log.js +268 -0
  118. package/build/security/audit-log.js.map +1 -0
  119. package/build/security/csp.d.ts +68 -0
  120. package/build/security/csp.js +328 -0
  121. package/build/security/csp.js.map +1 -0
  122. package/build/security/index.d.ts +10 -0
  123. package/build/security/index.js +42 -0
  124. package/build/security/index.js.map +1 -0
  125. package/build/security/origin-guard.d.ts +90 -0
  126. package/build/security/origin-guard.js +244 -0
  127. package/build/security/origin-guard.js.map +1 -0
  128. package/build/security/rate-limiter.d.ts +84 -0
  129. package/build/security/rate-limiter.js +212 -0
  130. package/build/security/rate-limiter.js.map +1 -0
  131. package/build/security/secure-storage.d.ts +77 -0
  132. package/build/security/secure-storage.js +242 -0
  133. package/build/security/secure-storage.js.map +1 -0
  134. package/build/security/transaction-guard.d.ts +71 -0
  135. package/build/security/transaction-guard.js +239 -0
  136. package/build/security/transaction-guard.js.map +1 -0
  137. package/build/types.d.ts +508 -0
  138. package/build/types.js +3 -0
  139. package/build/types.js.map +1 -0
  140. package/build/ui/AccountSwitcherModal.d.ts +53 -0
  141. package/build/ui/AccountSwitcherModal.js +239 -0
  142. package/build/ui/AccountSwitcherModal.js.map +1 -0
  143. package/build/ui/Modal.d.ts +84 -0
  144. package/build/ui/Modal.js +278 -0
  145. package/build/ui/Modal.js.map +1 -0
  146. package/build/ui/TransactionModal.d.ts +84 -0
  147. package/build/ui/TransactionModal.js +406 -0
  148. package/build/ui/TransactionModal.js.map +1 -0
  149. package/build/ui/WalletSelectorModal.d.ts +97 -0
  150. package/build/ui/WalletSelectorModal.js +481 -0
  151. package/build/ui/WalletSelectorModal.js.map +1 -0
  152. package/build/ui/icons.d.ts +19 -0
  153. package/build/ui/icons.js +65 -0
  154. package/build/ui/icons.js.map +1 -0
  155. package/build/ui/index.d.ts +10 -0
  156. package/build/ui/index.js +31 -0
  157. package/build/ui/index.js.map +1 -0
  158. package/build/ui/styles.d.ts +5 -0
  159. package/build/ui/styles.js +973 -0
  160. package/build/ui/styles.js.map +1 -0
  161. package/build/ui/theme.d.ts +133 -0
  162. package/build/ui/theme.js +204 -0
  163. package/build/ui/theme.js.map +1 -0
  164. package/build/wallets/external/index.d.ts +4 -0
  165. package/build/wallets/external/index.js +9 -0
  166. package/build/wallets/external/index.js.map +1 -0
  167. package/build/wallets/external/manager.d.ts +152 -0
  168. package/build/wallets/external/manager.js +586 -0
  169. package/build/wallets/external/manager.js.map +1 -0
  170. package/build/wallets/privileged/index.d.ts +5 -0
  171. package/build/wallets/privileged/index.js +12 -0
  172. package/build/wallets/privileged/index.js.map +1 -0
  173. package/build/wallets/privileged/ledger.d.ts +132 -0
  174. package/build/wallets/privileged/ledger.js +563 -0
  175. package/build/wallets/privileged/ledger.js.map +1 -0
  176. package/build/wallets/privileged/manager.d.ts +54 -0
  177. package/build/wallets/privileged/manager.js +174 -0
  178. package/build/wallets/privileged/manager.js.map +1 -0
  179. package/package.json +33 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.js","sourceRoot":"","sources":["../../src/security/csp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Security Module
3
+ * Comprehensive security layers for wallet operations
4
+ */
5
+ export { TransactionGuard, createDefaultTransactionGuard, type Transaction as SecurityTransaction, type TransactionLimits, type TransactionRisk, } from './transaction-guard';
6
+ export { OriginGuard, createSecureMessageHandler, type TrustedOrigins, type OriginGuardConfig, } from './origin-guard';
7
+ export { SecureStorage, createSecureStorage, type SecureStorageOptions, } from './secure-storage';
8
+ export { RateLimiter, connectLimiter, signLimiter, rpcLimiter, rateLimit, withRateLimit, type RateLimitConfig, type RateLimitResult, } from './rate-limiter';
9
+ export { AuditLog, createAuditLog, type AuditEvent, type AuditEventType, type AuditLogConfig, } from './audit-log';
10
+ export { generateCSP, getRecommendedCSP, mergeCSP, applyCSPMetaTag, runSecurityChecklist, getSecuritySummary, verifySecureContext, DEFAULT_CSP_DIRECTIVES, type CSPDirectives, type SecurityCheck, } from './csp';
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * Security Module
4
+ * Comprehensive security layers for wallet operations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DEFAULT_CSP_DIRECTIVES = exports.verifySecureContext = exports.getSecuritySummary = exports.runSecurityChecklist = exports.applyCSPMetaTag = exports.mergeCSP = exports.getRecommendedCSP = exports.generateCSP = exports.createAuditLog = exports.AuditLog = exports.withRateLimit = exports.rateLimit = exports.rpcLimiter = exports.signLimiter = exports.connectLimiter = exports.RateLimiter = exports.createSecureStorage = exports.SecureStorage = exports.createSecureMessageHandler = exports.OriginGuard = exports.createDefaultTransactionGuard = exports.TransactionGuard = void 0;
8
+ // Transaction verification
9
+ var transaction_guard_1 = require("./transaction-guard");
10
+ Object.defineProperty(exports, "TransactionGuard", { enumerable: true, get: function () { return transaction_guard_1.TransactionGuard; } });
11
+ Object.defineProperty(exports, "createDefaultTransactionGuard", { enumerable: true, get: function () { return transaction_guard_1.createDefaultTransactionGuard; } });
12
+ // Origin verification
13
+ var origin_guard_1 = require("./origin-guard");
14
+ Object.defineProperty(exports, "OriginGuard", { enumerable: true, get: function () { return origin_guard_1.OriginGuard; } });
15
+ Object.defineProperty(exports, "createSecureMessageHandler", { enumerable: true, get: function () { return origin_guard_1.createSecureMessageHandler; } });
16
+ // Secure storage
17
+ var secure_storage_1 = require("./secure-storage");
18
+ Object.defineProperty(exports, "SecureStorage", { enumerable: true, get: function () { return secure_storage_1.SecureStorage; } });
19
+ Object.defineProperty(exports, "createSecureStorage", { enumerable: true, get: function () { return secure_storage_1.createSecureStorage; } });
20
+ // Rate limiting
21
+ var rate_limiter_1 = require("./rate-limiter");
22
+ Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return rate_limiter_1.RateLimiter; } });
23
+ Object.defineProperty(exports, "connectLimiter", { enumerable: true, get: function () { return rate_limiter_1.connectLimiter; } });
24
+ Object.defineProperty(exports, "signLimiter", { enumerable: true, get: function () { return rate_limiter_1.signLimiter; } });
25
+ Object.defineProperty(exports, "rpcLimiter", { enumerable: true, get: function () { return rate_limiter_1.rpcLimiter; } });
26
+ Object.defineProperty(exports, "rateLimit", { enumerable: true, get: function () { return rate_limiter_1.rateLimit; } });
27
+ Object.defineProperty(exports, "withRateLimit", { enumerable: true, get: function () { return rate_limiter_1.withRateLimit; } });
28
+ // Audit logging
29
+ var audit_log_1 = require("./audit-log");
30
+ Object.defineProperty(exports, "AuditLog", { enumerable: true, get: function () { return audit_log_1.AuditLog; } });
31
+ Object.defineProperty(exports, "createAuditLog", { enumerable: true, get: function () { return audit_log_1.createAuditLog; } });
32
+ // CSP and security checklist
33
+ var csp_1 = require("./csp");
34
+ Object.defineProperty(exports, "generateCSP", { enumerable: true, get: function () { return csp_1.generateCSP; } });
35
+ Object.defineProperty(exports, "getRecommendedCSP", { enumerable: true, get: function () { return csp_1.getRecommendedCSP; } });
36
+ Object.defineProperty(exports, "mergeCSP", { enumerable: true, get: function () { return csp_1.mergeCSP; } });
37
+ Object.defineProperty(exports, "applyCSPMetaTag", { enumerable: true, get: function () { return csp_1.applyCSPMetaTag; } });
38
+ Object.defineProperty(exports, "runSecurityChecklist", { enumerable: true, get: function () { return csp_1.runSecurityChecklist; } });
39
+ Object.defineProperty(exports, "getSecuritySummary", { enumerable: true, get: function () { return csp_1.getSecuritySummary; } });
40
+ Object.defineProperty(exports, "verifySecureContext", { enumerable: true, get: function () { return csp_1.verifySecureContext; } });
41
+ Object.defineProperty(exports, "DEFAULT_CSP_DIRECTIVES", { enumerable: true, get: function () { return csp_1.DEFAULT_CSP_DIRECTIVES; } });
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2BAA2B;AAC3B,yDAM6B;AAL3B,qHAAA,gBAAgB,OAAA;AAChB,kIAAA,6BAA6B,OAAA;AAM/B,sBAAsB;AACtB,+CAKwB;AAJtB,2GAAA,WAAW,OAAA;AACX,0HAAA,0BAA0B,OAAA;AAK5B,iBAAiB;AACjB,mDAI0B;AAHxB,+GAAA,aAAa,OAAA;AACb,qHAAA,mBAAmB,OAAA;AAIrB,gBAAgB;AAChB,+CASwB;AARtB,2GAAA,WAAW,OAAA;AACX,8GAAA,cAAc,OAAA;AACd,2GAAA,WAAW,OAAA;AACX,0GAAA,UAAU,OAAA;AACV,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA;AAKf,gBAAgB;AAChB,yCAMqB;AALnB,qGAAA,QAAQ,OAAA;AACR,2GAAA,cAAc,OAAA;AAMhB,6BAA6B;AAC7B,6BAWe;AAVb,kGAAA,WAAW,OAAA;AACX,wGAAA,iBAAiB,OAAA;AACjB,+FAAA,QAAQ,OAAA;AACR,sGAAA,eAAe,OAAA;AACf,2GAAA,oBAAoB,OAAA;AACpB,yGAAA,kBAAkB,OAAA;AAClB,0GAAA,mBAAmB,OAAA;AACnB,6GAAA,sBAAsB,OAAA"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Origin & Message Verification Layer
3
+ * Protects against MITM attacks and phishing callbacks
4
+ */
5
+ export interface TrustedOrigins {
6
+ /** Mapping of walletId to allowed origins */
7
+ walletOrigins: Map<string, string[]>;
8
+ /** Your app's allowed origins */
9
+ appOrigins: string[];
10
+ }
11
+ export interface OriginGuardConfig {
12
+ /** Additional app origins to trust */
13
+ appOrigins?: string[];
14
+ /** Additional wallet origins */
15
+ walletOrigins?: Record<string, string[]>;
16
+ /** Allow HTTP in development */
17
+ allowInsecureInDev?: boolean;
18
+ }
19
+ export declare class OriginGuard {
20
+ private trusted;
21
+ private allowInsecureInDev;
22
+ private sessionSecret;
23
+ constructor(config?: OriginGuardConfig);
24
+ /**
25
+ * Add a trusted wallet origin
26
+ */
27
+ addWalletOrigin(walletId: string, origin: string): void;
28
+ /**
29
+ * Add a trusted app origin
30
+ */
31
+ addAppOrigin(origin: string): void;
32
+ /**
33
+ * Verify postMessage origin is from expected wallet
34
+ */
35
+ verifyMessageOrigin(event: MessageEvent, expectedWalletId?: string): boolean;
36
+ /**
37
+ * Verify deep link callback URL is safe
38
+ */
39
+ verifyCallbackUrl(url: string): {
40
+ valid: boolean;
41
+ reason?: string;
42
+ };
43
+ /**
44
+ * Generate secure callback URL with CSRF state token
45
+ */
46
+ generateSecureCallback(baseUrl: string, requestId: string): Promise<string>;
47
+ /**
48
+ * Verify callback state token matches expected
49
+ */
50
+ verifyState(state: string, requestId: string): Promise<boolean>;
51
+ /**
52
+ * Generate HMAC-based state token
53
+ */
54
+ private generateState;
55
+ /**
56
+ * Get or create session-specific secret
57
+ */
58
+ private getSessionSecret;
59
+ /**
60
+ * Compute HMAC-SHA256
61
+ */
62
+ private hmacSha256;
63
+ /**
64
+ * Timing-safe string comparison to prevent timing attacks
65
+ */
66
+ private timingSafeEqual;
67
+ /**
68
+ * Check if running in development environment
69
+ */
70
+ private isDevelopment;
71
+ /**
72
+ * Validate that current context is secure
73
+ */
74
+ verifySecureContext(): {
75
+ secure: boolean;
76
+ warnings: string[];
77
+ };
78
+ /**
79
+ * Get list of trusted origins for a wallet
80
+ */
81
+ getTrustedOrigins(walletId: string): string[];
82
+ /**
83
+ * Check if an origin is trusted for any wallet
84
+ */
85
+ isOriginTrusted(origin: string): boolean;
86
+ }
87
+ /**
88
+ * Create a message handler that validates origins
89
+ */
90
+ export declare function createSecureMessageHandler<T>(guard: OriginGuard, expectedWalletId: string | undefined, handler: (data: T) => void): (event: MessageEvent) => void;
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ /**
3
+ * Origin & Message Verification Layer
4
+ * Protects against MITM attacks and phishing callbacks
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.OriginGuard = void 0;
8
+ exports.createSecureMessageHandler = createSecureMessageHandler;
9
+ /** Known wallet origins */
10
+ const DEFAULT_WALLET_ORIGINS = {
11
+ 'hot-wallet': ['https://wallet.nicklatkovich.dev', 'https://hot-labs.org'],
12
+ 'mynearwallet': ['https://app.mynearwallet.com'],
13
+ 'meteor': ['https://wallet.meteorwallet.app'],
14
+ 'here-wallet': ['https://my.herewallet.app'],
15
+ 'sender': ['https://sender.org'],
16
+ 'nightly': ['https://wallet.nightly.app'],
17
+ 'mintbase': ['https://wallet.mintbase.xyz'],
18
+ };
19
+ class OriginGuard {
20
+ trusted;
21
+ allowInsecureInDev;
22
+ sessionSecret = null;
23
+ constructor(config = {}) {
24
+ // Initialize wallet origins from defaults + custom
25
+ const walletOrigins = new Map();
26
+ // Add default wallet origins
27
+ for (const [walletId, origins] of Object.entries(DEFAULT_WALLET_ORIGINS)) {
28
+ walletOrigins.set(walletId, origins);
29
+ }
30
+ // Add custom wallet origins
31
+ if (config.walletOrigins) {
32
+ for (const [walletId, origins] of Object.entries(config.walletOrigins)) {
33
+ const existing = walletOrigins.get(walletId) || [];
34
+ walletOrigins.set(walletId, [...existing, ...origins]);
35
+ }
36
+ }
37
+ // Determine app origins
38
+ const appOrigins = config.appOrigins || [];
39
+ if (typeof window !== 'undefined') {
40
+ appOrigins.push(window.location.origin);
41
+ }
42
+ this.trusted = { walletOrigins, appOrigins };
43
+ this.allowInsecureInDev = config.allowInsecureInDev ?? true;
44
+ }
45
+ /**
46
+ * Add a trusted wallet origin
47
+ */
48
+ addWalletOrigin(walletId, origin) {
49
+ const existing = this.trusted.walletOrigins.get(walletId) || [];
50
+ if (!existing.includes(origin)) {
51
+ this.trusted.walletOrigins.set(walletId, [...existing, origin]);
52
+ }
53
+ }
54
+ /**
55
+ * Add a trusted app origin
56
+ */
57
+ addAppOrigin(origin) {
58
+ if (!this.trusted.appOrigins.includes(origin)) {
59
+ this.trusted.appOrigins.push(origin);
60
+ }
61
+ }
62
+ /**
63
+ * Verify postMessage origin is from expected wallet
64
+ */
65
+ verifyMessageOrigin(event, expectedWalletId) {
66
+ const origin = event.origin;
67
+ // Check if from known wallet
68
+ if (expectedWalletId) {
69
+ const allowed = this.trusted.walletOrigins.get(expectedWalletId);
70
+ if (allowed && allowed.includes(origin)) {
71
+ return true;
72
+ }
73
+ }
74
+ // Check all wallet origins if no specific wallet expected
75
+ if (!expectedWalletId) {
76
+ for (const origins of this.trusted.walletOrigins.values()) {
77
+ if (origins.includes(origin)) {
78
+ return true;
79
+ }
80
+ }
81
+ }
82
+ // Check if from trusted app origin
83
+ if (this.trusted.appOrigins.includes(origin)) {
84
+ return true;
85
+ }
86
+ console.warn(`[Security] Rejected message from untrusted origin: ${origin}`);
87
+ return false;
88
+ }
89
+ /**
90
+ * Verify deep link callback URL is safe
91
+ */
92
+ verifyCallbackUrl(url) {
93
+ try {
94
+ const parsed = new URL(url);
95
+ // Must be HTTPS in production
96
+ if (parsed.protocol !== 'https:') {
97
+ if (this.isDevelopment() && this.allowInsecureInDev) {
98
+ // Allow HTTP in development
99
+ }
100
+ else {
101
+ return { valid: false, reason: 'Callback URL must use HTTPS' };
102
+ }
103
+ }
104
+ // Must match app origin
105
+ if (!this.trusted.appOrigins.includes(parsed.origin)) {
106
+ return { valid: false, reason: `Callback origin ${parsed.origin} is not trusted` };
107
+ }
108
+ return { valid: true };
109
+ }
110
+ catch {
111
+ return { valid: false, reason: 'Invalid callback URL' };
112
+ }
113
+ }
114
+ /**
115
+ * Generate secure callback URL with CSRF state token
116
+ */
117
+ async generateSecureCallback(baseUrl, requestId) {
118
+ const url = new URL(baseUrl);
119
+ const state = await this.generateState(requestId);
120
+ url.searchParams.set('state', state);
121
+ url.searchParams.set('requestId', requestId);
122
+ return url.toString();
123
+ }
124
+ /**
125
+ * Verify callback state token matches expected
126
+ */
127
+ async verifyState(state, requestId) {
128
+ const expected = await this.generateState(requestId);
129
+ return this.timingSafeEqual(state, expected);
130
+ }
131
+ /**
132
+ * Generate HMAC-based state token
133
+ */
134
+ async generateState(requestId) {
135
+ const secret = this.getSessionSecret();
136
+ return this.hmacSha256(requestId, secret);
137
+ }
138
+ /**
139
+ * Get or create session-specific secret
140
+ */
141
+ getSessionSecret() {
142
+ if (this.sessionSecret) {
143
+ return this.sessionSecret;
144
+ }
145
+ if (typeof sessionStorage !== 'undefined') {
146
+ let secret = sessionStorage.getItem('near-connect:origin-secret');
147
+ if (!secret) {
148
+ secret = crypto.randomUUID();
149
+ sessionStorage.setItem('near-connect:origin-secret', secret);
150
+ }
151
+ this.sessionSecret = secret;
152
+ return secret;
153
+ }
154
+ // Fallback for non-browser environments
155
+ this.sessionSecret = crypto.randomUUID();
156
+ return this.sessionSecret;
157
+ }
158
+ /**
159
+ * Compute HMAC-SHA256
160
+ */
161
+ async hmacSha256(message, secret) {
162
+ const encoder = new TextEncoder();
163
+ const key = await crypto.subtle.importKey('raw', encoder.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
164
+ const signature = await crypto.subtle.sign('HMAC', key, encoder.encode(message));
165
+ return btoa(String.fromCharCode(...new Uint8Array(signature)));
166
+ }
167
+ /**
168
+ * Timing-safe string comparison to prevent timing attacks
169
+ */
170
+ timingSafeEqual(a, b) {
171
+ if (a.length !== b.length)
172
+ return false;
173
+ let result = 0;
174
+ for (let i = 0; i < a.length; i++) {
175
+ result |= a.charCodeAt(i) ^ b.charCodeAt(i);
176
+ }
177
+ return result === 0;
178
+ }
179
+ /**
180
+ * Check if running in development environment
181
+ */
182
+ isDevelopment() {
183
+ if (typeof window === 'undefined')
184
+ return false;
185
+ return (window.location.hostname === 'localhost' ||
186
+ window.location.hostname === '127.0.0.1' ||
187
+ window.location.hostname.endsWith('.local'));
188
+ }
189
+ /**
190
+ * Validate that current context is secure
191
+ */
192
+ verifySecureContext() {
193
+ const warnings = [];
194
+ if (typeof window === 'undefined') {
195
+ return { secure: true, warnings: [] };
196
+ }
197
+ // Check secure context
198
+ if (!window.isSecureContext) {
199
+ warnings.push('Page is not in a secure context (HTTPS required for production)');
200
+ }
201
+ // Check if embedded in iframe (potential clickjacking)
202
+ if (window.self !== window.top) {
203
+ warnings.push('Page is embedded in an iframe - potential clickjacking risk');
204
+ }
205
+ // Check for cross-origin isolation
206
+ if (!crossOriginIsolated) {
207
+ // This is informational, not critical
208
+ }
209
+ return {
210
+ secure: warnings.length === 0,
211
+ warnings,
212
+ };
213
+ }
214
+ /**
215
+ * Get list of trusted origins for a wallet
216
+ */
217
+ getTrustedOrigins(walletId) {
218
+ return this.trusted.walletOrigins.get(walletId) || [];
219
+ }
220
+ /**
221
+ * Check if an origin is trusted for any wallet
222
+ */
223
+ isOriginTrusted(origin) {
224
+ for (const origins of this.trusted.walletOrigins.values()) {
225
+ if (origins.includes(origin))
226
+ return true;
227
+ }
228
+ return this.trusted.appOrigins.includes(origin);
229
+ }
230
+ }
231
+ exports.OriginGuard = OriginGuard;
232
+ /**
233
+ * Create a message handler that validates origins
234
+ */
235
+ function createSecureMessageHandler(guard, expectedWalletId, handler) {
236
+ return (event) => {
237
+ if (!guard.verifyMessageOrigin(event, expectedWalletId)) {
238
+ console.warn('[Security] Ignoring message from untrusted origin');
239
+ return;
240
+ }
241
+ handler(event.data);
242
+ };
243
+ }
244
+ //# sourceMappingURL=origin-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-guard.js","sourceRoot":"","sources":["../../src/security/origin-guard.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAyRH,gEAYC;AAnRD,2BAA2B;AAC3B,MAAM,sBAAsB,GAA6B;IACvD,YAAY,EAAE,CAAC,kCAAkC,EAAE,sBAAsB,CAAC;IAC1E,cAAc,EAAE,CAAC,8BAA8B,CAAC;IAChD,QAAQ,EAAE,CAAC,iCAAiC,CAAC;IAC7C,aAAa,EAAE,CAAC,2BAA2B,CAAC;IAC5C,QAAQ,EAAE,CAAC,oBAAoB,CAAC;IAChC,SAAS,EAAE,CAAC,4BAA4B,CAAC;IACzC,UAAU,EAAE,CAAC,6BAA6B,CAAC;CAC5C,CAAC;AAEF,MAAa,WAAW;IACd,OAAO,CAAiB;IACxB,kBAAkB,CAAU;IAC5B,aAAa,GAAkB,IAAI,CAAC;IAE5C,YAAY,SAA4B,EAAE;QACxC,mDAAmD;QACnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;QAElD,6BAA6B;QAC7B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACzE,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,4BAA4B;QAC5B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnD,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,QAAgB,EAAE,MAAc;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAmB,EAAE,gBAAyB;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,6BAA6B;QAC7B,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACjE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1D,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7B,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,sDAAsD,MAAM,EAAE,CAAC,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAW;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5B,8BAA8B;YAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACpD,4BAA4B;gBAC9B,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;gBACjE,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,MAAM,CAAC,MAAM,iBAAiB,EAAE,CAAC;YACrF,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,OAAe,EAAE,SAAiB;QAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAClD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,SAAiB;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;YAC1C,IAAI,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC7B,cAAc,CAAC,OAAO,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,MAAc;QACtD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,KAAK,EACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,CAAS,EAAE,CAAS;QAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,KAAK,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW;YACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW;YACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACxC,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QACnF,CAAC;QAED,uDAAuD;QACvD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC/E,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,sCAAsC;QACxC,CAAC;QAED,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC7B,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAc;QAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1D,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACF;AAvPD,kCAuPC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CACxC,KAAkB,EAClB,gBAAoC,EACpC,OAA0B;IAE1B,OAAO,CAAC,KAAmB,EAAE,EAAE;QAC7B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAS,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Rate Limiting & Anti-Abuse Layer
3
+ * Prevents brute force attacks and rapid-fire abuse
4
+ */
5
+ export interface RateLimitConfig {
6
+ /** Maximum requests allowed in the time window */
7
+ maxRequests: number;
8
+ /** Time window in milliseconds */
9
+ windowMs: number;
10
+ /** Duration to block after limit exceeded (optional) */
11
+ blockDurationMs?: number;
12
+ /** Whether to use sliding window (vs fixed window) */
13
+ slidingWindow?: boolean;
14
+ }
15
+ export interface RateLimitResult {
16
+ /** Whether the request is allowed */
17
+ allowed: boolean;
18
+ /** Seconds until retry is allowed (if blocked) */
19
+ retryAfter?: number;
20
+ /** Number of remaining requests in current window */
21
+ remaining: number;
22
+ /** Time until window resets (ms) */
23
+ resetIn: number;
24
+ }
25
+ export declare class RateLimiter {
26
+ private entries;
27
+ private config;
28
+ constructor(config?: Partial<RateLimitConfig>);
29
+ /**
30
+ * Check if an action is allowed and record the request
31
+ */
32
+ check(action: string): RateLimitResult;
33
+ /**
34
+ * Check without recording (peek)
35
+ */
36
+ peek(action: string): RateLimitResult;
37
+ /**
38
+ * Reset limits for an action
39
+ */
40
+ reset(action: string): void;
41
+ /**
42
+ * Reset all limits
43
+ */
44
+ resetAll(): void;
45
+ /**
46
+ * Manually block an action
47
+ */
48
+ block(action: string, durationMs?: number): void;
49
+ /**
50
+ * Unblock an action
51
+ */
52
+ unblock(action: string): void;
53
+ /**
54
+ * Get current status for all tracked actions
55
+ */
56
+ getStatus(): Map<string, RateLimitResult>;
57
+ /**
58
+ * Cleanup expired entries
59
+ */
60
+ cleanup(): void;
61
+ }
62
+ /**
63
+ * Pre-configured rate limiter for wallet connections
64
+ * Allows 5 connection attempts per minute, blocks for 2 minutes after
65
+ */
66
+ export declare const connectLimiter: RateLimiter;
67
+ /**
68
+ * Pre-configured rate limiter for transaction signing
69
+ * Allows 20 signs per minute, blocks for 1 minute after
70
+ */
71
+ export declare const signLimiter: RateLimiter;
72
+ /**
73
+ * Pre-configured rate limiter for RPC calls
74
+ * Allows 100 calls per minute
75
+ */
76
+ export declare const rpcLimiter: RateLimiter;
77
+ /**
78
+ * Decorator to rate limit a function
79
+ */
80
+ export declare function rateLimit(limiter: RateLimiter, action: string): <T extends (...args: unknown[]) => Promise<unknown>>(_target: unknown, _propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
81
+ /**
82
+ * Higher-order function to wrap an async function with rate limiting
83
+ */
84
+ export declare function withRateLimit<T extends (...args: unknown[]) => Promise<unknown>>(fn: T, limiter: RateLimiter, action: string): T;