@aibtc/mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +340 -0
  2. package/dist/api.d.ts +9 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +79 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/config/contracts.d.ts +169 -0
  7. package/dist/config/contracts.d.ts.map +1 -0
  8. package/dist/config/contracts.js +250 -0
  9. package/dist/config/contracts.js.map +1 -0
  10. package/dist/config/index.d.ts +3 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +3 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/networks.d.ts +11 -0
  15. package/dist/config/networks.d.ts.map +1 -0
  16. package/dist/config/networks.js +21 -0
  17. package/dist/config/networks.js.map +1 -0
  18. package/dist/endpoints/index.d.ts +2 -0
  19. package/dist/endpoints/index.d.ts.map +1 -0
  20. package/dist/endpoints/index.js +2 -0
  21. package/dist/endpoints/index.js.map +1 -0
  22. package/dist/endpoints/registry.d.ts +38 -0
  23. package/dist/endpoints/registry.d.ts.map +1 -0
  24. package/dist/endpoints/registry.js +935 -0
  25. package/dist/endpoints/registry.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +79 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/services/bitflow.service.d.ts +159 -0
  31. package/dist/services/bitflow.service.d.ts.map +1 -0
  32. package/dist/services/bitflow.service.js +325 -0
  33. package/dist/services/bitflow.service.js.map +1 -0
  34. package/dist/services/bns.service.d.ts +87 -0
  35. package/dist/services/bns.service.d.ts.map +1 -0
  36. package/dist/services/bns.service.js +312 -0
  37. package/dist/services/bns.service.js.map +1 -0
  38. package/dist/services/defi.service.d.ts +146 -0
  39. package/dist/services/defi.service.d.ts.map +1 -0
  40. package/dist/services/defi.service.js +461 -0
  41. package/dist/services/defi.service.js.map +1 -0
  42. package/dist/services/hiro-api.d.ts +438 -0
  43. package/dist/services/hiro-api.d.ts.map +1 -0
  44. package/dist/services/hiro-api.js +376 -0
  45. package/dist/services/hiro-api.js.map +1 -0
  46. package/dist/services/nft.service.d.ts +70 -0
  47. package/dist/services/nft.service.d.ts.map +1 -0
  48. package/dist/services/nft.service.js +148 -0
  49. package/dist/services/nft.service.js.map +1 -0
  50. package/dist/services/sbtc.service.d.ts +44 -0
  51. package/dist/services/sbtc.service.d.ts.map +1 -0
  52. package/dist/services/sbtc.service.js +100 -0
  53. package/dist/services/sbtc.service.js.map +1 -0
  54. package/dist/services/scaffold.service.d.ts +41 -0
  55. package/dist/services/scaffold.service.d.ts.map +1 -0
  56. package/dist/services/scaffold.service.js +1055 -0
  57. package/dist/services/scaffold.service.js.map +1 -0
  58. package/dist/services/stacking.service.d.ts +58 -0
  59. package/dist/services/stacking.service.d.ts.map +1 -0
  60. package/dist/services/stacking.service.js +153 -0
  61. package/dist/services/stacking.service.js.map +1 -0
  62. package/dist/services/tokens.service.d.ts +62 -0
  63. package/dist/services/tokens.service.d.ts.map +1 -0
  64. package/dist/services/tokens.service.js +119 -0
  65. package/dist/services/tokens.service.js.map +1 -0
  66. package/dist/services/wallet-manager.d.ts +107 -0
  67. package/dist/services/wallet-manager.d.ts.map +1 -0
  68. package/dist/services/wallet-manager.js +389 -0
  69. package/dist/services/wallet-manager.js.map +1 -0
  70. package/dist/services/x402.service.d.ts +26 -0
  71. package/dist/services/x402.service.d.ts.map +1 -0
  72. package/dist/services/x402.service.js +125 -0
  73. package/dist/services/x402.service.js.map +1 -0
  74. package/dist/tools/bitflow.tools.d.ts +3 -0
  75. package/dist/tools/bitflow.tools.d.ts.map +1 -0
  76. package/dist/tools/bitflow.tools.js +501 -0
  77. package/dist/tools/bitflow.tools.js.map +1 -0
  78. package/dist/tools/bns.tools.d.ts +3 -0
  79. package/dist/tools/bns.tools.d.ts.map +1 -0
  80. package/dist/tools/bns.tools.js +164 -0
  81. package/dist/tools/bns.tools.js.map +1 -0
  82. package/dist/tools/contract.tools.d.ts +3 -0
  83. package/dist/tools/contract.tools.d.ts.map +1 -0
  84. package/dist/tools/contract.tools.js +126 -0
  85. package/dist/tools/contract.tools.js.map +1 -0
  86. package/dist/tools/defi.tools.d.ts +3 -0
  87. package/dist/tools/defi.tools.d.ts.map +1 -0
  88. package/dist/tools/defi.tools.js +425 -0
  89. package/dist/tools/defi.tools.js.map +1 -0
  90. package/dist/tools/endpoint.tools.d.ts +3 -0
  91. package/dist/tools/endpoint.tools.d.ts.map +1 -0
  92. package/dist/tools/endpoint.tools.js +157 -0
  93. package/dist/tools/endpoint.tools.js.map +1 -0
  94. package/dist/tools/index.d.ts +6 -0
  95. package/dist/tools/index.d.ts.map +1 -0
  96. package/dist/tools/index.js +52 -0
  97. package/dist/tools/index.js.map +1 -0
  98. package/dist/tools/nft.tools.d.ts +3 -0
  99. package/dist/tools/nft.tools.d.ts.map +1 -0
  100. package/dist/tools/nft.tools.js +154 -0
  101. package/dist/tools/nft.tools.js.map +1 -0
  102. package/dist/tools/openrouter.tools.d.ts +3 -0
  103. package/dist/tools/openrouter.tools.d.ts.map +1 -0
  104. package/dist/tools/openrouter.tools.js +664 -0
  105. package/dist/tools/openrouter.tools.js.map +1 -0
  106. package/dist/tools/query.tools.d.ts +3 -0
  107. package/dist/tools/query.tools.d.ts.map +1 -0
  108. package/dist/tools/query.tools.js +209 -0
  109. package/dist/tools/query.tools.js.map +1 -0
  110. package/dist/tools/sbtc.tools.d.ts +3 -0
  111. package/dist/tools/sbtc.tools.d.ts.map +1 -0
  112. package/dist/tools/sbtc.tools.js +103 -0
  113. package/dist/tools/sbtc.tools.js.map +1 -0
  114. package/dist/tools/scaffold.tools.d.ts +3 -0
  115. package/dist/tools/scaffold.tools.d.ts.map +1 -0
  116. package/dist/tools/scaffold.tools.js +216 -0
  117. package/dist/tools/scaffold.tools.js.map +1 -0
  118. package/dist/tools/stacking.tools.d.ts +3 -0
  119. package/dist/tools/stacking.tools.d.ts.map +1 -0
  120. package/dist/tools/stacking.tools.js +112 -0
  121. package/dist/tools/stacking.tools.js.map +1 -0
  122. package/dist/tools/tokens.tools.d.ts +3 -0
  123. package/dist/tools/tokens.tools.d.ts.map +1 -0
  124. package/dist/tools/tokens.tools.js +154 -0
  125. package/dist/tools/tokens.tools.js.map +1 -0
  126. package/dist/tools/transfer.tools.d.ts +3 -0
  127. package/dist/tools/transfer.tools.d.ts.map +1 -0
  128. package/dist/tools/transfer.tools.js +62 -0
  129. package/dist/tools/transfer.tools.js.map +1 -0
  130. package/dist/tools/wallet-management.tools.d.ts +6 -0
  131. package/dist/tools/wallet-management.tools.d.ts.map +1 -0
  132. package/dist/tools/wallet-management.tools.js +390 -0
  133. package/dist/tools/wallet-management.tools.js.map +1 -0
  134. package/dist/tools/wallet.tools.d.ts +3 -0
  135. package/dist/tools/wallet.tools.d.ts.map +1 -0
  136. package/dist/tools/wallet.tools.js +105 -0
  137. package/dist/tools/wallet.tools.js.map +1 -0
  138. package/dist/transactions/builder.d.ts +56 -0
  139. package/dist/transactions/builder.d.ts.map +1 -0
  140. package/dist/transactions/builder.js +134 -0
  141. package/dist/transactions/builder.js.map +1 -0
  142. package/dist/transactions/clarity-values.d.ts +67 -0
  143. package/dist/transactions/clarity-values.d.ts.map +1 -0
  144. package/dist/transactions/clarity-values.js +169 -0
  145. package/dist/transactions/clarity-values.js.map +1 -0
  146. package/dist/transactions/post-conditions.d.ts +27 -0
  147. package/dist/transactions/post-conditions.d.ts.map +1 -0
  148. package/dist/transactions/post-conditions.js +101 -0
  149. package/dist/transactions/post-conditions.js.map +1 -0
  150. package/dist/utils/encryption.d.ts +33 -0
  151. package/dist/utils/encryption.d.ts.map +1 -0
  152. package/dist/utils/encryption.js +110 -0
  153. package/dist/utils/encryption.js.map +1 -0
  154. package/dist/utils/errors.d.ts +84 -0
  155. package/dist/utils/errors.d.ts.map +1 -0
  156. package/dist/utils/errors.js +132 -0
  157. package/dist/utils/errors.js.map +1 -0
  158. package/dist/utils/formatting.d.ts +51 -0
  159. package/dist/utils/formatting.d.ts.map +1 -0
  160. package/dist/utils/formatting.js +114 -0
  161. package/dist/utils/formatting.js.map +1 -0
  162. package/dist/utils/index.d.ts +6 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +6 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/storage.d.ts +90 -0
  167. package/dist/utils/storage.d.ts.map +1 -0
  168. package/dist/utils/storage.js +196 -0
  169. package/dist/utils/storage.js.map +1 -0
  170. package/dist/utils/validation.d.ts +67 -0
  171. package/dist/utils/validation.d.ts.map +1 -0
  172. package/dist/utils/validation.js +74 -0
  173. package/dist/utils/validation.js.map +1 -0
  174. package/dist/wallet.d.ts +86 -0
  175. package/dist/wallet.d.ts.map +1 -0
  176. package/dist/wallet.js +279 -0
  177. package/dist/wallet.js.map +1 -0
  178. package/package.json +58 -0
