@aibtc/mcp-server 1.29.0 → 1.30.2
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 +13 -0
- package/dist/config/contracts.d.ts +4 -0
- package/dist/config/contracts.d.ts.map +1 -1
- package/dist/config/contracts.js +2 -0
- package/dist/config/contracts.js.map +1 -1
- package/dist/services/sbtc.service.d.ts +27 -0
- package/dist/services/sbtc.service.d.ts.map +1 -1
- package/dist/services/sbtc.service.js +87 -1
- package/dist/services/sbtc.service.js.map +1 -1
- package/dist/services/x402.service.d.ts +1 -1
- package/dist/services/x402.service.d.ts.map +1 -1
- package/dist/services/x402.service.js +31 -20
- package/dist/services/x402.service.js.map +1 -1
- package/dist/tools/contract.tools.d.ts.map +1 -1
- package/dist/tools/contract.tools.js +37 -14
- package/dist/tools/contract.tools.js.map +1 -1
- package/dist/tools/endpoint.tools.js +1 -1
- package/dist/tools/endpoint.tools.js.map +1 -1
- package/dist/tools/inbox.tools.d.ts.map +1 -1
- package/dist/tools/inbox.tools.js +8 -6
- package/dist/tools/inbox.tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/psbt.helpers.d.ts +12 -0
- package/dist/tools/psbt.helpers.d.ts.map +1 -0
- package/dist/tools/psbt.helpers.js +34 -0
- package/dist/tools/psbt.helpers.js.map +1 -0
- package/dist/tools/psbt.tools.d.ts +3 -0
- package/dist/tools/psbt.tools.d.ts.map +1 -0
- package/dist/tools/psbt.tools.js +384 -0
- package/dist/tools/psbt.tools.js.map +1 -0
- package/dist/tools/sbtc.tools.d.ts.map +1 -1
- package/dist/tools/sbtc.tools.js +187 -0
- package/dist/tools/sbtc.tools.js.map +1 -1
- package/dist/tools/signing.tools.d.ts.map +1 -1
- package/dist/tools/signing.tools.js +5 -4
- package/dist/tools/signing.tools.js.map +1 -1
- package/dist/tools/transfer.tools.d.ts.map +1 -1
- package/dist/tools/transfer.tools.js +15 -4
- package/dist/tools/transfer.tools.js.map +1 -1
- package/dist/transactions/sponsor-builder.d.ts +13 -10
- package/dist/transactions/sponsor-builder.d.ts.map +1 -1
- package/dist/transactions/sponsor-builder.js +41 -9
- package/dist/transactions/sponsor-builder.js.map +1 -1
- package/dist/utils/x402-protocol.d.ts +24 -0
- package/dist/utils/x402-protocol.d.ts.map +1 -1
- package/dist/utils/x402-protocol.js +17 -0
- package/dist/utils/x402-protocol.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
- package/skill/references/stacks-defi.md +39 -7
package/README.md
CHANGED
|
@@ -230,6 +230,14 @@ Both addresses are derived from the same recovery phrase, making it easy to mana
|
|
|
230
230
|
| `get_inscription` | Fetch inscription content from reveal tx |
|
|
231
231
|
| `get_inscriptions_by_address` | List inscriptions owned by address |
|
|
232
232
|
|
|
233
|
+
### PSBT & Ordinals Trading
|
|
234
|
+
| Tool | Description |
|
|
235
|
+
|------|-------------|
|
|
236
|
+
| `psbt_create_ordinal_buy` | Build a buyer-side PSBT for ordinal purchase |
|
|
237
|
+
| `psbt_sign` | Sign selected PSBT inputs with active wallet keys |
|
|
238
|
+
| `psbt_decode` | Decode PSBT inputs/outputs/signature status |
|
|
239
|
+
| `psbt_broadcast` | Finalize and broadcast a fully-signed PSBT |
|
|
240
|
+
|
|
233
241
|
### Message Signing
|
|
234
242
|
| Tool | Description |
|
|
235
243
|
|------|-------------|
|
|
@@ -259,7 +267,12 @@ Both addresses are derived from the same recovery phrase, making it easy to mana
|
|
|
259
267
|
|------|-------------|
|
|
260
268
|
| `sbtc_get_balance` | Get sBTC balance |
|
|
261
269
|
| `sbtc_transfer` | Send sBTC |
|
|
270
|
+
| `sbtc_initiate_withdrawal` | Initiate sBTC peg-out to BTC L1 |
|
|
271
|
+
| `sbtc_withdraw` | Alias for withdrawal initiation |
|
|
272
|
+
| `sbtc_withdrawal_status` | Check withdrawal request status |
|
|
262
273
|
| `sbtc_get_deposit_info` | Get BTC deposit instructions |
|
|
274
|
+
| `sbtc_deposit` | Build, sign, and broadcast BTC→sBTC deposit |
|
|
275
|
+
| `sbtc_deposit_status` | Check deposit status via Emily API |
|
|
263
276
|
| `sbtc_get_peg_info` | Get peg ratio and TVL |
|
|
264
277
|
|
|
265
278
|
### Token Operations (SIP-010)
|
|
@@ -6,6 +6,7 @@ export declare const MAINNET_CONTRACTS: {
|
|
|
6
6
|
readonly SBTC_TOKEN: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token";
|
|
7
7
|
readonly SBTC_DEPOSIT: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-deposit";
|
|
8
8
|
readonly SBTC_REGISTRY: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-registry";
|
|
9
|
+
readonly SBTC_WITHDRAWAL: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-withdrawal";
|
|
9
10
|
readonly USDCX: "SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx";
|
|
10
11
|
readonly BNS: "SP000000000000000000002Q6VF78.bns";
|
|
11
12
|
readonly POX_4: "SP000000000000000000002Q6VF78.pox-4";
|
|
@@ -47,6 +48,7 @@ export declare const TESTNET_CONTRACTS: {
|
|
|
47
48
|
readonly SBTC_TOKEN: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-token";
|
|
48
49
|
readonly SBTC_DEPOSIT: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-deposit";
|
|
49
50
|
readonly SBTC_REGISTRY: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-registry";
|
|
51
|
+
readonly SBTC_WITHDRAWAL: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-withdrawal";
|
|
50
52
|
readonly USDCX: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.usdcx";
|
|
51
53
|
readonly BNS: "ST000000000000000000002AMW42H.bns";
|
|
52
54
|
readonly POX_4: "ST000000000000000000002AMW42H.pox-4";
|
|
@@ -61,6 +63,7 @@ export declare function getContracts(network: Network): {
|
|
|
61
63
|
readonly SBTC_TOKEN: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token";
|
|
62
64
|
readonly SBTC_DEPOSIT: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-deposit";
|
|
63
65
|
readonly SBTC_REGISTRY: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-registry";
|
|
66
|
+
readonly SBTC_WITHDRAWAL: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-withdrawal";
|
|
64
67
|
readonly USDCX: "SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx";
|
|
65
68
|
readonly BNS: "SP000000000000000000002Q6VF78.bns";
|
|
66
69
|
readonly POX_4: "SP000000000000000000002Q6VF78.pox-4";
|
|
@@ -80,6 +83,7 @@ export declare function getContracts(network: Network): {
|
|
|
80
83
|
readonly SBTC_TOKEN: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-token";
|
|
81
84
|
readonly SBTC_DEPOSIT: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-deposit";
|
|
82
85
|
readonly SBTC_REGISTRY: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-registry";
|
|
86
|
+
readonly SBTC_WITHDRAWAL: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-withdrawal";
|
|
83
87
|
readonly USDCX: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.usdcx";
|
|
84
88
|
readonly BNS: "ST000000000000000000002AMW42H.bns";
|
|
85
89
|
readonly POX_4: "ST000000000000000000002AMW42H.pox-4";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/config/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/config/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;CAiCpB,CAAC;AAEX;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAiFvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAAe,EAW7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;CAoBpB,CAAC;AAEX;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMrF;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAapB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO;;SAQhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO;;;;;;;SAahD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;EAElD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;CAWpB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAUhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO;;;;;;EAEnD;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,4DAA4D,CAAC;AAE5F;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO;;;;EAOnD"}
|
package/dist/config/contracts.js
CHANGED
|
@@ -6,6 +6,7 @@ export const MAINNET_CONTRACTS = {
|
|
|
6
6
|
SBTC_TOKEN: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
|
|
7
7
|
SBTC_DEPOSIT: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-deposit",
|
|
8
8
|
SBTC_REGISTRY: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-registry",
|
|
9
|
+
SBTC_WITHDRAWAL: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-withdrawal",
|
|
9
10
|
// Stablecoins
|
|
10
11
|
USDCX: "SP120SBRBQJ00MCWS7TM5R8WJNTTKD5K0HFRC2CNE.usdcx",
|
|
11
12
|
// BNS
|
|
@@ -134,6 +135,7 @@ export const TESTNET_CONTRACTS = {
|
|
|
134
135
|
SBTC_TOKEN: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-token",
|
|
135
136
|
SBTC_DEPOSIT: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-deposit",
|
|
136
137
|
SBTC_REGISTRY: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-registry",
|
|
138
|
+
SBTC_WITHDRAWAL: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sbtc-withdrawal",
|
|
137
139
|
// Stablecoins
|
|
138
140
|
USDCX: "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.usdcx",
|
|
139
141
|
// BNS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/config/contracts.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,UAAU,EAAE,sDAAsD;IAClE,YAAY,EAAE,wDAAwD;IACtE,aAAa,EAAE,yDAAyD;
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/config/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,19 @@ export interface SbtcDepositInfo {
|
|
|
17
17
|
maxDeposit: string;
|
|
18
18
|
instructions: string[];
|
|
19
19
|
}
|
|
20
|
+
export interface SbtcWithdrawalRecipient {
|
|
21
|
+
version: number;
|
|
22
|
+
hashbytesHex: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SbtcWithdrawalRequest {
|
|
25
|
+
id: number;
|
|
26
|
+
amountSats: string;
|
|
27
|
+
maxFeeSats: string;
|
|
28
|
+
sender: string;
|
|
29
|
+
blockHeight: string;
|
|
30
|
+
recipient: SbtcWithdrawalRecipient;
|
|
31
|
+
status: "pending" | "accepted" | "rejected";
|
|
32
|
+
}
|
|
20
33
|
export declare class SbtcService {
|
|
21
34
|
private network;
|
|
22
35
|
private hiro;
|
|
@@ -40,6 +53,20 @@ export declare class SbtcService {
|
|
|
40
53
|
* Get sBTC peg information
|
|
41
54
|
*/
|
|
42
55
|
getPegInfo(): Promise<SbtcPegInfo>;
|
|
56
|
+
/**
|
|
57
|
+
* Initiate an sBTC withdrawal request (peg-out) through sbtc-withdrawal.
|
|
58
|
+
* Locks (amount + maxFee) of sBTC until signer acceptance/rejection.
|
|
59
|
+
*/
|
|
60
|
+
initiateWithdrawal(account: Account, amount: bigint, maxFee: bigint, recipient: SbtcWithdrawalRecipient, fee?: bigint, sponsored?: boolean): Promise<TransferResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Extract withdrawal request id from initiate-withdrawal transaction result.
|
|
63
|
+
* Returns null if tx is still pending or result is unavailable.
|
|
64
|
+
*/
|
|
65
|
+
getWithdrawalRequestIdFromTx(txid: string): Promise<number | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Fetch withdrawal request details from sbtc-registry.
|
|
68
|
+
*/
|
|
69
|
+
getWithdrawalRequest(requestId: number, senderAddress: string): Promise<SbtcWithdrawalRequest | null>;
|
|
43
70
|
}
|
|
44
71
|
export declare function getSbtcService(network: Network): SbtcService;
|
|
45
72
|
//# sourceMappingURL=sbtc.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbtc.service.d.ts","sourceRoot":"","sources":["../../src/services/sbtc.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sbtc.service.d.ts","sourceRoot":"","sources":["../../src/services/sbtc.service.ts"],"names":[],"mappings":"AAYA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQ7F,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;CAC7C;AAMD,qBAAa,WAAW;IAIV,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,SAAS,CAAkC;gBAE/B,OAAO,EAAE,OAAO;IAKpC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAevD;;;OAGG;IACG,QAAQ,CACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,cAAc,CAAC;IAoC1B;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IAehD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAgBxC;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,uBAAuB,EAClC,GAAG,CAAC,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,cAAc,CAAC;IAyC1B;;;OAGG;IACG,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAexE;;OAEG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;CA0DzC;AAQD,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAK5D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { uintCV, principalCV, someCV, noneCV, bufferCV } from "@stacks/transactions";
|
|
1
|
+
import { uintCV, principalCV, someCV, noneCV, bufferCV, tupleCV, hexToCV, cvToJSON, } from "@stacks/transactions";
|
|
2
2
|
import { getHiroApi } from "./hiro-api.js";
|
|
3
3
|
import { getContracts, parseContractId } from "../config/index.js";
|
|
4
4
|
import { callContract } from "../transactions/builder.js";
|
|
@@ -93,6 +93,92 @@ export class SbtcService {
|
|
|
93
93
|
pegRatio: "1:1",
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Initiate an sBTC withdrawal request (peg-out) through sbtc-withdrawal.
|
|
98
|
+
* Locks (amount + maxFee) of sBTC until signer acceptance/rejection.
|
|
99
|
+
*/
|
|
100
|
+
async initiateWithdrawal(account, amount, maxFee, recipient, fee, sponsored) {
|
|
101
|
+
const withdrawalContract = this.contracts.SBTC_WITHDRAWAL;
|
|
102
|
+
const { address: contractAddress, name: contractName } = parseContractId(withdrawalContract);
|
|
103
|
+
const recipientHash = Buffer.from(recipient.hashbytesHex, "hex");
|
|
104
|
+
const functionArgs = [
|
|
105
|
+
uintCV(amount),
|
|
106
|
+
tupleCV({
|
|
107
|
+
version: bufferCV(Buffer.from([recipient.version])),
|
|
108
|
+
hashbytes: bufferCV(recipientHash),
|
|
109
|
+
}),
|
|
110
|
+
uintCV(maxFee),
|
|
111
|
+
];
|
|
112
|
+
// sbtc-withdrawal locks amount + maxFee in sbtc-token.
|
|
113
|
+
const lockAmount = amount + maxFee;
|
|
114
|
+
const postCondition = createFungiblePostCondition(account.address, this.contracts.SBTC_TOKEN, "sbtc-token", "eq", lockAmount);
|
|
115
|
+
const contractCallOptions = {
|
|
116
|
+
contractAddress,
|
|
117
|
+
contractName,
|
|
118
|
+
functionName: "initiate-withdrawal-request",
|
|
119
|
+
functionArgs,
|
|
120
|
+
postConditions: [postCondition],
|
|
121
|
+
...(fee !== undefined && { fee }),
|
|
122
|
+
};
|
|
123
|
+
if (sponsored) {
|
|
124
|
+
return sponsoredContractCall(account, contractCallOptions, this.network);
|
|
125
|
+
}
|
|
126
|
+
return callContract(account, contractCallOptions);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Extract withdrawal request id from initiate-withdrawal transaction result.
|
|
130
|
+
* Returns null if tx is still pending or result is unavailable.
|
|
131
|
+
*/
|
|
132
|
+
async getWithdrawalRequestIdFromTx(txid) {
|
|
133
|
+
const tx = await this.hiro.getTransaction(txid);
|
|
134
|
+
if (!tx.tx_result?.hex) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const decoded = cvToJSON(hexToCV(tx.tx_result.hex));
|
|
138
|
+
if (!decoded.success || decoded.value?.type !== "uint") {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
const requestId = Number(decoded.value.value);
|
|
142
|
+
return Number.isSafeInteger(requestId) ? requestId : null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Fetch withdrawal request details from sbtc-registry.
|
|
146
|
+
*/
|
|
147
|
+
async getWithdrawalRequest(requestId, senderAddress) {
|
|
148
|
+
const result = await this.hiro.callReadOnlyFunction(this.contracts.SBTC_REGISTRY, "get-withdrawal-request", [uintCV(requestId)], senderAddress);
|
|
149
|
+
if (!result.okay || !result.result) {
|
|
150
|
+
throw new Error(result.cause || "Failed to read withdrawal request");
|
|
151
|
+
}
|
|
152
|
+
const decoded = cvToJSON(hexToCV(result.result));
|
|
153
|
+
if (decoded.value === null) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const value = decoded.value;
|
|
157
|
+
const tuple = value.value;
|
|
158
|
+
const recipientTuple = tuple.recipient?.value;
|
|
159
|
+
if (!recipientTuple?.version || !recipientTuple?.hashbytes) {
|
|
160
|
+
throw new Error("Malformed recipient tuple in withdrawal request");
|
|
161
|
+
}
|
|
162
|
+
const versionHex = String(recipientTuple.version.value).replace(/^0x/, "");
|
|
163
|
+
const hashHex = String(recipientTuple.hashbytes.value).replace(/^0x/, "");
|
|
164
|
+
const statusValue = tuple.status?.value;
|
|
165
|
+
let status = "pending";
|
|
166
|
+
if (statusValue?.type === "bool") {
|
|
167
|
+
status = statusValue.value === true ? "accepted" : "rejected";
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
id: requestId,
|
|
171
|
+
amountSats: String(tuple.amount?.value ?? "0"),
|
|
172
|
+
maxFeeSats: String(tuple["max-fee"]?.value ?? "0"),
|
|
173
|
+
sender: String(tuple.sender?.value ?? ""),
|
|
174
|
+
blockHeight: String(tuple["block-height"]?.value ?? "0"),
|
|
175
|
+
recipient: {
|
|
176
|
+
version: Number.parseInt(versionHex, 16),
|
|
177
|
+
hashbytesHex: hashHex.toLowerCase(),
|
|
178
|
+
},
|
|
179
|
+
status,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
96
182
|
}
|
|
97
183
|
// ============================================================================
|
|
98
184
|
// Helper Functions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sbtc.service.js","sourceRoot":"","sources":["../../src/services/sbtc.service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sbtc.service.js","sourceRoot":"","sources":["../../src/services/sbtc.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,6 @@ export declare function recordTransaction(key: string, txid: string): void;
|
|
|
85
85
|
* Check if account has sufficient balance to pay for x402 endpoint.
|
|
86
86
|
* @throws InsufficientBalanceError if balance is too low
|
|
87
87
|
*/
|
|
88
|
-
export declare function checkSufficientBalance(account: Account, amount: string, asset: string): Promise<void>;
|
|
88
|
+
export declare function checkSufficientBalance(account: Account, amount: string, asset: string, sponsored?: boolean): Promise<void>;
|
|
89
89
|
export { NETWORK, API_URL };
|
|
90
90
|
//# sourceMappingURL=x402.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.service.d.ts","sourceRoot":"","sources":["../../src/services/x402.service.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"x402.service.d.ts","sourceRoot":"","sources":["../../src/services/x402.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
2
|
import { makeSTXTokenTransfer, makeContractCall, uintCV, principalCV, noneCV, PostConditionMode, } from "@stacks/transactions";
|
|
3
|
-
import { decodePaymentRequired, encodePaymentPayload, X402_HEADERS, } from "../utils/x402-protocol.js";
|
|
3
|
+
import { decodePaymentRequired, encodePaymentPayload, generatePaymentId, buildPaymentIdentifierExtension, X402_HEADERS, } from "../utils/x402-protocol.js";
|
|
4
4
|
import { generateWallet, getStxAddress } from "@stacks/wallet-sdk";
|
|
5
5
|
import { NETWORK, API_URL, getStacksNetwork } from "../config/networks.js";
|
|
6
6
|
import { getNetworkFromStacksChainId } from "../config/caip.js";
|
|
@@ -168,12 +168,16 @@ export async function createApiClient(baseUrl) {
|
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
170
|
const txHex = "0x" + transaction.serialize();
|
|
171
|
+
// Generate a stable idempotency key for this logical request.
|
|
172
|
+
// The relay uses it to deduplicate retries without requiring tx hex variation.
|
|
173
|
+
const paymentId = generatePaymentId();
|
|
171
174
|
// Encode PaymentPayloadV2 into payment-signature header
|
|
172
175
|
const encodedPayload = encodePaymentPayload({
|
|
173
176
|
x402Version: 2,
|
|
174
177
|
resource: paymentRequired.resource,
|
|
175
178
|
accepted: selectedOption,
|
|
176
179
|
payload: { transaction: txHex },
|
|
180
|
+
extensions: buildPaymentIdentifierExtension(paymentId),
|
|
177
181
|
});
|
|
178
182
|
// Retry the original request with the payment header
|
|
179
183
|
const originalRequest = error.config;
|
|
@@ -226,9 +230,10 @@ export async function getAccount() {
|
|
|
226
230
|
*/
|
|
227
231
|
export function detectTokenType(asset) {
|
|
228
232
|
const assetLower = asset.trim().toLowerCase();
|
|
229
|
-
// Treat as sBTC
|
|
230
|
-
//
|
|
231
|
-
|
|
233
|
+
// Treat as sBTC if the asset is exactly "sbtc" (token name),
|
|
234
|
+
// a full contract identifier ending with "::token-sbtc",
|
|
235
|
+
// or a contract identifier ending with ".sbtc-token"
|
|
236
|
+
if (assetLower === 'sbtc' || assetLower.endsWith('::token-sbtc') || assetLower.endsWith('.sbtc-token')) {
|
|
232
237
|
return 'sBTC';
|
|
233
238
|
}
|
|
234
239
|
return 'STX';
|
|
@@ -342,7 +347,7 @@ export function recordTransaction(key, txid) {
|
|
|
342
347
|
* Check if account has sufficient balance to pay for x402 endpoint.
|
|
343
348
|
* @throws InsufficientBalanceError if balance is too low
|
|
344
349
|
*/
|
|
345
|
-
export async function checkSufficientBalance(account, amount, asset) {
|
|
350
|
+
export async function checkSufficientBalance(account, amount, asset, sponsored = false) {
|
|
346
351
|
const tokenType = detectTokenType(asset);
|
|
347
352
|
const requiredAmount = BigInt(amount);
|
|
348
353
|
if (tokenType === 'sBTC') {
|
|
@@ -354,17 +359,20 @@ export async function checkSufficientBalance(account, amount, asset) {
|
|
|
354
359
|
throw new InsufficientBalanceError(`Insufficient sBTC balance: need ${formatSbtc(amount)}, have ${formatSbtc(balanceInfo.balance)} (shortfall: ${formatSbtc(shortfall.toString())}). ` +
|
|
355
360
|
`Deposit more sBTC via the bridge at https://bridge.stx.eco or use a different wallet.`, 'sBTC', balanceInfo.balance, amount, shortfall.toString());
|
|
356
361
|
}
|
|
357
|
-
// sBTC transfers are contract calls that also require STX for gas fees
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
`
|
|
362
|
+
// sBTC transfers are contract calls that also require STX for gas fees,
|
|
363
|
+
// unless the transaction is sponsored (relay pays gas; fee: 0n).
|
|
364
|
+
if (!sponsored) {
|
|
365
|
+
const hiroApiForSbtc = getHiroApi(account.network);
|
|
366
|
+
const stxInfoForSbtc = await hiroApiForSbtc.getStxBalance(account.address);
|
|
367
|
+
const stxBalanceForSbtc = BigInt(stxInfoForSbtc.balance);
|
|
368
|
+
const sbtcFees = await hiroApiForSbtc.getMempoolFees();
|
|
369
|
+
const estimatedSbtcFee = BigInt(sbtcFees.contract_call.high_priority);
|
|
370
|
+
if (stxBalanceForSbtc < estimatedSbtcFee) {
|
|
371
|
+
const stxShortfall = estimatedSbtcFee - stxBalanceForSbtc;
|
|
372
|
+
throw new InsufficientBalanceError(`Insufficient STX balance to cover sBTC transfer fee: need ${formatStx(estimatedSbtcFee.toString())} estimated fee, ` +
|
|
373
|
+
`have ${formatStx(stxInfoForSbtc.balance)} (shortfall: ${formatStx(stxShortfall.toString())}). ` +
|
|
374
|
+
`Deposit more STX or use a different wallet.`, 'STX', stxInfoForSbtc.balance, estimatedSbtcFee.toString(), stxShortfall.toString());
|
|
375
|
+
}
|
|
368
376
|
}
|
|
369
377
|
return;
|
|
370
378
|
}
|
|
@@ -372,13 +380,16 @@ export async function checkSufficientBalance(account, amount, asset) {
|
|
|
372
380
|
const hiroApi = getHiroApi(account.network);
|
|
373
381
|
const balanceInfo = await hiroApi.getStxBalance(account.address);
|
|
374
382
|
const balance = BigInt(balanceInfo.balance);
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
383
|
+
let totalRequired = requiredAmount;
|
|
384
|
+
if (!sponsored) {
|
|
385
|
+
const mempoolFees = await hiroApi.getMempoolFees();
|
|
386
|
+
const estimatedFee = BigInt(mempoolFees.contract_call.high_priority);
|
|
387
|
+
totalRequired = requiredAmount + estimatedFee;
|
|
388
|
+
}
|
|
378
389
|
if (balance >= totalRequired)
|
|
379
390
|
return;
|
|
380
391
|
const shortfall = totalRequired - balance;
|
|
381
|
-
throw new InsufficientBalanceError(`Insufficient STX balance: need ${formatStx(totalRequired.toString())} (${formatStx(amount)} payment +
|
|
392
|
+
throw new InsufficientBalanceError(`Insufficient STX balance: need ${formatStx(totalRequired.toString())} (${formatStx(amount)} payment${!sponsored ? ` + estimated fee` : ''}), ` +
|
|
382
393
|
`have ${formatStx(balanceInfo.balance)} (shortfall: ${formatStx(shortfall.toString())}). ` +
|
|
383
394
|
`Deposit more STX or use a different wallet.`, 'STX', balanceInfo.balance, totalRequired.toString(), shortfall.toString());
|
|
384
395
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.service.js","sourceRoot":"","sources":["../../src/services/x402.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"x402.service.js","sourceRoot":"","sources":["../../src/services/x402.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.tools.d.ts","sourceRoot":"","sources":["../../src/tools/contract.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.tools.d.ts","sourceRoot":"","sources":["../../src/tools/contract.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuGpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6L7D"}
|
|
@@ -2,10 +2,12 @@ import { z } from "zod";
|
|
|
2
2
|
import { PostConditionMode } from "@stacks/transactions";
|
|
3
3
|
import { getAccount, NETWORK } from "../services/x402.service.js";
|
|
4
4
|
import { callContract, deployContract } from "../transactions/builder.js";
|
|
5
|
+
import { sponsoredContractCall, sponsoredContractDeploy } from "../transactions/sponsor-builder.js";
|
|
5
6
|
import { parseArgToClarityValue } from "../transactions/clarity-values.js";
|
|
6
7
|
import { getHiroApi, getTransactionStatus } from "../services/hiro-api.js";
|
|
7
8
|
import { getExplorerTxUrl } from "../config/networks.js";
|
|
8
9
|
import { createJsonResponse, createErrorResponse, resolveFee } from "../utils/index.js";
|
|
10
|
+
import { sponsoredSchema } from "./schemas.js";
|
|
9
11
|
import { createStxPostCondition, createContractStxPostCondition, createFungiblePostCondition, createContractFungiblePostCondition, createNftSendPostCondition, createNftNotSendPostCondition, } from "../transactions/post-conditions.js";
|
|
10
12
|
/**
|
|
11
13
|
* Parse a post condition descriptor from JSON to a PostCondition object
|
|
@@ -110,26 +112,37 @@ Post conditions constrain what assets the transaction can move. Each condition i
|
|
|
110
112
|
fee: z
|
|
111
113
|
.string()
|
|
112
114
|
.optional()
|
|
113
|
-
.describe("Optional fee: 'low' | 'medium' | 'high' preset or micro-STX amount. If omitted, auto-estimated."),
|
|
115
|
+
.describe("Optional fee: 'low' | 'medium' | 'high' preset or micro-STX amount. If omitted, auto-estimated. Ignored when sponsored=true."),
|
|
116
|
+
sponsored: sponsoredSchema,
|
|
114
117
|
},
|
|
115
|
-
}, async ({ contractAddress, contractName, functionName, functionArgs, postConditionMode, postConditions, fee }) => {
|
|
118
|
+
}, async ({ contractAddress, contractName, functionName, functionArgs, postConditionMode, postConditions, fee, sponsored }) => {
|
|
116
119
|
try {
|
|
117
120
|
const account = await getAccount();
|
|
118
121
|
const clarityArgs = functionArgs.map(parseArgToClarityValue);
|
|
119
|
-
const resolvedFee = await resolveFee(fee, NETWORK, "contract_call");
|
|
120
122
|
// Parse post conditions if provided
|
|
121
123
|
const parsedPostConditions = postConditions
|
|
122
124
|
? postConditions.map(parsePostCondition)
|
|
123
125
|
: undefined;
|
|
124
|
-
const
|
|
126
|
+
const contractCallOptions = {
|
|
125
127
|
contractAddress,
|
|
126
128
|
contractName,
|
|
127
129
|
functionName,
|
|
128
130
|
functionArgs: clarityArgs,
|
|
129
131
|
postConditionMode: postConditionMode === "allow" ? PostConditionMode.Allow : PostConditionMode.Deny,
|
|
130
132
|
...(parsedPostConditions && { postConditions: parsedPostConditions }),
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
};
|
|
134
|
+
let result;
|
|
135
|
+
if (sponsored) {
|
|
136
|
+
// Sponsored: relay pays gas fees, so fee parameter is ignored
|
|
137
|
+
result = await sponsoredContractCall(account, contractCallOptions, NETWORK);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const resolvedFee = await resolveFee(fee, NETWORK, "contract_call");
|
|
141
|
+
result = await callContract(account, {
|
|
142
|
+
...contractCallOptions,
|
|
143
|
+
...(resolvedFee !== undefined && { fee: resolvedFee }),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
133
146
|
return createJsonResponse({
|
|
134
147
|
success: true,
|
|
135
148
|
txid: result.txid,
|
|
@@ -138,6 +151,7 @@ Post conditions constrain what assets the transaction can move. Each condition i
|
|
|
138
151
|
args: functionArgs,
|
|
139
152
|
network: NETWORK,
|
|
140
153
|
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
154
|
+
...(sponsored && { sponsored: true }),
|
|
141
155
|
});
|
|
142
156
|
}
|
|
143
157
|
catch (error) {
|
|
@@ -153,23 +167,32 @@ Post conditions constrain what assets the transaction can move. Each condition i
|
|
|
153
167
|
fee: z
|
|
154
168
|
.string()
|
|
155
169
|
.optional()
|
|
156
|
-
.describe("Optional fee: 'low' | 'medium' | 'high' preset or micro-STX amount. If omitted, auto-estimated."),
|
|
170
|
+
.describe("Optional fee: 'low' | 'medium' | 'high' preset or micro-STX amount. If omitted, auto-estimated. Ignored when sponsored=true."),
|
|
171
|
+
sponsored: sponsoredSchema,
|
|
157
172
|
},
|
|
158
|
-
}, async ({ contractName, codeBody, fee }) => {
|
|
173
|
+
}, async ({ contractName, codeBody, fee, sponsored }) => {
|
|
159
174
|
try {
|
|
160
175
|
const account = await getAccount();
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
codeBody,
|
|
165
|
-
|
|
166
|
-
|
|
176
|
+
let result;
|
|
177
|
+
if (sponsored) {
|
|
178
|
+
// Sponsored: relay pays gas fees, so fee parameter is ignored
|
|
179
|
+
result = await sponsoredContractDeploy(account, { contractName, codeBody }, NETWORK);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
const resolvedFee = await resolveFee(fee, NETWORK, "smart_contract");
|
|
183
|
+
result = await deployContract(account, {
|
|
184
|
+
contractName,
|
|
185
|
+
codeBody,
|
|
186
|
+
...(resolvedFee !== undefined && { fee: resolvedFee }),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
167
189
|
return createJsonResponse({
|
|
168
190
|
success: true,
|
|
169
191
|
txid: result.txid,
|
|
170
192
|
contractId: `${account.address}.${contractName}`,
|
|
171
193
|
network: NETWORK,
|
|
172
194
|
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
195
|
+
...(sponsored && { sponsored: true }),
|
|
173
196
|
});
|
|
174
197
|
}
|
|
175
198
|
catch (error) {
|