@ckb-ccc/xverse 1.0.33 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/advanced.d.mts +2 -0
  3. package/dist/advanced.mjs +1 -0
  4. package/dist/advancedBarrel-C-ThB6-A.d.mts +481 -0
  5. package/dist/advancedBarrel-C-ThB6-A.d.mts.map +1 -0
  6. package/dist/advancedBarrel-DIYsVxWE.mjs +2 -0
  7. package/dist/advancedBarrel-DIYsVxWE.mjs.map +1 -0
  8. package/dist/advancedBarrel.d.mts +2 -0
  9. package/dist/advancedBarrel.mjs +1 -0
  10. package/dist/barrel.d.mts +101 -0
  11. package/dist/barrel.d.mts.map +1 -0
  12. package/dist/barrel.mjs +2 -0
  13. package/dist/barrel.mjs.map +1 -0
  14. package/dist/index.d.mts +2 -0
  15. package/dist/index.mjs +1 -0
  16. package/dist/rolldown-runtime-DK3Fl9T5.mjs +1 -0
  17. package/dist.commonjs/advanced.d.ts +2 -2
  18. package/dist.commonjs/advanced.js +1 -37
  19. package/dist.commonjs/advancedBarrel-BCHIO_V8.d.ts +483 -0
  20. package/dist.commonjs/advancedBarrel-BCHIO_V8.d.ts.map +1 -0
  21. package/dist.commonjs/advancedBarrel-DA4O2d7u.js +2 -0
  22. package/dist.commonjs/advancedBarrel-DA4O2d7u.js.map +1 -0
  23. package/dist.commonjs/advancedBarrel.d.ts +2 -2
  24. package/dist.commonjs/advancedBarrel.js +1 -17
  25. package/dist.commonjs/barrel.d.ts +100 -2
  26. package/dist.commonjs/barrel.d.ts.map +1 -1
  27. package/dist.commonjs/barrel.js +2 -18
  28. package/dist.commonjs/barrel.js.map +1 -0
  29. package/dist.commonjs/index.d.ts +2 -2
  30. package/dist.commonjs/index.js +1 -37
  31. package/package.json +28 -31
  32. package/src/sat-connect-core/types.advanced.ts +6 -4
  33. package/src/signer.ts +2 -1
  34. package/tsdown.config.mts +43 -0
  35. package/dist/advanced.d.ts +0 -2
  36. package/dist/advanced.d.ts.map +0 -1
  37. package/dist/advanced.js +0 -1
  38. package/dist/advancedBarrel.d.ts +0 -2
  39. package/dist/advancedBarrel.d.ts.map +0 -1
  40. package/dist/advancedBarrel.js +0 -1
  41. package/dist/barrel.d.ts +0 -3
  42. package/dist/barrel.d.ts.map +0 -1
  43. package/dist/barrel.js +0 -2
  44. package/dist/index.d.ts +0 -2
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js +0 -1
  47. package/dist/sat-connect-core/advanced.d.ts +0 -5
  48. package/dist/sat-connect-core/advanced.d.ts.map +0 -1
  49. package/dist/sat-connect-core/advanced.js +0 -4
  50. package/dist/sat-connect-core/btcMethods.advanced.d.ts +0 -280
  51. package/dist/sat-connect-core/btcMethods.advanced.d.ts.map +0 -1
  52. package/dist/sat-connect-core/btcMethods.advanced.js +0 -179
  53. package/dist/sat-connect-core/provider.advanced.d.ts +0 -48
  54. package/dist/sat-connect-core/provider.advanced.d.ts.map +0 -1
  55. package/dist/sat-connect-core/provider.advanced.js +0 -21
  56. package/dist/sat-connect-core/requests.advanced.d.ts +0 -21
  57. package/dist/sat-connect-core/requests.advanced.d.ts.map +0 -1
  58. package/dist/sat-connect-core/requests.advanced.js +0 -1
  59. package/dist/sat-connect-core/types.advanced.d.ts +0 -124
  60. package/dist/sat-connect-core/types.advanced.d.ts.map +0 -1
  61. package/dist/sat-connect-core/types.advanced.js +0 -80
  62. package/dist/sat-connect-core/walletMethods.advanced.d.ts +0 -36
  63. package/dist/sat-connect-core/walletMethods.advanced.d.ts.map +0 -1
  64. package/dist/sat-connect-core/walletMethods.advanced.js +0 -37
  65. package/dist/signer.d.ts +0 -81
  66. package/dist/signer.d.ts.map +0 -1
  67. package/dist/signer.js +0 -225
  68. package/dist/signersFactory.d.ts +0 -13
  69. package/dist/signersFactory.d.ts.map +0 -1
  70. package/dist/signersFactory.js +0 -33
  71. package/dist.commonjs/advanced.d.ts.map +0 -1
  72. package/dist.commonjs/advancedBarrel.d.ts.map +0 -1
  73. package/dist.commonjs/index.d.ts.map +0 -1
  74. package/dist.commonjs/sat-connect-core/advanced.d.ts +0 -5
  75. package/dist.commonjs/sat-connect-core/advanced.d.ts.map +0 -1
  76. package/dist.commonjs/sat-connect-core/advanced.js +0 -20
  77. package/dist.commonjs/sat-connect-core/btcMethods.advanced.d.ts +0 -280
  78. package/dist.commonjs/sat-connect-core/btcMethods.advanced.d.ts.map +0 -1
  79. package/dist.commonjs/sat-connect-core/btcMethods.advanced.js +0 -215
  80. package/dist.commonjs/sat-connect-core/provider.advanced.d.ts +0 -48
  81. package/dist.commonjs/sat-connect-core/provider.advanced.d.ts.map +0 -1
  82. package/dist.commonjs/sat-connect-core/provider.advanced.js +0 -57
  83. package/dist.commonjs/sat-connect-core/requests.advanced.d.ts +0 -21
  84. package/dist.commonjs/sat-connect-core/requests.advanced.d.ts.map +0 -1
  85. package/dist.commonjs/sat-connect-core/requests.advanced.js +0 -2
  86. package/dist.commonjs/sat-connect-core/types.advanced.d.ts +0 -124
  87. package/dist.commonjs/sat-connect-core/types.advanced.d.ts.map +0 -1
  88. package/dist.commonjs/sat-connect-core/types.advanced.js +0 -116
  89. package/dist.commonjs/sat-connect-core/walletMethods.advanced.d.ts +0 -36
  90. package/dist.commonjs/sat-connect-core/walletMethods.advanced.d.ts.map +0 -1
  91. package/dist.commonjs/sat-connect-core/walletMethods.advanced.js +0 -73
  92. package/dist.commonjs/signer.d.ts +0 -81
  93. package/dist.commonjs/signer.d.ts.map +0 -1
  94. package/dist.commonjs/signer.js +0 -262
  95. package/dist.commonjs/signersFactory.d.ts +0 -13
  96. package/dist.commonjs/signersFactory.d.ts.map +0 -1
  97. package/dist.commonjs/signersFactory.js +0 -36
