btc-wallet 0.0.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.
Files changed (53) hide show
  1. package/README.md +9 -0
  2. package/dist/components/btcWalletSelectorContext.d.ts +12 -0
  3. package/dist/components/button/index.d.ts +10 -0
  4. package/dist/components/confirmBox/Modal.d.ts +7 -0
  5. package/dist/components/confirmBox/index.d.ts +9 -0
  6. package/dist/components/connectModal/index.d.ts +5 -0
  7. package/dist/components/copyText/index.d.ts +8 -0
  8. package/dist/components/hook.d.ts +1 -0
  9. package/dist/components/modal/index.d.ts +11 -0
  10. package/dist/components/signModal/index.d.ts +6 -0
  11. package/dist/components/spinner/index.d.ts +6 -0
  12. package/dist/components/tooltip/index.d.ts +7 -0
  13. package/dist/components/transactionDetails/index.d.ts +5 -0
  14. package/dist/connector/base.d.ts +29 -0
  15. package/dist/connector/bitget.d.ts +6 -0
  16. package/dist/connector/bybit.d.ts +6 -0
  17. package/dist/connector/index.d.ts +9 -0
  18. package/dist/connector/injected.d.ts +25 -0
  19. package/dist/connector/okx.d.ts +6 -0
  20. package/dist/connector/tokenPocket.d.ts +6 -0
  21. package/dist/connector/unisat.d.ts +6 -0
  22. package/dist/connector/wizz.d.ts +6 -0
  23. package/dist/connector/xverse.d.ts +23 -0
  24. package/dist/context/index.d.ts +45 -0
  25. package/dist/evmSigner/index.d.ts +4966 -0
  26. package/dist/evmSigner/provider.d.ts +13 -0
  27. package/dist/evmSigner/walletClientProvider.d.ts +10 -0
  28. package/dist/hooks/index.d.ts +6 -0
  29. package/dist/hooks/useAccountContract.d.ts +4 -0
  30. package/dist/hooks/useAccounts.d.ts +3 -0
  31. package/dist/hooks/useBTCProvider.d.ts +16 -0
  32. package/dist/hooks/useConnectModal.d.ts +4 -0
  33. package/dist/hooks/useConnector.d.ts +4 -0
  34. package/dist/hooks/useETHProvider.d.ts +1 -0
  35. package/dist/hooks/useModalStateValue.d.ts +6 -0
  36. package/dist/index.d.ts +7 -0
  37. package/dist/index.js +2738 -0
  38. package/dist/index.js.map +7 -0
  39. package/dist/package.json +1 -0
  40. package/dist/types/accountInfo.d.ts +6 -0
  41. package/dist/types/deserializeTx.d.ts +97 -0
  42. package/dist/types/eventName.d.ts +8 -0
  43. package/dist/types/evmMethod.d.ts +4 -0
  44. package/dist/utils/ethereumUtils.d.ts +7 -0
  45. package/dist/utils/eventUtils.d.ts +4 -0
  46. package/dist/utils/index.d.ts +11 -0
  47. package/dist/utils/initWalletButton.d.ts +6 -0
  48. package/dist/utils/setupBTCWallet.d.ts +11 -0
  49. package/dist/utils/setupSatoshiWallet.d.ts +11 -0
  50. package/dist/utils/txConfirmUtils.d.ts +6 -0
  51. package/esm/index.js +2720 -0
  52. package/esm/index.js.map +7 -0
  53. package/package.json +89 -0
