@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,8 @@
1
+ export declare function escapeHtml(unsafe: string): string;
2
+ declare const htmlTag: unique symbol;
3
+ export interface HtmlString {
4
+ [htmlTag]: string;
5
+ html: string;
6
+ }
7
+ export declare function html(strings: TemplateStringsArray, ...values: any[]): HtmlString;
8
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeHtml = escapeHtml;
4
+ exports.html = html;
5
+ function escapeHtml(unsafe) {
6
+ return unsafe
7
+ .replace(/&/g, "&")
8
+ .replace(/</g, "&lt;")
9
+ .replace(/>/g, "&gt;")
10
+ .replace(/"/g, "&quot;")
11
+ .replace(/'/g, "&#039;");
12
+ }
13
+ const htmlTag = Symbol("htmlTag");
14
+ function html(strings, ...values) {
15
+ let result = strings[0];
16
+ for (let i = 0; i < values.length; i++) {
17
+ for (const value of Array.isArray(values[i]) ? values[i] : [values[i]]) {
18
+ const escaped = value?.[htmlTag] ? value[htmlTag] : escapeHtml(String(value ?? ""));
19
+ result += escaped;
20
+ }
21
+ result += strings[i + 1];
22
+ }
23
+ return Object.freeze({
24
+ [htmlTag]: result,
25
+ get html() {
26
+ return result;
27
+ },
28
+ });
29
+ }
30
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/helpers/html.ts"],"names":[],"mappings":";;AAAA,gCAOC;AASD,oBAkBC;AAlCD,SAAgB,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM;SACV,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAOlC,SAAgB,IAAI,CAAC,OAA6B,EAAE,GAAG,MAAa;IAClE,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,OAAO,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,OAAO,CAAC,EAAE,MAAM;QACjB,IAAI,IAAI;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ export default class IndexedDB {
2
+ dbName: string;
3
+ storeName: string;
4
+ version: number;
5
+ constructor(dbName: string, storeName: string);
6
+ getDb(): Promise<IDBDatabase>;
7
+ getItem<T>(key: string | number): Promise<T | null>;
8
+ setItem(key: string | number, value: any): Promise<void>;
9
+ removeItem(key: string | number): Promise<void>;
10
+ keys(): Promise<unknown>;
11
+ count(): Promise<unknown>;
12
+ length(): Promise<unknown>;
13
+ clear(): Promise<void>;
14
+ }
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class IndexedDB {
4
+ dbName;
5
+ storeName;
6
+ version;
7
+ constructor(dbName, storeName) {
8
+ this.dbName = dbName;
9
+ this.storeName = storeName;
10
+ this.version = 1;
11
+ }
12
+ getDb() {
13
+ return new Promise((resolve, reject) => {
14
+ if (typeof window === "undefined" || typeof indexedDB === "undefined") {
15
+ reject(new Error("IndexedDB is not available (SSR environment)"));
16
+ return;
17
+ }
18
+ const request = indexedDB.open(this.dbName, this.version);
19
+ request.onerror = (event) => {
20
+ console.error("Error opening database:", event.target.error);
21
+ reject(new Error("Error opening database"));
22
+ };
23
+ request.onsuccess = (event) => {
24
+ resolve(request.result);
25
+ };
26
+ request.onupgradeneeded = (event) => {
27
+ const db = request.result;
28
+ const existingStores = db.objectStoreNames;
29
+ if (!existingStores.contains(this.storeName)) {
30
+ db.createObjectStore(this.storeName);
31
+ }
32
+ };
33
+ });
34
+ }
35
+ async getItem(key) {
36
+ const db = await this.getDb();
37
+ if (typeof key === "number") {
38
+ key = key.toString();
39
+ }
40
+ if (typeof key !== "string") {
41
+ throw new Error("Key must be a string");
42
+ }
43
+ return new Promise((resolve, reject) => {
44
+ if (!this.storeName) {
45
+ reject(new Error("Store name not set"));
46
+ return;
47
+ }
48
+ const transaction = db.transaction(this.storeName, "readonly");
49
+ transaction.onerror = (event) => reject(transaction.error);
50
+ const store = transaction.objectStore(this.storeName);
51
+ const request = store.get(key);
52
+ request.onerror = (event) => reject(request.error);
53
+ request.onsuccess = () => {
54
+ resolve(request.result);
55
+ db.close();
56
+ };
57
+ });
58
+ }
59
+ async setItem(key, value) {
60
+ const db = await this.getDb();
61
+ if (typeof key === "number") {
62
+ key = key.toString();
63
+ }
64
+ if (typeof key !== "string") {
65
+ throw new Error("Key must be a string");
66
+ }
67
+ return new Promise((resolve, reject) => {
68
+ if (!this.storeName) {
69
+ reject(new Error("Store name not set"));
70
+ return;
71
+ }
72
+ const transaction = db.transaction(this.storeName, "readwrite");
73
+ transaction.onerror = (event) => reject(transaction.error);
74
+ const store = transaction.objectStore(this.storeName);
75
+ const request = store.put(value, key);
76
+ request.onerror = (event) => reject(request.error);
77
+ request.onsuccess = () => {
78
+ db.close();
79
+ resolve();
80
+ };
81
+ });
82
+ }
83
+ async removeItem(key) {
84
+ const db = await this.getDb();
85
+ if (typeof key === "number") {
86
+ key = key.toString();
87
+ }
88
+ if (typeof key !== "string") {
89
+ throw new Error("Key must be a string");
90
+ }
91
+ return new Promise((resolve, reject) => {
92
+ if (!this.storeName) {
93
+ reject(new Error("Store name not set"));
94
+ return;
95
+ }
96
+ const transaction = db.transaction(this.storeName, "readwrite");
97
+ transaction.onerror = (event) => reject(transaction.error);
98
+ const store = transaction.objectStore(this.storeName);
99
+ const request = store.delete(key);
100
+ request.onerror = (event) => reject(request.error);
101
+ request.onsuccess = () => {
102
+ db.close();
103
+ resolve();
104
+ };
105
+ });
106
+ }
107
+ async keys() {
108
+ const db = await this.getDb();
109
+ return new Promise((resolve, reject) => {
110
+ if (!this.storeName) {
111
+ reject(new Error("Store name not set"));
112
+ return;
113
+ }
114
+ const transaction = db.transaction(this.storeName, "readonly");
115
+ transaction.onerror = (event) => reject(transaction.error);
116
+ const store = transaction.objectStore(this.storeName);
117
+ const request = store.getAllKeys();
118
+ request.onerror = (event) => reject(request.error);
119
+ request.onsuccess = () => {
120
+ resolve(request.result);
121
+ db.close();
122
+ };
123
+ });
124
+ }
125
+ async count() {
126
+ const db = await this.getDb();
127
+ return new Promise((resolve, reject) => {
128
+ if (!this.storeName) {
129
+ reject(new Error("Store name not set"));
130
+ return;
131
+ }
132
+ const transaction = db.transaction(this.storeName, "readonly");
133
+ transaction.onerror = (event) => reject(transaction.error);
134
+ const store = transaction.objectStore(this.storeName);
135
+ const request = store.count();
136
+ request.onerror = (event) => reject(request.error);
137
+ request.onsuccess = () => {
138
+ resolve(request.result);
139
+ db.close();
140
+ };
141
+ });
142
+ }
143
+ async length() {
144
+ return this.count();
145
+ }
146
+ async clear() {
147
+ const db = await this.getDb();
148
+ return new Promise((resolve, reject) => {
149
+ if (!this.storeName) {
150
+ reject(new Error("Store name not set"));
151
+ return;
152
+ }
153
+ const transaction = db.transaction(this.storeName, "readwrite");
154
+ transaction.onerror = (event) => reject(transaction.error);
155
+ const store = transaction.objectStore(this.storeName);
156
+ const request = store.clear();
157
+ request.onerror = (event) => reject(request.error);
158
+ request.onsuccess = () => {
159
+ db.close();
160
+ resolve();
161
+ };
162
+ });
163
+ }
164
+ }
165
+ exports.default = IndexedDB;
166
+ //# sourceMappingURL=indexdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexdb.js","sourceRoot":"","sources":["../../src/helpers/indexdb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ import { WalletManifest, Network } from "../types";
2
+ /**
3
+ * Manifest source with metadata
4
+ */
5
+ export interface ManifestSource {
6
+ /** Unique identifier for this source */
7
+ id: string;
8
+ /** Display name */
9
+ name: string;
10
+ /** URL to fetch manifest from */
11
+ url: string;
12
+ /** Priority (lower = higher priority) */
13
+ priority: number;
14
+ /** Whether this source is trusted */
15
+ trusted: boolean;
16
+ /** Last successful fetch timestamp */
17
+ lastFetched?: number;
18
+ /** Whether this source is enabled */
19
+ enabled: boolean;
20
+ /** Networks this source provides wallets for */
21
+ networks?: Network[];
22
+ }
23
+ /**
24
+ * Fetched manifest with source metadata
25
+ */
26
+ export interface FetchedManifest {
27
+ source: ManifestSource;
28
+ wallets: WalletManifest[];
29
+ version: string;
30
+ fetchedAt: number;
31
+ }
32
+ /**
33
+ * Manifest repository combining multiple sources
34
+ */
35
+ export interface CombinedManifest {
36
+ wallets: WalletManifest[];
37
+ version: string;
38
+ sources: ManifestSource[];
39
+ lastUpdated: number;
40
+ }
41
+ /**
42
+ * Default manifest sources
43
+ */
44
+ export declare const DEFAULT_MANIFEST_SOURCES: ManifestSource[];
45
+ /**
46
+ * Options for the federated manifest manager
47
+ */
48
+ export interface FederatedManifestOptions {
49
+ /** Custom manifest sources */
50
+ sources?: ManifestSource[];
51
+ /** Whether to use default sources */
52
+ useDefaults?: boolean;
53
+ /** Cache duration in milliseconds (default: 5 minutes) */
54
+ cacheDuration?: number;
55
+ /** Request timeout in milliseconds (default: 10 seconds) */
56
+ timeout?: number;
57
+ /** Maximum retries per source */
58
+ maxRetries?: number;
59
+ /** Retry delay in milliseconds */
60
+ retryDelay?: number;
61
+ /** Network to filter wallets for */
62
+ network?: Network;
63
+ /** Callback when manifest is updated */
64
+ onUpdate?: (manifest: CombinedManifest) => void;
65
+ /** Callback on fetch error */
66
+ onError?: (source: ManifestSource, error: Error) => void;
67
+ }
68
+ /**
69
+ * Federated Manifest Manager
70
+ *
71
+ * Aggregates wallet manifests from multiple sources with:
72
+ * - Priority-based merging (higher priority sources override lower)
73
+ * - Caching with TTL
74
+ * - Automatic retries
75
+ * - Health tracking per source
76
+ */
77
+ export declare class FederatedManifestManager {
78
+ private sources;
79
+ private cache;
80
+ private cacheDuration;
81
+ private timeout;
82
+ private maxRetries;
83
+ private retryDelay;
84
+ private network;
85
+ private onUpdate?;
86
+ private onError?;
87
+ constructor(options?: FederatedManifestOptions);
88
+ /**
89
+ * Add a new manifest source
90
+ */
91
+ addSource(source: ManifestSource): void;
92
+ /**
93
+ * Remove a manifest source
94
+ */
95
+ removeSource(sourceId: string): void;
96
+ /**
97
+ * Enable/disable a source
98
+ */
99
+ setSourceEnabled(sourceId: string, enabled: boolean): void;
100
+ /**
101
+ * Get all sources
102
+ */
103
+ getSources(): ManifestSource[];
104
+ /**
105
+ * Fetch manifest from a single source
106
+ */
107
+ fetchFromSource(source: ManifestSource): Promise<FetchedManifest | null>;
108
+ /**
109
+ * Fetch and combine manifests from all enabled sources
110
+ */
111
+ fetchAll(): Promise<CombinedManifest>;
112
+ /**
113
+ * Clear the cache
114
+ */
115
+ clearCache(): void;
116
+ /**
117
+ * Clear cache for a specific source
118
+ */
119
+ clearSourceCache(sourceId: string): void;
120
+ /**
121
+ * Set the network filter
122
+ */
123
+ setNetwork(network: Network): void;
124
+ /**
125
+ * Get cache status for all sources
126
+ */
127
+ getCacheStatus(): Record<string, {
128
+ cached: boolean;
129
+ expiresAt?: number;
130
+ }>;
131
+ /**
132
+ * Register a custom wallet manifest (for debug/development)
133
+ */
134
+ registerCustomWallet(wallet: WalletManifest): void;
135
+ /**
136
+ * Remove a custom wallet
137
+ */
138
+ removeCustomWallet(walletId: string): void;
139
+ }
140
+ /**
141
+ * Validate a wallet manifest
142
+ */
143
+ export declare function validateManifest(manifest: unknown): manifest is WalletManifest;
144
+ /**
145
+ * Merge wallet manifests with conflict resolution
146
+ */
147
+ export declare function mergeManifests(base: WalletManifest[], override: WalletManifest[], strategy?: "override" | "merge"): WalletManifest[];