@@ -1,262 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Signer = void 0;
37
- const core_1 = require("@ckb-ccc/core");
38
- const bitcoinjs_lib_1 = require("bitcoinjs-lib");
39
- const v = __importStar(require("valibot"));
40
- const advancedBarrel_js_1 = require("./advancedBarrel.js");
41
- async function checkResponse(response) {
42
- const res = await response;
43
- if (v.is(advancedBarrel_js_1.rpcErrorResponseMessageSchema, res)) {
44
- // eslint-disable-next-line @typescript-eslint/only-throw-error
45
- throw res.error;
46
- }
47
- if (v.is(advancedBarrel_js_1.rpcSuccessResponseMessageSchema, res)) {
48
- return res.result;
49
- }
50
- // eslint-disable-next-line @typescript-eslint/only-throw-error
51
- throw {
52
- code: advancedBarrel_js_1.RpcErrorCode.INTERNAL_ERROR,
53
- message: "Received unknown response from provider.",
54
- data: res,
55
- };
56
- }
57
- /**
58
- * Class representing a Bitcoin signer that extends SignerBtc
59
- * @public
60
- */
61
- class Signer extends core_1.ccc.SignerBtc {
62
- /**
63
- * Creates an instance of Signer.
64
- * @param client - The client instance.
65
- * @param provider - The provider instance.
66
- */
67
- constructor(client, provider, preferredNetworks = [
68
- {
69
- addressPrefix: "ckb",
70
- signerType: core_1.ccc.SignerType.BTC,
71
- network: "btc",
72
- },
73
- {
74
- addressPrefix: "ckt",
75
- signerType: core_1.ccc.SignerType.BTC,
76
- network: "btcTestnet",
77
- },
78
- ]) {
79
- super(client);
80
- this.provider = provider;
81
- this.preferredNetworks = preferredNetworks;
82
- }
83
- async assertAddress() {
84
- this.addressCache =
85
- this.addressCache ??
86
- (async () => {
87
- if (!(await this.isConnected())) {
88
- return;
89
- }
90
- return (await checkResponse(this.provider.request("getAddresses", {
91
- purposes: [advancedBarrel_js_1.AddressPurpose.Payment],
92
- }))).addresses[0];
93
- })();
94
- const address = await this.addressCache;
95
- if (address) {
96
- return address;
97
- }
98
- throw Error("Not connected");
99
- }
100
- /**
101
- * Gets the Bitcoin account address.
102
- * @returns A promise that resolves to the Bitcoin account address.
103
- */
104
- async getBtcAccount() {
105
- return (await this.assertAddress()).address;
106
- }
107
- /**
108
- * Gets the Bitcoin public key.
109
- * @returns A promise that resolves to the Bitcoin public key.
110
- */
111
- async getBtcPublicKey() {
112
- return core_1.ccc.hexFrom((await this.assertAddress()).publicKey);
113
- }
114
- /**
115
- * Connects to the provider by requesting accounts.
116
- * @returns A promise that resolves when the connection is established.
117
- */
118
- async connect() {
119
- if (await this.isConnected()) {
120
- return;
121
- }
122
- await checkResponse(this.provider.request("wallet_requestPermissions", undefined));
123
- }
124
- async disconnect() {
125
- this.addressCache = undefined;
126
- }
127
- onReplaced(listener) {
128
- const stop = [];
129
- const replacer = () => {
130
- listener();
131
- stop[0]?.();
132
- };
133
- stop.push(this.provider.addListener("accountChange", replacer), this.provider.addListener("networkChange", replacer));
134
- return stop[0];
135
- }
136
- /**
137
- * Checks if the signer is connected.
138
- * @returns A promise that resolves to true if connected, false otherwise.
139
- */
140
- async isConnected() {
141
- try {
142
- await checkResponse(this.provider.request("getBalance", undefined));
143
- return true;
144
- }
145
- catch (_error) {
146
- return false;
147
- }
148
- }
149
- /**
150
- * Signs a raw message with the Bitcoin account.
151
- * @param message - The message to sign.
152
- * @returns A promise that resolves to the signed message.
153
- */
154
- async signMessageRaw(message) {
155
- const challenge = typeof message === "string" ? message : core_1.ccc.hexFrom(message).slice(2);
156
- return (await checkResponse(this.provider.request("signMessage", {
157
- message: challenge,
158
- address: (await this.assertAddress()).address,
159
- protocol: advancedBarrel_js_1.MessageSigningProtocols.ECDSA,
160
- }))).signature;
161
- }
162
- /**
163
- * Build default inputsToSign for all unsigned inputs
164
- */
165
- buildDefaultinputsToSign(psbtHex, address) {
166
- const inputsToSign = [];
167
- try {
168
- // Collect all unsigned inputs
169
- const psbt = bitcoinjs_lib_1.Psbt.fromHex(psbtHex.slice(2));
170
- psbt.data.inputs.forEach((input, index) => {
171
- const isSigned = input.finalScriptSig ||
172
- input.finalScriptWitness ||
173
- input.tapKeySig ||
174
- (input.partialSig && input.partialSig.length > 0) ||
175
- (input.tapScriptSig && input.tapScriptSig.length > 0);
176
- if (!isSigned) {
177
- inputsToSign.push({ index, address });
178
- }
179
- });
180
- // If no unsigned inputs found, the PSBT is already fully signed
181
- // Let the wallet handle this case (likely a no-op or error)
182
- }
183
- catch (error) {
184
- const errorMessage = error instanceof Error ? error.message : String(error);
185
- throw new Error(`Failed to parse PSBT hex. Please provide inputsToSign explicitly in options. Original error: ${errorMessage}`);
186
- }
187
- return inputsToSign;
188
- }
189
- async prepareSignPsbtParams(psbtHex, options) {
190
- let inputsToSign = options?.inputsToSign;
191
- if (!inputsToSign || !inputsToSign.length) {
192
- const address = await this.getBtcAccount();
193
- inputsToSign = this.buildDefaultinputsToSign(psbtHex, address);
194
- }
195
- const psbtBase64 = core_1.ccc.bytesTo(psbtHex, "base64");
196
- const signInputs = inputsToSign.reduce((acc, input) => {
197
- if (!input.address) {
198
- throw new Error("Xverse only supports signing with address. Please provide 'address' in inputsToSign.");
199
- }
200
- if (acc[input.address]) {
201
- acc[input.address].push(input.index);
202
- }
203
- else {
204
- acc[input.address] = [input.index];
205
- }
206
- return acc;
207
- }, {});
208
- return { psbtBase64, signInputs };
209
- }
210
- /**
211
- * Signs a PSBT using Xverse wallet.
212
- *
213
- * @param psbtHex - The hex string of PSBT to sign.
214
- * @param options - Options for signing the PSBT
215
- * @returns A promise that resolves to the signed PSBT as a Hex string
216
- *
217
- * @remarks
218
- * Xverse accepts:
219
- * - psbt: A string representing the PSBT to sign, encoded in base64
220
- * - signInputs: A Record<string, number[]> where:
221
- * - keys are the addresses to use for signing
222
- * - values are the indexes of the inputs to sign with each address
223
- *
224
- * Xverse returns:
225
- * - psbt: The base64 encoded signed PSBT
226
- *
227
- * @see https://docs.xverse.app/sats-connect/bitcoin-methods/signpsbt
228
- */
229
- async signPsbt(psbtHex, options) {
230
- const { psbtBase64, signInputs } = await this.prepareSignPsbtParams(core_1.ccc.hexFrom(psbtHex), options);
231
- const signedPsbtBase64 = (await checkResponse(this.provider.request("signPsbt", {
232
- psbt: psbtBase64,
233
- signInputs,
234
- broadcast: false,
235
- }))).psbt;
236
- return core_1.ccc.hexFrom(core_1.ccc.bytesFrom(signedPsbtBase64, "base64"));
237
- }
238
- /**
239
- * Broadcasts a PSBT to the Bitcoin network.
240
- *
241
- * @remarks
242
- * Xverse does not support broadcasting a signed PSBT directly.
243
- * It only supports "Sign and Broadcast" as a single atomic operation via `signAndBroadcastPsbt`.
244
- */
245
- async broadcastPsbt(_psbtHex, _options) {
246
- throw new Error("Xverse does not support broadcasting signed PSBTs directly. Use signAndBroadcastPsbt instead.");
247
- }
248
- async signAndBroadcastPsbt(psbtHex, options) {
249
- // ccc.hexFrom adds 0x prefix, but BTC expects non-0x
250
- const { psbtBase64, signInputs } = await this.prepareSignPsbtParams(core_1.ccc.hexFrom(psbtHex), options);
251
- const result = await checkResponse(this.provider.request("signPsbt", {
252
- psbt: psbtBase64,
253
- signInputs,
254
- broadcast: true,
255
- }));
256
- if (!result.txid) {
257
- throw new Error("Failed to broadcast PSBT");
258
- }
259
- return core_1.ccc.hexFrom(result.txid);
260
- }
261
- }
262
- exports.Signer = Signer;
@@ -1,13 +0,0 @@
1
- import { ccc } from "@ckb-ccc/core";
2
- /**
3
- * Retrieves the Xverse signer if available.
4
- * @public
5
- *
6
- * @param client - The client instance.
7
- * @returns All Xverse Signer instances
8
- */
9
- export declare function getXverseSigners(client: ccc.Client, preferredNetworks?: ccc.NetworkPreference[]): {
10
- wallet: ccc.Wallet;
11
- signerInfo: ccc.SignerInfo;
12
- }[];
13
- //# sourceMappingURL=signersFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signersFactory.d.ts","sourceRoot":"","sources":["../src/signersFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAapC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,iBAAiB,CAAC,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAC1C;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAA;CAAE,EAAE,CA+BtD"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getXverseSigners = getXverseSigners;
4
- const signer_js_1 = require("./signer.js");
5
- function getProviderById(providerId) {
6
- return providerId
7
- ?.split(".")
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return
9
- .reduce((acc, part) => acc?.[part], window);
10
- }
11
- /**
12
- * Retrieves the Xverse signer if available.
13
- * @public
14
- *
15
- * @param client - The client instance.
16
- * @returns All Xverse Signer instances
17
- */
18
- function getXverseSigners(client, preferredNetworks) {
19
- const windowRef = window;
20
- const signers = (() => {
21
- if (windowRef.btc_providers) {
22
- return windowRef.btc_providers.map((provider) => ({
23
- wallet: {
24
- name: provider.name,
25
- icon: provider.icon,
26
- },
27
- signerInfo: {
28
- name: "BTC",
29
- signer: new signer_js_1.Signer(client, getProviderById(provider.id), preferredNetworks),
30
- },
31
- }));
32
- }
33
- return [];
34
- })();
35
- return signers;
36
- }