bitcoin-wallet-connector 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -21
- package/lib/BitcoinConnectionProvider.d.ts +3 -3
- package/lib/BitcoinWalletConnector-BC92ulXx.js +2 -0
- package/lib/BitcoinWalletConnector-BC92ulXx.js.map +1 -0
- package/lib/{BitcoinWalletAdapterConnector-Bq835yj0.mjs → BitcoinWalletConnector-CS0BshOl.mjs} +11 -19
- package/lib/BitcoinWalletConnector-CS0BshOl.mjs.map +1 -0
- package/lib/{BitcoinWalletAdapterConnector.d.ts → BitcoinWalletConnector.d.ts} +4 -5
- package/lib/BitgetWalletAdapter.impl-D8kqiYDi.mjs +11 -0
- package/lib/BitgetWalletAdapter.impl-D8kqiYDi.mjs.map +1 -0
- package/lib/BitgetWalletAdapter.impl-DiyzNQ9d.js +2 -0
- package/lib/BitgetWalletAdapter.impl-DiyzNQ9d.js.map +1 -0
- package/lib/{LeatherWalletAdapter.impl-RUYx555r.mjs → LeatherWalletAdapter.impl-B1PoZS7z.mjs} +48 -37
- package/lib/LeatherWalletAdapter.impl-B1PoZS7z.mjs.map +1 -0
- package/lib/LeatherWalletAdapter.impl-BIWirus3.js +2 -0
- package/lib/LeatherWalletAdapter.impl-BIWirus3.js.map +1 -0
- package/lib/{MagicEdenWalletAdapter.impl-CrA6SGvG.mjs → MagicEdenWalletAdapter.impl-B3d5lbkD.mjs} +31 -20
- package/lib/MagicEdenWalletAdapter.impl-B3d5lbkD.mjs.map +1 -0
- package/lib/MagicEdenWalletAdapter.impl-DLBP3p4o.js +2 -0
- package/lib/MagicEdenWalletAdapter.impl-DLBP3p4o.js.map +1 -0
- package/lib/OkxWalletAdapter.impl-7cj96tmr.js +2 -0
- package/lib/OkxWalletAdapter.impl-7cj96tmr.js.map +1 -0
- package/lib/{OkxWalletAdapter.impl-BepoUL1B.mjs → OkxWalletAdapter.impl-nRgHsPTn.mjs} +13 -9
- package/lib/OkxWalletAdapter.impl-nRgHsPTn.mjs.map +1 -0
- package/lib/{UnisatCompatibleWalletAdapterImpl-M38FqkZI.mjs → UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs} +18 -10
- package/lib/UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs.map +1 -0
- package/lib/{UnisatCompatibleWalletAdapterImpl-Cq2Oqk1b.js → UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js} +2 -2
- package/lib/UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js.map +1 -0
- package/lib/UnisatWalletAdapter.impl-DXDfnHz_.js +2 -0
- package/lib/UnisatWalletAdapter.impl-DXDfnHz_.js.map +1 -0
- package/lib/UnisatWalletAdapter.impl-DvA33Ikj.mjs +19 -0
- package/lib/UnisatWalletAdapter.impl-DvA33Ikj.mjs.map +1 -0
- package/lib/WalletAdapters.types-CExaiK0o.js +2 -0
- package/lib/WalletAdapters.types-CExaiK0o.js.map +1 -0
- package/lib/WalletAdapters.types-DBvhI1hu.mjs +20 -0
- package/lib/WalletAdapters.types-DBvhI1hu.mjs.map +1 -0
- package/lib/WalletAdapters.types.d.ts +7 -12
- package/lib/{XverseCompatibleWalletAdapterImpl-Bf-BK5VK.js → XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js} +2 -2
- package/lib/XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js.map +1 -0
- package/lib/{XverseCompatibleWalletAdapterImpl-DXKnO_-V.mjs → XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs} +12 -8
- package/lib/XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs.map +1 -0
- package/lib/{XverseWalletAdapter.impl-CZO0RQva.mjs → XverseWalletAdapter.impl-BOpY4Vf8.mjs} +15 -15
- package/lib/XverseWalletAdapter.impl-BOpY4Vf8.mjs.map +1 -0
- package/lib/XverseWalletAdapter.impl-D0eOtEOa.js +2 -0
- package/lib/XverseWalletAdapter.impl-D0eOtEOa.js.map +1 -0
- package/lib/adapters/BitgetWalletAdapter.d.ts +6 -2
- package/lib/adapters/LeatherWalletAdapter.d.ts +4 -2
- package/lib/adapters/LeatherWalletAdapter.impl.d.ts +8 -1
- package/lib/adapters/MagicEdenWalletAdapter.d.ts +5 -2
- package/lib/adapters/MagicEdenWalletAdapter.impl.d.ts +1 -1
- package/lib/adapters/MockAddressWalletAdapter.d.ts +8 -32
- package/lib/adapters/OkxWalletAdapter.d.ts +3 -2
- package/lib/adapters/OkxWalletAdapter.impl.d.ts +5 -1
- package/lib/adapters/UnisatWalletAdapter.d.ts +3 -2
- package/lib/adapters/UnisatWalletAdapter.impl.d.ts +4 -0
- package/lib/adapters/XverseWalletAdapter.d.ts +3 -2
- package/lib/adapters/XverseWalletAdapter.impl.d.ts +1 -1
- package/lib/adapters/index.d.ts +6 -6
- package/lib/adapters.js +1 -1
- package/lib/adapters.mjs +8 -8
- package/lib/constants-B7qVf97f.mjs +5 -0
- package/lib/constants-B7qVf97f.mjs.map +1 -0
- package/lib/constants-Dr0_Mix2.js +2 -0
- package/lib/constants-Dr0_Mix2.js.map +1 -0
- package/lib/constants.d.ts +1 -0
- package/lib/{index-D7YwhNAG.mjs → index-DM4G-LJz.mjs} +639 -590
- package/lib/index-DM4G-LJz.mjs.map +1 -0
- package/lib/index-jRY8YhyK.js +2 -0
- package/lib/index-jRY8YhyK.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +13 -13
- package/lib/react.js +1 -1
- package/lib/react.js.map +1 -1
- package/lib/react.mjs +7 -7
- package/lib/react.mjs.map +1 -1
- package/lib/{transaction-CiLOYSE_.mjs → transaction-4ShhFCwN.mjs} +2 -2
- package/lib/{transaction-CiLOYSE_.mjs.map → transaction-4ShhFCwN.mjs.map} +1 -1
- package/lib/{transaction-CzdnbXSo.js → transaction-B6SlpRzN.js} +2 -2
- package/lib/{transaction-CzdnbXSo.js.map → transaction-B6SlpRzN.js.map} +1 -1
- package/lib/utils/UnisatCompatibleWalletAdapterImpl.d.ts +11 -3
- package/lib/utils/XverseCompatibleWalletAdapterImpl.d.ts +4 -0
- package/lib/utils/XverseCompatibleWalletAdapterImpl_legacy.d.ts +7 -2
- package/package.json +9 -10
- package/src/BitcoinConnectionProvider.stories.tsx +111 -43
- package/src/BitcoinConnectionProvider.tsx +5 -5
- package/src/{BitcoinWalletAdapterConnector.ts → BitcoinWalletConnector.ts} +18 -26
- package/src/WalletAdapters.types.ts +13 -22
- package/src/adapters/BitgetWalletAdapter.impl.ts +2 -1
- package/src/adapters/BitgetWalletAdapter.ts +9 -7
- package/src/adapters/LeatherWalletAdapter.impl.ts +23 -13
- package/src/adapters/LeatherWalletAdapter.ts +11 -8
- package/src/adapters/MagicEdenWalletAdapter.impl.ts +9 -8
- package/src/adapters/MagicEdenWalletAdapter.ts +17 -14
- package/src/adapters/MockAddressWalletAdapter.ts +61 -35
- package/src/adapters/OkxWalletAdapter.impl.ts +12 -7
- package/src/adapters/OkxWalletAdapter.ts +10 -7
- package/src/adapters/UnisatWalletAdapter.impl.ts +8 -2
- package/src/adapters/UnisatWalletAdapter.ts +9 -7
- package/src/adapters/XverseWalletAdapter.impl.ts +6 -6
- package/src/adapters/XverseWalletAdapter.ts +10 -7
- package/src/adapters/index.ts +6 -6
- package/src/constants.ts +1 -0
- package/src/index.ts +1 -1
- package/src/utils/UnisatCompatibleWalletAdapterImpl.ts +11 -2
- package/src/utils/XverseCompatibleWalletAdapterImpl.ts +4 -0
- package/src/utils/XverseCompatibleWalletAdapterImpl_legacy.ts +19 -7
- package/lib/BitcoinWalletAdapterConnector-Bq835yj0.mjs.map +0 -1
- package/lib/BitcoinWalletAdapterConnector-DMef0iHV.js +0 -2
- package/lib/BitcoinWalletAdapterConnector-DMef0iHV.js.map +0 -1
- package/lib/BitgetWalletAdapter.impl-C_HLO7Oi.mjs +0 -10
- package/lib/BitgetWalletAdapter.impl-C_HLO7Oi.mjs.map +0 -1
- package/lib/BitgetWalletAdapter.impl-CxnKMf7U.js +0 -2
- package/lib/BitgetWalletAdapter.impl-CxnKMf7U.js.map +0 -1
- package/lib/LeatherWalletAdapter.impl-B2QgX_tO.js +0 -2
- package/lib/LeatherWalletAdapter.impl-B2QgX_tO.js.map +0 -1
- package/lib/LeatherWalletAdapter.impl-RUYx555r.mjs.map +0 -1
- package/lib/MagicEdenWalletAdapter.impl-CrA6SGvG.mjs.map +0 -1
- package/lib/MagicEdenWalletAdapter.impl-Di3Nu2S5.js +0 -2
- package/lib/MagicEdenWalletAdapter.impl-Di3Nu2S5.js.map +0 -1
- package/lib/OkxWalletAdapter.impl-BepoUL1B.mjs.map +0 -1
- package/lib/OkxWalletAdapter.impl-C8kesjGu.js +0 -2
- package/lib/OkxWalletAdapter.impl-C8kesjGu.js.map +0 -1
- package/lib/UnisatCompatibleWalletAdapterImpl-Cq2Oqk1b.js.map +0 -1
- package/lib/UnisatCompatibleWalletAdapterImpl-M38FqkZI.mjs.map +0 -1
- package/lib/UnisatWalletAdapter.impl-CJB22se8.mjs +0 -14
- package/lib/UnisatWalletAdapter.impl-CJB22se8.mjs.map +0 -1
- package/lib/UnisatWalletAdapter.impl-EISvxdpc.js +0 -2
- package/lib/UnisatWalletAdapter.impl-EISvxdpc.js.map +0 -1
- package/lib/WalletAdapters.types-CnvOqHFH.mjs +0 -32
- package/lib/WalletAdapters.types-CnvOqHFH.mjs.map +0 -1
- package/lib/WalletAdapters.types-De_x1lzr.js +0 -2
- package/lib/WalletAdapters.types-De_x1lzr.js.map +0 -1
- package/lib/XverseCompatibleWalletAdapterImpl-Bf-BK5VK.js.map +0 -1
- package/lib/XverseCompatibleWalletAdapterImpl-DXKnO_-V.mjs.map +0 -1
- package/lib/XverseWalletAdapter.impl-CZO0RQva.mjs.map +0 -1
- package/lib/XverseWalletAdapter.impl-lJwMi-Iv.js +0 -2
- package/lib/XverseWalletAdapter.impl-lJwMi-Iv.js.map +0 -1
- package/lib/index-D7YwhNAG.mjs.map +0 -1
- package/lib/index-Zx0KcpYx.js +0 -2
- package/lib/index-Zx0KcpYx.js.map +0 -1
package/lib/{MagicEdenWalletAdapter.impl-CrA6SGvG.mjs → MagicEdenWalletAdapter.impl-B3d5lbkD.mjs}
RENAMED
|
@@ -1,33 +1,40 @@
|
|
|
1
|
-
import { i as u, h as l,
|
|
2
|
-
import { W as g,
|
|
3
|
-
import { a as
|
|
4
|
-
import { T } from "./transaction-
|
|
5
|
-
|
|
1
|
+
import { i as c, p as u, h as l, q as P, r as k, e as y, d as w } from "./index-DM4G-LJz.mjs";
|
|
2
|
+
import { W as g, d as S, S as v, a as o, b as h } from "./WalletAdapters.types-DBvhI1hu.mjs";
|
|
3
|
+
import { a as T, b } from "./XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs";
|
|
4
|
+
import { T as N } from "./transaction-4ShhFCwN.mjs";
|
|
5
|
+
import { L as B } from "./constants-B7qVf97f.mjs";
|
|
6
|
+
class I {
|
|
6
7
|
network;
|
|
7
|
-
|
|
8
|
+
localStorageKeyPrefix;
|
|
8
9
|
walletDisplayName;
|
|
9
10
|
getProvider;
|
|
10
11
|
parseAddresses;
|
|
11
12
|
constructor(e) {
|
|
12
|
-
this.network = e.network, this.
|
|
13
|
+
this.network = e.network, this.localStorageKeyPrefix = e.localStorageKeyPrefix, this.walletDisplayName = e.walletDisplayName, this.getProvider = e.getProvider, this.parseAddresses = e.parseAddresses;
|
|
13
14
|
}
|
|
14
15
|
async getSdk() {
|
|
15
16
|
return import("./index-CcQUdePc.mjs");
|
|
16
17
|
}
|
|
18
|
+
get connectAddresses_localStorageKey() {
|
|
19
|
+
return `${this.localStorageKeyPrefix}:connectedAddresses`;
|
|
20
|
+
}
|
|
17
21
|
retrieveConnectedAddress() {
|
|
18
22
|
let e;
|
|
19
|
-
const r = localStorage.getItem(this.
|
|
23
|
+
const r = localStorage.getItem(this.connectAddresses_localStorageKey) || void 0;
|
|
20
24
|
if (r != null)
|
|
21
25
|
try {
|
|
22
26
|
if (e = JSON.parse(r), e == null || !("addresses" in e) || !Array.isArray(e.addresses))
|
|
23
27
|
throw new Error("Invalid stored addresses");
|
|
24
28
|
} catch {
|
|
25
|
-
localStorage.removeItem(this.
|
|
29
|
+
localStorage.removeItem(this.connectAddresses_localStorageKey);
|
|
26
30
|
}
|
|
27
31
|
return e;
|
|
28
32
|
}
|
|
29
33
|
async updateConnectedAddress(e) {
|
|
30
|
-
localStorage.setItem(
|
|
34
|
+
localStorage.setItem(
|
|
35
|
+
this.connectAddresses_localStorageKey,
|
|
36
|
+
JSON.stringify({ addresses: e })
|
|
37
|
+
);
|
|
31
38
|
}
|
|
32
39
|
async connect() {
|
|
33
40
|
if (this.retrieveConnectedAddress() == null) {
|
|
@@ -55,12 +62,12 @@ class N {
|
|
|
55
62
|
});
|
|
56
63
|
}
|
|
57
64
|
async disconnect() {
|
|
58
|
-
return localStorage.removeItem(this.
|
|
65
|
+
return localStorage.removeItem(this.connectAddresses_localStorageKey), Promise.resolve();
|
|
59
66
|
}
|
|
60
67
|
async getAddresses() {
|
|
61
68
|
const e = this.retrieveConnectedAddress();
|
|
62
69
|
if (e == null)
|
|
63
|
-
throw new
|
|
70
|
+
throw new S(this.walletDisplayName);
|
|
64
71
|
const r = await this.getSdk();
|
|
65
72
|
return this.parseAddresses({ sdk: r, addresses: e.addresses });
|
|
66
73
|
}
|
|
@@ -96,7 +103,7 @@ class N {
|
|
|
96
103
|
(s) => s.purposes.includes(o.Bitcoin)
|
|
97
104
|
);
|
|
98
105
|
if (a == null)
|
|
99
|
-
throw new
|
|
106
|
+
throw new T({
|
|
100
107
|
code: b.INVALID_PARAMS,
|
|
101
108
|
message: "Bitcoin address not found"
|
|
102
109
|
});
|
|
@@ -126,6 +133,10 @@ class N {
|
|
|
126
133
|
}).catch(i);
|
|
127
134
|
});
|
|
128
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* @internal
|
|
138
|
+
* @experimental
|
|
139
|
+
*/
|
|
129
140
|
sendInscriptionFeeRateCapability = "unavailable";
|
|
130
141
|
async signAndFinalizePsbt(e, r) {
|
|
131
142
|
const t = await this.getSdk(), a = u.encode(l.decode(e)), n = await new Promise((i, d) => {
|
|
@@ -150,7 +161,7 @@ class N {
|
|
|
150
161
|
d(new c());
|
|
151
162
|
}
|
|
152
163
|
}).catch(d);
|
|
153
|
-
}), s =
|
|
164
|
+
}), s = N.fromPSBT(n, {
|
|
154
165
|
allowUnknownInputs: !0,
|
|
155
166
|
allowUnknownOutputs: !0,
|
|
156
167
|
disableScriptCheck: !0,
|
|
@@ -162,14 +173,14 @@ class N {
|
|
|
162
173
|
throw new Error("Not implemented");
|
|
163
174
|
}
|
|
164
175
|
}
|
|
165
|
-
const
|
|
166
|
-
class
|
|
176
|
+
const C = `${B}:${k}`;
|
|
177
|
+
class R extends I {
|
|
167
178
|
magicEden;
|
|
168
179
|
constructor(e, r) {
|
|
169
180
|
super({
|
|
170
181
|
network: e,
|
|
171
|
-
|
|
172
|
-
walletDisplayName:
|
|
182
|
+
localStorageKeyPrefix: C,
|
|
183
|
+
walletDisplayName: P.name,
|
|
173
184
|
getProvider: async () => r,
|
|
174
185
|
parseAddresses: async ({ sdk: t, addresses: a }) => {
|
|
175
186
|
const n = a.filter((s) => s.purpose === t.AddressPurpose.Ordinals)[0].address.startsWith("bc");
|
|
@@ -230,6 +241,6 @@ class M extends N {
|
|
|
230
241
|
}
|
|
231
242
|
}
|
|
232
243
|
export {
|
|
233
|
-
|
|
244
|
+
R as MagicEdenWalletAdapterImpl
|
|
234
245
|
};
|
|
235
|
-
//# sourceMappingURL=MagicEdenWalletAdapter.impl-
|
|
246
|
+
//# sourceMappingURL=MagicEdenWalletAdapter.impl-B3d5lbkD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicEdenWalletAdapter.impl-B3d5lbkD.mjs","sources":["../src/utils/XverseCompatibleWalletAdapterImpl_legacy.ts","../src/adapters/MagicEdenWalletAdapter.impl.ts"],"sourcesContent":["import { base64, hex } from \"@scure/base\"\nimport * as btc from \"@scure/btc-signer\"\nimport { UserRejectError } from \"../utils/error\"\nimport {\n SignMessageAlgorithm,\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddress,\n WalletAdapterAddressPurpose,\n WalletAdapterBitcoinNetwork,\n WalletAdapterNotConnectedError,\n} from \"../WalletAdapters.types\"\nimport {\n XverseCompatibleProviderError,\n XverseRpcErrorCode,\n} from \"./XverseCompatibleWalletAdapterImpl\"\n\ntype GetAddressResponse = import(\"sats-connect\").GetAddressResponse\n\nexport type XverseCompatibleWalletAdapterGetProviderFn = () => Promise<\n import(\"sats-connect\").BitcoinProvider\n>\n\nexport type XverseCompatibleWalletAdapterParsedAddressesFn = (info: {\n sdk: typeof import(\"sats-connect\")\n addresses: import(\"sats-connect\").Address[]\n}) => Promise<XverseCompatibleWalletAdapterImplAddress[]>\n\nexport type XverseCompatibleWalletAdapterImplAddress = WalletAdapterAddress & {\n publicKey: string\n}\n\nexport class XverseCompatibleWalletAdapterImpl_legacy implements WalletAdapter {\n protected readonly network: WalletAdapterBitcoinNetwork\n protected readonly localStorageKeyPrefix: string\n protected readonly walletDisplayName: string\n protected readonly getProvider: XverseCompatibleWalletAdapterGetProviderFn\n protected readonly parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n\n constructor(info: {\n network: WalletAdapterBitcoinNetwork\n localStorageKeyPrefix: string\n walletDisplayName: string\n getProvider: XverseCompatibleWalletAdapterGetProviderFn\n parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n }) {\n this.network = info.network\n this.localStorageKeyPrefix = info.localStorageKeyPrefix\n this.walletDisplayName = info.walletDisplayName\n this.getProvider = info.getProvider\n this.parseAddresses = info.parseAddresses\n }\n\n private async getSdk(): Promise<typeof import(\"sats-connect\")> {\n return import(\"sats-connect\")\n }\n\n protected get connectAddresses_localStorageKey(): string {\n return `${this.localStorageKeyPrefix}:connectedAddresses`\n }\n\n protected retrieveConnectedAddress(): GetAddressResponse | undefined {\n let resp: GetAddressResponse | undefined\n const stored =\n localStorage.getItem(this.connectAddresses_localStorageKey) || undefined\n if (stored != null) {\n try {\n resp = JSON.parse(stored)\n if (\n resp == null ||\n !(\"addresses\" in resp) ||\n !Array.isArray(resp.addresses)\n ) {\n throw new Error(\"Invalid stored addresses\")\n }\n } catch {\n localStorage.removeItem(this.connectAddresses_localStorageKey)\n }\n }\n return resp\n }\n protected async updateConnectedAddress(\n addresses: GetAddressResponse[\"addresses\"],\n ): Promise<void> {\n localStorage.setItem(\n this.connectAddresses_localStorageKey,\n JSON.stringify({ addresses }),\n )\n }\n\n async connect(): Promise<void> {\n if (this.retrieveConnectedAddress() == null) {\n const resp = await this.connectImpl()\n await this.updateConnectedAddress(resp.addresses)\n }\n }\n private async connectImpl(): Promise<GetAddressResponse> {\n const sdk = await this.getSdk()\n\n const networkType =\n this.network === WalletAdapterBitcoinNetwork.MAINNET\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet\n\n return new Promise<GetAddressResponse>((resolve, reject) => {\n void sdk\n .getAddress({\n getProvider: () => this.getProvider(),\n payload: {\n purposes: [sdk.AddressPurpose.Ordinals, sdk.AddressPurpose.Payment],\n message: \"Address for receiving Ordinals and payments\",\n network: { type: networkType },\n },\n onFinish(resp) {\n resolve(resp)\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n .catch(reject)\n })\n }\n\n async disconnect(): Promise<void> {\n localStorage.removeItem(this.connectAddresses_localStorageKey)\n return Promise.resolve()\n }\n\n async getAddresses(): Promise<XverseCompatibleWalletAdapterImplAddress[]> {\n const resp = this.retrieveConnectedAddress()\n\n if (resp == null) {\n throw new WalletAdapterNotConnectedError(this.walletDisplayName)\n }\n\n const sdk = await this.getSdk()\n\n return this.parseAddresses({ sdk, addresses: resp.addresses })\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n const sdk = await this.getSdk()\n\n return new Promise((resolve, reject) => {\n /**\n * https://docs.xverse.app/sats-connect/methods/signmessage\n */\n void sdk.signMessage({\n getProvider: () => this.getProvider(),\n payload: {\n network: {\n type:\n this.network === \"mainnet\"\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet,\n },\n address,\n message,\n protocol: sdk.MessageSigningProtocols.BIP322,\n },\n onFinish(resp) {\n resolve({\n result: resp,\n address,\n algorithm: SignMessageAlgorithm.BIP322,\n })\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n })\n }\n\n sendBitcoinFeeRateCapability = \"unavailable\" as const\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n ): Promise<{ txid: string }> {\n const senderAddress = (await this.getAddresses()).find(a =>\n a.purposes.includes(WalletAdapterAddressPurpose.Bitcoin),\n )\n if (senderAddress == null) {\n throw new XverseCompatibleProviderError({\n code: XverseRpcErrorCode.INVALID_PARAMS,\n message: \"Bitcoin address not found\",\n })\n }\n\n const sdk = await this.getSdk()\n\n return new Promise((resolve, reject) => {\n void sdk\n .sendBtcTransaction({\n getProvider: () => this.getProvider(),\n payload: {\n network: {\n type:\n this.network === WalletAdapterBitcoinNetwork.MAINNET\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet,\n },\n message: \"Send Bitcoin\",\n recipients: [\n {\n address: receiverAddress,\n amountSats: BigInt(satoshiAmount),\n },\n ],\n senderAddress: senderAddress.address,\n },\n onFinish(resp) {\n return resolve({ txid: resp })\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n .catch(reject)\n })\n }\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability = \"unavailable\" as const\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n const sdk = await this.getSdk()\n\n const psbtBase64 = base64.encode(hex.decode(psbtHex))\n\n const signedPsbt = await new Promise<Uint8Array>((resolve, reject) => {\n void sdk\n .signTransaction({\n getProvider: () => this.getProvider(),\n payload: {\n network: {\n type:\n this.network === WalletAdapterBitcoinNetwork.MAINNET\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet,\n },\n message: \"Sign transaction\",\n psbtBase64,\n inputsToSign: signIndices.map(([address, signIndex]) => ({\n address,\n signingIndexes: [signIndex],\n })),\n broadcast: false,\n },\n onFinish(resp) {\n resolve(base64.decode(resp.psbtBase64))\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n .catch(reject)\n })\n\n const tx = btc.Transaction.fromPSBT(signedPsbt, {\n allowUnknownInputs: true,\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowLegacyWitnessUtxo: true,\n })\n tx.finalize()\n\n return { signedPsbtHex: hex.encode(tx.toPSBT()) }\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n throw new Error(\"Not implemented\")\n }\n}\n","import { hex } from \"@scure/base\"\nimport { addressToScriptPubKey } from \"../utils/bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"../utils/bitcoinNetworkHelpers\"\nimport {\n XverseCompatibleWalletAdapterImpl_legacy,\n XverseCompatibleWalletAdapterImplAddress,\n} from \"../utils/XverseCompatibleWalletAdapterImpl_legacy\"\nimport {\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddressPurpose,\n WalletAdapterAddressType,\n WalletAdapterBitcoinNetwork,\n} from \"../WalletAdapters.types\"\nimport { MAGICEDEN_PROVIDER_ID, metadata } from \"./MagicEdenWalletAdapter\"\nimport { LOCAL_STORAGE_KEY_PREFIX } from \"../constants\"\n\ninterface MagicEdenBitcoinProviderEvents {\n accountsChanged: [\n event: {\n accounts: import(\"sats-connect\").GetAddressResponse[\"addresses\"]\n },\n ]\n}\n\nexport interface MagicEdenBitcoinProvider {\n isMagicEden: boolean\n on: <K extends keyof MagicEdenBitcoinProviderEvents>(\n event: K,\n handler: (...args: MagicEdenBitcoinProviderEvents[K]) => void,\n ) => void\n removeListener: <K extends keyof MagicEdenBitcoinProviderEvents>(\n event: K,\n handler: (...args: MagicEdenBitcoinProviderEvents[K]) => void,\n ) => void\n}\n\nconst localStorageKeyPrefix = `${LOCAL_STORAGE_KEY_PREFIX}:${MAGICEDEN_PROVIDER_ID}`\n\nexport class MagicEdenWalletAdapterImpl\n extends XverseCompatibleWalletAdapterImpl_legacy\n implements WalletAdapter\n{\n private magicEden: MagicEdenBitcoinProvider\n\n constructor(\n network: WalletAdapterBitcoinNetwork,\n provider: MagicEdenBitcoinProvider,\n ) {\n super({\n network,\n localStorageKeyPrefix,\n walletDisplayName: metadata.name,\n getProvider: async () => {\n return provider as any\n },\n parseAddresses: async ({ sdk, addresses }) => {\n const isMainnet = addresses\n .filter(a => a.purpose === sdk.AddressPurpose.Ordinals)[0]\n .address.startsWith(\"bc\")\n\n return addresses.flatMap(\n (a): XverseCompatibleWalletAdapterImplAddress[] => {\n if (a.purpose === sdk.AddressPurpose.Payment) {\n return [\n {\n addressType: WalletAdapterAddressType.P2WPKH,\n purposes: [WalletAdapterAddressPurpose.Bitcoin],\n address: a.address,\n network: this.network,\n scriptPubKey: hex.encode(\n addressToScriptPubKey(\n getBitcoinNetwork(isMainnet ? \"mainnet\" : \"testnet\"),\n a.address,\n ),\n ),\n publicKey: a.publicKey,\n },\n ]\n }\n\n if (a.purpose === sdk.AddressPurpose.Ordinals) {\n return [\n {\n addressType: WalletAdapterAddressType.P2TR,\n purposes: [\n WalletAdapterAddressPurpose.Ordinals,\n WalletAdapterAddressPurpose.BRC20,\n WalletAdapterAddressPurpose.Runes,\n ],\n address: a.address,\n network: this.network,\n scriptPubKey: hex.encode(\n addressToScriptPubKey(\n getBitcoinNetwork(isMainnet ? \"mainnet\" : \"testnet\"),\n a.address,\n ),\n ),\n publicKey: a.publicKey,\n tapInternalKey: a.publicKey,\n },\n ]\n }\n\n return []\n },\n )\n },\n })\n this.magicEden = provider\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n // MagicEden uses accountsChanged event\n // https://docs-wallet.magiceden.io/bitcoin/provider-events\n const provider = this.magicEden\n\n const handler = async (event: {\n accounts: import(\"sats-connect\").GetAddressResponse[\"addresses\"]\n }): Promise<void> => {\n try {\n await this.updateConnectedAddress(event.accounts)\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n console.warn(\"[Magic Eden] Failed to get addresses on change:\", error)\n }\n }\n\n provider.on(\"accountsChanged\", handler)\n\n return {\n unsubscribe: () => {\n provider.removeListener(\"accountsChanged\", handler)\n },\n }\n }\n}\n"],"names":["XverseCompatibleWalletAdapterImpl_legacy","info","resp","stored","addresses","sdk","networkType","WalletAdapterBitcoinNetwork","resolve","reject","UserRejectError","WalletAdapterNotConnectedError","address","message","SignMessageAlgorithm","fromAddress","receiverAddress","satoshiAmount","senderAddress","a","WalletAdapterAddressPurpose","XverseCompatibleProviderError","XverseRpcErrorCode","psbtHex","signIndices","psbtBase64","base64","hex","signedPsbt","signIndex","tx","btc.Transaction","callback","localStorageKeyPrefix","LOCAL_STORAGE_KEY_PREFIX","MAGICEDEN_PROVIDER_ID","MagicEdenWalletAdapterImpl","network","provider","metadata","isMainnet","WalletAdapterAddressType","addressToScriptPubKey","getBitcoinNetwork","handler","event","error"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index-jRY8YhyK.js"),d=require("./WalletAdapters.types-CExaiK0o.js"),p=require("./XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js"),y=require("./transaction-B6SlpRzN.js"),A=require("./constants-Dr0_Mix2.js");class w{network;localStorageKeyPrefix;walletDisplayName;getProvider;parseAddresses;constructor(e){this.network=e.network,this.localStorageKeyPrefix=e.localStorageKeyPrefix,this.walletDisplayName=e.walletDisplayName,this.getProvider=e.getProvider,this.parseAddresses=e.parseAddresses}async getSdk(){return Promise.resolve().then(()=>require("./index-CaV3F1Nm.js"))}get connectAddresses_localStorageKey(){return`${this.localStorageKeyPrefix}:connectedAddresses`}retrieveConnectedAddress(){let e;const r=localStorage.getItem(this.connectAddresses_localStorageKey)||void 0;if(r!=null)try{if(e=JSON.parse(r),e==null||!("addresses"in e)||!Array.isArray(e.addresses))throw new Error("Invalid stored addresses")}catch{localStorage.removeItem(this.connectAddresses_localStorageKey)}return e}async updateConnectedAddress(e){localStorage.setItem(this.connectAddresses_localStorageKey,JSON.stringify({addresses:e}))}async connect(){if(this.retrieveConnectedAddress()==null){const e=await this.connectImpl();await this.updateConnectedAddress(e.addresses)}}async connectImpl(){const e=await this.getSdk(),r=this.network===d.WalletAdapterBitcoinNetwork.MAINNET?e.BitcoinNetworkType.Mainnet:e.BitcoinNetworkType.Testnet;return new Promise((t,o)=>{e.getAddress({getProvider:()=>this.getProvider(),payload:{purposes:[e.AddressPurpose.Ordinals,e.AddressPurpose.Payment],message:"Address for receiving Ordinals and payments",network:{type:r}},onFinish(n){t(n)},onCancel(){o(new a.UserRejectError)}}).catch(o)})}async disconnect(){return localStorage.removeItem(this.connectAddresses_localStorageKey),Promise.resolve()}async getAddresses(){const e=this.retrieveConnectedAddress();if(e==null)throw new d.WalletAdapterNotConnectedError(this.walletDisplayName);const r=await this.getSdk();return this.parseAddresses({sdk:r,addresses:e.addresses})}async signMessage(e,r){const t=await this.getSdk();return new Promise((o,n)=>{t.signMessage({getProvider:()=>this.getProvider(),payload:{network:{type:this.network==="mainnet"?t.BitcoinNetworkType.Mainnet:t.BitcoinNetworkType.Testnet},address:e,message:r,protocol:t.MessageSigningProtocols.BIP322},onFinish(s){o({result:s,address:e,algorithm:d.SignMessageAlgorithm.BIP322})},onCancel(){n(new a.UserRejectError)}})})}sendBitcoinFeeRateCapability="unavailable";async sendBitcoin(e,r,t){const o=(await this.getAddresses()).find(s=>s.purposes.includes(d.WalletAdapterAddressPurpose.Bitcoin));if(o==null)throw new p.XverseCompatibleProviderError({code:p.XverseRpcErrorCode.INVALID_PARAMS,message:"Bitcoin address not found"});const n=await this.getSdk();return new Promise((s,i)=>{n.sendBtcTransaction({getProvider:()=>this.getProvider(),payload:{network:{type:this.network===d.WalletAdapterBitcoinNetwork.MAINNET?n.BitcoinNetworkType.Mainnet:n.BitcoinNetworkType.Testnet},message:"Send Bitcoin",recipients:[{address:r,amountSats:BigInt(t)}],senderAddress:o.address},onFinish(c){return s({txid:c})},onCancel(){i(new a.UserRejectError)}}).catch(i)})}sendInscriptionFeeRateCapability="unavailable";async signAndFinalizePsbt(e,r){const t=await this.getSdk(),o=a.base64.encode(a.hex.decode(e)),n=await new Promise((i,c)=>{t.signTransaction({getProvider:()=>this.getProvider(),payload:{network:{type:this.network===d.WalletAdapterBitcoinNetwork.MAINNET?t.BitcoinNetworkType.Mainnet:t.BitcoinNetworkType.Testnet},message:"Sign transaction",psbtBase64:o,inputsToSign:r.map(([l,u])=>({address:l,signingIndexes:[u]})),broadcast:!1},onFinish(l){i(a.base64.decode(l.psbtBase64))},onCancel(){c(new a.UserRejectError)}}).catch(c)}),s=y.Transaction.fromPSBT(n,{allowUnknownInputs:!0,allowUnknownOutputs:!0,disableScriptCheck:!0,allowLegacyWitnessUtxo:!0});return s.finalize(),{signedPsbtHex:a.hex.encode(s.toPSBT())}}onAddressesChanged(e){throw new Error("Not implemented")}}const h=`${A.LOCAL_STORAGE_KEY_PREFIX}:${a.MAGICEDEN_PROVIDER_ID}`;class P extends w{magicEden;constructor(e,r){super({network:e,localStorageKeyPrefix:h,walletDisplayName:a.metadata$4.name,getProvider:async()=>r,parseAddresses:async({sdk:t,addresses:o})=>{const n=o.filter(s=>s.purpose===t.AddressPurpose.Ordinals)[0].address.startsWith("bc");return o.flatMap(s=>s.purpose===t.AddressPurpose.Payment?[{addressType:d.WalletAdapterAddressType.P2WPKH,purposes:[d.WalletAdapterAddressPurpose.Bitcoin],address:s.address,network:this.network,scriptPubKey:a.hex.encode(a.addressToScriptPubKey(a.getBitcoinNetwork(n?"mainnet":"testnet"),s.address)),publicKey:s.publicKey}]:s.purpose===t.AddressPurpose.Ordinals?[{addressType:d.WalletAdapterAddressType.P2TR,purposes:[d.WalletAdapterAddressPurpose.Ordinals,d.WalletAdapterAddressPurpose.BRC20,d.WalletAdapterAddressPurpose.Runes],address:s.address,network:this.network,scriptPubKey:a.hex.encode(a.addressToScriptPubKey(a.getBitcoinNetwork(n?"mainnet":"testnet"),s.address)),publicKey:s.publicKey,tapInternalKey:s.publicKey}]:[])}}),this.magicEden=r}onAddressesChanged(e){const r=this.magicEden,t=async o=>{try{await this.updateConnectedAddress(o.accounts);const n=await this.getAddresses();e({addresses:n})}catch(n){console.warn("[Magic Eden] Failed to get addresses on change:",n)}};return r.on("accountsChanged",t),{unsubscribe:()=>{r.removeListener("accountsChanged",t)}}}}exports.MagicEdenWalletAdapterImpl=P;
|
|
2
|
+
//# sourceMappingURL=MagicEdenWalletAdapter.impl-DLBP3p4o.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicEdenWalletAdapter.impl-DLBP3p4o.js","sources":["../src/utils/XverseCompatibleWalletAdapterImpl_legacy.ts","../src/adapters/MagicEdenWalletAdapter.impl.ts"],"sourcesContent":["import { base64, hex } from \"@scure/base\"\nimport * as btc from \"@scure/btc-signer\"\nimport { UserRejectError } from \"../utils/error\"\nimport {\n SignMessageAlgorithm,\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddress,\n WalletAdapterAddressPurpose,\n WalletAdapterBitcoinNetwork,\n WalletAdapterNotConnectedError,\n} from \"../WalletAdapters.types\"\nimport {\n XverseCompatibleProviderError,\n XverseRpcErrorCode,\n} from \"./XverseCompatibleWalletAdapterImpl\"\n\ntype GetAddressResponse = import(\"sats-connect\").GetAddressResponse\n\nexport type XverseCompatibleWalletAdapterGetProviderFn = () => Promise<\n import(\"sats-connect\").BitcoinProvider\n>\n\nexport type XverseCompatibleWalletAdapterParsedAddressesFn = (info: {\n sdk: typeof import(\"sats-connect\")\n addresses: import(\"sats-connect\").Address[]\n}) => Promise<XverseCompatibleWalletAdapterImplAddress[]>\n\nexport type XverseCompatibleWalletAdapterImplAddress = WalletAdapterAddress & {\n publicKey: string\n}\n\nexport class XverseCompatibleWalletAdapterImpl_legacy implements WalletAdapter {\n protected readonly network: WalletAdapterBitcoinNetwork\n protected readonly localStorageKeyPrefix: string\n protected readonly walletDisplayName: string\n protected readonly getProvider: XverseCompatibleWalletAdapterGetProviderFn\n protected readonly parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n\n constructor(info: {\n network: WalletAdapterBitcoinNetwork\n localStorageKeyPrefix: string\n walletDisplayName: string\n getProvider: XverseCompatibleWalletAdapterGetProviderFn\n parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n }) {\n this.network = info.network\n this.localStorageKeyPrefix = info.localStorageKeyPrefix\n this.walletDisplayName = info.walletDisplayName\n this.getProvider = info.getProvider\n this.parseAddresses = info.parseAddresses\n }\n\n private async getSdk(): Promise<typeof import(\"sats-connect\")> {\n return import(\"sats-connect\")\n }\n\n protected get connectAddresses_localStorageKey(): string {\n return `${this.localStorageKeyPrefix}:connectedAddresses`\n }\n\n protected retrieveConnectedAddress(): GetAddressResponse | undefined {\n let resp: GetAddressResponse | undefined\n const stored =\n localStorage.getItem(this.connectAddresses_localStorageKey) || undefined\n if (stored != null) {\n try {\n resp = JSON.parse(stored)\n if (\n resp == null ||\n !(\"addresses\" in resp) ||\n !Array.isArray(resp.addresses)\n ) {\n throw new Error(\"Invalid stored addresses\")\n }\n } catch {\n localStorage.removeItem(this.connectAddresses_localStorageKey)\n }\n }\n return resp\n }\n protected async updateConnectedAddress(\n addresses: GetAddressResponse[\"addresses\"],\n ): Promise<void> {\n localStorage.setItem(\n this.connectAddresses_localStorageKey,\n JSON.stringify({ addresses }),\n )\n }\n\n async connect(): Promise<void> {\n if (this.retrieveConnectedAddress() == null) {\n const resp = await this.connectImpl()\n await this.updateConnectedAddress(resp.addresses)\n }\n }\n private async connectImpl(): Promise<GetAddressResponse> {\n const sdk = await this.getSdk()\n\n const networkType =\n this.network === WalletAdapterBitcoinNetwork.MAINNET\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet\n\n return new Promise<GetAddressResponse>((resolve, reject) => {\n void sdk\n .getAddress({\n getProvider: () => this.getProvider(),\n payload: {\n purposes: [sdk.AddressPurpose.Ordinals, sdk.AddressPurpose.Payment],\n message: \"Address for receiving Ordinals and payments\",\n network: { type: networkType },\n },\n onFinish(resp) {\n resolve(resp)\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n .catch(reject)\n })\n }\n\n async disconnect(): Promise<void> {\n localStorage.removeItem(this.connectAddresses_localStorageKey)\n return Promise.resolve()\n }\n\n async getAddresses(): Promise<XverseCompatibleWalletAdapterImplAddress[]> {\n const resp = this.retrieveConnectedAddress()\n\n if (resp == null) {\n throw new WalletAdapterNotConnectedError(this.walletDisplayName)\n }\n\n const sdk = await this.getSdk()\n\n return this.parseAddresses({ sdk, addresses: resp.addresses })\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n const sdk = await this.getSdk()\n\n return new Promise((resolve, reject) => {\n /**\n * https://docs.xverse.app/sats-connect/methods/signmessage\n */\n void sdk.signMessage({\n getProvider: () => this.getProvider(),\n payload: {\n network: {\n type:\n this.network === \"mainnet\"\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet,\n },\n address,\n message,\n protocol: sdk.MessageSigningProtocols.BIP322,\n },\n onFinish(resp) {\n resolve({\n result: resp,\n address,\n algorithm: SignMessageAlgorithm.BIP322,\n })\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n })\n }\n\n sendBitcoinFeeRateCapability = \"unavailable\" as const\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n ): Promise<{ txid: string }> {\n const senderAddress = (await this.getAddresses()).find(a =>\n a.purposes.includes(WalletAdapterAddressPurpose.Bitcoin),\n )\n if (senderAddress == null) {\n throw new XverseCompatibleProviderError({\n code: XverseRpcErrorCode.INVALID_PARAMS,\n message: \"Bitcoin address not found\",\n })\n }\n\n const sdk = await this.getSdk()\n\n return new Promise((resolve, reject) => {\n void sdk\n .sendBtcTransaction({\n getProvider: () => this.getProvider(),\n payload: {\n network: {\n type:\n this.network === WalletAdapterBitcoinNetwork.MAINNET\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet,\n },\n message: \"Send Bitcoin\",\n recipients: [\n {\n address: receiverAddress,\n amountSats: BigInt(satoshiAmount),\n },\n ],\n senderAddress: senderAddress.address,\n },\n onFinish(resp) {\n return resolve({ txid: resp })\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n .catch(reject)\n })\n }\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability = \"unavailable\" as const\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n const sdk = await this.getSdk()\n\n const psbtBase64 = base64.encode(hex.decode(psbtHex))\n\n const signedPsbt = await new Promise<Uint8Array>((resolve, reject) => {\n void sdk\n .signTransaction({\n getProvider: () => this.getProvider(),\n payload: {\n network: {\n type:\n this.network === WalletAdapterBitcoinNetwork.MAINNET\n ? sdk.BitcoinNetworkType.Mainnet\n : sdk.BitcoinNetworkType.Testnet,\n },\n message: \"Sign transaction\",\n psbtBase64,\n inputsToSign: signIndices.map(([address, signIndex]) => ({\n address,\n signingIndexes: [signIndex],\n })),\n broadcast: false,\n },\n onFinish(resp) {\n resolve(base64.decode(resp.psbtBase64))\n },\n onCancel() {\n reject(new UserRejectError())\n },\n })\n .catch(reject)\n })\n\n const tx = btc.Transaction.fromPSBT(signedPsbt, {\n allowUnknownInputs: true,\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowLegacyWitnessUtxo: true,\n })\n tx.finalize()\n\n return { signedPsbtHex: hex.encode(tx.toPSBT()) }\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n throw new Error(\"Not implemented\")\n }\n}\n","import { hex } from \"@scure/base\"\nimport { addressToScriptPubKey } from \"../utils/bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"../utils/bitcoinNetworkHelpers\"\nimport {\n XverseCompatibleWalletAdapterImpl_legacy,\n XverseCompatibleWalletAdapterImplAddress,\n} from \"../utils/XverseCompatibleWalletAdapterImpl_legacy\"\nimport {\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddressPurpose,\n WalletAdapterAddressType,\n WalletAdapterBitcoinNetwork,\n} from \"../WalletAdapters.types\"\nimport { MAGICEDEN_PROVIDER_ID, metadata } from \"./MagicEdenWalletAdapter\"\nimport { LOCAL_STORAGE_KEY_PREFIX } from \"../constants\"\n\ninterface MagicEdenBitcoinProviderEvents {\n accountsChanged: [\n event: {\n accounts: import(\"sats-connect\").GetAddressResponse[\"addresses\"]\n },\n ]\n}\n\nexport interface MagicEdenBitcoinProvider {\n isMagicEden: boolean\n on: <K extends keyof MagicEdenBitcoinProviderEvents>(\n event: K,\n handler: (...args: MagicEdenBitcoinProviderEvents[K]) => void,\n ) => void\n removeListener: <K extends keyof MagicEdenBitcoinProviderEvents>(\n event: K,\n handler: (...args: MagicEdenBitcoinProviderEvents[K]) => void,\n ) => void\n}\n\nconst localStorageKeyPrefix = `${LOCAL_STORAGE_KEY_PREFIX}:${MAGICEDEN_PROVIDER_ID}`\n\nexport class MagicEdenWalletAdapterImpl\n extends XverseCompatibleWalletAdapterImpl_legacy\n implements WalletAdapter\n{\n private magicEden: MagicEdenBitcoinProvider\n\n constructor(\n network: WalletAdapterBitcoinNetwork,\n provider: MagicEdenBitcoinProvider,\n ) {\n super({\n network,\n localStorageKeyPrefix,\n walletDisplayName: metadata.name,\n getProvider: async () => {\n return provider as any\n },\n parseAddresses: async ({ sdk, addresses }) => {\n const isMainnet = addresses\n .filter(a => a.purpose === sdk.AddressPurpose.Ordinals)[0]\n .address.startsWith(\"bc\")\n\n return addresses.flatMap(\n (a): XverseCompatibleWalletAdapterImplAddress[] => {\n if (a.purpose === sdk.AddressPurpose.Payment) {\n return [\n {\n addressType: WalletAdapterAddressType.P2WPKH,\n purposes: [WalletAdapterAddressPurpose.Bitcoin],\n address: a.address,\n network: this.network,\n scriptPubKey: hex.encode(\n addressToScriptPubKey(\n getBitcoinNetwork(isMainnet ? \"mainnet\" : \"testnet\"),\n a.address,\n ),\n ),\n publicKey: a.publicKey,\n },\n ]\n }\n\n if (a.purpose === sdk.AddressPurpose.Ordinals) {\n return [\n {\n addressType: WalletAdapterAddressType.P2TR,\n purposes: [\n WalletAdapterAddressPurpose.Ordinals,\n WalletAdapterAddressPurpose.BRC20,\n WalletAdapterAddressPurpose.Runes,\n ],\n address: a.address,\n network: this.network,\n scriptPubKey: hex.encode(\n addressToScriptPubKey(\n getBitcoinNetwork(isMainnet ? \"mainnet\" : \"testnet\"),\n a.address,\n ),\n ),\n publicKey: a.publicKey,\n tapInternalKey: a.publicKey,\n },\n ]\n }\n\n return []\n },\n )\n },\n })\n this.magicEden = provider\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n // MagicEden uses accountsChanged event\n // https://docs-wallet.magiceden.io/bitcoin/provider-events\n const provider = this.magicEden\n\n const handler = async (event: {\n accounts: import(\"sats-connect\").GetAddressResponse[\"addresses\"]\n }): Promise<void> => {\n try {\n await this.updateConnectedAddress(event.accounts)\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n console.warn(\"[Magic Eden] Failed to get addresses on change:\", error)\n }\n }\n\n provider.on(\"accountsChanged\", handler)\n\n return {\n unsubscribe: () => {\n provider.removeListener(\"accountsChanged\", handler)\n },\n }\n }\n}\n"],"names":["XverseCompatibleWalletAdapterImpl_legacy","info","resp","stored","addresses","sdk","networkType","WalletAdapterBitcoinNetwork","resolve","reject","UserRejectError","WalletAdapterNotConnectedError","address","message","SignMessageAlgorithm","fromAddress","receiverAddress","satoshiAmount","senderAddress","a","WalletAdapterAddressPurpose","XverseCompatibleProviderError","XverseRpcErrorCode","psbtHex","signIndices","psbtBase64","base64","hex","signedPsbt","signIndex","tx","btc.Transaction","callback","localStorageKeyPrefix","LOCAL_STORAGE_KEY_PREFIX","MAGICEDEN_PROVIDER_ID","MagicEdenWalletAdapterImpl","network","provider","metadata","isMainnet","WalletAdapterAddressType","addressToScriptPubKey","getBitcoinNetwork","handler","event","error"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-jRY8YhyK.js"),i=require("./UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js");class c extends i.UnisatCompatibleWalletAdapterImpl{okxwallet;constructor(e){super(e,n.metadata$1.name),this.okxwallet=e}async connect(){await this.okxwallet.connect()}async signMessage(e,t){return r(super.signMessage(e,t))}async sendBitcoin(e,t,s,o){return r(super.sendBitcoin(e,t,s,o))}async sendInscription(e,t,s,o){return r(super.sendInscription(e,t,s,o))}async signAndFinalizePsbt(e,t){return r(super.signAndFinalizePsbt(e,t))}onAddressesChanged(e){if(this.okxwallet?.on&&this.okxwallet?.removeListener){const t=async()=>{try{const s=await this.getAddresses();e({addresses:s})}catch(s){console.warn("[OKX] Failed to get addresses on change:",s)}};return this.okxwallet.on("accountChanged",t),this.okxwallet.on("networkChanged",t),{unsubscribe:()=>{this.okxwallet.removeListener("accountChanged",t),this.okxwallet.removeListener("networkChanged",t)}}}else return super.onAddressesChanged(e)}}class l extends n.BitcoinWalletAdapterError{constructor(e){super("OKX wallet error: "+e.message,{cause:e})}}const r=async a=>{try{return await a}catch(e){throw e instanceof n.UserRejectError?e:e.code===4001?new n.UserRejectError:new l(e)}};exports.OkxWalletAdapterError=l;exports.OkxWalletAdapterImpl=c;
|
|
2
|
+
//# sourceMappingURL=OkxWalletAdapter.impl-7cj96tmr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OkxWalletAdapter.impl-7cj96tmr.js","sources":["../src/adapters/OkxWalletAdapter.impl.ts"],"sourcesContent":["import { BitcoinWalletAdapterError, UserRejectError } from \"../utils/error\"\nimport {\n UniSatEvents,\n UnisatCompatibleProviderAPI,\n UnisatCompatibleWalletAdapterImpl,\n} from \"../utils/UnisatCompatibleWalletAdapterImpl\"\nimport {\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n} from \"../WalletAdapters.types\"\nimport { metadata } from \"./LeatherWalletAdapter\"\n\nenum RpcErrorCode {\n PARSE_ERROR = -32700,\n INVALID_REQUEST = -32600,\n METHOD_NOT_FOUND = -32601,\n INVALID_PARAMS = -32602,\n INTERNAL_ERROR = -32603,\n SERVER_ERROR = -32000,\n USER_REJECTION = 4001,\n METHOD_NOT_SUPPORTED = 4002,\n}\n\ninterface RpcError<TErrorData = unknown> {\n code: number | RpcErrorCode\n message: string\n data?: TErrorData\n}\n\ninterface OkxBitcoinProvider\n extends UnisatCompatibleProviderAPI, Record<string, any> {\n connect(): Promise<void>\n on<K extends keyof UniSatEvents>(\n event: K,\n handler: (...args: UniSatEvents[K]) => void,\n ): void\n on(event: \"accountChanged\" | \"networkChanged\", handler: () => void): void\n removeListener<K extends keyof UniSatEvents>(\n event: K,\n handler: (...args: UniSatEvents[K]) => void,\n ): void\n removeListener(\n event: \"accountChanged\" | \"networkChanged\",\n handler: () => void,\n ): void\n}\n\nexport class OkxWalletAdapterImpl\n extends UnisatCompatibleWalletAdapterImpl\n implements WalletAdapter\n{\n private okxwallet: OkxBitcoinProvider\n constructor(provider: OkxBitcoinProvider) {\n /**\n * OKX Provider API:\n *\n * https://web3.okx.com/zh-hans/build/dev-docs/sdks/chains/bitcoin/provider\n */\n super(provider, metadata.name)\n this.okxwallet = provider\n }\n\n async connect(): Promise<void> {\n // if not authorized, okx wallet will pop up a window to ask user to authorize\n // if authorized, okx wallet will do nothing\n await this.okxwallet.connect()\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n return handleRpcError(super.signMessage(address, message))\n }\n\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n options?: { feeRate?: number },\n ): Promise<{\n txid: string\n }> {\n return handleRpcError(\n super.sendBitcoin(fromAddress, receiverAddress, satoshiAmount, options),\n )\n }\n\n /**\n * @internal\n * @experimental\n */\n async sendInscription(\n fromAddress: string,\n receiverAddress: string,\n inscriptionId: string,\n options?: { feeRate?: number },\n ): Promise<{\n txid: string\n }> {\n return handleRpcError(\n super.sendInscription(\n fromAddress,\n receiverAddress,\n inscriptionId,\n options,\n ),\n )\n }\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n return handleRpcError(super.signAndFinalizePsbt(psbtHex, signIndices))\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n // OKX uses 'accountChanged' (no 's') and 'networkChanged' events\n // https://web3.okx.com/build/dev-docs/sdks/chains/bitcoin/provider\n if (this.okxwallet?.on && this.okxwallet?.removeListener) {\n const handler = async (): Promise<void> => {\n try {\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n console.warn(\"[OKX] Failed to get addresses on change:\", error)\n }\n }\n\n // Listen to account and network changes (OKX uses 'accountChanged' not 'accountsChanged')\n this.okxwallet.on(\"accountChanged\", handler)\n this.okxwallet.on(\"networkChanged\", handler)\n\n return {\n unsubscribe: () => {\n this.okxwallet.removeListener(\"accountChanged\", handler)\n this.okxwallet.removeListener(\"networkChanged\", handler)\n },\n }\n } else {\n // Fallback to parent implementation (polling)\n return super.onAddressesChanged(callback)\n }\n }\n}\n\nexport class OkxWalletAdapterError extends BitcoinWalletAdapterError {\n constructor(rpcError: RpcError) {\n super(\"OKX wallet error: \" + rpcError.message, { cause: rpcError })\n }\n}\n\nconst handleRpcError = async <T>(promise: Promise<T>): Promise<T> => {\n try {\n return await promise\n } catch (e: any) {\n if (e instanceof UserRejectError) {\n throw e\n }\n\n if (e.code === RpcErrorCode.USER_REJECTION) {\n throw new UserRejectError()\n }\n\n throw new OkxWalletAdapterError(e)\n }\n}\n"],"names":["OkxWalletAdapterImpl","UnisatCompatibleWalletAdapterImpl","provider","metadata","address","message","handleRpcError","fromAddress","receiverAddress","satoshiAmount","options","inscriptionId","psbtHex","signIndices","callback","handler","addresses","error","OkxWalletAdapterError","BitcoinWalletAdapterError","rpcError","promise","UserRejectError"],"mappings":"oLAgDO,MAAMA,UACHC,EAAAA,iCAEV,CACU,UACR,YAAYC,EAA8B,CAMxC,MAAMA,EAAUC,EAAAA,WAAS,IAAI,EAC7B,KAAK,UAAYD,CACnB,CAEA,MAAM,SAAyB,CAG7B,MAAM,KAAK,UAAU,QAAA,CACvB,CAEA,MAAM,YACJE,EACAC,EAC4B,CAC5B,OAAOC,EAAe,MAAM,YAAYF,EAASC,CAAO,CAAC,CAC3D,CAEA,MAAM,YACJE,EACAC,EACAC,EACAC,EAGC,CACD,OAAOJ,EACL,MAAM,YAAYC,EAAaC,EAAiBC,EAAeC,CAAO,CAAA,CAE1E,CAMA,MAAM,gBACJH,EACAC,EACAG,EACAD,EAGC,CACD,OAAOJ,EACL,MAAM,gBACJC,EACAC,EACAG,EACAD,CAAA,CACF,CAEJ,CAEA,MAAM,oBACJE,EACAC,EAGC,CACD,OAAOP,EAAe,MAAM,oBAAoBM,EAASC,CAAW,CAAC,CACvE,CAEA,mBAAmBC,EAEjB,CAGA,GAAI,KAAK,WAAW,IAAM,KAAK,WAAW,eAAgB,CACxD,MAAMC,EAAU,SAA2B,CACzC,GAAI,CACF,MAAMC,EAAY,MAAM,KAAK,aAAA,EAC7BF,EAAS,CAAE,UAAAE,EAAW,CACxB,OAASC,EAAO,CACd,QAAQ,KAAK,2CAA4CA,CAAK,CAChE,CACF,EAGA,YAAK,UAAU,GAAG,iBAAkBF,CAAO,EAC3C,KAAK,UAAU,GAAG,iBAAkBA,CAAO,EAEpC,CACL,YAAa,IAAM,CACjB,KAAK,UAAU,eAAe,iBAAkBA,CAAO,EACvD,KAAK,UAAU,eAAe,iBAAkBA,CAAO,CACzD,CAAA,CAEJ,KAEE,QAAO,MAAM,mBAAmBD,CAAQ,CAE5C,CACF,CAEO,MAAMI,UAA8BC,EAAAA,yBAA0B,CACnE,YAAYC,EAAoB,CAC9B,MAAM,qBAAuBA,EAAS,QAAS,CAAE,MAAOA,EAAU,CACpE,CACF,CAEA,MAAMd,EAAiB,MAAUe,GAAoC,CACnE,GAAI,CACF,OAAO,MAAMA,CACf,OAAS,EAAQ,CACf,MAAI,aAAaC,EAAAA,gBACT,EAGJ,EAAE,OAAS,KACP,IAAIA,EAAAA,gBAGN,IAAIJ,EAAsB,CAAC,CACnC,CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { U as
|
|
3
|
-
class
|
|
1
|
+
import { c as i, i as o, f as c } from "./index-DM4G-LJz.mjs";
|
|
2
|
+
import { U as l } from "./UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs";
|
|
3
|
+
class w extends l {
|
|
4
4
|
okxwallet;
|
|
5
5
|
constructor(e) {
|
|
6
|
-
super(e,
|
|
6
|
+
super(e, i.name), this.okxwallet = e;
|
|
7
7
|
}
|
|
8
8
|
async connect() {
|
|
9
9
|
await this.okxwallet.connect();
|
|
@@ -16,6 +16,10 @@ class u extends c {
|
|
|
16
16
|
super.sendBitcoin(e, s, t, a)
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
* @experimental
|
|
22
|
+
*/
|
|
19
23
|
async sendInscription(e, s, t, a) {
|
|
20
24
|
return n(
|
|
21
25
|
super.sendInscription(
|
|
@@ -48,7 +52,7 @@ class u extends c {
|
|
|
48
52
|
return super.onAddressesChanged(e);
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
|
-
class
|
|
55
|
+
class d extends c {
|
|
52
56
|
constructor(e) {
|
|
53
57
|
super("OKX wallet error: " + e.message, { cause: e });
|
|
54
58
|
}
|
|
@@ -57,11 +61,11 @@ const n = async (r) => {
|
|
|
57
61
|
try {
|
|
58
62
|
return await r;
|
|
59
63
|
} catch (e) {
|
|
60
|
-
throw e instanceof o ? e : e.code === 4001 ? new o() : new
|
|
64
|
+
throw e instanceof o ? e : e.code === 4001 ? new o() : new d(e);
|
|
61
65
|
}
|
|
62
66
|
};
|
|
63
67
|
export {
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
d as OkxWalletAdapterError,
|
|
69
|
+
w as OkxWalletAdapterImpl
|
|
66
70
|
};
|
|
67
|
-
//# sourceMappingURL=OkxWalletAdapter.impl-
|
|
71
|
+
//# sourceMappingURL=OkxWalletAdapter.impl-nRgHsPTn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OkxWalletAdapter.impl-nRgHsPTn.mjs","sources":["../src/adapters/OkxWalletAdapter.impl.ts"],"sourcesContent":["import { BitcoinWalletAdapterError, UserRejectError } from \"../utils/error\"\nimport {\n UniSatEvents,\n UnisatCompatibleProviderAPI,\n UnisatCompatibleWalletAdapterImpl,\n} from \"../utils/UnisatCompatibleWalletAdapterImpl\"\nimport {\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n} from \"../WalletAdapters.types\"\nimport { metadata } from \"./LeatherWalletAdapter\"\n\nenum RpcErrorCode {\n PARSE_ERROR = -32700,\n INVALID_REQUEST = -32600,\n METHOD_NOT_FOUND = -32601,\n INVALID_PARAMS = -32602,\n INTERNAL_ERROR = -32603,\n SERVER_ERROR = -32000,\n USER_REJECTION = 4001,\n METHOD_NOT_SUPPORTED = 4002,\n}\n\ninterface RpcError<TErrorData = unknown> {\n code: number | RpcErrorCode\n message: string\n data?: TErrorData\n}\n\ninterface OkxBitcoinProvider\n extends UnisatCompatibleProviderAPI, Record<string, any> {\n connect(): Promise<void>\n on<K extends keyof UniSatEvents>(\n event: K,\n handler: (...args: UniSatEvents[K]) => void,\n ): void\n on(event: \"accountChanged\" | \"networkChanged\", handler: () => void): void\n removeListener<K extends keyof UniSatEvents>(\n event: K,\n handler: (...args: UniSatEvents[K]) => void,\n ): void\n removeListener(\n event: \"accountChanged\" | \"networkChanged\",\n handler: () => void,\n ): void\n}\n\nexport class OkxWalletAdapterImpl\n extends UnisatCompatibleWalletAdapterImpl\n implements WalletAdapter\n{\n private okxwallet: OkxBitcoinProvider\n constructor(provider: OkxBitcoinProvider) {\n /**\n * OKX Provider API:\n *\n * https://web3.okx.com/zh-hans/build/dev-docs/sdks/chains/bitcoin/provider\n */\n super(provider, metadata.name)\n this.okxwallet = provider\n }\n\n async connect(): Promise<void> {\n // if not authorized, okx wallet will pop up a window to ask user to authorize\n // if authorized, okx wallet will do nothing\n await this.okxwallet.connect()\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n return handleRpcError(super.signMessage(address, message))\n }\n\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n options?: { feeRate?: number },\n ): Promise<{\n txid: string\n }> {\n return handleRpcError(\n super.sendBitcoin(fromAddress, receiverAddress, satoshiAmount, options),\n )\n }\n\n /**\n * @internal\n * @experimental\n */\n async sendInscription(\n fromAddress: string,\n receiverAddress: string,\n inscriptionId: string,\n options?: { feeRate?: number },\n ): Promise<{\n txid: string\n }> {\n return handleRpcError(\n super.sendInscription(\n fromAddress,\n receiverAddress,\n inscriptionId,\n options,\n ),\n )\n }\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n return handleRpcError(super.signAndFinalizePsbt(psbtHex, signIndices))\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n // OKX uses 'accountChanged' (no 's') and 'networkChanged' events\n // https://web3.okx.com/build/dev-docs/sdks/chains/bitcoin/provider\n if (this.okxwallet?.on && this.okxwallet?.removeListener) {\n const handler = async (): Promise<void> => {\n try {\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n console.warn(\"[OKX] Failed to get addresses on change:\", error)\n }\n }\n\n // Listen to account and network changes (OKX uses 'accountChanged' not 'accountsChanged')\n this.okxwallet.on(\"accountChanged\", handler)\n this.okxwallet.on(\"networkChanged\", handler)\n\n return {\n unsubscribe: () => {\n this.okxwallet.removeListener(\"accountChanged\", handler)\n this.okxwallet.removeListener(\"networkChanged\", handler)\n },\n }\n } else {\n // Fallback to parent implementation (polling)\n return super.onAddressesChanged(callback)\n }\n }\n}\n\nexport class OkxWalletAdapterError extends BitcoinWalletAdapterError {\n constructor(rpcError: RpcError) {\n super(\"OKX wallet error: \" + rpcError.message, { cause: rpcError })\n }\n}\n\nconst handleRpcError = async <T>(promise: Promise<T>): Promise<T> => {\n try {\n return await promise\n } catch (e: any) {\n if (e instanceof UserRejectError) {\n throw e\n }\n\n if (e.code === RpcErrorCode.USER_REJECTION) {\n throw new UserRejectError()\n }\n\n throw new OkxWalletAdapterError(e)\n }\n}\n"],"names":["OkxWalletAdapterImpl","UnisatCompatibleWalletAdapterImpl","provider","metadata","address","message","handleRpcError","fromAddress","receiverAddress","satoshiAmount","options","inscriptionId","psbtHex","signIndices","callback","handler","addresses","error","OkxWalletAdapterError","BitcoinWalletAdapterError","rpcError","promise","UserRejectError"],"mappings":";;AAgDO,MAAMA,UACHC,EAEV;AAAA,EACU;AAAA,EACR,YAAYC,GAA8B;AAMxC,UAAMA,GAAUC,EAAS,IAAI,GAC7B,KAAK,YAAYD;AAAA,EACnB;AAAA,EAEA,MAAM,UAAyB;AAG7B,UAAM,KAAK,UAAU,QAAA;AAAA,EACvB;AAAA,EAEA,MAAM,YACJE,GACAC,GAC4B;AAC5B,WAAOC,EAAe,MAAM,YAAYF,GAASC,CAAO,CAAC;AAAA,EAC3D;AAAA,EAEA,MAAM,YACJE,GACAC,GACAC,GACAC,GAGC;AACD,WAAOJ;AAAA,MACL,MAAM,YAAYC,GAAaC,GAAiBC,GAAeC,CAAO;AAAA,IAAA;AAAA,EAE1E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBACJH,GACAC,GACAG,GACAD,GAGC;AACD,WAAOJ;AAAA,MACL,MAAM;AAAA,QACJC;AAAA,QACAC;AAAA,QACAG;AAAA,QACAD;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AAAA,EAEA,MAAM,oBACJE,GACAC,GAGC;AACD,WAAOP,EAAe,MAAM,oBAAoBM,GAASC,CAAW,CAAC;AAAA,EACvE;AAAA,EAEA,mBAAmBC,GAEjB;AAGA,QAAI,KAAK,WAAW,MAAM,KAAK,WAAW,gBAAgB;AACxD,YAAMC,IAAU,YAA2B;AACzC,YAAI;AACF,gBAAMC,IAAY,MAAM,KAAK,aAAA;AAC7B,UAAAF,EAAS,EAAE,WAAAE,GAAW;AAAA,QACxB,SAASC,GAAO;AACd,kBAAQ,KAAK,4CAA4CA,CAAK;AAAA,QAChE;AAAA,MACF;AAGA,kBAAK,UAAU,GAAG,kBAAkBF,CAAO,GAC3C,KAAK,UAAU,GAAG,kBAAkBA,CAAO,GAEpC;AAAA,QACL,aAAa,MAAM;AACjB,eAAK,UAAU,eAAe,kBAAkBA,CAAO,GACvD,KAAK,UAAU,eAAe,kBAAkBA,CAAO;AAAA,QACzD;AAAA,MAAA;AAAA,IAEJ;AAEE,aAAO,MAAM,mBAAmBD,CAAQ;AAAA,EAE5C;AACF;AAEO,MAAMI,UAA8BC,EAA0B;AAAA,EACnE,YAAYC,GAAoB;AAC9B,UAAM,uBAAuBA,EAAS,SAAS,EAAE,OAAOA,GAAU;AAAA,EACpE;AACF;AAEA,MAAMd,IAAiB,OAAUe,MAAoC;AACnE,MAAI;AACF,WAAO,MAAMA;AAAA,EACf,SAAS,GAAQ;AACf,UAAI,aAAaC,IACT,IAGJ,EAAE,SAAS,OACP,IAAIA,EAAA,IAGN,IAAIJ,EAAsB,CAAC;AAAA,EACnC;AACF;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { h as
|
|
3
|
-
import { d as
|
|
4
|
-
import { T as C } from "./transaction-
|
|
1
|
+
import { f as h, k as y, h as r, e as f, d as l, g as b, l as A, i as T } from "./index-DM4G-LJz.mjs";
|
|
2
|
+
import { h as R } from "./misc-B5EWO_dn.mjs";
|
|
3
|
+
import { d as k, b as d, a as u, W as w, S } from "./WalletAdapters.types-DBvhI1hu.mjs";
|
|
4
|
+
import { T as C } from "./transaction-4ShhFCwN.mjs";
|
|
5
5
|
class N {
|
|
6
6
|
constructor(e, t) {
|
|
7
7
|
this.unisat = e, this.walletDisplayName = t;
|
|
@@ -15,17 +15,17 @@ class N {
|
|
|
15
15
|
async getAddresses() {
|
|
16
16
|
const e = await this.unisat.getAccounts();
|
|
17
17
|
if (e.length === 0)
|
|
18
|
-
throw new
|
|
18
|
+
throw new k(this.walletDisplayName);
|
|
19
19
|
const t = await this.unisat.getPublicKey(), s = await this.unisat.getNetwork() === "livenet" ? "mainnet" : "testnet";
|
|
20
|
-
if (!
|
|
20
|
+
if (!R(e))
|
|
21
21
|
throw new h("Request wallet addresses failed");
|
|
22
22
|
const i = e[0], o = y(l(s), i), c = o === "p2tr" ? d.P2TR : o === "p2sh" ? d.P2SH_P2WPKH : o === "p2wpkh" ? d.P2WPKH : void 0;
|
|
23
23
|
if (c == null)
|
|
24
24
|
throw new h("Please select a SegWit address");
|
|
25
25
|
const g = r.encode(
|
|
26
|
-
|
|
26
|
+
f(l(s), i)
|
|
27
27
|
), m = c !== d.P2TR ? void 0 : r.encode(
|
|
28
|
-
|
|
28
|
+
b(
|
|
29
29
|
l(s),
|
|
30
30
|
r.decode(t)
|
|
31
31
|
)
|
|
@@ -70,7 +70,15 @@ class N {
|
|
|
70
70
|
})
|
|
71
71
|
) };
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* @internal
|
|
75
|
+
* @experimental
|
|
76
|
+
*/
|
|
73
77
|
sendInscriptionFeeRateCapability = "available";
|
|
78
|
+
/**
|
|
79
|
+
* @internal
|
|
80
|
+
* @experimental
|
|
81
|
+
*/
|
|
74
82
|
async sendInscription(e, t, a, s) {
|
|
75
83
|
return { txid: await p(
|
|
76
84
|
this.unisat.sendInscription(t, a, {
|
|
@@ -128,10 +136,10 @@ const p = async (n) => {
|
|
|
128
136
|
try {
|
|
129
137
|
return await n;
|
|
130
138
|
} catch (e) {
|
|
131
|
-
throw W(e) ? e.code === 4001 ? new
|
|
139
|
+
throw W(e) ? e.code === 4001 ? new T() : new x(e) : e;
|
|
132
140
|
}
|
|
133
141
|
};
|
|
134
142
|
export {
|
|
135
143
|
N as U
|
|
136
144
|
};
|
|
137
|
-
//# sourceMappingURL=UnisatCompatibleWalletAdapterImpl-
|
|
145
|
+
//# sourceMappingURL=UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs","sources":["../src/utils/UnisatCompatibleWalletAdapterImpl.ts"],"sourcesContent":["import { hex } from \"@scure/base\"\nimport * as btc from \"@scure/btc-signer\"\nimport { hasAny } from \"./misc\"\nimport {\n addressToScriptPubKey,\n getAddressType,\n getRedeemScriptOf_P2SH_P2WPKH_publicKey,\n getTapInternalKeyOf_P2TR_publicKey,\n} from \"./bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"./bitcoinNetworkHelpers\"\nimport { UserRejectError, BitcoinWalletAdapterError } from \"../utils/error\"\nimport {\n SignMessageAlgorithm,\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddress,\n WalletAdapterAddressPurpose,\n WalletAdapterAddressType,\n WalletAdapterBitcoinNetwork,\n WalletAdapterNotConnectedError,\n WalletAdapterSendBitcoinCapability,\n} from \"../WalletAdapters.types\"\n\n/**\n * https://docs.unisat.io/dev-center/open-api-documentation/unisat-wallet#events\n */\nexport interface UniSatEvents {\n accountsChanged: [accounts: Array<string>]\n networkChanged: [network: string]\n}\n\nexport interface UnisatCompatibleProviderAPI {\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#getaccounts\n */\n getAccounts(): Promise<string[]>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#requestaccounts\n */\n requestAccounts(): Promise<string[]>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#getpublickey\n */\n getPublicKey(): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#getnetwork\n */\n getNetwork(): Promise<\"livenet\" | \"testnet\">\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#signmessage\n */\n signMessage(\n message: string,\n algorithm: \"ecdsa\" | \"bip322-simple\",\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#sendbitcoin\n */\n sendBitcoin(\n receiverAddress: string,\n satoshiAmount: number,\n options?: { feeRate?: number },\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#sendInscription\n */\n sendInscription(\n receiverAddress: string,\n inscriptionId: string,\n options?: { feeRate?: number },\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#signpsbt\n */\n signPsbt(\n psbtHex: string,\n options?: {\n autoFinalized?: boolean\n toSignInputs?: {\n index: number\n address?: string\n publicKey?: string\n sighashTypes?: number[]\n disableTweakSigner?: boolean\n }[]\n },\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#events\n */\n on<K extends keyof UniSatEvents>(\n event: K,\n handler: (...args: UniSatEvents[K]) => void,\n ): void\n removeListener(event: keyof UniSatEvents, handler: () => void): void\n}\n\nexport type UnisatCompatibleWalletAdapterAddresses = (WalletAdapterAddress & {\n publicKey: string\n})[]\n\nexport class UnisatCompatibleWalletAdapterImpl implements WalletAdapter {\n constructor(\n private unisat: UnisatCompatibleProviderAPI,\n private walletDisplayName: string,\n ) {}\n\n async connect(): Promise<void> {\n if ((await this.unisat.getAccounts()).length === 0) {\n await this.unisat.requestAccounts()\n }\n }\n\n disconnect(): Promise<void> {\n // do nothing\n return Promise.resolve()\n }\n\n async getAddresses(): Promise<UnisatCompatibleWalletAdapterAddresses> {\n const addresses: string[] = await this.unisat.getAccounts()\n\n if (addresses.length === 0) {\n throw new WalletAdapterNotConnectedError(this.walletDisplayName)\n }\n\n const publicKey: string = await this.unisat.getPublicKey()\n\n const _network: \"livenet\" | \"testnet\" = await this.unisat.getNetwork()\n const network = _network === \"livenet\" ? \"mainnet\" : \"testnet\"\n\n if (!hasAny(addresses)) {\n throw new BitcoinWalletAdapterError(\"Request wallet addresses failed\")\n }\n\n const address = addresses[0]\n const addrType = getAddressType(getBitcoinNetwork(network), address)\n // prettier-ignore\n const addressType =\n addrType === \"p2tr\" ? WalletAdapterAddressType.P2TR :\n addrType === \"p2sh\" ? WalletAdapterAddressType.P2SH_P2WPKH :\n addrType === \"p2wpkh\" ? WalletAdapterAddressType.P2WPKH :\n undefined\n\n if (addressType == null) {\n throw new BitcoinWalletAdapterError(\"Please select a SegWit address\")\n }\n\n const scriptPubKey = hex.encode(\n addressToScriptPubKey(getBitcoinNetwork(network), address),\n )\n\n const tapInternalKey =\n addressType !== WalletAdapterAddressType.P2TR\n ? undefined\n : hex.encode(\n getTapInternalKeyOf_P2TR_publicKey(\n getBitcoinNetwork(network),\n hex.decode(publicKey),\n ),\n )\n\n const redeemScript =\n addressType !== WalletAdapterAddressType.P2SH_P2WPKH\n ? undefined\n : hex.encode(\n getRedeemScriptOf_P2SH_P2WPKH_publicKey(\n getBitcoinNetwork(network),\n hex.decode(publicKey),\n ),\n )\n\n return [\n {\n addressType,\n address,\n scriptPubKey,\n redeemScript,\n tapInternalKey,\n publicKey,\n network:\n network === \"mainnet\"\n ? WalletAdapterBitcoinNetwork.MAINNET\n : WalletAdapterBitcoinNetwork.TESTNET,\n purposes: [\n WalletAdapterAddressPurpose.Bitcoin,\n WalletAdapterAddressPurpose.Ordinals,\n WalletAdapterAddressPurpose.BRC20,\n WalletAdapterAddressPurpose.Runes,\n ],\n },\n ]\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n const result = await handleRpcError(\n this.unisat.signMessage(message, \"bip322-simple\"),\n )\n\n return {\n result,\n address,\n algorithm: SignMessageAlgorithm.BIP322,\n }\n }\n\n sendBitcoinFeeRateCapability: WalletAdapterSendBitcoinCapability =\n \"available\" as const\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n options?: { feeRate?: number },\n ): Promise<{ txid: string }> {\n const txid = await handleRpcError(\n this.unisat.sendBitcoin(receiverAddress, Number(satoshiAmount), {\n feeRate: options?.feeRate,\n }),\n )\n return { txid }\n }\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability: \"unavailable\" | \"available\" | \"required\" =\n \"available\" as const\n /**\n * @internal\n * @experimental\n */\n async sendInscription(\n fromAddress: string,\n receiverAddress: string,\n inscriptionId: string,\n options?: { feeRate?: number },\n ): Promise<{ txid: string }> {\n const txid = await handleRpcError(\n this.unisat.sendInscription(receiverAddress, inscriptionId, {\n feeRate: options?.feeRate,\n }),\n )\n return { txid }\n }\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n const addr = await this.getAddresses()\n\n const signedPsbtHex = await handleRpcError(\n this.unisat.signPsbt(psbtHex, {\n autoFinalized: false,\n toSignInputs: signIndices.map(([address, signIndex]) => ({\n index: signIndex,\n address,\n })),\n }),\n )\n\n /**\n * Some version of unisat's signPsbt API does not working well with the autoFinalized option,\n * so we finalize the PSBT manually.\n */\n const tx = btc.Transaction.fromPSBT(hex.decode(signedPsbtHex), {\n allowUnknownInputs: true,\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowLegacyWitnessUtxo: true,\n })\n tx.finalize()\n\n return { signedPsbtHex: hex.encode(tx.toPSBT()) }\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n const handler = async (): Promise<void> => {\n try {\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n // Ignore errors from getAddresses (e.g., wallet disconnected)\n console.warn(\n `[${this.walletDisplayName}] Failed to get addresses on change:`,\n error,\n )\n }\n }\n\n // Listen to both account and network changes\n this.unisat.on(\"accountsChanged\", handler)\n this.unisat.on(\"networkChanged\", handler)\n\n return {\n unsubscribe: () => {\n this.unisat.removeListener(\"accountsChanged\", handler)\n this.unisat.removeListener(\"networkChanged\", handler)\n },\n }\n }\n}\n\ninterface UnisatCompatibleProviderAPIThrownError {\n code: number\n message: string\n}\nfunction isUnisatCompatibleProviderAPIThrownError(\n err: any,\n): err is UnisatCompatibleProviderAPIThrownError {\n return err != null && \"code\" in err && \"message\" in err\n}\n\nexport class UnisatCompatibleProviderError extends Error {\n readonly code: number\n constructor(err: UnisatCompatibleProviderAPIThrownError) {\n super(err.message)\n this.code = err.code\n this.cause = err\n }\n}\n\nconst handleRpcError = async <T>(promise: Promise<T>): Promise<T> => {\n try {\n return await promise\n } catch (e: any) {\n if (isUnisatCompatibleProviderAPIThrownError(e)) {\n if (e.code === 4001) {\n throw new UserRejectError()\n }\n throw new UnisatCompatibleProviderError(e)\n }\n throw e\n }\n}\n"],"names":["UnisatCompatibleWalletAdapterImpl","unisat","walletDisplayName","addresses","WalletAdapterNotConnectedError","publicKey","network","hasAny","BitcoinWalletAdapterError","address","addrType","getAddressType","getBitcoinNetwork","addressType","WalletAdapterAddressType","scriptPubKey","hex","addressToScriptPubKey","tapInternalKey","getTapInternalKeyOf_P2TR_publicKey","redeemScript","getRedeemScriptOf_P2SH_P2WPKH_publicKey","WalletAdapterBitcoinNetwork","WalletAdapterAddressPurpose","message","handleRpcError","SignMessageAlgorithm","fromAddress","receiverAddress","satoshiAmount","options","inscriptionId","psbtHex","signIndices","signedPsbtHex","signIndex","tx","btc.Transaction","callback","handler","error","isUnisatCompatibleProviderAPIThrownError","err","UnisatCompatibleProviderError","promise","UserRejectError"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
2
|
-
//# sourceMappingURL=UnisatCompatibleWalletAdapterImpl-
|
|
1
|
+
"use strict";const s=require("./index-jRY8YhyK.js"),w=require("./misc-CigR0RqC.js"),n=require("./WalletAdapters.types-CExaiK0o.js"),A=require("./transaction-B6SlpRzN.js");class g{constructor(e,t){this.unisat=e,this.walletDisplayName=t}async connect(){(await this.unisat.getAccounts()).length===0&&await this.unisat.requestAccounts()}disconnect(){return Promise.resolve()}async getAddresses(){const e=await this.unisat.getAccounts();if(e.length===0)throw new n.WalletAdapterNotConnectedError(this.walletDisplayName);const t=await this.unisat.getPublicKey(),a=await this.unisat.getNetwork()==="livenet"?"mainnet":"testnet";if(!w.hasAny(e))throw new s.BitcoinWalletAdapterError("Request wallet addresses failed");const o=e[0],d=s.getAddressType(s.getBitcoinNetwork(a),o),c=d==="p2tr"?n.WalletAdapterAddressType.P2TR:d==="p2sh"?n.WalletAdapterAddressType.P2SH_P2WPKH:d==="p2wpkh"?n.WalletAdapterAddressType.P2WPKH:void 0;if(c==null)throw new s.BitcoinWalletAdapterError("Please select a SegWit address");const p=s.hex.encode(s.addressToScriptPubKey(s.getBitcoinNetwork(a),o)),u=c!==n.WalletAdapterAddressType.P2TR?void 0:s.hex.encode(s.getTapInternalKeyOf_P2TR_publicKey(s.getBitcoinNetwork(a),s.hex.decode(t))),h=c!==n.WalletAdapterAddressType.P2SH_P2WPKH?void 0:s.hex.encode(s.getRedeemScriptOf_P2SH_P2WPKH_publicKey(s.getBitcoinNetwork(a),s.hex.decode(t)));return[{addressType:c,address:o,scriptPubKey:p,redeemScript:h,tapInternalKey:u,publicKey:t,network:a==="mainnet"?n.WalletAdapterBitcoinNetwork.MAINNET:n.WalletAdapterBitcoinNetwork.TESTNET,purposes:[n.WalletAdapterAddressPurpose.Bitcoin,n.WalletAdapterAddressPurpose.Ordinals,n.WalletAdapterAddressPurpose.BRC20,n.WalletAdapterAddressPurpose.Runes]}]}async signMessage(e,t){return{result:await l(this.unisat.signMessage(t,"bip322-simple")),address:e,algorithm:n.SignMessageAlgorithm.BIP322}}sendBitcoinFeeRateCapability="available";async sendBitcoin(e,t,i,a){return{txid:await l(this.unisat.sendBitcoin(t,Number(i),{feeRate:a?.feeRate}))}}sendInscriptionFeeRateCapability="available";async sendInscription(e,t,i,a){return{txid:await l(this.unisat.sendInscription(t,i,{feeRate:a?.feeRate}))}}async signAndFinalizePsbt(e,t){await this.getAddresses();const i=await l(this.unisat.signPsbt(e,{autoFinalized:!1,toSignInputs:t.map(([o,d])=>({index:d,address:o}))})),a=A.Transaction.fromPSBT(s.hex.decode(i),{allowUnknownInputs:!0,allowUnknownOutputs:!0,disableScriptCheck:!0,allowLegacyWitnessUtxo:!0});return a.finalize(),{signedPsbtHex:s.hex.encode(a.toPSBT())}}onAddressesChanged(e){const t=async()=>{try{const i=await this.getAddresses();e({addresses:i})}catch(i){console.warn(`[${this.walletDisplayName}] Failed to get addresses on change:`,i)}};return this.unisat.on("accountsChanged",t),this.unisat.on("networkChanged",t),{unsubscribe:()=>{this.unisat.removeListener("accountsChanged",t),this.unisat.removeListener("networkChanged",t)}}}}function y(r){return r!=null&&"code"in r&&"message"in r}class P extends Error{code;constructor(e){super(e.message),this.code=e.code,this.cause=e}}const l=async r=>{try{return await r}catch(e){throw y(e)?e.code===4001?new s.UserRejectError:new P(e):e}};exports.UnisatCompatibleWalletAdapterImpl=g;
|
|
2
|
+
//# sourceMappingURL=UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js","sources":["../src/utils/UnisatCompatibleWalletAdapterImpl.ts"],"sourcesContent":["import { hex } from \"@scure/base\"\nimport * as btc from \"@scure/btc-signer\"\nimport { hasAny } from \"./misc\"\nimport {\n addressToScriptPubKey,\n getAddressType,\n getRedeemScriptOf_P2SH_P2WPKH_publicKey,\n getTapInternalKeyOf_P2TR_publicKey,\n} from \"./bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"./bitcoinNetworkHelpers\"\nimport { UserRejectError, BitcoinWalletAdapterError } from \"../utils/error\"\nimport {\n SignMessageAlgorithm,\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddress,\n WalletAdapterAddressPurpose,\n WalletAdapterAddressType,\n WalletAdapterBitcoinNetwork,\n WalletAdapterNotConnectedError,\n WalletAdapterSendBitcoinCapability,\n} from \"../WalletAdapters.types\"\n\n/**\n * https://docs.unisat.io/dev-center/open-api-documentation/unisat-wallet#events\n */\nexport interface UniSatEvents {\n accountsChanged: [accounts: Array<string>]\n networkChanged: [network: string]\n}\n\nexport interface UnisatCompatibleProviderAPI {\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#getaccounts\n */\n getAccounts(): Promise<string[]>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#requestaccounts\n */\n requestAccounts(): Promise<string[]>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#getpublickey\n */\n getPublicKey(): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#getnetwork\n */\n getNetwork(): Promise<\"livenet\" | \"testnet\">\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#signmessage\n */\n signMessage(\n message: string,\n algorithm: \"ecdsa\" | \"bip322-simple\",\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#sendbitcoin\n */\n sendBitcoin(\n receiverAddress: string,\n satoshiAmount: number,\n options?: { feeRate?: number },\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#sendInscription\n */\n sendInscription(\n receiverAddress: string,\n inscriptionId: string,\n options?: { feeRate?: number },\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#signpsbt\n */\n signPsbt(\n psbtHex: string,\n options?: {\n autoFinalized?: boolean\n toSignInputs?: {\n index: number\n address?: string\n publicKey?: string\n sighashTypes?: number[]\n disableTweakSigner?: boolean\n }[]\n },\n ): Promise<string>\n\n /**\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet#events\n */\n on<K extends keyof UniSatEvents>(\n event: K,\n handler: (...args: UniSatEvents[K]) => void,\n ): void\n removeListener(event: keyof UniSatEvents, handler: () => void): void\n}\n\nexport type UnisatCompatibleWalletAdapterAddresses = (WalletAdapterAddress & {\n publicKey: string\n})[]\n\nexport class UnisatCompatibleWalletAdapterImpl implements WalletAdapter {\n constructor(\n private unisat: UnisatCompatibleProviderAPI,\n private walletDisplayName: string,\n ) {}\n\n async connect(): Promise<void> {\n if ((await this.unisat.getAccounts()).length === 0) {\n await this.unisat.requestAccounts()\n }\n }\n\n disconnect(): Promise<void> {\n // do nothing\n return Promise.resolve()\n }\n\n async getAddresses(): Promise<UnisatCompatibleWalletAdapterAddresses> {\n const addresses: string[] = await this.unisat.getAccounts()\n\n if (addresses.length === 0) {\n throw new WalletAdapterNotConnectedError(this.walletDisplayName)\n }\n\n const publicKey: string = await this.unisat.getPublicKey()\n\n const _network: \"livenet\" | \"testnet\" = await this.unisat.getNetwork()\n const network = _network === \"livenet\" ? \"mainnet\" : \"testnet\"\n\n if (!hasAny(addresses)) {\n throw new BitcoinWalletAdapterError(\"Request wallet addresses failed\")\n }\n\n const address = addresses[0]\n const addrType = getAddressType(getBitcoinNetwork(network), address)\n // prettier-ignore\n const addressType =\n addrType === \"p2tr\" ? WalletAdapterAddressType.P2TR :\n addrType === \"p2sh\" ? WalletAdapterAddressType.P2SH_P2WPKH :\n addrType === \"p2wpkh\" ? WalletAdapterAddressType.P2WPKH :\n undefined\n\n if (addressType == null) {\n throw new BitcoinWalletAdapterError(\"Please select a SegWit address\")\n }\n\n const scriptPubKey = hex.encode(\n addressToScriptPubKey(getBitcoinNetwork(network), address),\n )\n\n const tapInternalKey =\n addressType !== WalletAdapterAddressType.P2TR\n ? undefined\n : hex.encode(\n getTapInternalKeyOf_P2TR_publicKey(\n getBitcoinNetwork(network),\n hex.decode(publicKey),\n ),\n )\n\n const redeemScript =\n addressType !== WalletAdapterAddressType.P2SH_P2WPKH\n ? undefined\n : hex.encode(\n getRedeemScriptOf_P2SH_P2WPKH_publicKey(\n getBitcoinNetwork(network),\n hex.decode(publicKey),\n ),\n )\n\n return [\n {\n addressType,\n address,\n scriptPubKey,\n redeemScript,\n tapInternalKey,\n publicKey,\n network:\n network === \"mainnet\"\n ? WalletAdapterBitcoinNetwork.MAINNET\n : WalletAdapterBitcoinNetwork.TESTNET,\n purposes: [\n WalletAdapterAddressPurpose.Bitcoin,\n WalletAdapterAddressPurpose.Ordinals,\n WalletAdapterAddressPurpose.BRC20,\n WalletAdapterAddressPurpose.Runes,\n ],\n },\n ]\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n const result = await handleRpcError(\n this.unisat.signMessage(message, \"bip322-simple\"),\n )\n\n return {\n result,\n address,\n algorithm: SignMessageAlgorithm.BIP322,\n }\n }\n\n sendBitcoinFeeRateCapability: WalletAdapterSendBitcoinCapability =\n \"available\" as const\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n options?: { feeRate?: number },\n ): Promise<{ txid: string }> {\n const txid = await handleRpcError(\n this.unisat.sendBitcoin(receiverAddress, Number(satoshiAmount), {\n feeRate: options?.feeRate,\n }),\n )\n return { txid }\n }\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability: \"unavailable\" | \"available\" | \"required\" =\n \"available\" as const\n /**\n * @internal\n * @experimental\n */\n async sendInscription(\n fromAddress: string,\n receiverAddress: string,\n inscriptionId: string,\n options?: { feeRate?: number },\n ): Promise<{ txid: string }> {\n const txid = await handleRpcError(\n this.unisat.sendInscription(receiverAddress, inscriptionId, {\n feeRate: options?.feeRate,\n }),\n )\n return { txid }\n }\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n const addr = await this.getAddresses()\n\n const signedPsbtHex = await handleRpcError(\n this.unisat.signPsbt(psbtHex, {\n autoFinalized: false,\n toSignInputs: signIndices.map(([address, signIndex]) => ({\n index: signIndex,\n address,\n })),\n }),\n )\n\n /**\n * Some version of unisat's signPsbt API does not working well with the autoFinalized option,\n * so we finalize the PSBT manually.\n */\n const tx = btc.Transaction.fromPSBT(hex.decode(signedPsbtHex), {\n allowUnknownInputs: true,\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowLegacyWitnessUtxo: true,\n })\n tx.finalize()\n\n return { signedPsbtHex: hex.encode(tx.toPSBT()) }\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n const handler = async (): Promise<void> => {\n try {\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n // Ignore errors from getAddresses (e.g., wallet disconnected)\n console.warn(\n `[${this.walletDisplayName}] Failed to get addresses on change:`,\n error,\n )\n }\n }\n\n // Listen to both account and network changes\n this.unisat.on(\"accountsChanged\", handler)\n this.unisat.on(\"networkChanged\", handler)\n\n return {\n unsubscribe: () => {\n this.unisat.removeListener(\"accountsChanged\", handler)\n this.unisat.removeListener(\"networkChanged\", handler)\n },\n }\n }\n}\n\ninterface UnisatCompatibleProviderAPIThrownError {\n code: number\n message: string\n}\nfunction isUnisatCompatibleProviderAPIThrownError(\n err: any,\n): err is UnisatCompatibleProviderAPIThrownError {\n return err != null && \"code\" in err && \"message\" in err\n}\n\nexport class UnisatCompatibleProviderError extends Error {\n readonly code: number\n constructor(err: UnisatCompatibleProviderAPIThrownError) {\n super(err.message)\n this.code = err.code\n this.cause = err\n }\n}\n\nconst handleRpcError = async <T>(promise: Promise<T>): Promise<T> => {\n try {\n return await promise\n } catch (e: any) {\n if (isUnisatCompatibleProviderAPIThrownError(e)) {\n if (e.code === 4001) {\n throw new UserRejectError()\n }\n throw new UnisatCompatibleProviderError(e)\n }\n throw e\n }\n}\n"],"names":["UnisatCompatibleWalletAdapterImpl","unisat","walletDisplayName","addresses","WalletAdapterNotConnectedError","publicKey","network","hasAny","BitcoinWalletAdapterError","address","addrType","getAddressType","getBitcoinNetwork","addressType","WalletAdapterAddressType","scriptPubKey","hex","addressToScriptPubKey","tapInternalKey","getTapInternalKeyOf_P2TR_publicKey","redeemScript","getRedeemScriptOf_P2SH_P2WPKH_publicKey","WalletAdapterBitcoinNetwork","WalletAdapterAddressPurpose","message","handleRpcError","SignMessageAlgorithm","fromAddress","receiverAddress","satoshiAmount","options","inscriptionId","psbtHex","signIndices","signedPsbtHex","signIndex","tx","btc.Transaction","callback","handler","error","isUnisatCompatibleProviderAPIThrownError","err","UnisatCompatibleProviderError","promise","UserRejectError"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js"),a=require("./index-jRY8YhyK.js");class l extends t.UnisatCompatibleWalletAdapterImpl{constructor(e){super(e,a.metadata$2.name)}sendBitcoinFeeRateCapability="required";sendInscriptionFeeRateCapability="unavailable"}exports.UnisatWalletAdapterImpl=l;
|
|
2
|
+
//# sourceMappingURL=UnisatWalletAdapter.impl-DXDfnHz_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnisatWalletAdapter.impl-DXDfnHz_.js","sources":["../src/adapters/UnisatWalletAdapter.impl.ts"],"sourcesContent":["import {\n UnisatCompatibleProviderAPI,\n UnisatCompatibleWalletAdapterImpl,\n} from \"../utils/UnisatCompatibleWalletAdapterImpl\"\nimport { WalletAdapter } from \"../WalletAdapters.types\"\nimport { metadata } from \"./UnisatWalletAdapter\"\n\n/**\n * Derivation path (Native SegWit) (BIP-84): m/84'/0'/0'/0/address_index\n * Derivation path (Nested SegWit) (BIP-49): m/49'/0'/0'/0/address_index\n * Derivation path (Taproot) (BIP-86): m/86'/0'/0'/0/address_index\n * Derivation path (Taproot) (BIP-44): m/44'/0'/0'/0/address_index\n * Derivation path (Legacy) (BIP-44): m/44'/0'/0'/0/address_index\n */\nexport class UnisatWalletAdapterImpl\n extends UnisatCompatibleWalletAdapterImpl\n implements WalletAdapter\n{\n constructor(provider: UnisatCompatibleProviderAPI) {\n /**\n * UniSat Provider API:\n *\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet\n */\n super(provider, metadata.name)\n }\n\n sendBitcoinFeeRateCapability = \"required\" as const\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability = \"unavailable\" as const\n\n // The default fee rate of unisat is not aligned with mempool.space, so\n // sometimes the tx will be rejected by mempool due to uneligible network fee.\n}\n"],"names":["UnisatWalletAdapterImpl","UnisatCompatibleWalletAdapterImpl","provider","metadata"],"mappings":"oLAcO,MAAMA,UACHC,EAAAA,iCAEV,CACE,YAAYC,EAAuC,CAMjD,MAAMA,EAAUC,EAAAA,WAAS,IAAI,CAC/B,CAEA,6BAA+B,WAM/B,iCAAmC,aAIrC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { U as e } from "./UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs";
|
|
2
|
+
import { j as t } from "./index-DM4G-LJz.mjs";
|
|
3
|
+
class p extends e {
|
|
4
|
+
constructor(a) {
|
|
5
|
+
super(a, t.name);
|
|
6
|
+
}
|
|
7
|
+
sendBitcoinFeeRateCapability = "required";
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
* @experimental
|
|
11
|
+
*/
|
|
12
|
+
sendInscriptionFeeRateCapability = "unavailable";
|
|
13
|
+
// The default fee rate of unisat is not aligned with mempool.space, so
|
|
14
|
+
// sometimes the tx will be rejected by mempool due to uneligible network fee.
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
p as UnisatWalletAdapterImpl
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=UnisatWalletAdapter.impl-DvA33Ikj.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnisatWalletAdapter.impl-DvA33Ikj.mjs","sources":["../src/adapters/UnisatWalletAdapter.impl.ts"],"sourcesContent":["import {\n UnisatCompatibleProviderAPI,\n UnisatCompatibleWalletAdapterImpl,\n} from \"../utils/UnisatCompatibleWalletAdapterImpl\"\nimport { WalletAdapter } from \"../WalletAdapters.types\"\nimport { metadata } from \"./UnisatWalletAdapter\"\n\n/**\n * Derivation path (Native SegWit) (BIP-84): m/84'/0'/0'/0/address_index\n * Derivation path (Nested SegWit) (BIP-49): m/49'/0'/0'/0/address_index\n * Derivation path (Taproot) (BIP-86): m/86'/0'/0'/0/address_index\n * Derivation path (Taproot) (BIP-44): m/44'/0'/0'/0/address_index\n * Derivation path (Legacy) (BIP-44): m/44'/0'/0'/0/address_index\n */\nexport class UnisatWalletAdapterImpl\n extends UnisatCompatibleWalletAdapterImpl\n implements WalletAdapter\n{\n constructor(provider: UnisatCompatibleProviderAPI) {\n /**\n * UniSat Provider API:\n *\n * https://docs.unisat.io/dev/unisat-developer-service/unisat-wallet\n */\n super(provider, metadata.name)\n }\n\n sendBitcoinFeeRateCapability = \"required\" as const\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability = \"unavailable\" as const\n\n // The default fee rate of unisat is not aligned with mempool.space, so\n // sometimes the tx will be rejected by mempool due to uneligible network fee.\n}\n"],"names":["UnisatWalletAdapterImpl","UnisatCompatibleWalletAdapterImpl","provider","metadata"],"mappings":";;AAcO,MAAMA,UACHC,EAEV;AAAA,EACE,YAAYC,GAAuC;AAMjD,UAAMA,GAAUC,EAAS,IAAI;AAAA,EAC/B;AAAA,EAEA,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,mCAAmC;AAAA;AAAA;AAIrC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=(r=>(r.MAINNET="mainnet",r.TESTNET="testnet",r.UNKNOWN="unknown",r))(t||{}),e=(r=>(r.Bitcoin="bitcoin",r.Ordinals="ordinals",r.BRC20="brc20",r.Runes="runes",r))(e||{}),o=(r=>(r.P2SH_P2WPKH="p2sh-p2wpkh",r.P2WPKH="p2wpkh",r.P2TR="p2tr",r.P2PKH="p2pkh",r))(o||{}),a=(r=>(r.ECDSA="ECDSA",r.BIP322="BIP322",r))(a||{});class c extends Error{constructor(n){super(n),this.name="WalletAdapterErrorBase"}}class E extends c{constructor(n,s){super(s??`Wallet ${n} is not connected`),this.name="WalletAdapterNotConnectedError"}}exports.SignMessageAlgorithm=a;exports.WalletAdapterAddressPurpose=e;exports.WalletAdapterAddressType=o;exports.WalletAdapterBitcoinNetwork=t;exports.WalletAdapterErrorBase=c;exports.WalletAdapterNotConnectedError=E;
|
|
2
|
+
//# sourceMappingURL=WalletAdapters.types-CExaiK0o.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletAdapters.types-CExaiK0o.js","sources":["../src/WalletAdapters.types.ts"],"sourcesContent":["import { Availability } from \"./utils/createAdapterAvailability\"\n\nexport enum WalletAdapterBitcoinNetwork {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n UNKNOWN = \"unknown\",\n}\n\nexport enum WalletAdapterAddressPurpose {\n Bitcoin = \"bitcoin\",\n Ordinals = \"ordinals\",\n BRC20 = \"brc20\",\n Runes = \"runes\",\n}\n\n// prettier-ignore\nexport enum WalletAdapterAddressType {\n P2SH_P2WPKH = \"p2sh-p2wpkh\", // aka Nested SegWit\n P2WPKH = \"p2wpkh\", // aka Native SegWit\n P2TR = \"p2tr\", // aka Taproot\n P2PKH = \"p2pkh\", // aka Legacy\n}\n\nexport enum SignMessageAlgorithm {\n ECDSA = \"ECDSA\",\n BIP322 = \"BIP322\",\n}\nexport type SignMessageResult =\n | SignMessageResult.ECDSA\n | SignMessageResult.BIP322\nexport namespace SignMessageResult {\n export interface ECDSA {\n algorithm: SignMessageAlgorithm.ECDSA\n result: string\n address: string\n publicKey: string\n }\n\n export interface BIP322 {\n algorithm: SignMessageAlgorithm.BIP322\n result: string\n address: string\n }\n}\n\nexport interface WalletAdapterAddressBasic {\n addressType: WalletAdapterAddressType\n address: string\n scriptPubKey: string\n}\n\nexport interface WalletAdapterAddressWithPublicKey {\n /**\n * Some wallet may won't give us the public key of the address, like Xverse\n */\n publicKey: string\n}\n\nexport interface WalletAdapterAddressWithRedeemScript {\n /**\n * Some address is SH address, which requires redeem script to spend, like Xverse\n */\n redeemScript: string\n}\n\nexport interface WalletAdapterAddressWithTapInternalKey {\n /**\n * Some address is taproot address, which requires taproot internal key to spend.\n */\n tapInternalKey: string\n}\n\nexport interface WalletAdapterAddress extends Partial<\n WalletAdapterAddressWithPublicKey &\n WalletAdapterAddressWithRedeemScript &\n WalletAdapterAddressWithTapInternalKey\n> {\n addressType: WalletAdapterAddressType\n address: string\n scriptPubKey: string\n network: WalletAdapterBitcoinNetwork\n purposes: WalletAdapterAddressPurpose[]\n}\n\nexport interface WalletAdapterMetadata {\n name: string\n iconUrl: () => Promise<string>\n websiteUrl: string\n downloadUrl: string\n}\n\nexport interface WalletAdapterFactory<T extends WalletAdapter> {\n adapterId: string\n metadata: WalletAdapterMetadata\n getAdapter(): Availability<T>\n}\n\nexport type WalletAdapter_onAddressesChanged_callback = (data: {\n addresses: WalletAdapterAddress[]\n}) => void\n\nexport interface WalletAdapter {\n connect(): Promise<void>\n\n disconnect(): Promise<void>\n\n getAddresses(): Promise<WalletAdapterAddress[]>\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n }\n\n signMessage(address: string, message: string): Promise<SignMessageResult>\n\n signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{ signedPsbtHex: string }>\n\n sendBitcoinFeeRateCapability: WalletAdapterSendBitcoinCapability\n sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n options?: { feeRate?: number },\n ): Promise<{ txid: string }>\n}\n\nexport type WalletAdapterSendBitcoinCapability =\n | \"unavailable\"\n | \"available\"\n | \"required\"\n\nexport class WalletAdapterErrorBase extends Error {\n constructor(message: string) {\n super(message)\n this.name = \"WalletAdapterErrorBase\"\n }\n}\n\nexport class WalletAdapterNotConnectedError extends WalletAdapterErrorBase {\n constructor(walletName: string, message?: string) {\n super(message ?? `Wallet ${walletName} is not connected`)\n this.name = \"WalletAdapterNotConnectedError\"\n }\n}\n"],"names":["WalletAdapterBitcoinNetwork","WalletAdapterAddressPurpose","WalletAdapterAddressType","SignMessageAlgorithm","WalletAdapterErrorBase","message","WalletAdapterNotConnectedError","walletName"],"mappings":"aAEO,IAAKA,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,QAAU,UAHAA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,SAAW,WACXA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QAJEA,IAAAA,GAAA,CAAA,CAAA,EAQAC,GAAAA,IACVA,EAAA,YAAc,cACdA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,MAAQ,QAJEA,IAAAA,GAAA,CAAA,CAAA,EAOAC,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SAFCA,IAAAA,GAAA,CAAA,CAAA,EA6GL,MAAMC,UAA+B,KAAM,CAChD,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,KAAO,wBACd,CACF,CAEO,MAAMC,UAAuCF,CAAuB,CACzE,YAAYG,EAAoBF,EAAkB,CAChD,MAAMA,GAAW,UAAUE,CAAU,mBAAmB,EACxD,KAAK,KAAO,gCACd,CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var a = /* @__PURE__ */ ((n) => (n.MAINNET = "mainnet", n.TESTNET = "testnet", n.UNKNOWN = "unknown", n))(a || {}), c = /* @__PURE__ */ ((n) => (n.Bitcoin = "bitcoin", n.Ordinals = "ordinals", n.BRC20 = "brc20", n.Runes = "runes", n))(c || {}), o = /* @__PURE__ */ ((n) => (n.P2SH_P2WPKH = "p2sh-p2wpkh", n.P2WPKH = "p2wpkh", n.P2TR = "p2tr", n.P2PKH = "p2pkh", n))(o || {}), s = /* @__PURE__ */ ((n) => (n.ECDSA = "ECDSA", n.BIP322 = "BIP322", n))(s || {});
|
|
2
|
+
class E extends Error {
|
|
3
|
+
constructor(r) {
|
|
4
|
+
super(r), this.name = "WalletAdapterErrorBase";
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
class u extends E {
|
|
8
|
+
constructor(r, t) {
|
|
9
|
+
super(t ?? `Wallet ${r} is not connected`), this.name = "WalletAdapterNotConnectedError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
s as S,
|
|
14
|
+
a as W,
|
|
15
|
+
c as a,
|
|
16
|
+
o as b,
|
|
17
|
+
E as c,
|
|
18
|
+
u as d
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=WalletAdapters.types-DBvhI1hu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletAdapters.types-DBvhI1hu.mjs","sources":["../src/WalletAdapters.types.ts"],"sourcesContent":["import { Availability } from \"./utils/createAdapterAvailability\"\n\nexport enum WalletAdapterBitcoinNetwork {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n UNKNOWN = \"unknown\",\n}\n\nexport enum WalletAdapterAddressPurpose {\n Bitcoin = \"bitcoin\",\n Ordinals = \"ordinals\",\n BRC20 = \"brc20\",\n Runes = \"runes\",\n}\n\n// prettier-ignore\nexport enum WalletAdapterAddressType {\n P2SH_P2WPKH = \"p2sh-p2wpkh\", // aka Nested SegWit\n P2WPKH = \"p2wpkh\", // aka Native SegWit\n P2TR = \"p2tr\", // aka Taproot\n P2PKH = \"p2pkh\", // aka Legacy\n}\n\nexport enum SignMessageAlgorithm {\n ECDSA = \"ECDSA\",\n BIP322 = \"BIP322\",\n}\nexport type SignMessageResult =\n | SignMessageResult.ECDSA\n | SignMessageResult.BIP322\nexport namespace SignMessageResult {\n export interface ECDSA {\n algorithm: SignMessageAlgorithm.ECDSA\n result: string\n address: string\n publicKey: string\n }\n\n export interface BIP322 {\n algorithm: SignMessageAlgorithm.BIP322\n result: string\n address: string\n }\n}\n\nexport interface WalletAdapterAddressBasic {\n addressType: WalletAdapterAddressType\n address: string\n scriptPubKey: string\n}\n\nexport interface WalletAdapterAddressWithPublicKey {\n /**\n * Some wallet may won't give us the public key of the address, like Xverse\n */\n publicKey: string\n}\n\nexport interface WalletAdapterAddressWithRedeemScript {\n /**\n * Some address is SH address, which requires redeem script to spend, like Xverse\n */\n redeemScript: string\n}\n\nexport interface WalletAdapterAddressWithTapInternalKey {\n /**\n * Some address is taproot address, which requires taproot internal key to spend.\n */\n tapInternalKey: string\n}\n\nexport interface WalletAdapterAddress extends Partial<\n WalletAdapterAddressWithPublicKey &\n WalletAdapterAddressWithRedeemScript &\n WalletAdapterAddressWithTapInternalKey\n> {\n addressType: WalletAdapterAddressType\n address: string\n scriptPubKey: string\n network: WalletAdapterBitcoinNetwork\n purposes: WalletAdapterAddressPurpose[]\n}\n\nexport interface WalletAdapterMetadata {\n name: string\n iconUrl: () => Promise<string>\n websiteUrl: string\n downloadUrl: string\n}\n\nexport interface WalletAdapterFactory<T extends WalletAdapter> {\n adapterId: string\n metadata: WalletAdapterMetadata\n getAdapter(): Availability<T>\n}\n\nexport type WalletAdapter_onAddressesChanged_callback = (data: {\n addresses: WalletAdapterAddress[]\n}) => void\n\nexport interface WalletAdapter {\n connect(): Promise<void>\n\n disconnect(): Promise<void>\n\n getAddresses(): Promise<WalletAdapterAddress[]>\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n }\n\n signMessage(address: string, message: string): Promise<SignMessageResult>\n\n signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{ signedPsbtHex: string }>\n\n sendBitcoinFeeRateCapability: WalletAdapterSendBitcoinCapability\n sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n options?: { feeRate?: number },\n ): Promise<{ txid: string }>\n}\n\nexport type WalletAdapterSendBitcoinCapability =\n | \"unavailable\"\n | \"available\"\n | \"required\"\n\nexport class WalletAdapterErrorBase extends Error {\n constructor(message: string) {\n super(message)\n this.name = \"WalletAdapterErrorBase\"\n }\n}\n\nexport class WalletAdapterNotConnectedError extends WalletAdapterErrorBase {\n constructor(walletName: string, message?: string) {\n super(message ?? `Wallet ${walletName} is not connected`)\n this.name = \"WalletAdapterNotConnectedError\"\n }\n}\n"],"names":["WalletAdapterBitcoinNetwork","WalletAdapterAddressPurpose","WalletAdapterAddressType","SignMessageAlgorithm","WalletAdapterErrorBase","message","WalletAdapterNotConnectedError","walletName"],"mappings":"AAEO,IAAKA,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WAHAA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,WAAW,YACXA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SAJEA,IAAAA,KAAA,CAAA,CAAA,GAQAC,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,QAAQ,SAJEA,IAAAA,KAAA,CAAA,CAAA,GAOAC,sBAAAA,OACVA,EAAA,QAAQ,SACRA,EAAA,SAAS,UAFCA,IAAAA,KAAA,CAAA,CAAA;AA6GL,MAAMC,UAA+B,MAAM;AAAA,EAChD,YAAYC,GAAiB;AAC3B,UAAMA,CAAO,GACb,KAAK,OAAO;AAAA,EACd;AACF;AAEO,MAAMC,UAAuCF,EAAuB;AAAA,EACzE,YAAYG,GAAoBF,GAAkB;AAChD,UAAMA,KAAW,UAAUE,CAAU,mBAAmB,GACxD,KAAK,OAAO;AAAA,EACd;AACF;"}
|