package/dist/index.js ADDED
@@ -0,0 +1,2738 @@
1
+ "use client";
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
10
+ var __getProtoOf = Object.getPrototypeOf;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __export = (target, all) => {
27
+ for (var name in all)
28
+ __defProp(target, name, { get: all[name], enumerable: true });
29
+ };
30
+ var __copyProps = (to, from, except, desc) => {
31
+ if (from && typeof from === "object" || typeof from === "function") {
32
+ for (let key of __getOwnPropNames(from))
33
+ if (!__hasOwnProp.call(to, key) && key !== except)
34
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
35
+ }
36
+ return to;
37
+ };
38
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
42
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
+ var __accessCheck = (obj, member, msg) => {
44
+ if (!member.has(obj))
45
+ throw TypeError("Cannot " + msg);
46
+ };
47
+ var __privateGet = (obj, member, getter) => {
48
+ __accessCheck(obj, member, "read from private field");
49
+ return getter ? getter.call(obj) : member.get(obj);
50
+ };
51
+ var __privateAdd = (obj, member, value) => {
52
+ if (member.has(obj))
53
+ throw TypeError("Cannot add the same private member more than once");
54
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
55
+ };
56
+ var __async = (__this, __arguments, generator) => {
57
+ return new Promise((resolve, reject) => {
58
+ var fulfilled = (value) => {
59
+ try {
60
+ step(generator.next(value));
61
+ } catch (e) {
62
+ reject(e);
63
+ }
64
+ };
65
+ var rejected = (value) => {
66
+ try {
67
+ step(generator.throw(value));
68
+ } catch (e) {
69
+ reject(e);
70
+ }
71
+ };
72
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
73
+ step((generator = generator.apply(__this, __arguments)).next());
74
+ });
75
+ };
76
+
77
+ // src/index.ts
78
+ var src_exports = {};
79
+ __export(src_exports, {
80
+ BaseConnector: () => BaseConnector,
81
+ BitgetConnector: () => BitgetConnector,
82
+ BtcWalletSelectorContextProvider: () => BtcWalletSelectorContextProvider,
83
+ BybitConnector: () => BybitConnector,
84
+ ConnectProvider: () => ConnectProvider,
85
+ InitContextHook: () => InitContextHook,
86
+ InjectedConnector: () => InjectedConnector,
87
+ OKXConnector: () => OKXConnector,
88
+ TokenPocketConnector: () => TokenPocketConnector,
89
+ UnisatConnector: () => UnisatConnector,
90
+ WizzConnector: () => WizzConnector,
91
+ XverseConnector: () => XverseConnector,
92
+ getVersion: () => getVersion,
93
+ setupBTCWallet: () => setupBTCWallet,
94
+ useAccountContract: () => useAccountContract,
95
+ useAccounts: () => useAccounts,
96
+ useBTCProvider: () => useBTCProvider,
97
+ useBtcWalletSelector: () => useBtcWalletSelector,
98
+ useConnectModal: () => useConnectModal,
99
+ useConnector: () => useConnector,
100
+ useETHProvider: () => useETHProvider
101
+ });
102
+ module.exports = __toCommonJS(src_exports);
103
+
104
+ // src/connector/base.ts
105
+ var BaseConnector = class {
106
+ };
107
+
108
+ // src/icons/bitget.png
109
+ var bitget_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAORlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgExAAIAAAAfAAAAZgEyAAIAAAAUAAAAhodpAAQAAAABAAAAmgAAAAAAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpAAAyMDIzOjA4OjA0IDE0OjA5OjI0AAAEkAQAAgAAABQAAADQoAEAAwAAAAEAAQAAoAIABAAAAAEAAACAoAMABAAAAAEAAACAAAAAADIwMjM6MDg6MDQgMTA6MDk6MDkAdpUVnwAAAAlwSFlzAAALEwAACxMBAJqcGAAACW9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMjMtMDgtMDRUMTQ6MDk6MjQrMDg6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyMy0wOC0wNFQxMDowOTowOSswODowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMjMtMDgtMDRUMTQ6MDk6MjQrMDg6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAyMy0wOC0wNFQxMDowOTowOSswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpjZmU0ZDc0NC0wMGY0LTRhOTEtYjI2Mi0xMDFmNmYyYjYwYTk8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAyMy0wOC0wNFQxNDowOToyNCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozMDlmN2NhZS0wOThiLTQ3ZDUtOWE0NC02MTg3MjQ1ZTEwMDY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6Y2ZlNGQ3NDQtMDBmNC00YTkxLWIyNjItMTAxZjZmMmI2MGE5PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6Y2ZlNGQ3NDQtMDBmNC00YTkxLWIyNjItMTAxZjZmMmI2MGE5PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjMwOWY3Y2FlLTA5OGItNDdkNS05YTQ0LTYxODcyNDVlMTAwNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlv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";
110
+
111
+ // src/connector/injected.ts
112
+ var InjectedConnector = class extends BaseConnector {
113
+ constructor(propertity) {
114
+ var _a;
115
+ super();
116
+ this.propertity = propertity;
117
+ const props = (_a = this.propertity) == null ? void 0 : _a.split(".");
118
+ if (!this.propertity || props.length > 2) {
119
+ throw new Error("please input valid propertity");
120
+ }
121
+ }
122
+ isReady() {
123
+ if (typeof window !== "undefined") {
124
+ const props = this.propertity.split(".");
125
+ if (props.length === 1) {
126
+ return typeof window[props[0]] !== "undefined";
127
+ } else {
128
+ return typeof window[props[0]] !== "undefined" && typeof window[props[0]][props[1]] !== "undefined";
129
+ }
130
+ }
131
+ return false;
132
+ }
133
+ requestAccounts() {
134
+ return __async(this, null, function* () {
135
+ const accounts = yield this.getProviderOrThrow().requestAccounts();
136
+ return accounts;
137
+ });
138
+ }
139
+ getAccounts() {
140
+ return __async(this, null, function* () {
141
+ const accounts = yield this.getProviderOrThrow().getAccounts();
142
+ return accounts;
143
+ });
144
+ }
145
+ getPublicKey() {
146
+ return __async(this, null, function* () {
147
+ return this.getProviderOrThrow().getPublicKey();
148
+ });
149
+ }
150
+ signMessage(signStr, type) {
151
+ return __async(this, null, function* () {
152
+ const addresses = yield this.getAccounts();
153
+ if (addresses.length === 0) {
154
+ throw new Error(`${this.metadata.name} not connected!`);
155
+ }
156
+ return this.getProviderOrThrow().signMessage(signStr, type);
157
+ });
158
+ }
159
+ on(event, handler) {
160
+ var _a;
161
+ const provider = this.getProvider();
162
+ return (_a = provider == null ? void 0 : provider.on) == null ? void 0 : _a.call(provider, event, handler);
163
+ }
164
+ removeListener(event, handler) {
165
+ var _a;
166
+ const provider = this.getProvider();
167
+ return (_a = provider == null ? void 0 : provider.removeListener) == null ? void 0 : _a.call(provider, event, handler);
168
+ }
169
+ getProvider() {
170
+ if (this.isReady()) {
171
+ const props = this.propertity.split(".");
172
+ if (props.length === 1) {
173
+ return window[props[0]];
174
+ } else {
175
+ return window[props[0]][props[1]];
176
+ }
177
+ }
178
+ }
179
+ getProviderOrThrow() {
180
+ const provider = this.getProvider();
181
+ if (!provider) {
182
+ throw new Error(`${this.metadata.name} is not install or not create Bitcoin wallet!`);
183
+ }
184
+ return provider;
185
+ }
186
+ getNetwork() {
187
+ return __async(this, null, function* () {
188
+ return this.getProviderOrThrow().getNetwork();
189
+ });
190
+ }
191
+ switchNetwork(network) {
192
+ return __async(this, null, function* () {
193
+ return this.getProviderOrThrow().switchNetwork(network);
194
+ });
195
+ }
196
+ sendBitcoin(toAddress, satoshis, options) {
197
+ return __async(this, null, function* () {
198
+ return this.getProviderOrThrow().sendBitcoin(toAddress, satoshis, options);
199
+ });
200
+ }
201
+ sendInscription(address, inscriptionId, options) {
202
+ return __async(this, null, function* () {
203
+ const result = yield this.getProviderOrThrow().sendInscription(address, inscriptionId, options);
204
+ if (typeof result === "string") {
205
+ return {
206
+ txid: result
207
+ };
208
+ }
209
+ return result;
210
+ });
211
+ }
212
+ disconnect() {
213
+ }
214
+ };
215
+
216
+ // src/connector/bitget.ts
217
+ var BitgetConnector = class extends InjectedConnector {
218
+ constructor() {
219
+ super("bitkeep.unisat");
220
+ this.metadata = {
221
+ id: "bitget",
222
+ name: "Bitget Wallet",
223
+ icon: bitget_default,
224
+ downloadUrl: "https://web3.bitget.com/en/wallet-download"
225
+ };
226
+ }
227
+ };
228
+
229
+ // src/icons/bybit.png
230
+ var bybit_default = "data:image/png;base64,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";
231
+
232
+ // src/connector/bybit.ts
233
+ var BybitConnector = class extends InjectedConnector {
234
+ constructor() {
235
+ super("bybitWallet.bitcoin");
236
+ this.metadata = {
237
+ id: "bybit",
238
+ name: "Bybit Wallet",
239
+ icon: bybit_default,
240
+ downloadUrl: "https://www.bybit.com/download/"
241
+ };
242
+ }
243
+ };
244
+
245
+ // src/icons/okx.svg
246
+ var okx_default = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiBmaWxsPSJibGFjayIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM5My45NDkgMjE4LjUxOEgyMzEuMDQ5QzIyNC4xMjkgMjE4LjUxOCAyMTguNTE5IDIyNC4xMjggMjE4LjUxOSAyMzEuMDQ4VjM5My45NDhDMjE4LjUxOSA0MDAuODY5IDIyNC4xMjkgNDA2LjQ3OSAyMzEuMDQ5IDQwNi40NzlIMzkzLjk0OUM0MDAuODcgNDA2LjQ3OSA0MDYuNDggNDAwLjg2OSA0MDYuNDggMzkzLjk0OFYyMzEuMDQ4QzQwNi40OCAyMjQuMTI4IDQwMC44NyAyMTguNTE4IDM5My45NDkgMjE4LjUxOFpNNTgxLjk5MiA0MDYuNDc5SDQxOS4wOTJDNDEyLjE3MiA0MDYuNDc5IDQwNi41NjEgNDEyLjA5IDQwNi41NjEgNDE5LjAxVjU4MS45MUM0MDYuNTYxIDU4OC44MzEgNDEyLjE3MiA1OTQuNDQxIDQxOS4wOTIgNTk0LjQ0MUg1ODEuOTkyQzU4OC45MTMgNTk0LjQ0MSA1OTQuNTIzIDU4OC44MzEgNTk0LjUyMyA1ODEuOTFWNDE5LjAxQzU5NC41MjMgNDEyLjA5IDU4OC45MTMgNDA2LjQ3OSA1ODEuOTkyIDQwNi40NzlaTTYwNi45NzQgMjE4LjUxOEg3NjkuODc0Qzc3Ni43OTQgMjE4LjUxOCA3ODIuNDA1IDIyNC4xMjggNzgyLjQwNSAyMzEuMDQ4VjM5My45NDhDNzgyLjQwNSA0MDAuODY5IDc3Ni43OTQgNDA2LjQ3OSA3NjkuODc0IDQwNi40NzlINjA2Ljk3NEM2MDAuMDUzIDQwNi40NzkgNTk0LjQ0MyA0MDAuODY5IDU5NC40NDMgMzkzLjk0OFYyMzEuMDQ4QzU5NC40NDMgMjI0LjEyOCA2MDAuMDUzIDIxOC41MTggNjA2Ljk3NCAyMTguNTE4Wk0zOTMuOTUgNTk0LjQ0MkgyMzEuMDQ5QzIyNC4xMjkgNTk0LjQ0MiAyMTguNTE5IDYwMC4wNTIgMjE4LjUxOSA2MDYuOTczVjc2OS44NzNDMjE4LjUxOSA3NzYuNzkzIDIyNC4xMjkgNzgyLjQwNCAyMzEuMDQ5IDc4Mi40MDRIMzkzLjk1QzQwMC44NyA3ODIuNDA0IDQwNi40OCA3NzYuNzkzIDQwNi40OCA3NjkuODczVjYwNi45NzNDNDA2LjQ4IDYwMC4wNTIgNDAwLjg3IDU5NC40NDIgMzkzLjk1IDU5NC40NDJaTTYwNi45NzQgNTk0LjQ0Mkg3NjkuODc0Qzc3Ni43OTQgNTk0LjQ0MiA3ODIuNDA1IDYwMC4wNTIgNzgyLjQwNSA2MDYuOTczVjc2OS44NzNDNzgyLjQwNSA3NzYuNzkzIDc3Ni43OTQgNzgyLjQwNCA3NjkuODc0IDc4Mi40MDRINjA2Ljk3NEM2MDAuMDUzIDc4Mi40MDQgNTk0LjQ0MyA3NzYuNzkzIDU5NC40NDMgNzY5Ljg3M1Y2MDYuOTczQzU5NC40NDMgNjAwLjA1MiA2MDAuMDUzIDU5NC40NDIgNjA2Ljk3NCA1OTQuNDQyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
247
+
248
+ // src/connector/okx.ts
249
+ var OKXConnector = class extends InjectedConnector {
250
+ constructor() {
251
+ super("okxwallet.bitcoin");
252
+ this.metadata = {
253
+ id: "okx",
254
+ name: "OKX Wallet",
255
+ icon: okx_default,
256
+ downloadUrl: "https://www.okx.com/download"
257
+ };
258
+ }
259
+ };
260
+
261
+ // src/icons/tokenpocket.png
262
+ var tokenpocket_default = "data:image/png;base64,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";
263
+
264
+ // src/connector/tokenPocket.ts
265
+ var TokenPocketConnector = class extends InjectedConnector {
266
+ constructor() {
267
+ super("tokenpocket.bitcoin");
268
+ this.metadata = {
269
+ id: "tokenpocket",
270
+ name: "TokenPocket",
271
+ icon: tokenpocket_default,
272
+ downloadUrl: "https://www.tokenpocket.pro/en/download/app"
273
+ };
274
+ }
275
+ };
276
+
277
+ // src/icons/unisat.svg
278
+ var unisat_default = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX2ZyYW1lXzIiIGRhdGEtbmFtZT0iZnJhbWUgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iLTEyIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogdXJsKCNfbGxfMTI2KTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiB1cmwoI19sbF8xMjMpOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6IHVybCgjX2xsXzEyMSk7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBmb250LWZhbWlseTogSmV0QnJhaW5zTW9ub1JvbWFuLU1lZGl1bSwgJ0pldEJyYWlucyBNb25vJzsKICAgICAgICBmb250LXNpemU6IDI0Ljc5cHg7CiAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA1MDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9Il9sbF8xMjYiICB4MT0iOTYxLjY4IiB5MT0iLTQ1LjU3IiB4Mj0iOTg2LjE0IiB5Mj0iLTExMC4wNiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3ODAuOTkgNjcxLjcpIHJvdGF0ZSgtMTM0LjczKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwNzAxMDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuMzYiIHN0b3AtY29sb3I9IiM3NzM5MGQiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuNjciIHN0b3AtY29sb3I9IiNlYTgxMDEiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZjRiODUyIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJfbGxfMTIxIiAgeDE9Ijk2NS4xNyIgeTE9Ii0xMzIuNDEiIHgyPSI5MjkuMjIiIHkyPSItNjUuMjIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzgwLjk5IDY3MS43KSByb3RhdGUoLTEzNC43MykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDcwMTAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjM3IiBzdG9wLWNvbG9yPSIjNzczOTBkIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjY3IiBzdG9wLWNvbG9yPSIjZWE4MTAxIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2Y0ZmI1MiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0iX2xsXzEyMyIgIGN4PSIzNS41OSIgY3k9IjMwLjc2IiBmeD0iMzUuNTkiIGZ5PSIzMC43NiIgcj0iNy40NyIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwIDApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2Y0Yjg1MiIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4zMyIgc3RvcC1jb2xvcj0iI2VhODEwMSIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii42NCIgc3RvcC1jb2xvcj0iIzc3MzkwZCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwNzAxMDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxnIGlkPSJfZnJhbWVfMS0yIiA+CiAgICA8Zz4KICAgICAgPGc+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTQuODEsOC45MWwyMC4zNCwyMC4xNGMxLjczLDEuNzEsMi41OCwzLjQ0LDIuNTUsNS4xOS0uMDMsMS43NC0uNzcsMy4zNC0yLjIzLDQuNzgtMS41MiwxLjUxLTMuMTYsMi4yOC00LjkyLDIuMzEtMS43NiwuMDMtMy41LS44Mi01LjI0LTIuNTNsLTIwLjgtMjAuNmMtMi4zNi0yLjM0LTQuNjQtNC02Ljg0LTQuOTctMi4xOS0uOTctNC41LTEuMTItNi45Mi0uNDYtMi40MiwuNjYtNS4wMiwyLjM3LTcuOCw1LjEzLTMuODQsMy44LTUuNjcsNy4zNy01LjQ4LDEwLjcxLC4xOSwzLjM0LDIuMDksNi43OSw1LjcxLDEwLjM4bDIwLjk3LDIwLjc3YzEuNzUsMS43MywyLjYxLDMuNDYsMi41OCw1LjE4LS4wMywxLjcyLS43OCwzLjMyLTIuMjYsNC43OC0xLjQ4LDEuNDYtMy4xLDIuMjMtNC44OCwyLjI5LTEuNzcsLjA2LTMuNTMtLjc4LTUuMjgtMi41MUwxMy45OSw0OS4zNmMtMy4zMS0zLjI4LTUuNy02LjM4LTcuMTctOS4zLTEuNDctMi45Mi0yLjAyLTYuMjMtMS42NC05LjkyLC4zNC0zLjE2LDEuMzYtNi4yMiwzLjA0LTkuMTksMS42OS0yLjk3LDQuMS02LDcuMjMtOS4xMSwzLjczLTMuNyw3LjI5LTYuNTMsMTAuNjktOC41QzI5LjU0LDEuMzcsMzIuODIsLjI3LDM1Ljk5LC4wNGMzLjE3LS4yMyw2LjMsLjQsOS40LDEuODksMy4wOSwxLjQ5LDYuMjMsMy44MSw5LjQzLDYuOThaIi8+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjIuOTIsOTAuMTlMMi41OCw3MC4wNUMuODUsNjguMzQsMCw2Ni42MSwuMDMsNjQuODZzLjc3LTMuMzQsMi4yMy00Ljc4YzEuNTItMS41MSwzLjE2LTIuMjgsNC45Mi0yLjMxLDEuNzYtLjAzLDMuNSwuODEsNS4yNCwyLjUzbDIwLjgsMjAuNmMyLjM3LDIuMzQsNC42NCw0LDYuODQsNC45N3M0LjUsMS4xMiw2LjkyLC40NmMyLjQyLS42Niw1LjAyLTIuMzcsNy44LTUuMTMsMy44NC0zLjgsNS42Ny03LjM3LDUuNDgtMTAuNzEtLjE5LTMuMzQtMi4wOS02LjgtNS43MS0xMC4zOGwtMTEuMTctMTAuOTdjLTEuNzUtMS43My0yLjYxLTMuNDYtMi41OC01LjE4LC4wMy0xLjcyLC43OC0zLjMyLDIuMjYtNC43OCwxLjQ4LTEuNDYsMy4xLTIuMjMsNC44OC0yLjI5LDEuNzctLjA2LDMuNTMsLjc4LDUuMjgsMi41MWwxMC41MywxMC4zNGMzLjMxLDMuMjgsNS43LDYuMzgsNy4xNyw5LjMsMS40NywyLjkyLDIuMDIsNi4yMywxLjY0LDkuOTItLjM0LDMuMTYtMS4zNiw2LjIyLTMuMDQsOS4xOS0xLjY5LDIuOTctNC4xLDYtNy4yMyw5LjExLTMuNzMsMy43LTcuMjksNi41My0xMC42OSw4LjUtMy40LDEuOTctNi42OCwzLjA3LTkuODUsMy4zLTMuMTcsLjIzLTYuMy0uNC05LjQtMS44OS0zLjA5LTEuNDktNi4yNC0zLjgxLTkuNDMtNi45OFoiLz4KICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjM1LjYiIGN5PSIzMC43NSIgcj0iNy40NyIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4=";
279
+
280
+ // src/connector/unisat.ts
281
+ var UnisatConnector = class extends InjectedConnector {
282
+ constructor() {
283
+ super("unisat");
284
+ this.metadata = {
285
+ id: "unisat",
286
+ name: "Unisat Wallet",
287
+ icon: unisat_default,
288
+ downloadUrl: "https://unisat.io"
289
+ };
290
+ }
291
+ };
292
+
293
+ // src/icons/wizz.svg
294
+ var wizz_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZEODE1IiBkPSJtMjkuNjExIDE1LjU4NC0yLjU5Ny0yLjU5OC0yLjU5OCAyLjU5OCAyLjU5OCAyLjU5NyAyLjU5NyAyLjU5NyAyLjU5Ny0yLjU5N3oiLz48cGF0aCBmaWxsPSIjRkY5ODEzIiBkPSJtMjkuNjExIDAtMi41OTggMi41OTcgMi41OTggMi41OTggMi41OTctMi41OTh6TTQwIDEwLjM4OWwtMi41OTctMi41OTctMi41OTggMi41OTcgMi41OTggMi41OTh6TTI0LjQxNiAzMS4xNjhsMi41OTggMi41OTcgMi41OTctMi41OTctMi41OTctMi41OTh6TTYuMjM1IDEyLjk4NmwyLjU5OCAyLjU5OCAyLjU5Ny0yLjU5OC0yLjU5Ny0yLjU5N3pNMTkuMjIyIDBsLTIuNTk4IDIuNTk3IDIuNTk4IDIuNTk4IDIuNTk3LTIuNTk4ek04LjgzMyA1LjE5NWwyLjU5NyAyLjU5NyAyLjU5Ny0yLjU5Ny0yLjU5Ny0yLjU5OHpNMzcuNDAzIDE4LjE4MWwtMi41OTggMi41OTcgMi41OTggMi41OThMNDAgMjAuNzc4ek0zMi4yMDggMjguNTdsMi41OTcgMi41OTggMi41OTgtMi41OTgtMi41OTgtMi41OTd6Ii8+PHBhdGggZmlsbD0iIzVCNUI3MiIgZD0ibTI5LjYxMSAyMC43NzgtMi41OTctMi41OTctMi41OTggMi41OTctMi41OTctMi41OTctMi41OTctMi41OTcgMi41OTctMi41OTgtMi41OTctMi41OTctMi41OTgtMi41OTctMi41OTcgMi41OTcgMi41OTcgMi41OTctMi41OTcgMi41OTggMi41OTcgMi41OTctMi41OTcgMi41OTctMS4yOTktMS4yOTgtMi41OTcgMi41OTcgMi41OTcgMi41OTctMi41OTcgMi41OTgtMi40NjggMi40NjgtMi40NjggMi40NjgtMi41OTggMi41OThMMCAzNy40MDMgMi41OTcgNDBsMi41OTgtMi41OTcgMi41OTctMi41OTcgMi40NjgtMi40NjkuMTI5LS4xMjkgMi4zMzktMi4zMzkuMTI5LS4xMjkgMi40NjktMi40NjggMi41OTcgMi41OTcgMi41OTctMi41OTctMS4yOTgtMS4yOTkgMi41OTctMi41OTcgMi41OTcgMi41OTcgMi41OTgtMi41OTcgMi41OTcgMi41OTcgMi41OTctMi41OTd6Ii8+PHBhdGggZmlsbD0iI0ZGOTgxMyIgZD0ibTI5LjYxMSAxMC4zODktMi41OTctMi41OTctMi41OTggMi41OTctMi41OTctMi41OTctMi41OTcgMi41OTcgMi41OTcgMi41OTgtMi41OTcgMi41OTcgMi41OTcgMi41OTcgMi41OTcgMi41OTcgMi41OTgtMi41OTctMi41OTgtMi41OTcgMi41OTgtMi41OTcgMi41OTcgMi41OTcgMi41OTctMi41OTd6Ii8+PC9nPjwvc3ZnPgo=";
295
+
296
+ // src/connector/wizz.ts
297
+ var WizzConnector = class extends InjectedConnector {
298
+ constructor() {
299
+ super("wizz");
300
+ this.metadata = {
301
+ id: "wizz",
302
+ name: "Wizz Wallet",
303
+ icon: wizz_default,
304
+ downloadUrl: "https://wizzwallet.io"
305
+ };
306
+ }
307
+ };
308
+
309
+ // src/connector/xverse.ts
310
+ var import_events = __toESM(require("events"), 1);
311
+
312
+ // src/icons/xverse.png
313
+ var xverse_default = "data:image/png;base64,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";
314
+
315
+ // src/connector/xverse.ts
316
+ var _network, _event;
317
+ var XverseConnector = class extends BaseConnector {
318
+ constructor() {
319
+ super();
320
+ __privateAdd(this, _network, "Mainnet");
321
+ __privateAdd(this, _event, new import_events.default());
322
+ this.metadata = {
323
+ id: "xverse",
324
+ name: "Xverse Wallet",
325
+ icon: xverse_default,
326
+ downloadUrl: "https://www.xverse.app"
327
+ };
328
+ this.loadAccounts = (network) => __async(this, null, function* () {
329
+ const { getAddress, AddressPurpose } = yield import("sats-connect");
330
+ const addresses = yield new Promise((resolve, reject) => {
331
+ const getAddressOptions = {
332
+ payload: {
333
+ purposes: [AddressPurpose.Payment, AddressPurpose.Ordinals],
334
+ message: "Address for receiving Ordinals and payments",
335
+ network: {
336
+ type: network
337
+ }
338
+ },
339
+ onFinish: (response) => {
340
+ resolve(response.addresses);
341
+ },
342
+ onCancel: () => reject({
343
+ code: 4001,
344
+ message: "User rejected the request."
345
+ })
346
+ };
347
+ getAddress(getAddressOptions).catch((error) => reject(error));
348
+ });
349
+ localStorage.setItem("btc-connect-xverse-addresses-" + network, JSON.stringify(addresses));
350
+ return addresses;
351
+ });
352
+ __privateGet(this, _event).setMaxListeners(100);
353
+ }
354
+ isReady() {
355
+ return typeof window !== "undefined" && typeof window.BitcoinProvider !== "undefined";
356
+ }
357
+ sendInscription() {
358
+ return __async(this, null, function* () {
359
+ throw new Error("Unsupported");
360
+ });
361
+ }
362
+ requestAccounts() {
363
+ return __async(this, null, function* () {
364
+ if (!this.isReady()) {
365
+ throw new Error(`${this.metadata.name} is not install!`);
366
+ }
367
+ const addresses = yield this.loadAccounts(__privateGet(this, _network));
368
+ return addresses.map((item) => item.address);
369
+ });
370
+ }
371
+ getAccounts() {
372
+ return __async(this, null, function* () {
373
+ if (!this.isReady()) {
374
+ throw new Error(`${this.metadata.name} is not install!`);
375
+ }
376
+ const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
377
+ if (data) {
378
+ const addresses = JSON.parse(data);
379
+ return addresses.map((item) => item.address);
380
+ } else {
381
+ return [];
382
+ }
383
+ });
384
+ }
385
+ getPublicKey() {
386
+ return __async(this, null, function* () {
387
+ if (!this.isReady()) {
388
+ throw new Error(`${this.metadata.name} is not install!`);
389
+ }
390
+ const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
391
+ if (data) {
392
+ const addresses = JSON.parse(data);
393
+ return addresses[0].publicKey;
394
+ } else {
395
+ return "";
396
+ }
397
+ });
398
+ }
399
+ signMessage(signStr) {
400
+ return __async(this, null, function* () {
401
+ if (!this.isReady()) {
402
+ throw new Error(`${this.metadata.name} is not install!`);
403
+ }
404
+ const addresses = yield this.getAccounts();
405
+ if (addresses.length === 0) {
406
+ throw new Error(`${this.metadata.name} not connected!`);
407
+ }
408
+ const { signMessage } = yield import("sats-connect");
409
+ const sig = yield new Promise((resolve, reject) => {
410
+ const signMessageOptions = {
411
+ payload: {
412
+ network: {
413
+ type: __privateGet(this, _network)
414
+ },
415
+ address: addresses[0],
416
+ message: signStr
417
+ },
418
+ onFinish: (response) => {
419
+ resolve(response);
420
+ },
421
+ onCancel: () => {
422
+ reject({
423
+ code: 4001,
424
+ message: "User rejected the request."
425
+ });
426
+ }
427
+ };
428
+ signMessage(signMessageOptions).catch((e) => {
429
+ reject(e);
430
+ });
431
+ });
432
+ const modifiedSig = Buffer.from(sig, "base64");
433
+ modifiedSig[0] = 31 + (modifiedSig[0] - 31) % 4;
434
+ return modifiedSig.toString("base64");
435
+ });
436
+ }
437
+ on(event, handler) {
438
+ return __privateGet(this, _event).on(event, handler);
439
+ }
440
+ removeListener(event, handler) {
441
+ return __privateGet(this, _event).removeListener(event, handler);
442
+ }
443
+ getProvider() {
444
+ if (this.isReady()) {
445
+ return window.BitcoinProvider;
446
+ }
447
+ }
448
+ getNetwork() {
449
+ return __async(this, null, function* () {
450
+ if (!this.isReady()) {
451
+ throw new Error(`${this.metadata.name} is not install!`);
452
+ }
453
+ return __privateGet(this, _network) === "Mainnet" ? "livenet" : "testnet";
454
+ });
455
+ }
456
+ switchNetwork() {
457
+ return __async(this, null, function* () {
458
+ throw new Error("Unsupported");
459
+ });
460
+ }
461
+ sendBitcoin(toAddress, satoshis) {
462
+ return __async(this, null, function* () {
463
+ const provider = this.getProvider();
464
+ if (!provider) {
465
+ throw new Error(`${this.metadata.name} is not install!`);
466
+ }
467
+ const { sendBtcTransaction } = yield import("sats-connect");
468
+ const addresses = yield this.getAccounts();
469
+ if (addresses.length === 0) {
470
+ throw new Error(`${this.metadata.name} not connected!`);
471
+ }
472
+ const result = yield new Promise((resolve, reject) => {
473
+ const sendBtcOptions = {
474
+ payload: {
475
+ network: {
476
+ type: __privateGet(this, _network)
477
+ },
478
+ recipients: [
479
+ {
480
+ address: toAddress,
481
+ amountSats: BigInt(satoshis)
482
+ }
483
+ ],
484
+ senderAddress: addresses[0]
485
+ },
486
+ onFinish: (response) => {
487
+ resolve(response);
488
+ },
489
+ onCancel: () => {
490
+ reject({
491
+ code: 4001,
492
+ message: "User rejected the request."
493
+ });
494
+ }
495
+ };
496
+ sendBtcTransaction(sendBtcOptions).catch((e) => reject(e));
497
+ });
498
+ return result;
499
+ });
500
+ }
501
+ disconnect() {
502
+ localStorage.removeItem("btc-connect-xverse-addresses-Mainnet");
503
+ localStorage.removeItem("btc-connect-xverse-addresses-Testnet");
504
+ }
505
+ };
506
+ _network = new WeakMap();
507
+ _event = new WeakMap();
508
+
509
+ // src/context/index.tsx
510
+ var import_aa = require("@particle-network/aa");
511
+ var import_chains4 = require("@particle-network/chains");
512
+ var import_wallet = require("@particle-network/wallet");
513
+ var import_react10 = require("react");
514
+
515
+ // src/components/connectModal/index.tsx
516
+ var import_react5 = require("react");
517
+
518
+ // src/hooks/useAccountContract.ts
519
+ var useAccountContract = () => {
520
+ const { accountContract, setAccountContract } = useConnectProvider();
521
+ return {
522
+ accountContract,
523
+ setAccountContract
524
+ };
525
+ };
526
+
527
+ // src/hooks/useAccounts.ts
528
+ var useAccounts = () => {
529
+ const { accounts } = useConnectProvider();
530
+ return { accounts };
531
+ };
532
+
533
+ // src/hooks/useBTCProvider.ts
534
+ var import_react = require("react");
535
+ var useBTCProvider = () => {
536
+ const { connector, provider, accounts, getPublicKey, signMessage, getNetwork, switchNetwork, sendBitcoin } = useConnectProvider();
537
+ const sendInscription = (0, import_react.useCallback)(
538
+ (address, inscriptionId, options) => __async(void 0, null, function* () {
539
+ if (!connector) {
540
+ throw new Error("Wallet not connected!");
541
+ }
542
+ const result = yield connector.sendInscription(address, inscriptionId, options);
543
+ return result;
544
+ }),
545
+ [connector]
546
+ );
547
+ return { provider, accounts, getPublicKey, signMessage, getNetwork, switchNetwork, sendBitcoin, sendInscription };
548
+ };
549
+
550
+ // src/hooks/useConnectModal.ts
551
+ var useConnectModal = () => {
552
+ const { openConnectModal, disconnect } = useConnectProvider();
553
+ return { openConnectModal, disconnect };
554
+ };
555
+
556
+ // src/hooks/useConnector.ts
557
+ var import_react2 = require("react");
558
+ var useConnector = () => {
559
+ const { connectors, setConnectorId } = useConnectProvider();
560
+ const connect = (0, import_react2.useCallback)(
561
+ (connectorId) => __async(void 0, null, function* () {
562
+ const connector = connectors.find((item) => item.metadata.id === connectorId);
563
+ if (!connector) {
564
+ throw new Error(`connector id ${connectorId} not found`);
565
+ }
566
+ const accounts = yield connector.requestAccounts();
567
+ if (accounts.length > 0) {
568
+ localStorage.setItem("current-connector-id", connector.metadata.id);
569
+ setConnectorId(connector.metadata.id);
570
+ }
571
+ }),
572
+ [connectors, setConnectorId]
573
+ );
574
+ return { connectors, connect };
575
+ };
576
+
577
+ // src/hooks/useETHProvider.ts
578
+ var import_util = require("@ethereumjs/util");
579
+ var import_react3 = require("react");
580
+ var import_viem = require("viem");
581
+
582
+ // src/evmSigner/provider.ts
583
+ var EthereumProvider = class {
584
+ constructor(sendUserOp, signer, account) {
585
+ this.sendUserOp = sendUserOp;
586
+ this.signer = signer;
587
+ this.account = account;
588
+ }
589
+ on(event, listener) {
590
+ var _a;
591
+ (_a = this.signer) == null ? void 0 : _a.on(event, listener);
592
+ return this;
593
+ }
594
+ once(event, listener) {
595
+ var _a;
596
+ (_a = this.signer) == null ? void 0 : _a.once(event, listener);
597
+ return this;
598
+ }
599
+ off(event, listener) {
600
+ var _a;
601
+ (_a = this.signer) == null ? void 0 : _a.off(event, listener);
602
+ return this;
603
+ }
604
+ removeListener(event, listener) {
605
+ var _a;
606
+ (_a = this.signer) == null ? void 0 : _a.removeListener(event, listener);
607
+ return this;
608
+ }
609
+ request(arg) {
610
+ return __async(this, null, function* () {
611
+ var _a, _b;
612
+ const method = arg.method;
613
+ if (!method) {
614
+ throw new Error("Method not found.");
615
+ }
616
+ if (method === "eth_accounts" || method === "eth_requestAccounts") {
617
+ return this.account ? [this.account] : [];
618
+ } else if (method === "eth_sendTransaction") {
619
+ const txData = (_a = arg.params) == null ? void 0 : _a[0];
620
+ const result = yield this.sendUserOp({ tx: txData });
621
+ return result;
622
+ }
623
+ return (_b = this.signer) == null ? void 0 : _b.request(arg);
624
+ });
625
+ }
626
+ };
627
+
628
+ // src/utils/eventUtils.ts
629
+ var import_events2 = require("events");
630
+ var events = new import_events2.EventEmitter();
631
+ events.setMaxListeners(100);
632
+ var getPendingSignEventAccount = () => {
633
+ return events.listenerCount("sendUserOpResult" /* sendUserOpResult */) + events.listenerCount("personalSignResult" /* personalSignResult */) + events.listenerCount("signTypedDataResult" /* signTypedDataResult */);
634
+ };
635
+ var eventUtils_default = events;
636
+
637
+ // src/utils/txConfirmUtils.ts
638
+ var txConfirm = {
639
+ isNotRemind: () => {
640
+ if (typeof window === "undefined")
641
+ return false;
642
+ const value = localStorage.getItem("tx-confirm-modal-remind");
643
+ return value === "0";
644
+ },
645
+ setNotRemind: (notRemind) => {
646
+ if (typeof window === "undefined")
647
+ return;
648
+ if (notRemind) {
649
+ localStorage.setItem("tx-confirm-modal-remind", "0");
650
+ } else {
651
+ localStorage.removeItem("tx-confirm-modal-remind");
652
+ }
653
+ },
654
+ reset: () => {
655
+ if (typeof window === "undefined")
656
+ return;
657
+ localStorage.removeItem("tx-confirm-modal-remind");
658
+ }
659
+ };
660
+ var txConfirmUtils_default = txConfirm;
661
+
662
+ // src/evmSigner/walletClientProvider.ts
663
+ var WalletClientProvider = class {
664
+ constructor(provider) {
665
+ this.provider = provider;
666
+ }
667
+ on(event, listener) {
668
+ this.provider.on(event, listener);
669
+ return this;
670
+ }
671
+ once(event, listener) {
672
+ this.provider.once(event, listener);
673
+ return this;
674
+ }
675
+ off(event, listener) {
676
+ this.provider.off(event, listener);
677
+ return this;
678
+ }
679
+ removeListener(event, listener) {
680
+ this.provider.removeListener(event, listener);
681
+ return this;
682
+ }
683
+ request(arg) {
684
+ return __async(this, null, function* () {
685
+ const method = arg.method;
686
+ if (!method) {
687
+ throw new Error("Method not found.");
688
+ }
689
+ if (method === "personal_sign" /* personalSign */ || method.startsWith("eth_signTypedData" /* signTypedData */)) {
690
+ const showConfirmModal = !txConfirmUtils_default.isNotRemind();
691
+ if (showConfirmModal) {
692
+ if (getPendingSignEventAccount() > 0) {
693
+ throw new Error("Operation failed, there is a transaction being processed");
694
+ }
695
+ }
696
+ if (!showConfirmModal) {
697
+ return this.provider.request(arg);
698
+ }
699
+ }
700
+ if (method === "personal_sign" /* personalSign */) {
701
+ return new Promise((resolve, reject) => {
702
+ eventUtils_default.emit("personalSign" /* personalSign */, arg);
703
+ eventUtils_default.once("personalSignResult" /* personalSignResult */, ({ result, error }) => {
704
+ if (result) {
705
+ resolve(result);
706
+ } else {
707
+ reject(error);
708
+ }
709
+ });
710
+ });
711
+ } else if (method.startsWith("eth_signTypedData" /* signTypedData */)) {
712
+ return new Promise((resolve, reject) => {
713
+ eventUtils_default.emit("signTypedData" /* signTypedData */, arg);
714
+ eventUtils_default.once("signTypedDataResult" /* signTypedDataResult */, ({ result, error }) => {
715
+ if (result) {
716
+ resolve(result);
717
+ } else {
718
+ reject(error);
719
+ }
720
+ });
721
+ });
722
+ }
723
+ return this.provider.request(arg);
724
+ });
725
+ }
726
+ };
727
+
728
+ // src/hooks/useETHProvider.ts
729
+ var useETHProvider = () => {
730
+ const { evmAccount, smartAccount, getSmartAccountInfo } = useConnectProvider();
731
+ const [chainId, setChainId] = (0, import_react3.useState)();
732
+ (0, import_react3.useEffect)(() => {
733
+ if (smartAccount) {
734
+ const chainId2 = smartAccount.provider.chainId;
735
+ setChainId(chainId2);
736
+ const onChangeChange = (id) => {
737
+ setChainId(Number(id));
738
+ };
739
+ smartAccount.provider.on("chainChanged", onChangeChange);
740
+ return () => {
741
+ smartAccount.provider.removeListener("chainChanged", onChangeChange);
742
+ };
743
+ }
744
+ }, [smartAccount]);
745
+ const switchChain = (0, import_react3.useCallback)(
746
+ (chainId2) => __async(void 0, null, function* () {
747
+ if (smartAccount == null ? void 0 : smartAccount.provider) {
748
+ yield smartAccount.provider.request({
749
+ method: "wallet_switchEthereumChain",
750
+ params: [
751
+ {
752
+ chainId: (0, import_util.intToHex)(chainId2)
753
+ }
754
+ ]
755
+ });
756
+ }
757
+ }),
758
+ [smartAccount == null ? void 0 : smartAccount.provider]
759
+ );
760
+ const getFeeQuotes = (0, import_react3.useCallback)(
761
+ (tx) => __async(void 0, null, function* () {
762
+ if (!smartAccount) {
763
+ throw new Error("The smart account is not initialized.");
764
+ }
765
+ return smartAccount.getFeeQuotes(tx);
766
+ }),
767
+ [smartAccount]
768
+ );
769
+ const buildUserOp = (0, import_react3.useCallback)(
770
+ (_0) => __async(void 0, [_0], function* ({ tx, feeQuote, tokenPaymasterAddress }) {
771
+ if (!smartAccount) {
772
+ throw new Error("The smart account is not initialized.");
773
+ }
774
+ const result = yield smartAccount.buildUserOperation({ tx, feeQuote, tokenPaymasterAddress });
775
+ return result;
776
+ }),
777
+ [smartAccount]
778
+ );
779
+ const sendUserOp = (0, import_react3.useCallback)(
780
+ (params, forceHideConfirmModal) => __async(void 0, null, function* () {
781
+ if (!smartAccount) {
782
+ throw new Error("The smart account is not initialized.");
783
+ }
784
+ const showConfirmModal = !forceHideConfirmModal && !txConfirmUtils_default.isNotRemind();
785
+ if (showConfirmModal) {
786
+ if (getPendingSignEventAccount() > 0) {
787
+ throw new Error("Operation failed, there is a transaction being processed");
788
+ }
789
+ }
790
+ let userOpBundle;
791
+ if (Object.prototype.hasOwnProperty.call(params, "userOpHash") && Object.prototype.hasOwnProperty.call(params, "userOp")) {
792
+ const { userOpHash, userOp } = params;
793
+ if (userOpHash && userOp) {
794
+ userOpBundle = { userOpHash, userOp };
795
+ }
796
+ }
797
+ if (!userOpBundle) {
798
+ const { tx, feeQuote, tokenPaymasterAddress } = params;
799
+ userOpBundle = yield buildUserOp({ tx, feeQuote, tokenPaymasterAddress });
800
+ }
801
+ if (!showConfirmModal) {
802
+ return smartAccount.sendUserOperation(userOpBundle);
803
+ }
804
+ return new Promise((resolve, reject) => {
805
+ eventUtils_default.emit("sendUserOp" /* sendUserOp */, userOpBundle);
806
+ eventUtils_default.once("sendUserOpResult" /* sendUserOpResult */, ({ result, error }) => {
807
+ if (result) {
808
+ resolve(result);
809
+ } else {
810
+ reject(error);
811
+ }
812
+ });
813
+ });
814
+ }),
815
+ [smartAccount, buildUserOp]
816
+ );
817
+ const publicClient = (0, import_react3.useMemo)(() => {
818
+ if (!smartAccount || !chainId) {
819
+ return void 0;
820
+ }
821
+ return (smartAccount == null ? void 0 : smartAccount.provider).publicClient;
822
+ }, [smartAccount, chainId]);
823
+ const provider = (0, import_react3.useMemo)(() => {
824
+ const ethereumProvider = new EthereumProvider(sendUserOp, smartAccount == null ? void 0 : smartAccount.provider, evmAccount);
825
+ return ethereumProvider;
826
+ }, [evmAccount, sendUserOp, smartAccount == null ? void 0 : smartAccount.provider]);
827
+ const walletClient = (0, import_react3.useMemo)(() => {
828
+ return (0, import_viem.createWalletClient)({
829
+ transport: (0, import_viem.custom)(new WalletClientProvider(provider))
830
+ });
831
+ }, [provider]);
832
+ return {
833
+ provider,
834
+ evmAccount,
835
+ account: evmAccount,
836
+ getSmartAccountInfo,
837
+ switchChain,
838
+ chainId,
839
+ getFeeQuotes,
840
+ buildUserOp,
841
+ sendUserOp,
842
+ publicClient,
843
+ walletClient
844
+ };
845
+ };
846
+
847
+ // src/icons/back.svg
848
+ var back_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiPjxwYXRoIGQ9Ik00MDAtODAgMC00ODBsNDAwLTQwMCA3MSA3MS0zMjkgMzI5IDMyOSAzMjktNzEgNzFaIiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPg==";
849
+
850
+ // src/icons/close.svg
851
+ var close_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiPjxwYXRoIGQ9Im0yNTYtMjAwLTU2LTU2IDIyNC0yMjQtMjI0LTIyNCA1Ni01NiAyMjQgMjI0IDIyNC0yMjQgNTYgNTYtMjI0IDIyNCAyMjQgMjI0LTU2IDU2LTIyNC0yMjQtMjI0IDIyNFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+";
852
+
853
+ // src/icons/retry.svg
854
+ var retry_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiPjxwYXRoIGQ9Ik00ODAtMTYwcS0xMzQgMC0yMjctOTN0LTkzLTIyN3EwLTEzNCA5My0yMjd0MjI3LTkzcTY5IDAgMTMyIDI4LjVUNzIwLTY5MHYtMTEwaDgwdjI4MEg1MjB2LTgwaDE2OHEtMzItNTYtODcuNS04OFQ0ODAtNzIwcS0xMDAgMC0xNzAgNzB0LTcwIDE3MHEwIDEwMCA3MCAxNzB0MTcwIDcwcTc3IDAgMTM5LTQ0dDg3LTExNmg4NHEtMjggMTA2LTExNCAxNzN0LTE5NiA2N1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+";
855
+
856
+ // esbuild-scss-modules-plugin:./spinner.module.scss
857
+ var digest = "906d42389ecad5c2ab92642c8e0775ea667c413b069684ce9d01199562f2d0be";
858
+ var classes = { "loader": "_loader_g0am3_1", "rotate": "_rotate_g0am3_1", "prixClipFix": "_prixClipFix_g0am3_1" };
859
+ var css = `._loader_g0am3_1{animation:_rotate_g0am3_1 1s linear infinite;border-radius:50%;height:20px;position:relative;width:20px}._loader_g0am3_1:before{animation:_prixClipFix_g0am3_1 2s linear infinite;border:2px solid #000;border-radius:50%;box-sizing:border-box;content:"";inset:0;position:absolute}@keyframes _rotate_g0am3_1{to{transform:rotate(1turn)}}@keyframes _prixClipFix_g0am3_1{0%{clip-path:polygon(50% 50%,0 0,0 0,0 0,0 0,0 0)}25%{clip-path:polygon(50% 50%,0 0,100% 0,100% 0,100% 0,100% 0)}50%{clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,100% 100%,100% 100%)}75%{clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,0 100%,0 100%)}to{clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,0 100%,0 0)}}`;
860
+ (function() {
861
+ if (typeof document !== "undefined" && !document.getElementById(digest)) {
862
+ var ele = document.createElement("style");
863
+ ele.id = digest;
864
+ ele.textContent = css;
865
+ document.head.appendChild(ele);
866
+ }
867
+ })();
868
+ var spinner_module_default = classes;
869
+
870
+ // src/components/spinner/index.tsx
871
+ var import_jsx_runtime = require("react/jsx-runtime");
872
+ var Spinner = ({ className, style }) => {
873
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: spinner_module_default.loader + (className ? ` ${className}` : ""), style });
874
+ };
875
+ var spinner_default = Spinner;
876
+
877
+ // esbuild-scss-modules-plugin:./button.module.scss
878
+ var digest2 = "424d614dbc2763d7cad7ca35c00bd255c6ed55da308a1f3018594201a47127bf";
879
+ var classes2 = { "btn": "_btn_ofd87_1" };
880
+ var css2 = `._btn_ofd87_1{align-items:center;background:#fff;border-radius:8px;color:#000;display:flex;flex-direction:row;font-size:16px;gap:16px;justify-content:center;padding:6px 24px;position:relative}._btn_ofd87_1:hover{opacity:.85}._btn_ofd87_1:disabled{background:hsla(0,0%,100%,.2);color:hsla(0,0%,100%,.639);cursor:not-allowed;opacity:1}`;
881
+ (function() {
882
+ if (typeof document !== "undefined" && !document.getElementById(digest2)) {
883
+ var ele = document.createElement("style");
884
+ ele.id = digest2;
885
+ ele.textContent = css2;
886
+ document.head.appendChild(ele);
887
+ }
888
+ })();
889
+ var button_module_default = classes2;
890
+
891
+ // src/components/button/index.tsx
892
+ var import_jsx_runtime2 = require("react/jsx-runtime");
893
+ var Button = ({
894
+ children,
895
+ isLoading,
896
+ isDisabled,
897
+ onClick,
898
+ className,
899
+ style
900
+ }) => {
901
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
902
+ "button",
903
+ {
904
+ className: button_module_default.btn + (className ? ` ${className}` : ""),
905
+ onClick: isLoading || isDisabled ? void 0 : onClick,
906
+ disabled: isDisabled,
907
+ style,
908
+ children: [
909
+ isLoading && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(spinner_default, {}),
910
+ children
911
+ ]
912
+ }
913
+ );
914
+ };
915
+ var button_default = Button;
916
+
917
+ // src/components/modal/index.tsx
918
+ var import_react4 = require("react");
919
+ var import_react_dom = require("react-dom");
920
+ var import_react_remove_scroll = require("react-remove-scroll");
921
+
922
+ // esbuild-scss-modules-plugin:./modal.module.scss
923
+ var digest3 = "65eada90924218eba4e72a5f00291c3cb69387ecce1351e454cdefd066d4bcff";
924
+ var classes3 = { "container": "_container_smzpm_1", "modal": "_modal_smzpm_18" };
925
+ var css3 = `._container_smzpm_1{align-items:center;backdrop-filter:blur(12px);background:rgba(0,0,0,.502);bottom:0;color:#fff;display:flex;height:100%;justify-content:center;left:0;overflow:hidden;position:fixed;right:0;top:0;width:100%;z-index:100000}._container_smzpm_1 ._modal_smzpm_18{align-items:center;background-color:#171a1f;border-radius:16px;display:flex;flex-direction:column;font-size:14px;height:auto;margin:16px;max-height:80%;max-width:100%;overflow:auto;padding:24px;position:relative;width:380px}`;
926
+ (function() {
927
+ if (typeof document !== "undefined" && !document.getElementById(digest3)) {
928
+ var ele = document.createElement("style");
929
+ ele.id = digest3;
930
+ ele.textContent = css3;
931
+ document.head.appendChild(ele);
932
+ }
933
+ })();
934
+ var modal_module_default = classes3;
935
+
936
+ // src/components/modal/index.tsx
937
+ var import_jsx_runtime3 = require("react/jsx-runtime");
938
+ var stopPropagation = (event) => event.stopPropagation();
939
+ var Modal = ({ open, onClose, children, isDismissable = true, contentStyle, contentClassName }) => {
940
+ const handleBackdropClick = (0, import_react4.useMemo)(() => isDismissable ? onClose : void 0, [onClose, isDismissable]);
941
+ (0, import_react4.useEffect)(() => {
942
+ if (isDismissable) {
943
+ const handleEscape = (event) => open && event.key === "Escape" && onClose();
944
+ document.addEventListener("keydown", handleEscape);
945
+ return () => document.removeEventListener("keydown", handleEscape);
946
+ }
947
+ }, [open, onClose, isDismissable]);
948
+ const [bodyScrollable, setBodyScrollable] = (0, import_react4.useState)(true);
949
+ (0, import_react4.useEffect)(() => {
950
+ setBodyScrollable(getComputedStyle(window.document.body).overflow !== "hidden");
951
+ }, []);
952
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: open ? (0, import_react_dom.createPortal)(
953
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_remove_scroll.RemoveScroll, { enabled: bodyScrollable, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: modal_module_default.container, onClick: handleBackdropClick, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
954
+ "div",
955
+ {
956
+ className: modal_module_default.modal + (contentClassName ? ` ${contentClassName}` : ""),
957
+ style: contentStyle,
958
+ onClick: stopPropagation,
959
+ children
960
+ }
961
+ ) }) }),
962
+ document.body
963
+ ) : null });
964
+ };
965
+ var modal_default = Modal;
966
+
967
+ // esbuild-scss-modules-plugin:./connect.module.scss
968
+ var digest4 = "c7bbc091f1227154742a5bd0d55a3df29eb913eb0ad4cafc7ab236b574002f65";
969
+ var classes4 = { "connectModal": "_connectModal_1kqtj_1", "title": "_title_1kqtj_4", "closeBtn": "_closeBtn_1kqtj_9", "backBtn": "_backBtn_1kqtj_15", "walletItem": "_walletItem_1kqtj_21", "walletIcon": "_walletIcon_1kqtj_33", "walletName": "_walletName_1kqtj_38", "connecting": "_connecting_1kqtj_43", "connectingIconContainer": "_connectingIconContainer_1kqtj_51", "retryContainer": "_retryContainer_1kqtj_54", "retryIcon": "_retryIcon_1kqtj_63", "connectingIcon": "_connectingIcon_1kqtj_51", "connection": "_connection_1kqtj_72", "acceptRequest": "_acceptRequest_1kqtj_76", "btnDownload": "_btnDownload_1kqtj_83" };
970
+ var css4 = `._connectModal_1kqtj_1{gap:12px}._connectModal_1kqtj_1 ._title_1kqtj_4{font-size:18px;font-weight:700;margin-bottom:4px}._connectModal_1kqtj_1 ._closeBtn_1kqtj_9{cursor:pointer;position:absolute;right:16px;top:16px}._connectModal_1kqtj_1 ._backBtn_1kqtj_15{cursor:pointer;left:16px;position:absolute;top:16px}._connectModal_1kqtj_1 ._walletItem_1kqtj_21{border:1px solid #3a3a3a;border-radius:8px;box-sizing:border-box;cursor:pointer;display:flex;padding:8px;width:100%}._connectModal_1kqtj_1 ._walletItem_1kqtj_21:hover{background:hsla(0,0%,100%,.05)}._connectModal_1kqtj_1 ._walletItem_1kqtj_21 ._walletIcon_1kqtj_33{border-radius:4px;height:42px;width:42px}._connectModal_1kqtj_1 ._walletItem_1kqtj_21 ._walletName_1kqtj_38{flex-grow:1;line-height:42px;text-align:center}._connectModal_1kqtj_1 ._connecting_1kqtj_43{align-items:center;display:flex;flex-direction:column;height:204px;justify-content:center;width:100%}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._connectingIconContainer_1kqtj_51{position:relative}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._connectingIconContainer_1kqtj_51 ._retryContainer_1kqtj_54{background:#4b5563;border-radius:50%;bottom:-12px;cursor:pointer;padding:4px;position:absolute;right:-12px}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._connectingIconContainer_1kqtj_51 ._retryContainer_1kqtj_54 ._retryIcon_1kqtj_63{height:24px;width:24px}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._connectingIcon_1kqtj_51{border-radius:4px;height:60px;width:60px}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._connection_1kqtj_72{font-size:18px;margin-top:20px}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._acceptRequest_1kqtj_76{color:hsla(0,0%,100%,.4);font-size:14px;margin-top:6px;text-align:center;white-space:pre-wrap}._connectModal_1kqtj_1 ._connecting_1kqtj_43 ._btnDownload_1kqtj_83{margin-top:20px}`;
971
+ (function() {
972
+ if (typeof document !== "undefined" && !document.getElementById(digest4)) {
973
+ var ele = document.createElement("style");
974
+ ele.id = digest4;
975
+ ele.textContent = css4;
976
+ document.head.appendChild(ele);
977
+ }
978
+ })();
979
+ var connect_module_default = classes4;
980
+
981
+ // src/components/connectModal/index.tsx
982
+ var import_jsx_runtime4 = require("react/jsx-runtime");
983
+ var ConnectModal = ({ open, onClose }) => {
984
+ const [backVisible, setBackVisible] = (0, import_react5.useState)(false);
985
+ const [retryVisible, setRetryVisible] = (0, import_react5.useState)(false);
986
+ const [walletReady, setWalletReady] = (0, import_react5.useState)(true);
987
+ const [selectConnector, setSelectConnector] = (0, import_react5.useState)();
988
+ const { closeConnectModal } = useConnectProvider();
989
+ const { connect, connectors } = useConnector();
990
+ (0, import_react5.useEffect)(() => {
991
+ if (!open) {
992
+ setBackVisible(false);
993
+ setRetryVisible(false);
994
+ setWalletReady(true);
995
+ setSelectConnector(void 0);
996
+ }
997
+ }, [open]);
998
+ const onConnect = (connector) => __async(void 0, null, function* () {
999
+ setBackVisible(true);
1000
+ setSelectConnector(connector);
1001
+ if (connector.isReady()) {
1002
+ try {
1003
+ yield connect(connector.metadata.id);
1004
+ closeConnectModal();
1005
+ } catch (error) {
1006
+ if (error.code === 4001) {
1007
+ setRetryVisible(true);
1008
+ }
1009
+ }
1010
+ } else {
1011
+ setWalletReady(false);
1012
+ }
1013
+ });
1014
+ const onBack = () => {
1015
+ setBackVisible(false);
1016
+ setRetryVisible(false);
1017
+ setWalletReady(true);
1018
+ setSelectConnector(void 0);
1019
+ };
1020
+ const onRetry = () => {
1021
+ setRetryVisible(false);
1022
+ if (selectConnector) {
1023
+ onConnect(selectConnector);
1024
+ }
1025
+ };
1026
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(modal_default, { open, onClose, isDismissable: false, contentClassName: connect_module_default.connectModal, children: [
1027
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: connect_module_default.title, children: (selectConnector == null ? void 0 : selectConnector.metadata.name) || "Choose Wallet" }),
1028
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { className: connect_module_default.closeBtn, src: close_default, onClick: onClose }),
1029
+ backVisible && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { className: connect_module_default.backBtn, src: back_default, onClick: onBack }),
1030
+ !backVisible && connectors.map((connector) => {
1031
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: connect_module_default.walletItem, onClick: () => onConnect(connector), children: [
1032
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { className: connect_module_default.walletIcon, src: connector.metadata.icon }),
1033
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: connect_module_default.walletName, children: connector.metadata.name })
1034
+ ] }, connector.metadata.id);
1035
+ }),
1036
+ backVisible && selectConnector && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: connect_module_default.connecting, children: [
1037
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: connect_module_default.connectingIconContainer, children: [
1038
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { className: connect_module_default.connectingIcon, src: selectConnector.metadata.icon }),
1039
+ retryVisible && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: connect_module_default.retryContainer, onClick: onRetry, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { className: connect_module_default.retryIcon, src: retry_default }) })
1040
+ ] }),
1041
+ walletReady ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
1042
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: connect_module_default.connection, children: retryVisible ? "Request Cancelled" : "Requesting Connection" }),
1043
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: connect_module_default.acceptRequest, children: retryVisible ? "You cancelled the request.\nClick above to try again." : "Accept the request through your wallet to connect to this app." })
1044
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
1045
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: connect_module_default.connection, children: "Wallet Not Installed." }),
1046
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1047
+ button_default,
1048
+ {
1049
+ className: connect_module_default.btnDownload,
1050
+ onClick: () => {
1051
+ window.open(selectConnector == null ? void 0 : selectConnector.metadata.downloadUrl, "_blank");
1052
+ },
1053
+ children: "Get"
1054
+ }
1055
+ )
1056
+ ] })
1057
+ ] })
1058
+ ] });
1059
+ };
1060
+ var connectModal_default = ConnectModal;
1061
+
1062
+ // src/components/signModal/index.tsx
1063
+ var import_chains2 = require("@particle-network/chains");
1064
+ var import_react8 = require("react");
1065
+ var import_viem3 = require("viem");
1066
+
1067
+ // src/icons/check_box.svg
1068
+ var check_box_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiIGZpbGw9IiNhODU1ZjciPgogICAgPHBhdGgKICAgICAgICBkPSJtNDI0LTMxMiAyODItMjgyLTU2LTU2LTIyNiAyMjYtMTE0LTExNC01NiA1NiAxNzAgMTcwWk0yMDAtMTIwcS0zMyAwLTU2LjUtMjMuNVQxMjAtMjAwdi01NjBxMC0zMyAyMy41LTU2LjVUMjAwLTg0MGg1NjBxMzMgMCA1Ni41IDIzLjVUODQwLTc2MHY1NjBxMCAzMy0yMy41IDU2LjVUNzYwLTEyMEgyMDBabTAtODBoNTYwdi01NjBIMjAwdjU2MFptMC01NjB2NTYwLTU2MFoiIC8+Cjwvc3ZnPg==";
1069
+
1070
+ // src/icons/check_box_blank.svg
1071
+ var check_box_blank_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiIGZpbGw9IiM2YjcyODAiPgogICAgPHBhdGgKICAgICAgICBkPSJNMjAwLTEyMHEtMzMgMC01Ni41LTIzLjVUMTIwLTIwMHYtNTYwcTAtMzMgMjMuNS01Ni41VDIwMC04NDBoNTYwcTMzIDAgNTYuNSAyMy41VDg0MC03NjB2NTYwcTAgMzMtMjMuNSA1Ni41VDc2MC0xMjBIMjAwWm0wLTgwaDU2MHYtNTYwSDIwMHY1NjBaIiAvPgo8L3N2Zz4=";
1072
+
1073
+ // src/icons/copy.svg
1074
+ var copy_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiIGZpbGw9IiNmZmYiPgogICAgPHBhdGgKICAgICAgICBkPSJNMzYwLTI0MHEtMzMgMC01Ni41LTIzLjVUMjgwLTMyMHYtNDgwcTAtMzMgMjMuNS01Ni41VDM2MC04ODBoMzYwcTMzIDAgNTYuNSAyMy41VDgwMC04MDB2NDgwcTAgMzMtMjMuNSA1Ni41VDcyMC0yNDBIMzYwWm0wLTgwaDM2MHYtNDgwSDM2MHY0ODBaTTIwMC04MHEtMzMgMC01Ni41LTIzLjVUMTIwLTE2MHYtNTYwaDgwdjU2MGg0NDB2ODBIMjAwWm0xNjAtMjQwdi00ODAgNDgwWiIgLz4KPC9zdmc+";
1075
+
1076
+ // src/utils/index.ts
1077
+ function shortString(str) {
1078
+ if (Array.isArray(str)) {
1079
+ str = "[" + str.toString() + "]";
1080
+ }
1081
+ if (str) {
1082
+ if (typeof str.toString === "function") {
1083
+ str = str.toString();
1084
+ }
1085
+ if (str.length <= 10) {
1086
+ return str;
1087
+ }
1088
+ return `${str.slice(0, 5)}...${str.slice(str.length - 5, str.length)}`;
1089
+ }
1090
+ return "";
1091
+ }
1092
+ function copyToClipboard(text) {
1093
+ return __async(this, null, function* () {
1094
+ const clipboardCopy = () => __async(this, null, function* () {
1095
+ if (navigator.clipboard) {
1096
+ return navigator.clipboard.writeText(text);
1097
+ } else {
1098
+ const textarea = document.createElement("textarea");
1099
+ textarea.value = text;
1100
+ textarea.setAttribute("readonly", "");
1101
+ textarea.style.position = "absolute";
1102
+ textarea.style.left = "-9999px";
1103
+ document.body.appendChild(textarea);
1104
+ textarea.select();
1105
+ const result = document.execCommand("copy");
1106
+ document.body.removeChild(textarea);
1107
+ if (!result) {
1108
+ throw new Error("Copy to clipboard failed");
1109
+ }
1110
+ }
1111
+ });
1112
+ return new Promise((resolve, reject) => {
1113
+ clipboardCopy().then(resolve).catch(reject);
1114
+ });
1115
+ });
1116
+ }
1117
+ var defaultTokenIcon = "https://static.particle.network/token-list/defaultToken/default.png";
1118
+ var ipfsToSrc = (ipfs) => {
1119
+ if (!ipfs || !ipfs.startsWith("ipfs://")) {
1120
+ return ipfs || "";
1121
+ }
1122
+ return `https://ipfs.particle.network/${encodeURI(ipfs.slice(7))}`;
1123
+ };
1124
+ var checkBTCVersion = (accountContracts, accountContractKey, version) => {
1125
+ if (!accountContracts[accountContractKey]) {
1126
+ return false;
1127
+ }
1128
+ return accountContracts[accountContractKey].some((item) => item.version === version);
1129
+ };
1130
+
1131
+ // src/utils/ethereumUtils.ts
1132
+ var import_util2 = require("@ethereumjs/util");
1133
+ var import_bitcore_lib = __toESM(require("bitcore-lib"), 1);
1134
+ var pubKeyToEVMAddress = (pubKey) => {
1135
+ const address = (0, import_util2.toChecksumAddress)((0, import_util2.bytesToHex)((0, import_util2.publicToAddress)((0, import_util2.toBytes)(`0x${pubKey}`), true)));
1136
+ return address;
1137
+ };
1138
+ var convertSignature = (signature) => {
1139
+ const sig = import_bitcore_lib.default.crypto.Signature.fromCompact(Buffer.from(signature, "base64"));
1140
+ const v = BigInt(sig.i + 27);
1141
+ const evmSig = (0, import_util2.toRpcSig)(v, sig.r.toBuffer(), sig.s.toBuffer());
1142
+ return evmSig;
1143
+ };
1144
+ function caculateNativeFee(userOp) {
1145
+ return (BigInt(userOp.callGasLimit) + BigInt(userOp.verificationGasLimit) + BigInt(userOp.preVerificationGas)) * BigInt(userOp.maxFeePerGas);
1146
+ }
1147
+ var getBTCAAAddress = (smartAccount, btcAddress, name, version) => __async(void 0, null, function* () {
1148
+ var _a;
1149
+ const addresses = yield smartAccount.provider.request({ method: "eth_accounts" });
1150
+ const owner = addresses[0];
1151
+ const localKey = `particle_${name}_${version}_${owner}`;
1152
+ if (typeof window !== "undefined" && localStorage) {
1153
+ const localAA = localStorage.getItem(localKey);
1154
+ if (localAA) {
1155
+ return localAA;
1156
+ }
1157
+ }
1158
+ const btcPublicKey = yield smartAccount.provider.getPublicKey();
1159
+ const accountInfo = yield smartAccount.sendRpc({
1160
+ method: "particle_aa_getBTCAccount",
1161
+ params: [
1162
+ {
1163
+ name,
1164
+ version,
1165
+ btcPublicKey,
1166
+ btcAddress
1167
+ }
1168
+ ]
1169
+ });
1170
+ const address = (_a = accountInfo == null ? void 0 : accountInfo[0]) == null ? void 0 : _a.smartAccountAddress;
1171
+ if (typeof window !== "undefined" && localStorage && address) {
1172
+ localStorage.setItem(localKey, address);
1173
+ }
1174
+ return address;
1175
+ });
1176
+ var getBTCAccountInfo = (smartAccount, btcAddress, name, version) => __async(void 0, null, function* () {
1177
+ const btcPublicKey = yield smartAccount.provider.getPublicKey();
1178
+ const [accountInfo] = yield smartAccount.sendRpc({
1179
+ method: "particle_aa_getBTCAccount",
1180
+ params: [
1181
+ {
1182
+ name,
1183
+ version,
1184
+ btcPublicKey,
1185
+ btcAddress
1186
+ }
1187
+ ]
1188
+ });
1189
+ const address = accountInfo.smartAccountAddress;
1190
+ const addresses = yield smartAccount.provider.request({ method: "eth_accounts" });
1191
+ const owner = addresses[0];
1192
+ const localKey = `particle_${name}_${version}_${owner}`;
1193
+ if (typeof window !== "undefined" && localStorage && address) {
1194
+ localStorage.setItem(localKey, address);
1195
+ }
1196
+ return accountInfo;
1197
+ });
1198
+
1199
+ // src/components/copyText/index.tsx
1200
+ var import_react6 = require("react");
1201
+
1202
+ // esbuild-scss-modules-plugin:./copyText.module.scss
1203
+ var digest5 = "d6fbb5df7ed6ec51d41f665ca768306181bb1e7d7c1cef8eed9bd4230368d7bb";
1204
+ var classes5 = { "copyText": "_copyText_smolu_1", "copied": "_copied_smolu_9" };
1205
+ var css5 = `._copyText_smolu_1{cursor:pointer;text-decoration-line:underline}._copyText_smolu_1:hover{opacity:.75}._copied_smolu_9{color:#a855f7;cursor:none;text-decoration-line:none}._copied_smolu_9:hover{opacity:1}`;
1206
+ (function() {
1207
+ if (typeof document !== "undefined" && !document.getElementById(digest5)) {
1208
+ var ele = document.createElement("style");
1209
+ ele.id = digest5;
1210
+ ele.textContent = css5;
1211
+ document.head.appendChild(ele);
1212
+ }
1213
+ })();
1214
+ var copyText_module_default = classes5;
1215
+
1216
+ // src/components/copyText/index.tsx
1217
+ var import_jsx_runtime5 = require("react/jsx-runtime");
1218
+ function CopyText({ children, value, className, style }) {
1219
+ const [copied, setCopied] = (0, import_react6.useState)();
1220
+ const handleClick = () => __async(this, null, function* () {
1221
+ if (copied) {
1222
+ return;
1223
+ }
1224
+ try {
1225
+ if (value) {
1226
+ yield copyToClipboard(value);
1227
+ } else if (typeof children === "string" || typeof children === "number" || typeof children === "boolean") {
1228
+ yield copyToClipboard(children.toString());
1229
+ } else {
1230
+ throw new Error("please set copy value");
1231
+ }
1232
+ setCopied(true);
1233
+ setTimeout(() => setCopied(false), 1e3);
1234
+ } catch (error) {
1235
+ }
1236
+ });
1237
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1238
+ "div",
1239
+ {
1240
+ className: copyText_module_default.copyText + (className ? ` ${className}` : "") + (copied ? ` ${copyText_module_default.copied}` : ""),
1241
+ onClick: handleClick,
1242
+ style,
1243
+ children: copied ? "Copied" : children
1244
+ }
1245
+ );
1246
+ }
1247
+
1248
+ // src/components/transactionDetails/index.tsx
1249
+ var import_chains = require("@particle-network/chains");
1250
+ var import_react7 = require("react");
1251
+ var import_viem2 = require("viem");
1252
+
1253
+ // src/icons/unverified.svg
1254
+ var unverified_default = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB0PSIxNzA5Mjg0MDMwNzM5IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDExNTIgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICBwLWlkPSIxMzY3NSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij4KICAgIDxwYXRoCiAgICAgICAgZD0iTTExMjguNjQgODA2LjI3Mkw2NzYuMTYgNzIuMzJjLTU1LjE2OC05Ni4zMi0xNDUuMTUyLTk2LjMyLTIwMC4yNTYgMEwyMy4yMzIgODA2LjRDLTMxLjgwOCA5MDIuNTkyIDE0LjU5MiA5NzkuMiAxMjQuOCA5NzkuMmg5MDUuMjE2YzEwNy4zOTIgMCAxNTMuNzkyLTc5LjM2IDk4LjYyNC0xNzIuOTI4eiIKICAgICAgICBmaWxsPSIjZWFiMzA4IiBwLWlkPSIxMzY3NiI+PC9wYXRoPgogICAgPHBhdGgKICAgICAgICBkPSJNNTc0LjQ2NCA2OTUuODA4YzMyIDAgNjAuOTkyIDI4LjM1MiA2MC45OTIgNTkuNTIgMCAzMS4xNjgtMjYuMTEyIDU5LjUyLTYwLjk5MiA1OS41MmE2MC41NDQgNjAuNTQ0IDAgMCAxLTYwLjgtNTkuNTJjMC0zMS4yMzIgMjguOTI4LTU5LjUyIDYwLjgtNTkuNTJ6IG0yLjg4LTQ0NC45OTJjMjMuMjk2IDAgNDMuNTg0IDE5Ljg0IDQzLjU4NCA0Mi40OTZ2Mjk3LjZjMCAyMi42NTYtMjAuMjg4IDQyLjQ5Ni00My41MiA0Mi40OTZhNDQuMTYgNDQuMTYgMCAwIDEtNDMuNTItNDIuNDk2di0yOTcuNmMwLTIyLjY1NiAyMC4yODgtNDIuNDk2IDQzLjUyLTQyLjQ5NnoiCiAgICAgICAgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMTM2NzciPjwvcGF0aD4KPC9zdmc+";
1255
+
1256
+ // src/icons/verified.svg
1257
+ var verified_default = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB0PSIxNzA5MjgzOTE4NzM0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICBwLWlkPSIxMjI3OCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij4KICAgIDxwYXRoIGQ9Ik01MTIgNTEybS01MTIgMGE1MTIgNTEyIDAgMSAwIDEwMjQgMCA1MTIgNTEyIDAgMSAwLTEwMjQgMFoiIGZpbGw9IiM0YWRlODAiIHAtaWQ9IjEyMjc5Ij48L3BhdGg+CiAgICA8cGF0aAogICAgICAgIGQ9Ik00NjkuMzc2IDYyMC4xNkwyOTMuNjMyIDQ2OC40OEE1Ny42IDU3LjYgMCAxIDAgMjE4LjM2OCA1NTUuNTJsMjE5LjcxMiAxODkuNzZhNjAuOCA2MC44IDAgMCAwIDg1Ljc2LTYuMjcybDIuNDk2LTMuMTM2IDI4Ny42MTYtMzgxLjI0OGE1Ny42IDU3LjYgMCAwIDAtOTEuOTA0LTY5LjM3Nkw0NjkuMzc2IDYyMC4xNnoiCiAgICAgICAgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMTIyODAiPjwvcGF0aD4KPC9zdmc+";
1258
+
1259
+ // esbuild-scss-modules-plugin:./tooltip.module.scss
1260
+ var digest6 = "ee15dc27fcfd209601159e7f0e0063ff4e7a886b7b892c1600a911372b82a0b1";
1261
+ var classes6 = { "tipContainer": "_tipContainer_ufud7_1", "tipContent": "_tipContent_ufud7_5" };
1262
+ var css6 = `._tipContainer_ufud7_1{overflow:visible;position:relative}._tipContainer_ufud7_1 ._tipContent_ufud7_5{background:#3f3f46;border-radius:8px;bottom:100%;color:#fff;font-size:11px;left:-100%;opacity:0;padding:3px 6px;position:absolute;transition:opacity .5s;visibility:hidden;white-space:nowrap;z-index:1}._tipContainer_ufud7_1:hover ._tipContent_ufud7_5{opacity:1;visibility:visible}`;
1263
+ (function() {
1264
+ if (typeof document !== "undefined" && !document.getElementById(digest6)) {
1265
+ var ele = document.createElement("style");
1266
+ ele.id = digest6;
1267
+ ele.textContent = css6;
1268
+ document.head.appendChild(ele);
1269
+ }
1270
+ })();
1271
+ var tooltip_module_default = classes6;
1272
+
1273
+ // src/components/tooltip/index.tsx
1274
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1275
+ var Tooltip = ({ children, content, className }) => {
1276
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: tooltip_module_default.tipContainer, children: [
1277
+ children,
1278
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: tooltip_module_default.tipContent + (className ? ` ${className}` : ""), children: content })
1279
+ ] });
1280
+ };
1281
+ var tooltip_default = Tooltip;
1282
+
1283
+ // esbuild-scss-modules-plugin:./transactionDetails.module.scss
1284
+ var digest7 = "a81c744751497ed4b401c08b9e5aeef1991aeb86f2cbba3ee57c1926c0502f1a";
1285
+ var classes7 = { "detailsCard": "_detailsCard_ml2p9_1", "title": "_title_ml2p9_13", "nftContract": "_nftContract_ml2p9_19", "row": "_row_ml2p9_26", "tokenIcon": "_tokenIcon_ml2p9_35", "nftIcon": "_nftIcon_ml2p9_41", "balanceChange": "_balanceChange_ml2p9_49", "tokenSymbol": "_tokenSymbol_ml2p9_56", "toContract": "_toContract_ml2p9_61", "right": "_right_ml2p9_71" };
1286
+ var css7 = `._detailsCard_ml2p9_1{background:#232529;border:1px solid #252525;border-radius:8px;color:#fff;margin-top:16px;overflow-x:hidden;padding:10px;position:relative;width:100%}._detailsCard_ml2p9_1 ._title_ml2p9_13{font-size:16px;font-weight:600;margin-bottom:12px;text-align:left}._detailsCard_ml2p9_1 ._nftContract_ml2p9_19{color:#a855f7;font-size:16px;position:absolute;right:8px;top:8px}._detailsCard_ml2p9_1 ._row_ml2p9_26{align-items:center;display:flex;flex-direction:row;font-size:14px;gap:8px;justify-content:space-between;margin-top:6px}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._tokenIcon_ml2p9_35{border-radius:50%;height:32px;margin:10px 0;width:32px}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._nftIcon_ml2p9_41{border-radius:2px;display:inline;height:32px;margin:10px 8px 10px 0;width:32px}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._balanceChange_ml2p9_49{flex-grow:2;font-size:16px;font-weight:500;text-align:end;word-break:break-word}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._tokenSymbol_ml2p9_56{font-size:16px;font-weight:500;text-align:end}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._toContract_ml2p9_61{align-items:center;display:flex;gap:8px}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._toContract_ml2p9_61 img{display:inline;height:18px;width:18px}._detailsCard_ml2p9_1 ._row_ml2p9_26 ._right_ml2p9_71{text-align:end}`;
1287
+ (function() {
1288
+ if (typeof document !== "undefined" && !document.getElementById(digest7)) {
1289
+ var ele = document.createElement("style");
1290
+ ele.id = digest7;
1291
+ ele.textContent = css7;
1292
+ document.head.appendChild(ele);
1293
+ }
1294
+ })();
1295
+ var transactionDetails_module_default = classes7;
1296
+
1297
+ // src/components/transactionDetails/index.tsx
1298
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1299
+ var TransactionDetails = ({ details }) => {
1300
+ const { chainId } = useETHProvider();
1301
+ const chainInfo = (0, import_react7.useMemo)(() => {
1302
+ if (chainId) {
1303
+ return import_chains.chains.getEVMChainInfoById(chainId);
1304
+ }
1305
+ }, [chainId]);
1306
+ const titleContent = (0, import_react7.useMemo)(() => {
1307
+ var _a;
1308
+ switch (details.type) {
1309
+ case "native_transfer" /* NATIVE_TRANSFER */:
1310
+ return `Send ${chainInfo == null ? void 0 : chainInfo.nativeCurrency.symbol}`;
1311
+ case "erc20_transfer" /* ERC20_TRANSFER */:
1312
+ return `Send ${(_a = details.estimatedChanges.tokens[0]) == null ? void 0 : _a.symbol}`;
1313
+ case "erc20_approve" /* ERC20_APPROVE */:
1314
+ return "Approve Spending";
1315
+ case "erc721_transfer" /* ERC721_TRANFER */:
1316
+ return "Send NFT";
1317
+ case "erc1155_transfer" /* ERC1155_TRANFER */:
1318
+ return "Send NFT";
1319
+ default:
1320
+ return "Transaction Details";
1321
+ }
1322
+ }, [details, chainInfo]);
1323
+ const nftContractType = (0, import_react7.useMemo)(() => {
1324
+ if (details.type === "erc721_transfer" /* ERC721_TRANFER */) {
1325
+ return "ERC721";
1326
+ } else if (details.type === "erc1155_transfer" /* ERC1155_TRANFER */) {
1327
+ return "ERC1155";
1328
+ }
1329
+ }, [details]);
1330
+ const nativeIcon = (0, import_react7.useMemo)(() => {
1331
+ if (chainInfo) {
1332
+ if (chainInfo.nativeCurrency.symbol === "ETH") {
1333
+ return "https://static.particle.network/token-list/ethereum/native.png";
1334
+ } else {
1335
+ return chainInfo.nativeIcon || chainInfo.icon;
1336
+ }
1337
+ }
1338
+ return defaultTokenIcon;
1339
+ }, [chainInfo]);
1340
+ const to = (0, import_react7.useMemo)(() => {
1341
+ var _a, _b;
1342
+ const params = (_b = (_a = details.data) == null ? void 0 : _a.function) == null ? void 0 : _b.params;
1343
+ if (details.type == "erc20_transfer" /* ERC20_TRANSFER */) {
1344
+ return params ? params[params.length === 3 ? 1 : 0].value : "";
1345
+ } else if (details.type == "erc20_approve" /* ERC20_APPROVE */) {
1346
+ return params ? params[0].value : "";
1347
+ } else if (details.type == "native_transfer" /* NATIVE_TRANSFER */) {
1348
+ return details.data.to;
1349
+ } else if (details.type == "erc721_transfer" /* ERC721_TRANFER */ || details.type == "erc1155_transfer" /* ERC1155_TRANFER */) {
1350
+ return params ? params[1].value : "";
1351
+ } else {
1352
+ return details.data.to;
1353
+ }
1354
+ }, [details]);
1355
+ const balanceChangeTextColor = (0, import_react7.useCallback)((value) => {
1356
+ if (BigInt(value) > 0) {
1357
+ return "#4ade80";
1358
+ } else if (BigInt(value) < 0) {
1359
+ return "#ef4444";
1360
+ } else {
1361
+ return "white";
1362
+ }
1363
+ }, []);
1364
+ const functionContent = (0, import_react7.useMemo)(() => {
1365
+ if (details.type !== "native_transfer" /* NATIVE_TRANSFER */ && details.data.function) {
1366
+ const params = details.data.function.params.map((item) => item.name);
1367
+ return `${details.data.function.name}(${params.join(", ")})`;
1368
+ }
1369
+ }, [details]);
1370
+ const approveTokenAmount = (0, import_react7.useMemo)(() => {
1371
+ var _a, _b, _c, _d;
1372
+ if (details.type === "erc20_approve" /* ERC20_APPROVE */) {
1373
+ const amount = (_d = (_c = (_b = (_a = details.data) == null ? void 0 : _a.function) == null ? void 0 : _b.params) == null ? void 0 : _c[1]) == null ? void 0 : _d.value;
1374
+ return BigInt(amount || 0);
1375
+ }
1376
+ return BigInt(0);
1377
+ }, [details]);
1378
+ const tokenAmountChange = (0, import_react7.useCallback)(
1379
+ (tokenItem) => {
1380
+ const result = (0, import_viem2.formatUnits)(
1381
+ details.type === "erc20_approve" /* ERC20_APPROVE */ ? approveTokenAmount : BigInt(tokenItem.amountChange),
1382
+ tokenItem.decimals
1383
+ );
1384
+ if (details.type !== "erc20_approve" /* ERC20_APPROVE */ && BigInt(tokenItem.amountChange) > BigInt(0)) {
1385
+ return `+${result}`;
1386
+ }
1387
+ return result;
1388
+ },
1389
+ [approveTokenAmount, details]
1390
+ );
1391
+ const showContactAddress = (0, import_react7.useMemo)(() => {
1392
+ return details.type === "erc20_transfer" /* ERC20_TRANSFER */ || details.type === "erc20_approve" /* ERC20_APPROVE */ || details.type === "erc721_transfer" /* ERC721_TRANFER */ || details.type === "erc1155_transfer" /* ERC1155_TRANFER */;
1393
+ }, [details]);
1394
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.detailsCard, children: [
1395
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: transactionDetails_module_default.title, children: titleContent }),
1396
+ nftContractType && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: transactionDetails_module_default.nftContract, children: nftContractType }),
1397
+ details.estimatedChanges.natives.map((nativeItem) => {
1398
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1399
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { className: transactionDetails_module_default.tokenIcon, src: nativeIcon }),
1400
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.balanceChange, style: { color: balanceChangeTextColor(nativeItem.nativeChange) }, children: [
1401
+ BigInt(nativeItem.nativeChange) > 0 ? "+" : void 0,
1402
+ (0, import_viem2.formatUnits)(BigInt(nativeItem.nativeChange), (chainInfo == null ? void 0 : chainInfo.nativeCurrency.decimals) || 18)
1403
+ ] }),
1404
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: transactionDetails_module_default.tokenSymbol, children: chainInfo == null ? void 0 : chainInfo.nativeCurrency.symbol })
1405
+ ] }, nativeItem.address);
1406
+ }),
1407
+ details.estimatedChanges.tokens.map((tokenItem) => {
1408
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1409
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { className: transactionDetails_module_default.tokenIcon, src: tokenItem.image || defaultTokenIcon }),
1410
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.balanceChange, children: [
1411
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { style: { color: balanceChangeTextColor(tokenItem.amountChange) }, children: tokenAmountChange(tokenItem) }),
1412
+ ` ${tokenItem.symbol}`
1413
+ ] })
1414
+ ] }, tokenItem.address);
1415
+ }),
1416
+ details.estimatedChanges.nfts.map((nftItem) => {
1417
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1418
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { style: { fontSize: 16 }, children: [
1419
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { className: transactionDetails_module_default.nftIcon, src: ipfsToSrc(nftItem.image || defaultTokenIcon) }),
1420
+ nftItem.name || `NFT#${nftItem.tokenId}`
1421
+ ] }),
1422
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: transactionDetails_module_default.balanceChange, style: { color: balanceChangeTextColor(nftItem.amountChange) }, children: nftItem.amountChange })
1423
+ ] }, nftItem.address);
1424
+ }),
1425
+ to && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1426
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { children: "To" }),
1427
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.toContract, children: [
1428
+ details.toVerified != null && !showContactAddress && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(tooltip_default, { content: details.toVerified ? "Verified Contract" : "Unverified Contract", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: details.toVerified ? verified_default : unverified_default }) }),
1429
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyText, { value: to, children: shortString(to) })
1430
+ ] })
1431
+ ] }),
1432
+ showContactAddress && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1433
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { children: "Contract" }),
1434
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.toContract, children: [
1435
+ details.toVerified != null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(tooltip_default, { content: details.toVerified ? "Verified Contract" : "Unverified Contract", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: details.toVerified ? verified_default : unverified_default }) }),
1436
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyText, { value: details.data.to, children: shortString(details.data.to) })
1437
+ ] })
1438
+ ] }),
1439
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1440
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { children: "Hex Data" }),
1441
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyText, { value: details.data.data, children: shortString(details.data.data) })
1442
+ ] }),
1443
+ functionContent && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: transactionDetails_module_default.row, children: [
1444
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { children: "Function" }),
1445
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: transactionDetails_module_default.right, children: functionContent })
1446
+ ] })
1447
+ ] });
1448
+ };
1449
+ var transactionDetails_default = TransactionDetails;
1450
+
1451
+ // esbuild-scss-modules-plugin:./sign.module.scss
1452
+ var digest8 = "3ab1a455562ae7e24c2ac49572897e615b9e9275066fd0d64f0cf24844521bab";
1453
+ var classes8 = { "modalContent": "_modalContent_aoysu_1", "closeBtn": "_closeBtn_aoysu_5", "signTitle": "_signTitle_aoysu_11", "chainInfo": "_chainInfo_aoysu_16", "addressContainer": "_addressContainer_aoysu_29", "addressInfo": "_addressInfo_aoysu_34", "detailsContent": "_detailsContent_aoysu_49", "fill": "_fill_aoysu_58", "unsignedMessage": "_unsignedMessage_aoysu_61", "estimatedGas": "_estimatedGas_aoysu_76", "signBtn": "_signBtn_aoysu_81", "notRemind": "_notRemind_aoysu_85" };
1454
+ var css8 = `._modalContent_aoysu_1{color:#fff;text-align:center}._modalContent_aoysu_1 ._closeBtn_aoysu_5{cursor:pointer;position:absolute;right:16px;top:16px}._modalContent_aoysu_1 ._signTitle_aoysu_11{font-size:20px;font-weight:600;margin-bottom:10px}._modalContent_aoysu_1 ._chainInfo_aoysu_16{align-items:center;display:flex;flex-direction:row;font-size:12px;gap:8px;justify-content:center;margin-bottom:8px}._modalContent_aoysu_1 ._chainInfo_aoysu_16 img{height:18px;width:18px}._modalContent_aoysu_1 ._addressContainer_aoysu_29{height:28px;margin-bottom:16px;margin-top:8px}._modalContent_aoysu_1 ._addressContainer_aoysu_29 ._addressInfo_aoysu_34{align-items:center;background:rgba(58,58,58,.635);border-radius:20px;display:flex;flex-direction:row;font-size:12px;gap:4px;justify-content:center;padding:4px 8px}._modalContent_aoysu_1 ._addressContainer_aoysu_29 ._addressInfo_aoysu_34 img{height:18px;width:18px}._modalContent_aoysu_1 ._detailsContent_aoysu_49{max-height:0;overflow-y:auto;transition:max-height .3s linear;width:100%}._modalContent_aoysu_1 ._detailsContent_aoysu_49::-webkit-scrollbar{display:none}._modalContent_aoysu_1 ._detailsContent_aoysu_49._fill_aoysu_58{max-height:500px}._modalContent_aoysu_1 ._detailsContent_aoysu_49 ._unsignedMessage_aoysu_61{background:#232529;border:1px solid #252525;border-radius:8px;box-sizing:border-box;color:#fff;font-size:14px;padding:8px;width:100%;word-wrap:break-word;color:hsla(0,0%,100%,.631);text-align:left;white-space:pre-wrap}._modalContent_aoysu_1 ._estimatedGas_aoysu_76{color:hsla(0,0%,100%,.631);font-size:12px;margin-top:24px}._modalContent_aoysu_1 ._signBtn_aoysu_81{margin-top:24px;min-width:200px}._modalContent_aoysu_1 ._notRemind_aoysu_85{align-items:center;color:hsla(0,0%,100%,.631);cursor:pointer;display:inline-flex;font-size:12px;gap:4px;margin-top:16px}._modalContent_aoysu_1 ._notRemind_aoysu_85:hover{opacity:.85}`;
1455
+ (function() {
1456
+ if (typeof document !== "undefined" && !document.getElementById(digest8)) {
1457
+ var ele = document.createElement("style");
1458
+ ele.id = digest8;
1459
+ ele.textContent = css8;
1460
+ document.head.appendChild(ele);
1461
+ }
1462
+ })();
1463
+ var sign_module_default = classes8;
1464
+
1465
+ // src/components/signModal/index.tsx
1466
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1467
+ var SignModal = ({ open, onClose, onOpen }) => {
1468
+ const [userOpBundle, setUserOpBundle] = (0, import_react8.useState)();
1469
+ const [notRemindChecked, setNotRemindChecked] = (0, import_react8.useState)(false);
1470
+ const [loading, setLoading] = (0, import_react8.useState)(false);
1471
+ const [deserializeLoading, setDeserializeLoading] = (0, import_react8.useState)(false);
1472
+ const [deserializeResult, setDeserializeResult] = (0, import_react8.useState)();
1473
+ const [disabled, setDisabled] = (0, import_react8.useState)(false);
1474
+ const [showNotRemind, setShowNotRemind] = (0, import_react8.useState)(true);
1475
+ const [nativeBalance, setNativeBalance] = (0, import_react8.useState)();
1476
+ const { accountContract } = useAccountContract();
1477
+ const [requestArguments, setRequestArguments] = (0, import_react8.useState)();
1478
+ const { chainId, publicClient, evmAccount, provider } = useETHProvider();
1479
+ const { smartAccount } = useConnectProvider();
1480
+ (0, import_react8.useEffect)(() => {
1481
+ if (!open) {
1482
+ setDeserializeResult(void 0);
1483
+ setUserOpBundle(void 0);
1484
+ setRequestArguments(void 0);
1485
+ setLoading(false);
1486
+ setDisabled(false);
1487
+ setDeserializeLoading(false);
1488
+ setNativeBalance(void 0);
1489
+ }
1490
+ }, [open]);
1491
+ (0, import_react8.useEffect)(() => {
1492
+ if (open) {
1493
+ const notRemind = txConfirmUtils_default.isNotRemind();
1494
+ setShowNotRemind(!notRemind);
1495
+ if (!notRemind) {
1496
+ setNotRemindChecked(false);
1497
+ }
1498
+ }
1499
+ }, [open]);
1500
+ const chainInfo = (0, import_react8.useMemo)(() => {
1501
+ if (chainId) {
1502
+ return import_chains2.chains.getEVMChainInfoById(chainId);
1503
+ }
1504
+ }, [chainId]);
1505
+ (0, import_react8.useEffect)(() => {
1506
+ const onSendUserOp = (opBundle) => {
1507
+ setUserOpBundle(opBundle);
1508
+ onOpen();
1509
+ };
1510
+ const onPersonalSign = (arg) => {
1511
+ setRequestArguments(arg);
1512
+ onOpen();
1513
+ };
1514
+ const onSignTypedData = (arg) => {
1515
+ setRequestArguments(arg);
1516
+ onOpen();
1517
+ };
1518
+ eventUtils_default.on("sendUserOp" /* sendUserOp */, onSendUserOp);
1519
+ eventUtils_default.on("personalSign" /* personalSign */, onPersonalSign);
1520
+ eventUtils_default.on("signTypedData" /* signTypedData */, onSignTypedData);
1521
+ return () => {
1522
+ eventUtils_default.off("sendUserOp" /* sendUserOp */, onSendUserOp);
1523
+ eventUtils_default.off("personalSign" /* personalSign */, onPersonalSign);
1524
+ eventUtils_default.off("signTypedData" /* signTypedData */, onSignTypedData);
1525
+ };
1526
+ }, [onOpen, setUserOpBundle]);
1527
+ const deserializeUserOp = (0, import_react8.useCallback)(() => __async(void 0, null, function* () {
1528
+ if (userOpBundle && smartAccount) {
1529
+ const addresses = yield smartAccount.provider.request({ method: "eth_accounts" });
1530
+ const owner = addresses[0];
1531
+ const result = yield smartAccount.sendRpc({
1532
+ method: "particle_aa_deserializeUserOp",
1533
+ params: [
1534
+ {
1535
+ name: accountContract.name,
1536
+ version: accountContract.version,
1537
+ ownerAddress: owner
1538
+ },
1539
+ userOpBundle.userOp
1540
+ ]
1541
+ });
1542
+ return result;
1543
+ }
1544
+ }), [userOpBundle, smartAccount, accountContract]);
1545
+ (0, import_react8.useEffect)(() => {
1546
+ if (userOpBundle && open) {
1547
+ setDeserializeLoading(true);
1548
+ deserializeUserOp().then((result) => {
1549
+ setDeserializeResult(result);
1550
+ }).catch((error) => {
1551
+ eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, {
1552
+ error
1553
+ });
1554
+ onClose();
1555
+ });
1556
+ }
1557
+ }, [deserializeUserOp, userOpBundle, open, onClose]);
1558
+ (0, import_react8.useEffect)(() => {
1559
+ if (open && publicClient && evmAccount && userOpBundle) {
1560
+ publicClient.getBalance({ address: evmAccount }).then((result) => setNativeBalance(result)).catch((error) => {
1561
+ eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, {
1562
+ error
1563
+ });
1564
+ onClose();
1565
+ });
1566
+ }
1567
+ }, [open, publicClient, evmAccount, userOpBundle, onClose]);
1568
+ (0, import_react8.useEffect)(() => {
1569
+ if (nativeBalance != null && deserializeResult != null) {
1570
+ setDeserializeLoading(false);
1571
+ }
1572
+ }, [nativeBalance, deserializeResult]);
1573
+ const toggleNotRemind = () => {
1574
+ setNotRemindChecked(!notRemindChecked);
1575
+ txConfirmUtils_default.setNotRemind(!notRemindChecked);
1576
+ };
1577
+ const gasFee = (0, import_react8.useMemo)(() => {
1578
+ if (userOpBundle == null ? void 0 : userOpBundle.userOp) {
1579
+ return caculateNativeFee(userOpBundle == null ? void 0 : userOpBundle.userOp);
1580
+ }
1581
+ return BigInt(0);
1582
+ }, [userOpBundle]);
1583
+ const closeModal = () => {
1584
+ var _a;
1585
+ let event;
1586
+ if (userOpBundle) {
1587
+ event = "sendUserOpResult" /* sendUserOpResult */;
1588
+ } else if ((requestArguments == null ? void 0 : requestArguments.method) === "personal_sign" /* personalSign */) {
1589
+ event = "personalSignResult" /* personalSignResult */;
1590
+ } else if ((_a = requestArguments == null ? void 0 : requestArguments.method) == null ? void 0 : _a.startsWith("eth_signTypedData" /* signTypedData */)) {
1591
+ event = "signTypedDataResult" /* signTypedDataResult */;
1592
+ }
1593
+ if (event) {
1594
+ eventUtils_default.emit(event, {
1595
+ error: {
1596
+ code: 4001,
1597
+ message: "The user rejected the request."
1598
+ }
1599
+ });
1600
+ }
1601
+ onClose();
1602
+ };
1603
+ const confirmTx = (0, import_react8.useCallback)(() => __async(void 0, null, function* () {
1604
+ if (smartAccount && provider) {
1605
+ setLoading(true);
1606
+ if (userOpBundle) {
1607
+ try {
1608
+ const hash = yield smartAccount.sendUserOperation(userOpBundle);
1609
+ eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, { result: hash });
1610
+ } catch (error) {
1611
+ eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, {
1612
+ error
1613
+ });
1614
+ } finally {
1615
+ setLoading(false);
1616
+ }
1617
+ } else if (requestArguments) {
1618
+ try {
1619
+ const hash = yield provider.request(requestArguments);
1620
+ eventUtils_default.emit(
1621
+ requestArguments.method == "personal_sign" /* personalSign */ ? "personalSignResult" /* personalSignResult */ : "signTypedDataResult" /* signTypedDataResult */,
1622
+ { result: hash }
1623
+ );
1624
+ } catch (error) {
1625
+ eventUtils_default.emit(
1626
+ requestArguments.method == "personal_sign" /* personalSign */ ? "personalSignResult" /* personalSignResult */ : "signTypedDataResult" /* signTypedDataResult */,
1627
+ {
1628
+ error
1629
+ }
1630
+ );
1631
+ } finally {
1632
+ setLoading(false);
1633
+ }
1634
+ }
1635
+ onClose();
1636
+ }
1637
+ }), [smartAccount, provider, requestArguments, userOpBundle, onClose]);
1638
+ (0, import_react8.useEffect)(() => {
1639
+ if (userOpBundle && nativeBalance != null && deserializeResult) {
1640
+ const nativeChange = deserializeResult.filter(
1641
+ (item) => {
1642
+ var _a, _b;
1643
+ return ((_b = (_a = item.estimatedChanges.natives) == null ? void 0 : _a[0]) == null ? void 0 : _b.nativeChange) && item.estimatedChanges.natives[0].nativeChange.startsWith("-");
1644
+ }
1645
+ ).map((item) => {
1646
+ var _a, _b, _c, _d;
1647
+ return BigInt(((_d = (_c = (_b = (_a = item.estimatedChanges) == null ? void 0 : _a.natives) == null ? void 0 : _b[0]) == null ? void 0 : _c.nativeChange) == null ? void 0 : _d.replace("-", "")) || 0);
1648
+ }).reduce((accumulator, currentValue) => accumulator + currentValue, BigInt(0));
1649
+ if (userOpBundle.userOp.paymasterAndData.length > 2) {
1650
+ setDisabled(nativeBalance < nativeChange);
1651
+ } else {
1652
+ setDisabled(nativeBalance < gasFee + nativeChange);
1653
+ }
1654
+ }
1655
+ }, [userOpBundle, gasFee, nativeBalance, deserializeResult]);
1656
+ const unsignedMessage = (0, import_react8.useMemo)(() => {
1657
+ var _a, _b;
1658
+ if (!requestArguments) {
1659
+ return void 0;
1660
+ }
1661
+ if (requestArguments.method === "personal_sign" /* personalSign */) {
1662
+ const message = ((_a = requestArguments.params) == null ? void 0 : _a[0]) || "0x";
1663
+ return (0, import_viem3.hexToString)(message);
1664
+ } else {
1665
+ const typedData = (_b = requestArguments.params) == null ? void 0 : _b[1];
1666
+ const obj = typeof typedData === "string" ? JSON.parse(typedData) : typedData;
1667
+ return JSON.stringify(obj, null, 2);
1668
+ }
1669
+ }, [requestArguments]);
1670
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(modal_default, { open, onClose, isDismissable: false, contentClassName: sign_module_default.modalContent, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1671
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("img", { className: sign_module_default.closeBtn, src: close_default, onClick: closeModal }),
1672
+ requestArguments && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: sign_module_default.signTitle, children: requestArguments.method == "personal_sign" /* personalSign */ ? "Sign Message" : "Sign Typed Data" }),
1673
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: sign_module_default.chainInfo, children: [
1674
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("img", { src: chainInfo == null ? void 0 : chainInfo.icon }),
1675
+ chainInfo == null ? void 0 : chainInfo.fullname.replace("Mainnet", "")
1676
+ ] }),
1677
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: sign_module_default.addressContainer, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopyText, { value: evmAccount, style: { textDecorationLine: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: sign_module_default.addressInfo, children: [
1678
+ shortString(evmAccount),
1679
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("img", { src: copy_default })
1680
+ ] }) }) }),
1681
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: sign_module_default.detailsContent + (deserializeResult || requestArguments ? ` ${sign_module_default.fill}` : ""), children: [
1682
+ deserializeResult && deserializeResult.map((details, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(transactionDetails_default, { details }, `${details.type}-${index}`)),
1683
+ unsignedMessage && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: sign_module_default.unsignedMessage, children: unsignedMessage })
1684
+ ] }),
1685
+ gasFee && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: sign_module_default.estimatedGas, children: `Estimated gas fee: ${(0, import_viem3.formatEther)(gasFee)} ${chainInfo == null ? void 0 : chainInfo.nativeCurrency.symbol}` }),
1686
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1687
+ button_default,
1688
+ {
1689
+ onClick: confirmTx,
1690
+ className: sign_module_default.signBtn,
1691
+ isLoading: loading || deserializeLoading,
1692
+ isDisabled: disabled,
1693
+ children: deserializeLoading ? "LOADING" : disabled ? "INSUFFICIENT FEE" : "CONFIRM"
1694
+ }
1695
+ ),
1696
+ showNotRemind && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: sign_module_default.notRemind, onClick: toggleNotRemind, children: [
1697
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("img", { src: notRemindChecked ? check_box_default : check_box_blank_default }),
1698
+ "Do not remind me again"
1699
+ ] })
1700
+ ] }) });
1701
+ };
1702
+ var signModal_default = SignModal;
1703
+
1704
+ // src/evmSigner/index.ts
1705
+ var import_util3 = require("@ethereumjs/util");
1706
+ var import_chains3 = require("@particle-network/chains");
1707
+ var import_events3 = require("events");
1708
+ var import_viem4 = require("viem");
1709
+ var AASignerProvider = class {
1710
+ constructor(supportChainIds, projectId, clientKey, rpcUrls) {
1711
+ this.supportChainIds = supportChainIds;
1712
+ this.projectId = projectId;
1713
+ this.clientKey = clientKey;
1714
+ this.rpcUrls = rpcUrls;
1715
+ this.chainId = 1;
1716
+ this.personalSign = (message) => __async(this, null, function* () {
1717
+ throw new Error("Wallet not connected!");
1718
+ });
1719
+ this.getPublicKey = () => __async(this, null, function* () {
1720
+ throw new Error("Wallet not connected!");
1721
+ });
1722
+ this.getPublicClient = () => {
1723
+ var _a, _b;
1724
+ const rpcUrl = ((_a = this == null ? void 0 : this.rpcUrls) == null ? void 0 : _a[this.chainId]) || ((_b = import_chains3.chains.getEVMChainInfoById(this.chainId || 1)) == null ? void 0 : _b.rpcUrl);
1725
+ return (0, import_viem4.createPublicClient)({
1726
+ transport: (0, import_viem4.http)(rpcUrl)
1727
+ });
1728
+ };
1729
+ this.events = new import_events3.EventEmitter();
1730
+ this.events.setMaxListeners(100);
1731
+ if (typeof window !== "undefined") {
1732
+ const localChainId = localStorage.getItem("connect-evm-chain-id");
1733
+ if (localChainId && supportChainIds.includes(Number(localChainId))) {
1734
+ this.chainId = Number(localChainId);
1735
+ } else {
1736
+ const chainId = supportChainIds[0];
1737
+ if (chainId) {
1738
+ localStorage.setItem("connect-evm-chain-id", chainId.toString());
1739
+ this.chainId = chainId;
1740
+ }
1741
+ }
1742
+ }
1743
+ this.publicClient = this.getPublicClient();
1744
+ }
1745
+ request(arg) {
1746
+ return __async(this, null, function* () {
1747
+ var _a, _b;
1748
+ if (arg.method === "eth_sendTransaction" || arg.method === "wallet_addEthereumChain" || arg.method === "wallet_watchAsset" || arg.method === "eth_sign") {
1749
+ throw new import_viem4.UnsupportedProviderMethodError(new Error("The Provider does not support the requested method."));
1750
+ }
1751
+ if (arg.method === "eth_accounts" || arg.method === "eth_requestAccounts") {
1752
+ const pubKey = yield this.getPublicKey();
1753
+ const address = pubKeyToEVMAddress(pubKey);
1754
+ return [address];
1755
+ } else if (arg.method === "eth_chainId") {
1756
+ return `0x${this.chainId.toString(16)}`;
1757
+ } else if (arg.method === "personal_sign" /* personalSign */) {
1758
+ let message = (_a = arg.params) == null ? void 0 : _a[0];
1759
+ if (message.length !== 66) {
1760
+ const hash = (0, import_viem4.hashMessage)({ raw: message });
1761
+ message = hash;
1762
+ }
1763
+ const result = yield this.personalSign(message || "");
1764
+ const convertResult = convertSignature(result);
1765
+ if (!convertResult) {
1766
+ throw new Error("sign error");
1767
+ }
1768
+ return convertResult;
1769
+ } else if (arg.method === "eth_signTypedData" || arg.method === "eth_signTypedData_v4") {
1770
+ const typedData = (_b = arg.params) == null ? void 0 : _b[1];
1771
+ const hash = (0, import_viem4.hashTypedData)(typeof typedData === "string" ? JSON.parse(typedData) : typedData);
1772
+ const result = yield this.personalSign(hash || "");
1773
+ const convertResult = convertSignature(result);
1774
+ if (!convertResult) {
1775
+ throw new Error("sign error");
1776
+ }
1777
+ return convertResult;
1778
+ } else if (arg.method === "wallet_switchEthereumChain") {
1779
+ if (arg.params && arg.params instanceof Array && arg.params[0] && arg.params[0].chainId) {
1780
+ const chainId = Number(arg.params[0].chainId);
1781
+ if (this.supportChainIds.includes(this.chainId)) {
1782
+ this.chainId = chainId;
1783
+ localStorage.setItem("connect-evm-chain-id", this.chainId.toString());
1784
+ this.publicClient = this.getPublicClient();
1785
+ setTimeout(() => this.events.emit("chainChanged", (0, import_util3.intToHex)(this.chainId)), 0);
1786
+ return Promise.resolve(null);
1787
+ }
1788
+ throw new import_viem4.SwitchChainError(new Error(`The chain: ${chainId} is not supported`));
1789
+ } else {
1790
+ throw new import_viem4.InvalidParamsRpcError(new Error("Invalid Params"));
1791
+ }
1792
+ } else {
1793
+ const result = yield this.publicClient.request(arg);
1794
+ return result;
1795
+ }
1796
+ });
1797
+ }
1798
+ removeListener(event, listener) {
1799
+ this.events.removeListener(event, listener);
1800
+ return this;
1801
+ }
1802
+ on(event, listener) {
1803
+ this.events.on(event, listener);
1804
+ return this;
1805
+ }
1806
+ once(event, listener) {
1807
+ this.events.once(event, listener);
1808
+ return this;
1809
+ }
1810
+ off(event, listener) {
1811
+ this.events.off(event, listener);
1812
+ return this;
1813
+ }
1814
+ emit(event, ...args) {
1815
+ this.events.emit(event, args);
1816
+ }
1817
+ };
1818
+
1819
+ // src/hooks/useModalStateValue.ts
1820
+ var import_react9 = require("react");
1821
+ var useModalStateValue = () => {
1822
+ const [isModalOpen, setModalOpen] = (0, import_react9.useState)(false);
1823
+ return {
1824
+ closeModal: (0, import_react9.useCallback)(() => setModalOpen(false), []),
1825
+ isModalOpen,
1826
+ openModal: (0, import_react9.useCallback)(() => setModalOpen(true), [])
1827
+ };
1828
+ };
1829
+ var useModalStateValue_default = useModalStateValue;
1830
+
1831
+ // src/context/index.tsx
1832
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1833
+ var ConnectContext = (0, import_react10.createContext)({});
1834
+ var SAContractKey = "particle-sa-config";
1835
+ var ConnectProvider = ({
1836
+ children,
1837
+ options,
1838
+ connectors,
1839
+ autoConnect = true
1840
+ }) => {
1841
+ var _a, _b, _c;
1842
+ const {
1843
+ closeModal: closeConnectModal,
1844
+ isModalOpen: connectModalOpen,
1845
+ openModal: openConnectModal
1846
+ } = useModalStateValue_default();
1847
+ const { closeModal: closeSignModal, isModalOpen: signModalOpen, openModal: openSignModal } = useModalStateValue_default();
1848
+ const [connectorId, setConnectorId] = (0, import_react10.useState)();
1849
+ const [accounts, setAccounts] = (0, import_react10.useState)([]);
1850
+ const [evmAccount, setEVMAccount] = (0, import_react10.useState)();
1851
+ const [accountContract, _setAccountContract] = (0, import_react10.useState)({
1852
+ name: ((_a = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _a[0]) || "BTC",
1853
+ version: ((_c = options.aaOptions.accountContracts[((_b = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _b[0]) || "BTC"]) == null ? void 0 : _c[0].version) || "1.0.0"
1854
+ });
1855
+ const setAccountContract = (0, import_react10.useCallback)(
1856
+ (config) => {
1857
+ if (!checkBTCVersion(options.aaOptions.accountContracts, config.name, config.version)) {
1858
+ throw new Error("Invalid Account Contract");
1859
+ }
1860
+ localStorage.setItem(SAContractKey, JSON.stringify(config));
1861
+ _setAccountContract(config);
1862
+ },
1863
+ [options.aaOptions.accountContracts, _setAccountContract]
1864
+ );
1865
+ (0, import_react10.useEffect)(() => {
1866
+ const id = localStorage.getItem("current-connector-id");
1867
+ if (autoConnect && id) {
1868
+ setConnectorId(id);
1869
+ }
1870
+ }, [autoConnect]);
1871
+ const evmSupportChainIds = (0, import_react10.useMemo)(() => {
1872
+ var _a2;
1873
+ let chainIds = (_a2 = options.aaOptions.accountContracts[accountContract.name]) == null ? void 0 : _a2.filter((item) => item.version === accountContract.version).map((item) => item.chainIds).reduce((a, b) => {
1874
+ a.push(...b);
1875
+ return a;
1876
+ }, []);
1877
+ chainIds = Array.from(new Set(chainIds || []));
1878
+ return chainIds;
1879
+ }, [options.aaOptions.accountContracts, accountContract]);
1880
+ const connector = (0, import_react10.useMemo)(() => {
1881
+ return connectors.find((item) => item.metadata.id === connectorId);
1882
+ }, [connectorId, connectors]);
1883
+ const getPublicKey = (0, import_react10.useCallback)(() => __async(void 0, null, function* () {
1884
+ if (!connector) {
1885
+ throw new Error("Wallet not connected!");
1886
+ }
1887
+ const pubKey = yield connector.getPublicKey();
1888
+ return pubKey;
1889
+ }), [connector]);
1890
+ const signMessage = (0, import_react10.useCallback)(
1891
+ (message) => __async(void 0, null, function* () {
1892
+ if (!connector) {
1893
+ throw new Error("Wallet not connected!");
1894
+ }
1895
+ const signature = yield connector.signMessage(message);
1896
+ return signature;
1897
+ }),
1898
+ [connector]
1899
+ );
1900
+ const sendBitcoin = (0, import_react10.useCallback)(
1901
+ (toAddress, satoshis, options2) => __async(void 0, null, function* () {
1902
+ if (!connector) {
1903
+ throw new Error("Wallet not connected!");
1904
+ }
1905
+ const signature = yield connector.sendBitcoin(toAddress, satoshis, options2);
1906
+ return signature;
1907
+ }),
1908
+ [connector]
1909
+ );
1910
+ const getNetwork = (0, import_react10.useCallback)(() => __async(void 0, null, function* () {
1911
+ if (!connector) {
1912
+ throw new Error("Wallet not connected!");
1913
+ }
1914
+ const network = yield connector.getNetwork();
1915
+ return network;
1916
+ }), [connector]);
1917
+ const switchNetwork = (0, import_react10.useCallback)(
1918
+ (network) => __async(void 0, null, function* () {
1919
+ if (!connector) {
1920
+ throw new Error("Wallet not connected!");
1921
+ }
1922
+ yield connector.switchNetwork(network);
1923
+ }),
1924
+ [connector]
1925
+ );
1926
+ const smartAccount = (0, import_react10.useMemo)(() => {
1927
+ if (typeof window === "undefined") {
1928
+ return void 0;
1929
+ }
1930
+ if (!window.__bitcoinSmartAccount || (window == null ? void 0 : window.__bitcoinSmartAccount) && ((window == null ? void 0 : window.__bitcoinSmartAccount.smartAccountContract.version) !== accountContract.version || (window == null ? void 0 : window.__bitcoinSmartAccount.smartAccountContract.name) !== accountContract.name)) {
1931
+ const smartAccount2 = new import_aa.SmartAccount(
1932
+ new AASignerProvider(evmSupportChainIds, options.projectId, options.clientKey, options.rpcUrls),
1933
+ options
1934
+ );
1935
+ smartAccount2.setSmartAccountContract(accountContract);
1936
+ window.__bitcoinSmartAccount = smartAccount2;
1937
+ }
1938
+ window.__bitcoinSmartAccount.provider.getPublicKey = getPublicKey;
1939
+ window.__bitcoinSmartAccount.provider.personalSign = signMessage;
1940
+ return window.__bitcoinSmartAccount;
1941
+ }, [options, evmSupportChainIds, getPublicKey, signMessage, accountContract]);
1942
+ (0, import_react10.useEffect)(() => {
1943
+ if (accounts.length > 0 && smartAccount) {
1944
+ getBTCAAAddress(smartAccount, accounts[0], accountContract.name, accountContract.version).then((res) => {
1945
+ setEVMAccount(res);
1946
+ }).catch((e) => {
1947
+ setEVMAccount(void 0);
1948
+ });
1949
+ } else {
1950
+ setEVMAccount(void 0);
1951
+ }
1952
+ }, [accountContract, accounts, smartAccount]);
1953
+ const getSmartAccountInfo = (0, import_react10.useCallback)(() => __async(void 0, null, function* () {
1954
+ if (accounts.length > 0 && smartAccount) {
1955
+ const accountInfo = yield getBTCAccountInfo(
1956
+ smartAccount,
1957
+ accounts[0],
1958
+ accountContract.name,
1959
+ accountContract.version
1960
+ );
1961
+ setEVMAccount(accountInfo.smartAccountAddress);
1962
+ return accountInfo;
1963
+ }
1964
+ return void 0;
1965
+ }), [accounts, smartAccount, accountContract, setEVMAccount]);
1966
+ const requestAccount = (0, import_react10.useCallback)(
1967
+ (connector2) => __async(void 0, null, function* () {
1968
+ let accounts2 = yield connector2.getAccounts();
1969
+ if (accounts2.length === 0 && autoConnect) {
1970
+ accounts2 = yield connector2.requestAccounts();
1971
+ }
1972
+ setAccounts(accounts2);
1973
+ }),
1974
+ [autoConnect]
1975
+ );
1976
+ (0, import_react10.useEffect)(() => {
1977
+ if (connector) {
1978
+ requestAccount(connector).catch((e) => {
1979
+ setAccounts([]);
1980
+ });
1981
+ } else {
1982
+ setAccounts([]);
1983
+ }
1984
+ }, [connector, requestAccount]);
1985
+ (0, import_react10.useEffect)(() => {
1986
+ const onAccountChange = (accounts2) => {
1987
+ setAccounts(accounts2);
1988
+ };
1989
+ connector == null ? void 0 : connector.on("accountsChanged", onAccountChange);
1990
+ return () => {
1991
+ connector == null ? void 0 : connector.removeListener("accountsChanged", onAccountChange);
1992
+ };
1993
+ }, [connector]);
1994
+ const provider = (0, import_react10.useMemo)(() => {
1995
+ var _a2;
1996
+ if (connectorId) {
1997
+ return (_a2 = connectors.find((item) => item.metadata.id === connectorId)) == null ? void 0 : _a2.getProvider();
1998
+ }
1999
+ }, [connectorId, connectors]);
2000
+ const disconnect = (0, import_react10.useCallback)(() => {
2001
+ localStorage.removeItem("current-connector-id");
2002
+ txConfirmUtils_default.reset();
2003
+ if (connector) {
2004
+ connector.disconnect();
2005
+ }
2006
+ setConnectorId(void 0);
2007
+ }, [connector]);
2008
+ (0, import_react10.useEffect)(() => {
2009
+ const config = JSON.parse(localStorage.getItem(SAContractKey) || "{}");
2010
+ if (config.name && config.version && checkBTCVersion(options.aaOptions.accountContracts, config.name, config.version)) {
2011
+ _setAccountContract(config);
2012
+ }
2013
+ }, [options.aaOptions.accountContracts, _setAccountContract]);
2014
+ (0, import_react10.useEffect)(() => {
2015
+ var _a2, _b2;
2016
+ if (((_a2 = options.walletOptions) == null ? void 0 : _a2.visible) !== false) {
2017
+ const supportChains = evmSupportChainIds.map((id) => import_chains4.chains.getEVMChainInfoById(id));
2018
+ if (supportChains.some((chain) => !chain)) {
2019
+ throw new Error(`Please config valid chain ids, ${JSON.stringify(evmSupportChainIds)}`);
2020
+ }
2021
+ import_wallet.walletEntryPlugin.init(
2022
+ {
2023
+ projectId: options.projectId,
2024
+ clientKey: options.clientKey,
2025
+ appId: options.appId
2026
+ },
2027
+ __spreadProps(__spreadValues({}, options.walletOptions), {
2028
+ erc4337: accountContract,
2029
+ customStyle: __spreadProps(__spreadValues({}, (_b2 = options.walletOptions) == null ? void 0 : _b2.customStyle), {
2030
+ supportChains
2031
+ })
2032
+ })
2033
+ );
2034
+ }
2035
+ }, [options, evmSupportChainIds, accountContract]);
2036
+ (0, import_react10.useEffect)(() => {
2037
+ var _a2;
2038
+ if (smartAccount && ((_a2 = options.walletOptions) == null ? void 0 : _a2.visible) !== false) {
2039
+ import_wallet.walletEntryPlugin.setWalletCore({
2040
+ ethereum: smartAccount.provider
2041
+ });
2042
+ }
2043
+ }, [smartAccount, options]);
2044
+ (0, import_react10.useEffect)(() => {
2045
+ var _a2;
2046
+ if (((_a2 = options.walletOptions) == null ? void 0 : _a2.visible) !== false) {
2047
+ if (evmAccount) {
2048
+ import_wallet.walletEntryPlugin.walletEntryCreate();
2049
+ } else {
2050
+ import_wallet.walletEntryPlugin.walletEntryDestroy();
2051
+ }
2052
+ }
2053
+ }, [evmAccount, smartAccount, options]);
2054
+ (0, import_react10.useEffect)(() => {
2055
+ if (accounts.length === 0) {
2056
+ closeConnectModal();
2057
+ closeSignModal();
2058
+ if (eventUtils_default.listenerCount("sendUserOpResult" /* sendUserOpResult */) > 0) {
2059
+ eventUtils_default.emit("sendUserOpResult" /* sendUserOpResult */, {
2060
+ error: {
2061
+ code: -32600,
2062
+ message: "Wallet disconnected"
2063
+ }
2064
+ });
2065
+ } else if (eventUtils_default.listenerCount("personalSignResult" /* personalSignResult */) > 0) {
2066
+ eventUtils_default.emit("personalSignResult" /* personalSignResult */, {
2067
+ error: {
2068
+ code: -32600,
2069
+ message: "Wallet disconnected"
2070
+ }
2071
+ });
2072
+ } else if (eventUtils_default.listenerCount("signTypedDataResult" /* signTypedDataResult */) > 0) {
2073
+ eventUtils_default.emit("signTypedDataResult" /* signTypedDataResult */, {
2074
+ error: {
2075
+ code: -32600,
2076
+ message: "Wallet disconnected"
2077
+ }
2078
+ });
2079
+ }
2080
+ }
2081
+ }, [accounts, closeConnectModal, closeSignModal]);
2082
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2083
+ ConnectContext.Provider,
2084
+ {
2085
+ value: {
2086
+ connectorId,
2087
+ setConnectorId,
2088
+ connector,
2089
+ connectors,
2090
+ openConnectModal,
2091
+ closeConnectModal,
2092
+ accounts,
2093
+ provider,
2094
+ disconnect,
2095
+ getPublicKey,
2096
+ signMessage,
2097
+ evmAccount,
2098
+ smartAccount,
2099
+ getNetwork,
2100
+ switchNetwork,
2101
+ sendBitcoin,
2102
+ accountContract,
2103
+ setAccountContract,
2104
+ getSmartAccountInfo
2105
+ },
2106
+ children: [
2107
+ children,
2108
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(connectModal_default, { open: connectModalOpen, onClose: closeConnectModal }),
2109
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(signModal_default, { open: signModalOpen, onClose: closeSignModal, onOpen: openSignModal })
2110
+ ]
2111
+ }
2112
+ );
2113
+ };
2114
+ var useConnectProvider = () => {
2115
+ const context = (0, import_react10.useContext)(ConnectContext);
2116
+ return context;
2117
+ };
2118
+
2119
+ // src/components/btcWalletSelectorContext.tsx
2120
+ var import_react11 = __toESM(require("react"), 1);
2121
+
2122
+ // src/components/confirmBox/Modal.tsx
2123
+ var import_jsx_runtime10 = require("react/jsx-runtime");
2124
+ function Modal2({ children, onClose, style = {} }) {
2125
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
2126
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "layer" }),
2127
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "modal", style, children: [
2128
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "close", onClick: () => {
2129
+ onClose && onClose();
2130
+ }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M7.73284 5.99997L11.7359 1.99698C12.0368 1.69598 12.0882 1.25928 11.8507 1.02188L10.9779 0.149088C10.7404 -0.0884114 10.3043 -0.0363117 10.0028 0.264487L6.00013 4.26737L1.99719 0.264587C1.69619 -0.0367116 1.25948 -0.0884115 1.02198 0.149388L0.149174 1.02228C-0.0882276 1.25938 -0.0368271 1.69608 0.264576 1.99708L4.26761 5.99997L0.264576 10.0032C-0.0363271 10.304 -0.0884276 10.7404 0.149174 10.9779L1.02198 11.8507C1.25948 12.0882 1.69619 12.0367 1.99719 11.7358L6.00033 7.73266L10.0029 11.7352C10.3044 12.0368 10.7405 12.0882 10.978 11.8507L11.8508 10.9779C12.0882 10.7404 12.0368 10.304 11.736 10.0028L7.73284 5.99997Z", fill: "#808095" }) }) }),
2131
+ children
2132
+ ] })
2133
+ ] });
2134
+ }
2135
+
2136
+ // src/components/confirmBox/index.tsx
2137
+ var import_jsx_runtime11 = require("react/jsx-runtime");
2138
+ function ComfirmBox({ onClose, status = 1, fromChain = {
2139
+ name: "NEAR"
2140
+ }, toChain = {
2141
+ name: "BTC"
2142
+ }, hash }) {
2143
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Modal2, { onClose, children: [
2144
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "title", children: "Transaction Detail" }),
2145
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "chians", children: status === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "loading", width: "54", height: "54", viewBox: "0 0 54 54", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { d: "M52.0766 10.7867C53.0482 11.0471 53.6273 12.0399 53.3741 13.0134C53.1219 13.977 52.1361 14.5546 51.1725 14.3024L47.6172 13.3498L46.3268 18.1657C44.8261 23.7665 40.0219 27.6146 34.2721 28.6546C38.7381 32.4056 40.9681 38.1648 39.4673 43.7656L38.1769 48.5815L41.6972 49.5248C42.6655 49.7843 43.2401 50.7794 42.9806 51.7477C42.7212 52.7159 41.726 53.2905 40.7578 53.031L2.02593 42.6529L1.71657 42.5396C0.800668 42.1375 0.383843 41.0689 0.785965 40.153C1.15472 39.3126 2.09436 38.8809 2.97262 39.1481L6.52126 40.0989L7.81144 35.2839C9.31216 29.6832 14.1131 25.8341 19.8661 24.795C15.3968 21.0432 13.1702 15.2848 14.6709 9.68407L15.9615 4.86764L12.4128 3.91679C11.4445 3.65734 10.87 2.66223 11.1295 1.69395C11.3889 0.725662 12.384 0.151138 13.3523 0.410589L52.0766 10.7867ZM44.0959 12.4063L19.471 5.80801L18.1871 10.5994C17.0693 14.7711 18.671 19.3131 22.2022 22.3268C23.2549 23.2994 23.6544 24.61 23.3544 25.7297C23.0485 27.0126 21.9665 27.9627 20.6551 28.1007C16.1146 28.9516 12.432 32.0776 11.3175 36.2502L10.0214 41.0874L11.982 41.6127L12.5291 39.571C13.5385 35.8039 16.032 32.0464 21.0065 30.689L21.8135 30.4937C23.6047 30.2306 25.3145 29.1151 26.9388 27.1507C27.1931 29.441 28.1726 31.2771 29.8857 32.6567C34.4351 36.8 34.1706 41.1245 33.1094 45.0849L32.5623 47.1267L34.6428 47.6841L35.9323 42.8715C37.0501 38.6998 35.4522 34.1588 31.9215 31.1412C30.8693 30.1687 30.4684 28.8613 30.7693 27.7383C31.1136 26.4535 32.114 25.5215 33.4676 25.3711C38.0072 24.5235 41.6865 21.3966 42.8052 17.2216L44.0959 12.4063ZM40.7578 15.6185C40.1797 19.9295 35.6431 22.9023 32.7256 23.2863C30.9809 23.5169 29.1741 24.3456 27.3087 25.7742C26.4809 23.6244 25.3731 22.0143 23.9948 20.9474C21.5041 19.0198 20.6551 17.2216 20.3797 15.1185L40.7578 15.6185Z", fill: "white", "fill-opacity": "0.21" }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("svg", { width: "54", height: "54", viewBox: "0 0 54 54", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
2146
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", { cx: "27", cy: "27", r: "21", fill: "#33FFDA" }),
2147
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", { cx: "27", cy: "27", r: "24", stroke: "#33FFDA", "stroke-opacity": "0.3", "stroke-width": "6" }),
2148
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M37.342 19.6604C38.2111 20.5494 38.2205 22.0006 37.363 22.9016L24.8987 36L17.651 28.5196C16.7858 27.6266 16.7826 26.1754 17.6439 25.2783C18.5052 24.3813 19.9048 24.378 20.77 25.271L24.8705 29.5031L34.2159 19.6822C35.0733 18.7812 36.4729 18.7714 37.342 19.6604Z", fill: "black" })
2149
+ ] }) }),
2150
+ status === 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
2151
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "time", children: "Est Time: 5 mins" }),
2152
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "processing", children: "Transaction is processing." })
2153
+ ] }),
2154
+ status === 1 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
2155
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "time", children: "Bridge Completed" }),
2156
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "processing", children: [
2157
+ "You can view your transaction on the ",
2158
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("a", { href: "/history", children: "bridge transaction history." })
2159
+ ] })
2160
+ ] }),
2161
+ !!hash && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jsx_runtime11.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "srcBtn", onClick: () => {
2162
+ if (fromChain.name === "BTC") {
2163
+ window.open(`https://mempool.space/testnet/tx/${hash}`);
2164
+ } else if (fromChain.name === "NEAR") {
2165
+ window.open(`https://testnet.nearblocks.io/txns/${hash}`);
2166
+ }
2167
+ }, children: [
2168
+ "SRC TX ",
2169
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M5.97871 8H2.02129C0.907217 8 0 7.09294 0 5.97905V2.02095C0 0.907063 0.907217 0 2.02129 0H3.73973C3.98175 0 4.17779 0.196012 4.17779 0.437986C4.17779 0.679959 3.98175 0.875972 3.73973 0.875972H2.02129C1.71573 0.875972 1.42775 0.994931 1.21142 1.21122C0.995099 1.42751 0.87612 1.71544 0.87612 2.02095V5.97769C0.87612 6.2832 0.995099 6.57114 1.21142 6.78743C1.42775 7.00372 1.71573 7.12268 2.02129 7.12268H5.97871C6.61011 7.12268 7.12388 6.60899 7.12388 5.97769V4.12977C7.12388 3.97432 7.20771 3.82832 7.34291 3.74992C7.40916 3.71206 7.48487 3.69179 7.56194 3.69179C7.63901 3.69179 7.71472 3.71206 7.78097 3.74992C7.91617 3.82832 8 3.97296 8 4.12977V5.97769C8 7.09294 7.09414 8 5.97871 8ZM7.35223 2.78066C7.41578 2.81715 7.48879 2.83608 7.56179 2.83608C7.6348 2.83608 7.70781 2.8158 7.77271 2.7793C7.90251 2.70496 7.98228 2.56572 7.98228 2.41702V0.438001C7.98228 0.206844 7.79434 0.0189453 7.56315 0.0189453H5.58378C5.35258 0.0189453 5.16465 0.206844 5.16465 0.438001C5.16465 0.669157 5.35258 0.857056 5.58378 0.857056H6.55077L3.70328 3.70405L3.70058 3.70676C3.62658 3.7861 3.58634 3.89111 3.58835 3.99958C3.59037 4.10806 3.6345 4.21149 3.7114 4.28803C3.79117 4.36779 3.89527 4.41105 4.00749 4.41105C4.1143 4.41105 4.2157 4.37049 4.29277 4.29885L4.29412 4.2975L7.14267 1.44944V2.41838C7.14267 2.56707 7.22379 2.70631 7.35223 2.78066Z", fill: "#FF7A00" }) })
2170
+ ] }) })
2171
+ ] });
2172
+ }
2173
+
2174
+ // src/components/btcWalletSelectorContext.tsx
2175
+ var import_jsx_runtime12 = require("react/jsx-runtime");
2176
+ var WalletSelectorContext = import_react11.default.createContext(null);
2177
+ function BtcWalletSelectorContextProvider({ children }) {
2178
+ const [isProcessing, setIsProcessing] = (0, import_react11.useState)(false);
2179
+ const walletSelectorContextValue = (0, import_react11.useMemo)(() => {
2180
+ return {
2181
+ setIsProcessing
2182
+ };
2183
+ }, []);
2184
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(WalletSelectorContext.Provider, { value: walletSelectorContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2185
+ ConnectProvider,
2186
+ {
2187
+ options: {
2188
+ projectId: "btc",
2189
+ clientKey: "btc",
2190
+ appId: "btc",
2191
+ aaOptions: {
2192
+ accountContracts: {
2193
+ BTC: [
2194
+ {
2195
+ chainIds: [686868],
2196
+ version: "1.0.0"
2197
+ }
2198
+ ]
2199
+ }
2200
+ },
2201
+ walletOptions: {
2202
+ visible: true
2203
+ }
2204
+ },
2205
+ autoConnect: true,
2206
+ connectors: [new UnisatConnector()],
2207
+ children: [
2208
+ children,
2209
+ isProcessing && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ComfirmBox, { hash: "", status: 0, onClose: () => {
2210
+ setIsProcessing(false);
2211
+ } })
2212
+ ]
2213
+ }
2214
+ ) });
2215
+ }
2216
+ function useBtcWalletSelector() {
2217
+ const { openConnectModal, openConnectModalAsync, disconnect } = useConnectModal();
2218
+ const { accounts, sendBitcoin, getPublicKey, provider, signMessage } = useBTCProvider();
2219
+ const publicKey = (0, import_react11.useRef)(null);
2220
+ const signMessageFn = (0, import_react11.useRef)(null);
2221
+ const [updater, setUpdater] = (0, import_react11.useState)(1);
2222
+ const context = (0, import_react11.useContext)(WalletSelectorContext);
2223
+ (0, import_react11.useEffect)(() => {
2224
+ if (provider) {
2225
+ getPublicKey().then((res) => {
2226
+ publicKey.current = res;
2227
+ });
2228
+ }
2229
+ }, [provider, updater]);
2230
+ (0, import_react11.useEffect)(() => {
2231
+ signMessageFn.current = signMessage;
2232
+ }, [signMessage]);
2233
+ return {
2234
+ login: () => __async(this, null, function* () {
2235
+ setUpdater(updater + 1);
2236
+ if (openConnectModal) {
2237
+ yield openConnectModal();
2238
+ }
2239
+ return null;
2240
+ }),
2241
+ logout: () => {
2242
+ disconnect && disconnect();
2243
+ },
2244
+ account: accounts && accounts.length ? accounts[0] : null,
2245
+ getPublicKey: () => __async(this, null, function* () {
2246
+ let times = 0;
2247
+ while (!publicKey.current) {
2248
+ yield sleep(1e3);
2249
+ if (times++ > 10) {
2250
+ return null;
2251
+ }
2252
+ }
2253
+ return publicKey.current;
2254
+ }),
2255
+ signMessage: (msg) => {
2256
+ return signMessageFn.current(msg);
2257
+ },
2258
+ getContext: () => {
2259
+ return context;
2260
+ }
2261
+ };
2262
+ }
2263
+ function sleep(time) {
2264
+ return new Promise(function(resolve) {
2265
+ setTimeout(resolve, time);
2266
+ });
2267
+ }
2268
+
2269
+ // src/utils/setupBTCWallet.ts
2270
+ var import_near_api_js = require("near-api-js");
2271
+ var import_transactions = require("@near-js/transactions");
2272
+ var import_key_pair = require("near-api-js/lib/utils/key_pair");
2273
+ var import_transaction = require("near-api-js/lib/transaction");
2274
+ var import_utils5 = require("@near-js/utils");
2275
+ var import_bs58 = __toESM(require("bs58"), 1);
2276
+ var import_js_sha256 = require("js-sha256");
2277
+
2278
+ // src/utils/initWalletButton.ts
2279
+ function setupWalletButton(network, wallet, originalWallet) {
2280
+ if (document.getElementById("satoshi-wallet-button"))
2281
+ return;
2282
+ const iframe = createIframe({
2283
+ iframeUrl: network === "testnet" ? "https://wallet-dev.satoshibridge.top" : "https://wallet.satoshibridge.top",
2284
+ iframeStyle: { width: "400px", height: "650px" }
2285
+ });
2286
+ const button = createFloatingButtonWithIframe({
2287
+ openImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn.png",
2288
+ closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
2289
+ iframe
2290
+ });
2291
+ setupButtonClickHandler(button, iframe, wallet, originalWallet);
2292
+ }
2293
+ function createFloatingButtonWithIframe({
2294
+ openImageUrl,
2295
+ closeImageUrl,
2296
+ iframe
2297
+ }) {
2298
+ const button = document.createElement("img");
2299
+ button.id = "satoshi-wallet-button";
2300
+ button.src = openImageUrl;
2301
+ Object.assign(button.style, {
2302
+ position: "fixed",
2303
+ bottom: "20px",
2304
+ right: "20px",
2305
+ zIndex: "100000",
2306
+ width: "60px",
2307
+ height: "60px",
2308
+ borderRadius: "50%",
2309
+ cursor: "pointer",
2310
+ transition: "transform 0.15s ease"
2311
+ });
2312
+ document.body.appendChild(button);
2313
+ const iframeVisible = localStorage.getItem("iframeVisible") === "true" || localStorage.getItem("iframeVisible") === null;
2314
+ button.src = iframeVisible ? closeImageUrl : openImageUrl;
2315
+ iframe.style.display = iframeVisible ? "block" : "none";
2316
+ button.onclick = function() {
2317
+ const isCurrentlyVisible = iframe.style.display === "block";
2318
+ button.style.transform = "scale(0.8)";
2319
+ setTimeout(() => {
2320
+ button.style.transform = "scale(1)";
2321
+ }, 150);
2322
+ iframe.style.display = isCurrentlyVisible ? "none" : "block";
2323
+ button.src = isCurrentlyVisible ? openImageUrl : closeImageUrl;
2324
+ localStorage.setItem("iframeVisible", String(!isCurrentlyVisible));
2325
+ };
2326
+ return button;
2327
+ }
2328
+ function createIframe({
2329
+ iframeUrl,
2330
+ iframeStyle = {}
2331
+ }) {
2332
+ const iframe = document.createElement("iframe");
2333
+ iframe.id = "satoshi-wallet-iframe";
2334
+ iframe.src = iframeUrl;
2335
+ Object.assign(iframe.style, __spreadValues({
2336
+ position: "fixed",
2337
+ bottom: "90px",
2338
+ right: "20px",
2339
+ zIndex: "100000",
2340
+ boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)",
2341
+ borderRadius: "10px",
2342
+ display: "block"
2343
+ }, iframeStyle));
2344
+ document.body.appendChild(iframe);
2345
+ return iframe;
2346
+ }
2347
+ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
2348
+ return __async(this, null, function* () {
2349
+ var _a;
2350
+ const accountId = (_a = yield wallet == null ? void 0 : wallet.getAccounts()) == null ? void 0 : _a[0].accountId;
2351
+ const originalAccountId = originalWallet.account;
2352
+ const originalPublicKey = yield originalWallet.getPublicKey();
2353
+ const iframeSrc = new URL(iframe.src);
2354
+ iframeSrc.searchParams.set("origin", window.location.origin);
2355
+ if (accountId)
2356
+ iframeSrc.searchParams.set("accountId", accountId);
2357
+ if (originalAccountId)
2358
+ iframeSrc.searchParams.set("originalAccountId", originalAccountId);
2359
+ if (originalPublicKey)
2360
+ iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
2361
+ iframe.src = iframeSrc.toString();
2362
+ window.addEventListener("message", (event) => __async(this, null, function* () {
2363
+ var _a2, _b;
2364
+ if (event.origin !== iframeSrc.origin)
2365
+ return;
2366
+ const { action, requestId, params } = event.data;
2367
+ if (action === "signAndSendTransaction") {
2368
+ try {
2369
+ const result = yield wallet.signAndSendTransaction(params);
2370
+ (_a2 = event.source) == null ? void 0 : _a2.postMessage(
2371
+ {
2372
+ requestId,
2373
+ result,
2374
+ success: true
2375
+ },
2376
+ { targetOrigin: event.origin }
2377
+ );
2378
+ } catch (error) {
2379
+ (_b = event.source) == null ? void 0 : _b.postMessage(
2380
+ {
2381
+ requestId,
2382
+ error: error.message,
2383
+ success: false
2384
+ },
2385
+ { targetOrigin: event.origin }
2386
+ );
2387
+ }
2388
+ }
2389
+ }));
2390
+ });
2391
+ }
2392
+ function removeWalletButton() {
2393
+ const button = document.getElementById("satoshi-wallet-button");
2394
+ button == null ? void 0 : button.remove();
2395
+ const iframe = document.getElementById("satoshi-wallet-iframe");
2396
+ iframe == null ? void 0 : iframe.remove();
2397
+ }
2398
+
2399
+ // src/utils/setupBTCWallet.ts
2400
+ var { signedDelegate, transfer, functionCall } = import_transactions.actionCreators;
2401
+ var base_url = "https://api.dev.satoshibridge.top/v1";
2402
+ var token = "nbtc1-nsp.testnet";
2403
+ var contractId = "dev1-nsp.testnet";
2404
+ var state = {
2405
+ saveAccount(account) {
2406
+ window.localStorage.setItem("btc-wallet-account", account);
2407
+ },
2408
+ removeAccount() {
2409
+ window.localStorage.removeItem("btc-wallet-account");
2410
+ },
2411
+ savePublicKey(publicKey) {
2412
+ window.localStorage.setItem("btc-wallet-publickey", publicKey);
2413
+ },
2414
+ removePublicKey() {
2415
+ window.localStorage.removeItem("btc-wallet-publickey");
2416
+ },
2417
+ saveBtcPublicKey(publicKey) {
2418
+ window.localStorage.setItem("btc-wallet-btc-publickey", publicKey);
2419
+ },
2420
+ removeBtcPublicKey() {
2421
+ window.localStorage.removeItem("btc-wallet-btc-publickey");
2422
+ },
2423
+ clear() {
2424
+ this.removeAccount();
2425
+ this.removePublicKey();
2426
+ this.removeBtcPublicKey();
2427
+ },
2428
+ save(account, publicKey) {
2429
+ this.saveAccount(account);
2430
+ this.savePublicKey(publicKey);
2431
+ },
2432
+ getAccount() {
2433
+ return window.localStorage.getItem("btc-wallet-account");
2434
+ },
2435
+ getPublicKey() {
2436
+ return window.localStorage.getItem("btc-wallet-publickey");
2437
+ },
2438
+ getBtcPublicKey() {
2439
+ return window.localStorage.getItem("btc-wallet-btc-publickey");
2440
+ }
2441
+ };
2442
+ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
2443
+ metadata,
2444
+ options,
2445
+ store,
2446
+ emitter,
2447
+ logger,
2448
+ id,
2449
+ provider
2450
+ }) {
2451
+ const wallet = {
2452
+ signIn,
2453
+ signOut,
2454
+ getAccounts,
2455
+ verifyOwner,
2456
+ signMessage,
2457
+ signAndSendTransaction,
2458
+ signAndSendTransactions
2459
+ };
2460
+ function viewMethod(_02) {
2461
+ return __async(this, arguments, function* ({ method, args = {} }) {
2462
+ const res = yield provider.query({
2463
+ request_type: "call_function",
2464
+ account_id: contractId,
2465
+ method_name: method,
2466
+ args_base64: Buffer.from(JSON.stringify(args)).toString("base64"),
2467
+ finality: "optimistic"
2468
+ });
2469
+ return JSON.parse(Buffer.from(res.result).toString());
2470
+ });
2471
+ }
2472
+ ;
2473
+ function signIn(_02) {
2474
+ return __async(this, arguments, function* ({ contractId: contractId2, methodNames }) {
2475
+ const accountId = state.getAccount();
2476
+ const publicKey = state.getPublicKey();
2477
+ const btcContext = window.btcContext;
2478
+ if (accountId && publicKey) {
2479
+ return [{
2480
+ accountId,
2481
+ publicKey
2482
+ }];
2483
+ }
2484
+ const btcAccount = yield btcContext.login();
2485
+ const btcPublicKey = yield btcContext.getPublicKey();
2486
+ const nearTempAddress = yield viewMethod({
2487
+ method: "get_chain_signature_near_account",
2488
+ args: { "btc_public_key": btcPublicKey }
2489
+ });
2490
+ const nearTempPublicKey = yield viewMethod({
2491
+ method: "get_chain_signature_near_account_public_key",
2492
+ args: { "btc_public_key": btcPublicKey }
2493
+ });
2494
+ state.saveAccount(nearTempAddress);
2495
+ state.savePublicKey(nearTempPublicKey);
2496
+ state.saveBtcPublicKey(btcPublicKey);
2497
+ return [
2498
+ {
2499
+ accountId: nearTempAddress,
2500
+ publicKey: nearTempPublicKey
2501
+ }
2502
+ ];
2503
+ });
2504
+ }
2505
+ function signOut() {
2506
+ return __async(this, null, function* () {
2507
+ const btcContext = window.btcContext;
2508
+ btcContext.logout();
2509
+ state.clear();
2510
+ window.localStorage.removeItem("near-wallet-selector:selectedWalletId");
2511
+ removeWalletButton();
2512
+ });
2513
+ }
2514
+ function getAccounts() {
2515
+ return __async(this, null, function* () {
2516
+ const accountId = state.getAccount();
2517
+ initWalletButton(options.network.networkId, accountId, wallet);
2518
+ return [{ accountId: state.getAccount() }];
2519
+ });
2520
+ }
2521
+ function verifyOwner() {
2522
+ return __async(this, null, function* () {
2523
+ throw new Error(`Method not supported by ${metadata.name}`);
2524
+ });
2525
+ }
2526
+ function signMessage() {
2527
+ return __async(this, null, function* () {
2528
+ throw new Error(`Method not supported by ${metadata.name}`);
2529
+ });
2530
+ }
2531
+ function signAndSendTransaction(_02) {
2532
+ return __async(this, arguments, function* ({ signerId, receiverId, actions }) {
2533
+ const btcContext = window.btcContext;
2534
+ const accountId = state.getAccount();
2535
+ const publicKey = state.getPublicKey();
2536
+ const newActions = actions.map((action) => {
2537
+ switch (action.type) {
2538
+ case "FunctionCall":
2539
+ return functionCall(action.params.methodName, action.params.args, action.params.gas, action.params.deposit);
2540
+ case "Transfer":
2541
+ return transfer(action.params.deposit);
2542
+ }
2543
+ });
2544
+ const { header } = yield provider.block({ finality: "final" });
2545
+ const rawAccessKey = yield provider.query({
2546
+ request_type: "view_access_key",
2547
+ account_id: accountId,
2548
+ public_key: publicKey,
2549
+ finality: "final"
2550
+ });
2551
+ const accessKey = __spreadProps(__spreadValues({}, rawAccessKey), {
2552
+ nonce: BigInt(rawAccessKey.nonce || 0)
2553
+ });
2554
+ const publicKeyFromat = import_key_pair.PublicKey.from(publicKey);
2555
+ let nearNonceNumber = accessKey.nonce + BigInt(1);
2556
+ const nearNonceApi = yield getNearNonceFromApi(accountId);
2557
+ if (nearNonceApi) {
2558
+ nearNonceNumber = nearNonceApi.result_data && Number(nearNonceApi.result_data) > 0 ? BigInt(Number(nearNonceApi.result_data)) : accessKey.nonce + BigInt(1);
2559
+ }
2560
+ const _transiton = yield import_near_api_js.transactions.createTransaction(
2561
+ accountId,
2562
+ publicKeyFromat,
2563
+ receiverId,
2564
+ nearNonceNumber,
2565
+ newActions,
2566
+ (0, import_utils5.baseDecode)(header.hash)
2567
+ );
2568
+ const tx_bytes = (0, import_transaction.encodeTransaction)(_transiton);
2569
+ const hash = import_bs58.default.encode(new Uint8Array(import_js_sha256.sha256.array(tx_bytes)));
2570
+ const accountInfo = yield viewMethod({
2571
+ method: "get_account",
2572
+ args: { "account_id": accountId }
2573
+ });
2574
+ const nonceApi = yield getNonceFromApi(accountId);
2575
+ const nonce = (nonceApi == null ? void 0 : nonceApi.result_data) ? Number(nonceApi == null ? void 0 : nonceApi.result_data) : accountInfo.nonce;
2576
+ const outcome = {
2577
+ near_transactions: Array.from(tx_bytes),
2578
+ nonce: Number(nonce),
2579
+ chain_id: 397,
2580
+ csna: accountId,
2581
+ btcPublicKey: state.getBtcPublicKey(),
2582
+ nearPublicKey: publicKey
2583
+ };
2584
+ const intention = {
2585
+ chain_id: outcome.chain_id.toString(),
2586
+ csna: outcome.csna,
2587
+ near_transactions: [outcome.near_transactions],
2588
+ "gas_token": token,
2589
+ "gas_limit": "3000",
2590
+ nonce: Number(outcome.nonce).toString()
2591
+ };
2592
+ const strIntention = JSON.stringify(intention);
2593
+ const signature = yield btcContext.signMessage(strIntention);
2594
+ const result = yield uploadCAWithdraw({
2595
+ sig: signature,
2596
+ btcPubKey: outcome.btcPublicKey,
2597
+ data: toHex(strIntention),
2598
+ near_nonce: [Number(nearNonceNumber)]
2599
+ });
2600
+ if (result.result_code === 0) {
2601
+ const result2 = yield pollTransactionStatus(options.network.networkId, hash);
2602
+ return result2;
2603
+ } else {
2604
+ return null;
2605
+ }
2606
+ });
2607
+ }
2608
+ function signAndSendTransactions(_02) {
2609
+ return __async(this, arguments, function* ({ transactions: transactions2 }) {
2610
+ const result = yield Promise.all(transactions2.map(
2611
+ (transaction) => __async(this, null, function* () {
2612
+ return yield signAndSendTransaction(transaction);
2613
+ })
2614
+ ));
2615
+ return result;
2616
+ });
2617
+ }
2618
+ return wallet;
2619
+ });
2620
+ function getNonceFromApi(accountId) {
2621
+ return fetch(`${base_url}/nonce?csna=${accountId}`, {
2622
+ method: "GET",
2623
+ headers: {
2624
+ "Content-Type": "application/json"
2625
+ }
2626
+ }).then((res) => res.json());
2627
+ }
2628
+ function getNearNonceFromApi(accountId) {
2629
+ return fetch(`${base_url}/nonceNear?csna=${accountId}`, {
2630
+ method: "GET",
2631
+ headers: {
2632
+ "Content-Type": "application/json"
2633
+ }
2634
+ }).then((res) => res.json());
2635
+ }
2636
+ function uploadCAWithdraw(data) {
2637
+ return fetch(`${base_url}/receiveTransaction`, {
2638
+ method: "POST",
2639
+ headers: {
2640
+ "Content-Type": "application/json"
2641
+ },
2642
+ body: JSON.stringify(data)
2643
+ }).then((res) => res.json());
2644
+ }
2645
+ function setupBTCWallet({
2646
+ iconUrl = "https://assets.deltatrade.ai/assets/chain/btc.svg",
2647
+ deprecated = false,
2648
+ btcContext
2649
+ }) {
2650
+ const btcWallet = () => __async(this, null, function* () {
2651
+ return {
2652
+ id: "btc-wallet",
2653
+ type: "injected",
2654
+ metadata: {
2655
+ name: "BTC Wallet",
2656
+ description: "BTC Wallet",
2657
+ iconUrl,
2658
+ downloadUrl: iconUrl,
2659
+ deprecated,
2660
+ available: true,
2661
+ btcContext
2662
+ },
2663
+ init: BTCWallet
2664
+ };
2665
+ });
2666
+ return btcWallet;
2667
+ }
2668
+ function toHex(originalString) {
2669
+ let charArray = originalString.split("");
2670
+ let asciiArray = charArray.map((char) => char.charCodeAt(0));
2671
+ let hexArray = asciiArray.map((code) => code.toString(16));
2672
+ let hexString = hexArray.join("");
2673
+ hexString = hexString.replace(/(^0+)/g, "");
2674
+ return hexString;
2675
+ }
2676
+ function initWalletButton(network, accountId, wallet) {
2677
+ const checkAndSetupWalletButton = () => {
2678
+ if (accountId && window.btcContext.account) {
2679
+ setupWalletButton(network, wallet, window.btcContext);
2680
+ } else {
2681
+ removeWalletButton();
2682
+ setTimeout(() => {
2683
+ checkAndSetupWalletButton();
2684
+ }, 5e3);
2685
+ }
2686
+ };
2687
+ checkAndSetupWalletButton();
2688
+ }
2689
+ var rcpUrls = {
2690
+ mainnet: ["https://near.lava.build", "https://rpc.mainnet.near.org", "https://free.rpc.fastnear.com", "https://near.drpc.org"],
2691
+ testnet: ["https://near-testnet.lava.build", "https://rpc.testnet.near.org", "https://near-testnet.drpc.org"]
2692
+ };
2693
+ function delay(ms) {
2694
+ return new Promise((resolve) => setTimeout(resolve, ms));
2695
+ }
2696
+ function pollTransactionStatus(network, hash) {
2697
+ return __async(this, null, function* () {
2698
+ const provider = new import_near_api_js.providers.FailoverRpcProvider(
2699
+ Object.values(rcpUrls[network]).map(
2700
+ (url) => new import_near_api_js.providers.JsonRpcProvider({ url })
2701
+ )
2702
+ );
2703
+ const maxAttempts = 3;
2704
+ let attempt = 0;
2705
+ while (attempt < maxAttempts) {
2706
+ attempt++;
2707
+ const result = yield provider.txStatus(hash, "unused", "FINAL").catch((error) => {
2708
+ if (attempt === maxAttempts) {
2709
+ throw new Error(`Transaction not found: ${hash}`);
2710
+ }
2711
+ return;
2712
+ });
2713
+ if (result && result.status) {
2714
+ return result;
2715
+ }
2716
+ yield delay(1e4);
2717
+ }
2718
+ });
2719
+ }
2720
+
2721
+ // src/components/hook.tsx
2722
+ var import_react12 = require("react");
2723
+ function InitContextHook() {
2724
+ const btcContext = useBtcWalletSelector();
2725
+ (0, import_react12.useEffect)(() => {
2726
+ window.btcContext = btcContext;
2727
+ }, [btcContext]);
2728
+ return null;
2729
+ }
2730
+
2731
+ // src/index.ts
2732
+ var getVersion = () => {
2733
+ return "0.0.1";
2734
+ };
2735
+ if (typeof window !== "undefined") {
2736
+ window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
2737
+ }
2738
+ //# sourceMappingURL=index.js.map