@@ -0,0 +1,87 @@
1
+ import { type Network } from "../config/index.js";
2
+ import { type Account, type TransferResult } from "../transactions/builder.js";
3
+ export interface BnsLookupResult {
4
+ name: string;
5
+ address: string;
6
+ namespace: string;
7
+ expireBlock: number;
8
+ zonefile?: string;
9
+ }
10
+ export interface BnsNameInfo {
11
+ name: string;
12
+ namespace: string;
13
+ address: string;
14
+ expireBlock: number;
15
+ gracePeriod: number;
16
+ status: string;
17
+ zonefile?: string;
18
+ zonefileHash?: string;
19
+ lastTxId: string;
20
+ }
21
+ export interface BnsPrice {
22
+ units: string;
23
+ amount: string;
24
+ amountStx: string;
25
+ }
26
+ export declare class BnsService {
27
+ private network;
28
+ private hiro;
29
+ private bnsV2;
30
+ private contracts;
31
+ constructor(network: Network);
32
+ /**
33
+ * Lookup a BNS name and get the associated address
34
+ * Uses BNS V2 API for .btc names, falls back to Hiro API for other namespaces
35
+ */
36
+ lookupName(name: string): Promise<BnsLookupResult | null>;
37
+ /**
38
+ * Reverse lookup - get BNS names for an address
39
+ * Combines results from both BNS V2 and Hiro API (V1)
40
+ */
41
+ reverseLookup(address: string): Promise<string[]>;
42
+ /**
43
+ * Get detailed info about a BNS name
44
+ * Uses BNS V2 API for .btc names, falls back to Hiro API
45
+ */
46
+ getNameInfo(name: string): Promise<BnsNameInfo | null>;
47
+ /**
48
+ * Check if a BNS name is available for registration
49
+ * A name is available if it's not found in either BNS V2 or V1
50
+ */
51
+ checkAvailability(name: string): Promise<boolean>;
52
+ /**
53
+ * Get the price of a BNS name
54
+ */
55
+ getPrice(name: string): Promise<BnsPrice | null>;
56
+ /**
57
+ * Get all domains owned by an address
58
+ */
59
+ getUserDomains(address: string): Promise<string[]>;
60
+ /**
61
+ * Resolve a name to an address (convenient wrapper)
62
+ */
63
+ resolve(name: string): Promise<string | null>;
64
+ /**
65
+ * Register a new BNS name
66
+ * Note: BNS registration is a multi-step process involving preorder and register
67
+ */
68
+ preorderName(account: Account, name: string, salt: string): Promise<TransferResult>;
69
+ /**
70
+ * Register a name after preorder
71
+ */
72
+ registerName(account: Account, name: string, salt: string, zonefile?: string): Promise<TransferResult>;
73
+ /**
74
+ * Update a name's zonefile
75
+ */
76
+ updateZonefile(account: Account, name: string, zonefile: string): Promise<TransferResult>;
77
+ /**
78
+ * Transfer a BNS name to a new owner
79
+ */
80
+ transferName(account: Account, name: string, newOwner: string, zonefile?: string): Promise<TransferResult>;
81
+ /**
82
+ * Renew a BNS name
83
+ */
84
+ renewName(account: Account, name: string): Promise<TransferResult>;
85
+ }
86
+ export declare function getBnsService(network: Network): BnsService;
87
+ //# sourceMappingURL=bns.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bns.service.d.ts","sourceRoot":"","sources":["../../src/services/bns.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAM7F,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,UAAU;IAKT,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAAkC;gBAE/B,OAAO,EAAE,OAAO;IAMpC;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAqC/D;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BvD;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IA2C5D;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BvD;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAoBtD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxD;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKnD;;;OAGG;IACG,YAAY,CAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC;IAyB1B;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC;IAqB1B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC;IAoB1B;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC;IAqB1B;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC;CAmB3B;AAQD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAK1D"}
@@ -0,0 +1,312 @@
1
+ import { bufferCV, uintCV } from "@stacks/transactions";
2
+ import { getHiroApi, getBnsV2Api } from "./hiro-api.js";
3
+ import { getContracts, parseContractId } from "../config/index.js";
4
+ import { callContract } from "../transactions/builder.js";
5
+ // ============================================================================
6
+ // BNS Service
7
+ // ============================================================================
8
+ export class BnsService {
9
+ network;
10
+ hiro;
11
+ bnsV2;
12
+ contracts;
13
+ constructor(network) {
14
+ this.network = network;
15
+ this.hiro = getHiroApi(network);
16
+ this.bnsV2 = getBnsV2Api();
17
+ this.contracts = getContracts(network);
18
+ }
19
+ /**
20
+ * Lookup a BNS name and get the associated address
21
+ * Uses BNS V2 API for .btc names, falls back to Hiro API for other namespaces
22
+ */
23
+ async lookupName(name) {
24
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
25
+ const [baseName, namespace] = fullName.split(".");
26
+ // For .btc names, use BNS V2 API (where most names are registered)
27
+ if (namespace === "btc" || !namespace) {
28
+ try {
29
+ const info = await this.bnsV2.getNameInfo(fullName);
30
+ if (info.status === "active" && info.data.is_valid && !info.data.revoked) {
31
+ return {
32
+ name: fullName,
33
+ address: info.data.owner,
34
+ namespace: info.data.namespace_string || "btc",
35
+ expireBlock: parseInt(info.data.renewal_height, 10),
36
+ };
37
+ }
38
+ return null;
39
+ }
40
+ catch {
41
+ // Name not found in BNS V2, try Hiro API as fallback (for legacy BNS V1 names)
42
+ }
43
+ }
44
+ // Fallback to Hiro API for other namespaces or legacy V1 names
45
+ try {
46
+ const info = await this.hiro.getBnsNameInfo(fullName);
47
+ return {
48
+ name: fullName,
49
+ address: info.address,
50
+ namespace: namespace || "btc",
51
+ expireBlock: info.expire_block,
52
+ zonefile: info.zonefile,
53
+ };
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ /**
60
+ * Reverse lookup - get BNS names for an address
61
+ * Combines results from both BNS V2 and Hiro API (V1)
62
+ */
63
+ async reverseLookup(address) {
64
+ const allNames = [];
65
+ // Get names from BNS V2
66
+ try {
67
+ const v2Result = await this.bnsV2.getNamesOwnedByAddress(address);
68
+ if (v2Result.names) {
69
+ allNames.push(...v2Result.names.map(n => n.full_name));
70
+ }
71
+ }
72
+ catch {
73
+ // BNS V2 lookup failed, continue with Hiro API
74
+ }
75
+ // Get names from Hiro API (BNS V1)
76
+ try {
77
+ const v1Result = await this.hiro.getBnsNamesOwnedByAddress(address);
78
+ if (v1Result.names) {
79
+ // Add only names not already in the list
80
+ for (const name of v1Result.names) {
81
+ if (!allNames.includes(name)) {
82
+ allNames.push(name);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ catch {
88
+ // Hiro API lookup failed
89
+ }
90
+ return allNames;
91
+ }
92
+ /**
93
+ * Get detailed info about a BNS name
94
+ * Uses BNS V2 API for .btc names, falls back to Hiro API
95
+ */
96
+ async getNameInfo(name) {
97
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
98
+ const [baseName, namespace] = fullName.split(".");
99
+ // For .btc names, try BNS V2 first
100
+ if (namespace === "btc" || !namespace) {
101
+ try {
102
+ const info = await this.bnsV2.getNameInfo(fullName);
103
+ if (info.data) {
104
+ return {
105
+ name: fullName,
106
+ namespace: info.data.namespace_string || "btc",
107
+ address: info.data.owner,
108
+ expireBlock: parseInt(info.data.renewal_height, 10),
109
+ gracePeriod: 0, // BNS V2 doesn't have grace period in the same way
110
+ status: info.status,
111
+ lastTxId: "", // Not available in V2 response
112
+ };
113
+ }
114
+ }
115
+ catch {
116
+ // Name not found in BNS V2, try Hiro API
117
+ }
118
+ }
119
+ // Fallback to Hiro API
120
+ try {
121
+ const info = await this.hiro.getBnsNameInfo(fullName);
122
+ return {
123
+ name: fullName,
124
+ namespace: namespace || "btc",
125
+ address: info.address,
126
+ expireBlock: info.expire_block,
127
+ gracePeriod: info.grace_period,
128
+ status: info.status,
129
+ zonefile: info.zonefile,
130
+ zonefileHash: info.zonefile_hash,
131
+ lastTxId: info.last_txid,
132
+ };
133
+ }
134
+ catch {
135
+ return null;
136
+ }
137
+ }
138
+ /**
139
+ * Check if a BNS name is available for registration
140
+ * A name is available if it's not found in either BNS V2 or V1
141
+ */
142
+ async checkAvailability(name) {
143
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
144
+ // Check BNS V2 first (where most .btc names are registered)
145
+ try {
146
+ const exists = await this.bnsV2.nameExists(fullName);
147
+ if (exists) {
148
+ return false; // Name is taken
149
+ }
150
+ }
151
+ catch {
152
+ // Error checking BNS V2, continue to check V1
153
+ }
154
+ // Also check Hiro API (BNS V1) for legacy names
155
+ try {
156
+ const info = await this.hiro.getBnsNameInfo(fullName);
157
+ if (info && info.address) {
158
+ return false; // Name is taken in V1
159
+ }
160
+ }
161
+ catch {
162
+ // Name not found in V1 either - it's available
163
+ }
164
+ return true;
165
+ }
166
+ /**
167
+ * Get the price of a BNS name
168
+ */
169
+ async getPrice(name) {
170
+ try {
171
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
172
+ const [baseName] = fullName.split(".");
173
+ const price = await this.hiro.getBnsNamePrice(baseName);
174
+ const amountMicroStx = price.amount;
175
+ const amountStx = (BigInt(amountMicroStx) / BigInt(1_000_000)).toString();
176
+ return {
177
+ units: price.units,
178
+ amount: amountMicroStx,
179
+ amountStx,
180
+ };
181
+ }
182
+ catch {
183
+ return null;
184
+ }
185
+ }
186
+ /**
187
+ * Get all domains owned by an address
188
+ */
189
+ async getUserDomains(address) {
190
+ return this.reverseLookup(address);
191
+ }
192
+ /**
193
+ * Resolve a name to an address (convenient wrapper)
194
+ */
195
+ async resolve(name) {
196
+ const result = await this.lookupName(name);
197
+ return result?.address || null;
198
+ }
199
+ /**
200
+ * Register a new BNS name
201
+ * Note: BNS registration is a multi-step process involving preorder and register
202
+ */
203
+ async preorderName(account, name, salt) {
204
+ const { address: contractAddress, name: contractName } = parseContractId(this.contracts.BNS);
205
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
206
+ const [baseName, namespace] = fullName.split(".");
207
+ // Create the hashed salted name for preorder
208
+ const crypto = await import("crypto");
209
+ const hash = crypto.createHash("sha256")
210
+ .update(Buffer.from(fullName + salt))
211
+ .digest();
212
+ const functionArgs = [
213
+ bufferCV(hash),
214
+ uintCV(0), // STX to burn (registration fee)
215
+ ];
216
+ return callContract(account, {
217
+ contractAddress,
218
+ contractName,
219
+ functionName: "name-preorder",
220
+ functionArgs,
221
+ });
222
+ }
223
+ /**
224
+ * Register a name after preorder
225
+ */
226
+ async registerName(account, name, salt, zonefile) {
227
+ const { address: contractAddress, name: contractName } = parseContractId(this.contracts.BNS);
228
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
229
+ const [baseName, namespace] = fullName.split(".");
230
+ const functionArgs = [
231
+ bufferCV(Buffer.from(namespace)),
232
+ bufferCV(Buffer.from(baseName)),
233
+ bufferCV(Buffer.from(salt)),
234
+ zonefile ? bufferCV(Buffer.from(zonefile)) : bufferCV(Buffer.alloc(0)),
235
+ ];
236
+ return callContract(account, {
237
+ contractAddress,
238
+ contractName,
239
+ functionName: "name-register",
240
+ functionArgs,
241
+ });
242
+ }
243
+ /**
244
+ * Update a name's zonefile
245
+ */
246
+ async updateZonefile(account, name, zonefile) {
247
+ const { address: contractAddress, name: contractName } = parseContractId(this.contracts.BNS);
248
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
249
+ const [baseName, namespace] = fullName.split(".");
250
+ const functionArgs = [
251
+ bufferCV(Buffer.from(namespace)),
252
+ bufferCV(Buffer.from(baseName)),
253
+ bufferCV(Buffer.from(zonefile)),
254
+ ];
255
+ return callContract(account, {
256
+ contractAddress,
257
+ contractName,
258
+ functionName: "name-update",
259
+ functionArgs,
260
+ });
261
+ }
262
+ /**
263
+ * Transfer a BNS name to a new owner
264
+ */
265
+ async transferName(account, name, newOwner, zonefile) {
266
+ const { address: contractAddress, name: contractName } = parseContractId(this.contracts.BNS);
267
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
268
+ const [baseName, namespace] = fullName.split(".");
269
+ const functionArgs = [
270
+ bufferCV(Buffer.from(namespace)),
271
+ bufferCV(Buffer.from(baseName)),
272
+ { type: "principal", value: newOwner },
273
+ zonefile ? bufferCV(Buffer.from(zonefile)) : bufferCV(Buffer.alloc(0)),
274
+ ];
275
+ return callContract(account, {
276
+ contractAddress,
277
+ contractName,
278
+ functionName: "name-transfer",
279
+ functionArgs,
280
+ });
281
+ }
282
+ /**
283
+ * Renew a BNS name
284
+ */
285
+ async renewName(account, name) {
286
+ const { address: contractAddress, name: contractName } = parseContractId(this.contracts.BNS);
287
+ const fullName = name.endsWith(".btc") ? name : `${name}.btc`;
288
+ const [baseName, namespace] = fullName.split(".");
289
+ const functionArgs = [
290
+ bufferCV(Buffer.from(namespace)),
291
+ bufferCV(Buffer.from(baseName)),
292
+ uintCV(0), // STX to burn (renewal fee)
293
+ ];
294
+ return callContract(account, {
295
+ contractAddress,
296
+ contractName,
297
+ functionName: "name-renewal",
298
+ functionArgs,
299
+ });
300
+ }
301
+ }
302
+ // ============================================================================
303
+ // Helper Functions
304
+ // ============================================================================
305
+ let _bnsServiceInstance = null;
306
+ export function getBnsService(network) {
307
+ if (!_bnsServiceInstance || _bnsServiceInstance["network"] !== network) {
308
+ _bnsServiceInstance = new BnsService(network);
309
+ }
310
+ return _bnsServiceInstance;
311
+ }
312
+ //# sourceMappingURL=bns.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bns.service.js","sourceRoot":"","sources":["../../src/services/bns.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAkB,UAAU,EAAW,WAAW,EAAmB,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAqC,MAAM,4BAA4B,CAAC;AAgC7F,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,OAAO,UAAU;IAKD;IAJZ,IAAI,CAAiB;IACrB,KAAK,CAAkB;IACvB,SAAS,CAAkC;IAEnD,YAAoB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAClC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,mEAAmE;QACnE,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzE,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;wBACxB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK;wBAC9C,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;qBACpD,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,+EAA+E;YACjF,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,SAAS,IAAI,KAAK;gBAC7B,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,yCAAyC;gBACzC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC7B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,mCAAmC;QACnC,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK;wBAC9C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;wBACxB,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;wBACnD,WAAW,EAAE,CAAC,EAAE,mDAAmD;wBACnE,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,QAAQ,EAAE,EAAE,EAAE,+BAA+B;qBAC9C,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,SAAS,IAAI,KAAK;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,QAAQ,EAAE,IAAI,CAAC,SAAS;aACzB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAE9D,4DAA4D;QAC5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,KAAK,CAAC,CAAC,gBAAgB;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,CAAC,sBAAsB;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;YAC9D,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAExD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;YACpC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE1E,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,cAAc;gBACtB,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,OAAgB,EAChB,IAAY,EACZ,IAAY;QAEZ,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;aACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;aACpC,MAAM,EAAE,CAAC;QAEZ,MAAM,YAAY,GAAmB;YACnC,QAAQ,CAAC,IAAI,CAAC;YACd,MAAM,CAAC,CAAC,CAAC,EAAE,iCAAiC;SAC7C,CAAC;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE;YAC3B,eAAe;YACf,YAAY;YACZ,YAAY,EAAE,eAAe;YAC7B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,OAAgB,EAChB,IAAY,EACZ,IAAY,EACZ,QAAiB;QAEjB,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,YAAY,GAAmB;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvE,CAAC;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE;YAC3B,eAAe;YACf,YAAY;YACZ,YAAY,EAAE,eAAe;YAC7B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,OAAgB,EAChB,IAAY,EACZ,QAAgB;QAEhB,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,YAAY,GAAmB;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC,CAAC;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE;YAC3B,eAAe;YACf,YAAY;YACZ,YAAY,EAAE,aAAa;YAC3B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,OAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,QAAiB;QAEjB,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,YAAY,GAAmB;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAA6B;YACjE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvE,CAAC;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE;YAC3B,eAAe;YACf,YAAY;YACZ,YAAY,EAAE,eAAe;YAC7B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,OAAgB,EAChB,IAAY;QAEZ,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,YAAY,GAAmB;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,4BAA4B;SACxC,CAAC;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE;YAC3B,eAAe;YACf,YAAY;YACZ,YAAY,EAAE,cAAc;YAC5B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,IAAI,mBAAmB,GAAsB,IAAI,CAAC;AAElD,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC;QACvE,mBAAmB,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { type TokenInfo } from "alex-sdk";
2
+ import { type Network } from "../config/index.js";
3
+ import { type Account, type TransferResult } from "../transactions/builder.js";
4
+ export interface SwapQuote {
5
+ tokenIn: string;
6
+ tokenOut: string;
7
+ amountIn: string;
8
+ amountOut: string;
9
+ priceImpact?: string;
10
+ route: string[];
11
+ }
12
+ export interface PoolInfo {
13
+ poolId: string;
14
+ tokenX: string;
15
+ tokenY: string;
16
+ reserveX: string;
17
+ reserveY: string;
18
+ totalShares?: string;
19
+ }
20
+ export interface PoolListing {
21
+ id: number;
22
+ tokenX: string;
23
+ tokenY: string;
24
+ tokenXSymbol: string;
25
+ tokenYSymbol: string;
26
+ factor: string;
27
+ }
28
+ export interface ZestMarketInfo {
29
+ asset: string;
30
+ totalSupply: string;
31
+ totalBorrow: string;
32
+ supplyRate: string;
33
+ borrowRate: string;
34
+ utilizationRate: string;
35
+ }
36
+ export interface ZestUserPosition {
37
+ asset: string;
38
+ supplied: string;
39
+ borrowed: string;
40
+ healthFactor?: string;
41
+ }
42
+ export interface ZestAsset {
43
+ contractId: string;
44
+ symbol: string;
45
+ name: string;
46
+ decimals?: number;
47
+ }
48
+ export declare class AlexDexService {
49
+ private network;
50
+ private sdk;
51
+ private hiro;
52
+ private contracts;
53
+ private tokenInfoCache;
54
+ constructor(network: Network);
55
+ private ensureMainnet;
56
+ /**
57
+ * Get all swappable token info from SDK (cached)
58
+ */
59
+ private getTokenInfos;
60
+ /**
61
+ * Convert a token identifier (contract ID or symbol) to an ALEX SDK Currency
62
+ */
63
+ private resolveCurrency;
64
+ /**
65
+ * Get a swap quote for token X to token Y using ALEX SDK
66
+ */
67
+ getSwapQuote(tokenX: string, tokenY: string, amountIn: bigint, _senderAddress: string): Promise<SwapQuote>;
68
+ /**
69
+ * Execute a swap using ALEX SDK
70
+ * The SDK handles STX wrapping internally
71
+ */
72
+ swap(account: Account, tokenX: string, tokenY: string, amountIn: bigint, minAmountOut: bigint): Promise<TransferResult>;
73
+ /**
74
+ * Get pool information
75
+ */
76
+ getPoolInfo(tokenX: string, tokenY: string, senderAddress: string): Promise<PoolInfo | null>;
77
+ /**
78
+ * List all available pools on ALEX DEX
79
+ * Uses SDK to fetch swappable currencies
80
+ */
81
+ listPools(limit?: number): Promise<PoolListing[]>;
82
+ /**
83
+ * Get all swappable currencies from ALEX SDK
84
+ */
85
+ getSwappableCurrencies(): Promise<TokenInfo[]>;
86
+ /**
87
+ * Get latest prices from ALEX SDK
88
+ */
89
+ getLatestPrices(): Promise<Record<string, number>>;
90
+ }
91
+ export declare class ZestProtocolService {
92
+ private network;
93
+ private hiro;
94
+ private contracts;
95
+ constructor(network: Network);
96
+ private ensureMainnet;
97
+ /**
98
+ * Get asset configuration from ZEST_ASSETS by symbol or contract ID
99
+ */
100
+ private getAssetConfig;
101
+ /**
102
+ * Build the assets-list CV required for borrow/withdraw operations
103
+ * This is a list of tuples containing (asset, lp-token, oracle) for all supported assets
104
+ */
105
+ private buildAssetsListCV;
106
+ /**
107
+ * Get all supported assets from Zest Protocol
108
+ * Returns the hardcoded asset list with full metadata
109
+ */
110
+ getAssets(): Promise<ZestAsset[]>;
111
+ /**
112
+ * Resolve an asset symbol or contract ID to a full contract ID
113
+ */
114
+ resolveAsset(assetOrSymbol: string): Promise<string>;
115
+ /**
116
+ * Get user's reserve/position data for an asset
117
+ */
118
+ getUserPosition(asset: string, userAddress: string): Promise<ZestUserPosition | null>;
119
+ /**
120
+ * Supply assets to Zest lending pool
121
+ *
122
+ * Contract signature: supply(lp, pool-reserve, asset, amount, owner)
123
+ */
124
+ supply(account: Account, asset: string, amount: bigint, onBehalfOf?: string): Promise<TransferResult>;
125
+ /**
126
+ * Withdraw assets from Zest lending pool
127
+ *
128
+ * Contract signature: withdraw(pool-reserve, asset, lp, oracle, assets, amount, owner)
129
+ */
130
+ withdraw(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
131
+ /**
132
+ * Borrow assets from Zest lending pool
133
+ *
134
+ * Contract signature: borrow(pool-reserve, oracle, asset-to-borrow, lp, assets, amount, fee-calculator, interest-rate-mode, owner)
135
+ */
136
+ borrow(account: Account, asset: string, amount: bigint): Promise<TransferResult>;
137
+ /**
138
+ * Repay borrowed assets
139
+ *
140
+ * Contract signature: repay(asset, amount-to-repay, on-behalf-of, payer)
141
+ */
142
+ repay(account: Account, asset: string, amount: bigint, onBehalfOf?: string): Promise<TransferResult>;
143
+ }
144
+ export declare function getAlexDexService(network: Network): AlexDexService;
145
+ export declare function getZestProtocolService(network: Network): ZestProtocolService;
146
+ //# sourceMappingURL=defi.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi.service.d.ts","sourceRoot":"","sources":["../../src/services/defi.service.ts"],"names":[],"mappings":"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"}