@stellar/stellar-sdk 16.0.1 → 16.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.
Files changed (310) hide show
  1. package/README.md +41 -2
  2. package/dist/stellar-sdk-axios.js +5401 -3690
  3. package/dist/stellar-sdk-axios.js.map +1 -1
  4. package/dist/stellar-sdk-axios.min.js +12 -11
  5. package/dist/stellar-sdk-axios.min.js.map +1 -1
  6. package/dist/stellar-sdk.js +4850 -3681
  7. package/dist/stellar-sdk.js.map +1 -1
  8. package/dist/stellar-sdk.min.js +17 -17
  9. package/dist/stellar-sdk.min.js.map +1 -1
  10. package/lib/axios/cjs/base/auth.js +147 -30
  11. package/lib/axios/cjs/base/auth.js.map +1 -1
  12. package/lib/axios/cjs/base/index.js +113 -0
  13. package/lib/axios/cjs/base/index.js.map +1 -0
  14. package/lib/axios/cjs/base/keypair.js +39 -0
  15. package/lib/axios/cjs/base/keypair.js.map +1 -1
  16. package/lib/axios/cjs/base/scval.js +34 -0
  17. package/lib/axios/cjs/base/scval.js.map +1 -1
  18. package/lib/axios/cjs/bindings/client.js +170 -0
  19. package/lib/axios/cjs/bindings/client.js.map +1 -1
  20. package/lib/axios/cjs/bindings/config.js +1 -1
  21. package/lib/axios/cjs/bindings/generator.js +45 -16
  22. package/lib/axios/cjs/bindings/generator.js.map +1 -1
  23. package/lib/axios/cjs/bindings/types.js +151 -1
  24. package/lib/axios/cjs/bindings/types.js.map +1 -1
  25. package/lib/axios/cjs/bindings/utils.js +10 -0
  26. package/lib/axios/cjs/bindings/utils.js.map +1 -1
  27. package/lib/axios/cjs/cli/index.js +19 -22
  28. package/lib/axios/cjs/cli/index.js.map +1 -1
  29. package/lib/axios/cjs/cli/util.js +1 -20
  30. package/lib/axios/cjs/cli/util.js.map +1 -1
  31. package/lib/axios/cjs/contract/assembled_transaction.js +39 -17
  32. package/lib/axios/cjs/contract/assembled_transaction.js.map +1 -1
  33. package/lib/axios/cjs/contract/basic_node_signer.js +8 -42
  34. package/lib/axios/cjs/contract/basic_node_signer.js.map +1 -1
  35. package/lib/axios/cjs/contract/client.js +56 -3
  36. package/lib/axios/cjs/contract/client.js.map +1 -1
  37. package/lib/axios/cjs/contract/event_spec.js +164 -0
  38. package/lib/axios/cjs/contract/event_spec.js.map +1 -0
  39. package/lib/axios/cjs/contract/index.js +2 -0
  40. package/lib/axios/cjs/contract/index.js.map +1 -1
  41. package/lib/axios/cjs/contract/sent_transaction.js +0 -20
  42. package/lib/axios/cjs/contract/sent_transaction.js.map +1 -1
  43. package/lib/axios/cjs/contract/signer.js +96 -0
  44. package/lib/axios/cjs/contract/signer.js.map +1 -0
  45. package/lib/axios/cjs/contract/spec.js +107 -3
  46. package/lib/axios/cjs/contract/spec.js.map +1 -1
  47. package/lib/axios/cjs/contract/types.js.map +1 -1
  48. package/lib/axios/cjs/errors/transaction_failed.js +62 -0
  49. package/lib/axios/cjs/errors/transaction_failed.js.map +1 -0
  50. package/lib/axios/cjs/errors/wrap_http_error.js +20 -0
  51. package/lib/axios/cjs/errors/wrap_http_error.js.map +1 -0
  52. package/lib/axios/cjs/federation/server.js +15 -35
  53. package/lib/axios/cjs/federation/server.js.map +1 -1
  54. package/lib/axios/cjs/horizon/account_response.js +0 -20
  55. package/lib/axios/cjs/horizon/account_response.js.map +1 -1
  56. package/lib/axios/cjs/horizon/horizon_api.js +5 -0
  57. package/lib/axios/cjs/horizon/horizon_api.js.map +1 -1
  58. package/lib/axios/cjs/horizon/horizon_axios_client.js +1 -1
  59. package/lib/axios/cjs/horizon/server.js +20 -26
  60. package/lib/axios/cjs/horizon/server.js.map +1 -1
  61. package/lib/axios/cjs/index.js +66 -65
  62. package/lib/axios/cjs/index.js.map +1 -1
  63. package/lib/axios/cjs/rpc/api.js.map +1 -1
  64. package/lib/axios/cjs/rpc/axios.js +1 -1
  65. package/lib/axios/cjs/rpc/server.js +181 -13
  66. package/lib/axios/cjs/rpc/server.js.map +1 -1
  67. package/lib/axios/cjs/rpc/transaction.js +2 -20
  68. package/lib/axios/cjs/rpc/transaction.js.map +1 -1
  69. package/lib/axios/cjs/webauth/challenge_transaction.js +7 -22
  70. package/lib/axios/cjs/webauth/challenge_transaction.js.map +1 -1
  71. package/lib/axios/cjs/webauth/utils.js +1 -20
  72. package/lib/axios/cjs/webauth/utils.js.map +1 -1
  73. package/lib/axios/esm/base/auth.d.ts +181 -13
  74. package/lib/axios/esm/base/auth.js +146 -31
  75. package/lib/axios/esm/base/auth.js.map +1 -1
  76. package/lib/axios/esm/base/index.d.ts +2 -2
  77. package/lib/axios/esm/base/index.js +44 -0
  78. package/lib/axios/esm/base/index.js.map +1 -0
  79. package/lib/axios/esm/base/keypair.d.ts +27 -0
  80. package/lib/axios/esm/base/keypair.js +39 -0
  81. package/lib/axios/esm/base/keypair.js.map +1 -1
  82. package/lib/axios/esm/base/scval.d.ts +4 -0
  83. package/lib/axios/esm/base/scval.js +34 -0
  84. package/lib/axios/esm/base/scval.js.map +1 -1
  85. package/lib/axios/esm/bindings/client.d.ts +39 -0
  86. package/lib/axios/esm/bindings/client.js +171 -1
  87. package/lib/axios/esm/bindings/client.js.map +1 -1
  88. package/lib/axios/esm/bindings/config.js +1 -1
  89. package/lib/axios/esm/bindings/generator.d.ts +34 -0
  90. package/lib/axios/esm/bindings/generator.js +45 -16
  91. package/lib/axios/esm/bindings/generator.js.map +1 -1
  92. package/lib/axios/esm/bindings/types.d.ts +42 -0
  93. package/lib/axios/esm/bindings/types.js +153 -3
  94. package/lib/axios/esm/bindings/types.js.map +1 -1
  95. package/lib/axios/esm/bindings/utils.d.ts +10 -0
  96. package/lib/axios/esm/bindings/utils.js +9 -1
  97. package/lib/axios/esm/bindings/utils.js.map +1 -1
  98. package/lib/axios/esm/cli/index.js +19 -22
  99. package/lib/axios/esm/cli/index.js.map +1 -1
  100. package/lib/axios/esm/cli/util.d.ts +1 -1
  101. package/lib/axios/esm/cli/util.js +1 -20
  102. package/lib/axios/esm/cli/util.js.map +1 -1
  103. package/lib/axios/esm/contract/assembled_transaction.d.ts +7 -5
  104. package/lib/axios/esm/contract/assembled_transaction.js +39 -17
  105. package/lib/axios/esm/contract/assembled_transaction.js.map +1 -1
  106. package/lib/axios/esm/contract/basic_node_signer.d.ts +3 -0
  107. package/lib/axios/esm/contract/basic_node_signer.js +8 -42
  108. package/lib/axios/esm/contract/basic_node_signer.js.map +1 -1
  109. package/lib/axios/esm/contract/client.d.ts +49 -3
  110. package/lib/axios/esm/contract/client.js +56 -3
  111. package/lib/axios/esm/contract/client.js.map +1 -1
  112. package/lib/axios/esm/contract/event_spec.d.ts +78 -0
  113. package/lib/axios/esm/contract/event_spec.js +159 -0
  114. package/lib/axios/esm/contract/event_spec.js.map +1 -0
  115. package/lib/axios/esm/contract/index.d.ts +3 -0
  116. package/lib/axios/esm/contract/index.js +1 -0
  117. package/lib/axios/esm/contract/index.js.map +1 -1
  118. package/lib/axios/esm/contract/sent_transaction.js +0 -20
  119. package/lib/axios/esm/contract/sent_transaction.js.map +1 -1
  120. package/lib/axios/esm/contract/signer.d.ts +104 -0
  121. package/lib/axios/esm/contract/signer.js +91 -0
  122. package/lib/axios/esm/contract/signer.js.map +1 -0
  123. package/lib/axios/esm/contract/spec.d.ts +84 -0
  124. package/lib/axios/esm/contract/spec.js +107 -3
  125. package/lib/axios/esm/contract/spec.js.map +1 -1
  126. package/lib/axios/esm/contract/types.d.ts +25 -8
  127. package/lib/axios/esm/contract/types.js.map +1 -1
  128. package/lib/axios/esm/errors/index.d.ts +1 -0
  129. package/lib/axios/esm/errors/transaction_failed.d.ts +55 -0
  130. package/lib/axios/esm/errors/transaction_failed.js +60 -0
  131. package/lib/axios/esm/errors/transaction_failed.js.map +1 -0
  132. package/lib/axios/esm/errors/wrap_http_error.d.ts +20 -0
  133. package/lib/axios/esm/errors/wrap_http_error.js +18 -0
  134. package/lib/axios/esm/errors/wrap_http_error.js.map +1 -0
  135. package/lib/axios/esm/federation/server.js +15 -35
  136. package/lib/axios/esm/federation/server.js.map +1 -1
  137. package/lib/axios/esm/horizon/account_response.js +0 -20
  138. package/lib/axios/esm/horizon/account_response.js.map +1 -1
  139. package/lib/axios/esm/horizon/horizon_api.d.ts +12 -1
  140. package/lib/axios/esm/horizon/horizon_api.js +5 -0
  141. package/lib/axios/esm/horizon/horizon_api.js.map +1 -1
  142. package/lib/axios/esm/horizon/horizon_axios_client.js +1 -1
  143. package/lib/axios/esm/horizon/server.d.ts +10 -4
  144. package/lib/axios/esm/horizon/server.js +20 -26
  145. package/lib/axios/esm/horizon/server.js.map +1 -1
  146. package/lib/axios/esm/index.js +27 -29
  147. package/lib/axios/esm/index.js.map +1 -1
  148. package/lib/axios/esm/rpc/api.d.ts +21 -0
  149. package/lib/axios/esm/rpc/api.js.map +1 -1
  150. package/lib/axios/esm/rpc/axios.js +1 -1
  151. package/lib/axios/esm/rpc/server.d.ts +115 -3
  152. package/lib/axios/esm/rpc/server.js +181 -13
  153. package/lib/axios/esm/rpc/server.js.map +1 -1
  154. package/lib/axios/esm/rpc/transaction.js +2 -20
  155. package/lib/axios/esm/rpc/transaction.js.map +1 -1
  156. package/lib/axios/esm/webauth/challenge_transaction.js +7 -22
  157. package/lib/axios/esm/webauth/challenge_transaction.js.map +1 -1
  158. package/lib/axios/esm/webauth/utils.js +1 -20
  159. package/lib/axios/esm/webauth/utils.js.map +1 -1
  160. package/lib/cjs/base/auth.js +147 -30
  161. package/lib/cjs/base/auth.js.map +1 -1
  162. package/lib/cjs/base/index.js +113 -0
  163. package/lib/cjs/base/index.js.map +1 -0
  164. package/lib/cjs/base/keypair.js +39 -0
  165. package/lib/cjs/base/keypair.js.map +1 -1
  166. package/lib/cjs/base/scval.js +34 -0
  167. package/lib/cjs/base/scval.js.map +1 -1
  168. package/lib/cjs/bindings/client.js +170 -0
  169. package/lib/cjs/bindings/client.js.map +1 -1
  170. package/lib/cjs/bindings/config.js +1 -1
  171. package/lib/cjs/bindings/generator.js +45 -16
  172. package/lib/cjs/bindings/generator.js.map +1 -1
  173. package/lib/cjs/bindings/types.js +151 -1
  174. package/lib/cjs/bindings/types.js.map +1 -1
  175. package/lib/cjs/bindings/utils.js +10 -0
  176. package/lib/cjs/bindings/utils.js.map +1 -1
  177. package/lib/cjs/cli/index.js +19 -22
  178. package/lib/cjs/cli/index.js.map +1 -1
  179. package/lib/cjs/cli/util.js +1 -20
  180. package/lib/cjs/cli/util.js.map +1 -1
  181. package/lib/cjs/contract/assembled_transaction.js +39 -17
  182. package/lib/cjs/contract/assembled_transaction.js.map +1 -1
  183. package/lib/cjs/contract/basic_node_signer.js +8 -42
  184. package/lib/cjs/contract/basic_node_signer.js.map +1 -1
  185. package/lib/cjs/contract/client.js +56 -3
  186. package/lib/cjs/contract/client.js.map +1 -1
  187. package/lib/cjs/contract/event_spec.js +164 -0
  188. package/lib/cjs/contract/event_spec.js.map +1 -0
  189. package/lib/cjs/contract/index.js +2 -0
  190. package/lib/cjs/contract/index.js.map +1 -1
  191. package/lib/cjs/contract/sent_transaction.js +0 -20
  192. package/lib/cjs/contract/sent_transaction.js.map +1 -1
  193. package/lib/cjs/contract/signer.js +96 -0
  194. package/lib/cjs/contract/signer.js.map +1 -0
  195. package/lib/cjs/contract/spec.js +107 -3
  196. package/lib/cjs/contract/spec.js.map +1 -1
  197. package/lib/cjs/contract/types.js.map +1 -1
  198. package/lib/cjs/errors/transaction_failed.js +62 -0
  199. package/lib/cjs/errors/transaction_failed.js.map +1 -0
  200. package/lib/cjs/errors/wrap_http_error.js +20 -0
  201. package/lib/cjs/errors/wrap_http_error.js.map +1 -0
  202. package/lib/cjs/federation/server.js +15 -35
  203. package/lib/cjs/federation/server.js.map +1 -1
  204. package/lib/cjs/horizon/account_response.js +0 -20
  205. package/lib/cjs/horizon/account_response.js.map +1 -1
  206. package/lib/cjs/horizon/horizon_api.js +5 -0
  207. package/lib/cjs/horizon/horizon_api.js.map +1 -1
  208. package/lib/cjs/horizon/horizon_axios_client.js +1 -1
  209. package/lib/cjs/horizon/server.js +20 -26
  210. package/lib/cjs/horizon/server.js.map +1 -1
  211. package/lib/cjs/index.js +66 -65
  212. package/lib/cjs/index.js.map +1 -1
  213. package/lib/cjs/rpc/api.js.map +1 -1
  214. package/lib/cjs/rpc/axios.js +1 -1
  215. package/lib/cjs/rpc/server.js +181 -13
  216. package/lib/cjs/rpc/server.js.map +1 -1
  217. package/lib/cjs/rpc/transaction.js +2 -20
  218. package/lib/cjs/rpc/transaction.js.map +1 -1
  219. package/lib/cjs/webauth/challenge_transaction.js +7 -22
  220. package/lib/cjs/webauth/challenge_transaction.js.map +1 -1
  221. package/lib/cjs/webauth/utils.js +1 -20
  222. package/lib/cjs/webauth/utils.js.map +1 -1
  223. package/lib/esm/base/auth.d.ts +181 -13
  224. package/lib/esm/base/auth.js +146 -31
  225. package/lib/esm/base/auth.js.map +1 -1
  226. package/lib/esm/base/index.d.ts +2 -2
  227. package/lib/esm/base/index.js +44 -0
  228. package/lib/esm/base/index.js.map +1 -0
  229. package/lib/esm/base/keypair.d.ts +27 -0
  230. package/lib/esm/base/keypair.js +39 -0
  231. package/lib/esm/base/keypair.js.map +1 -1
  232. package/lib/esm/base/scval.d.ts +4 -0
  233. package/lib/esm/base/scval.js +34 -0
  234. package/lib/esm/base/scval.js.map +1 -1
  235. package/lib/esm/bindings/client.d.ts +39 -0
  236. package/lib/esm/bindings/client.js +171 -1
  237. package/lib/esm/bindings/client.js.map +1 -1
  238. package/lib/esm/bindings/config.js +1 -1
  239. package/lib/esm/bindings/generator.d.ts +34 -0
  240. package/lib/esm/bindings/generator.js +45 -16
  241. package/lib/esm/bindings/generator.js.map +1 -1
  242. package/lib/esm/bindings/types.d.ts +42 -0
  243. package/lib/esm/bindings/types.js +153 -3
  244. package/lib/esm/bindings/types.js.map +1 -1
  245. package/lib/esm/bindings/utils.d.ts +10 -0
  246. package/lib/esm/bindings/utils.js +9 -1
  247. package/lib/esm/bindings/utils.js.map +1 -1
  248. package/lib/esm/cli/index.js +19 -22
  249. package/lib/esm/cli/index.js.map +1 -1
  250. package/lib/esm/cli/util.d.ts +1 -1
  251. package/lib/esm/cli/util.js +1 -20
  252. package/lib/esm/cli/util.js.map +1 -1
  253. package/lib/esm/contract/assembled_transaction.d.ts +7 -5
  254. package/lib/esm/contract/assembled_transaction.js +39 -17
  255. package/lib/esm/contract/assembled_transaction.js.map +1 -1
  256. package/lib/esm/contract/basic_node_signer.d.ts +3 -0
  257. package/lib/esm/contract/basic_node_signer.js +8 -42
  258. package/lib/esm/contract/basic_node_signer.js.map +1 -1
  259. package/lib/esm/contract/client.d.ts +49 -3
  260. package/lib/esm/contract/client.js +56 -3
  261. package/lib/esm/contract/client.js.map +1 -1
  262. package/lib/esm/contract/event_spec.d.ts +78 -0
  263. package/lib/esm/contract/event_spec.js +159 -0
  264. package/lib/esm/contract/event_spec.js.map +1 -0
  265. package/lib/esm/contract/index.d.ts +3 -0
  266. package/lib/esm/contract/index.js +1 -0
  267. package/lib/esm/contract/index.js.map +1 -1
  268. package/lib/esm/contract/sent_transaction.js +0 -20
  269. package/lib/esm/contract/sent_transaction.js.map +1 -1
  270. package/lib/esm/contract/signer.d.ts +104 -0
  271. package/lib/esm/contract/signer.js +91 -0
  272. package/lib/esm/contract/signer.js.map +1 -0
  273. package/lib/esm/contract/spec.d.ts +84 -0
  274. package/lib/esm/contract/spec.js +107 -3
  275. package/lib/esm/contract/spec.js.map +1 -1
  276. package/lib/esm/contract/types.d.ts +25 -8
  277. package/lib/esm/contract/types.js.map +1 -1
  278. package/lib/esm/errors/index.d.ts +1 -0
  279. package/lib/esm/errors/transaction_failed.d.ts +55 -0
  280. package/lib/esm/errors/transaction_failed.js +60 -0
  281. package/lib/esm/errors/transaction_failed.js.map +1 -0
  282. package/lib/esm/errors/wrap_http_error.d.ts +20 -0
  283. package/lib/esm/errors/wrap_http_error.js +18 -0
  284. package/lib/esm/errors/wrap_http_error.js.map +1 -0
  285. package/lib/esm/federation/server.js +15 -35
  286. package/lib/esm/federation/server.js.map +1 -1
  287. package/lib/esm/horizon/account_response.js +0 -20
  288. package/lib/esm/horizon/account_response.js.map +1 -1
  289. package/lib/esm/horizon/horizon_api.d.ts +12 -1
  290. package/lib/esm/horizon/horizon_api.js +5 -0
  291. package/lib/esm/horizon/horizon_api.js.map +1 -1
  292. package/lib/esm/horizon/horizon_axios_client.js +1 -1
  293. package/lib/esm/horizon/server.d.ts +10 -4
  294. package/lib/esm/horizon/server.js +20 -26
  295. package/lib/esm/horizon/server.js.map +1 -1
  296. package/lib/esm/index.js +27 -29
  297. package/lib/esm/index.js.map +1 -1
  298. package/lib/esm/rpc/api.d.ts +21 -0
  299. package/lib/esm/rpc/api.js.map +1 -1
  300. package/lib/esm/rpc/axios.js +1 -1
  301. package/lib/esm/rpc/server.d.ts +115 -3
  302. package/lib/esm/rpc/server.js +181 -13
  303. package/lib/esm/rpc/server.js.map +1 -1
  304. package/lib/esm/rpc/transaction.js +2 -20
  305. package/lib/esm/rpc/transaction.js.map +1 -1
  306. package/lib/esm/webauth/challenge_transaction.js +7 -22
  307. package/lib/esm/webauth/challenge_transaction.js.map +1 -1
  308. package/lib/esm/webauth/utils.js +1 -20
  309. package/lib/esm/webauth/utils.js.map +1 -1
  310. package/package.json +35 -30
@@ -2,27 +2,7 @@ import { Command } from 'commander';
2
2
  import * as path from 'path';
3
3
  import { WasmFetchError } from '../bindings/wasm_fetcher.js';
4
4
  import { createGenerator, logSourceInfo, deriveContractName, generateAndWrite } from './util.js';
5
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/int.js';
6
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/hyper.js';
7
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-int.js';
8
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-hyper.js';
9
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/xdr-type.js';
10
- import 'buffer';
11
- import '../base/generated/curr_generated.js';
12
- import '@noble/hashes/sha2.js';
13
- import '../base/signing.js';
14
- import '../base/keypair.js';
15
- import 'base32.js';
16
- import '../base/util/continued_fraction.js';
17
- import '../base/util/bignumber.js';
18
- import '../base/transaction_builder.js';
19
- import '../base/muxed_account.js';
20
5
  import { Networks } from '../base/network.js';
21
- import '../base/scval.js';
22
- import '../base/numbers/uint128.js';
23
- import '../base/numbers/uint256.js';
24
- import '../base/numbers/int128.js';
25
- import '../base/numbers/int256.js';
26
6
 
27
7
  const NETWORK_CONFIG = {
28
8
  testnet: {
@@ -104,7 +84,7 @@ function runCli() {
104
84
  let timeout;
105
85
  if (options.timeout) {
106
86
  timeout = parseInt(options.timeout, 10);
107
- if (Number.isNaN(timeout) || timeout <= 0) {
87
+ if (!/^\d+$/.test(options.timeout.trim()) || timeout <= 0) {
108
88
  throw new Error(
109
89
  `Invalid timeout value: ${options.timeout}. Must be a positive integer.`
110
90
  );
@@ -125,11 +105,28 @@ function runCli() {
125
105
  `
126
106
  \u2713 Generating TypeScript bindings for "${contractName}"...`
127
107
  );
128
- await generateAndWrite(generator, {
108
+ const bindings = await generateAndWrite(generator, {
129
109
  contractName,
130
110
  outputDir: path.resolve(options.outputDir),
131
111
  overwrite: options.overwrite
132
112
  });
113
+ for (const d of bindings.diagnostics) {
114
+ if (d.declarations > 1) {
115
+ console.warn(
116
+ `
117
+ \u26A0 Event "${d.rawName}" is declared ${d.declarations} times; declaration ${d.occurrence + 1} generated as ${d.interfaceName} with filter ${d.filterMethodName}(). Review the generated bindings to confirm which declaration you need.`
118
+ );
119
+ } else {
120
+ const renamed = [
121
+ ...d.interfaceRenamed ? [d.interfaceName] : [],
122
+ ...d.filterMethodRenamed ? [`${d.filterMethodName}()`] : []
123
+ ];
124
+ console.warn(
125
+ `
126
+ \u26A0 Event "${d.rawName}": generated name${renamed.length > 1 ? "s" : ""} ${renamed.join(" and ")} ${renamed.length > 1 ? "were" : "was"} renamed to avoid a collision with another generated name.`
127
+ );
128
+ }
129
+ }
133
130
  console.log(
134
131
  `
135
132
  \u2713 Successfully generated bindings in ${options.outputDir}`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/cli/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as path from \"path\";\n\nimport { WasmFetchError } from \"../bindings/wasm_fetcher.js\";\nimport {\n createGenerator,\n generateAndWrite,\n logSourceInfo,\n deriveContractName,\n} from \"./util.js\";\nimport { Networks } from \"../base/index.js\";\n\n// Default RPC URLs for each network\nconst NETWORK_CONFIG: Record<\n string,\n { passphrase: string; rpcUrl: string | null }\n> = {\n testnet: {\n passphrase: Networks.TESTNET,\n rpcUrl: \"https://soroban-testnet.stellar.org\",\n },\n mainnet: {\n passphrase: Networks.PUBLIC,\n rpcUrl: null, // User must provide their own\n },\n futurenet: {\n passphrase: Networks.FUTURENET,\n rpcUrl: \"https://rpc-futurenet.stellar.org\",\n },\n localnet: {\n passphrase: Networks.STANDALONE,\n rpcUrl: \"http://localhost:8000/rpc\",\n },\n};\n\nfunction runCli() {\n const program = new Command();\n\n program\n .name(\"stellar-cli\")\n .description(\"CLI for generating TypeScript bindings for Stellar contracts\")\n .version(\"1.0.0\");\n\n program\n .command(\"generate\")\n .description(\"Generate TypeScript bindings for a Stellar contract\")\n .helpOption(\"-h, --help\", \"Display help for command\")\n .option(\"--wasm <path>\", \"Path to local WASM file\")\n .option(\"--wasm-hash <hash>\", \"Hash of WASM blob on network\")\n .option(\"--contract-id <id>\", \"Contract ID on network\")\n .option(\"--rpc-url <url>\", \"RPC server URL\")\n .option(\n \"--network <network>\",\n \"Network options to use: mainnet, testnet, futurenet, or localnet\",\n )\n .option(\"--output-dir <dir>\", \"Output directory for generated bindings\")\n .option(\n \"--allow-http\",\n \"Allow insecure HTTP connections to RPC server\",\n false,\n )\n .option(\"--timeout <ms>\", \"RPC request timeout in milliseconds\")\n .option(\n \"--headers <json>\",\n 'Custom headers as JSON object (e.g., \\'{\"Authorization\": \"Bearer token\"}\\')',\n )\n .option(\n \"--contract-name <name>\",\n \"Name for the generated contract client class\",\n )\n .option(\"--overwrite\", \"Overwrite existing files\", false)\n .action(async (options) => {\n try {\n // Map network to passphrase and default RPC URL\n let networkPassphrase: string | undefined;\n let rpcUrl: string | undefined = options.rpcUrl;\n let allowHttp: boolean = options.allowHttp;\n\n if (options.network) {\n const network = options.network.toLowerCase();\n const config = NETWORK_CONFIG[network];\n\n if (!config) {\n throw new Error(\n `\\n✗ Invalid network: ${options.network}. Must be mainnet, testnet, futurenet, or localnet`,\n );\n }\n\n networkPassphrase = config.passphrase;\n\n // Use default RPC URL if not provided (only needed for network sources)\n const needsRpcUrl = options.wasmHash || options.contractId;\n if (!rpcUrl && needsRpcUrl) {\n if (config.rpcUrl) {\n rpcUrl = config.rpcUrl;\n console.log(`Using default RPC URL for ${network}: ${rpcUrl}`);\n\n // Auto-enable allowHttp for localnet when using default HTTP URL\n if (network === \"localnet\" && !options.allowHttp) {\n allowHttp = true;\n }\n } else if (network === \"mainnet\") {\n throw new Error(\n `\\n✗ --rpc-url is required for mainnet. Find RPC providers at: https://developers.stellar.org/docs/data/rpc/rpc-providers`,\n );\n }\n }\n }\n\n if (options.outputDir === undefined) {\n throw new Error(\"Output directory (--output-dir) is required\");\n }\n\n // Parse headers JSON if provided\n let headers: Record<string, string> | undefined;\n if (options.headers) {\n try {\n headers = JSON.parse(options.headers);\n } catch {\n throw new Error(`Invalid JSON for --headers: ${options.headers}`);\n }\n }\n\n // Parse timeout if provided\n let timeout: number | undefined;\n if (options.timeout) {\n timeout = parseInt(options.timeout, 10);\n if (Number.isNaN(timeout) || timeout <= 0) {\n throw new Error(\n `Invalid timeout value: ${options.timeout}. Must be a positive integer.`,\n );\n }\n }\n\n console.log(\"Fetching contract...\");\n\n const { generator, source } = await createGenerator({\n wasm: options.wasm,\n wasmHash: options.wasmHash,\n contractId: options.contractId,\n rpcUrl,\n networkPassphrase,\n serverOptions: { allowHttp, timeout, headers },\n });\n\n logSourceInfo(source);\n\n // Derive contract name from source or use provided/default\n const contractName =\n options.contractName || deriveContractName(source) || \"contract\";\n console.log(\n `\\n✓ Generating TypeScript bindings for \"${contractName}\"...`,\n );\n\n await generateAndWrite(generator, {\n contractName,\n outputDir: path.resolve(options.outputDir),\n overwrite: options.overwrite,\n });\n\n console.log(\n `\\n✓ Successfully generated bindings in ${options.outputDir}`,\n );\n console.log(`\\nUsage:`);\n console.log(\n ` import { Client } from './${path.basename(options.outputDir)}';`,\n );\n } catch (error) {\n if (error instanceof WasmFetchError) {\n console.error(`\\n✗ Error: ${error.message}`);\n if (error.cause) {\n console.error(` Caused by: ${error.cause.message}`);\n }\n } else if (error instanceof Error) {\n console.error(`\\n✗ Error: ${error.message}`);\n } else {\n console.error(`\\n✗ Unexpected error:`, error);\n }\n process.exit(1);\n }\n });\n program.parse();\n}\n\nexport { runCli };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/cli/index.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport * as path from \"path\";\n\nimport { WasmFetchError } from \"../bindings/wasm_fetcher.js\";\nimport {\n createGenerator,\n generateAndWrite,\n logSourceInfo,\n deriveContractName,\n} from \"./util.js\";\nimport { Networks } from \"../base/index.js\";\n\n// Default RPC URLs for each network\nconst NETWORK_CONFIG: Record<\n string,\n { passphrase: string; rpcUrl: string | null }\n> = {\n testnet: {\n passphrase: Networks.TESTNET,\n rpcUrl: \"https://soroban-testnet.stellar.org\",\n },\n mainnet: {\n passphrase: Networks.PUBLIC,\n rpcUrl: null, // User must provide their own\n },\n futurenet: {\n passphrase: Networks.FUTURENET,\n rpcUrl: \"https://rpc-futurenet.stellar.org\",\n },\n localnet: {\n passphrase: Networks.STANDALONE,\n rpcUrl: \"http://localhost:8000/rpc\",\n },\n};\n\nfunction runCli() {\n const program = new Command();\n\n program\n .name(\"stellar-cli\")\n .description(\"CLI for generating TypeScript bindings for Stellar contracts\")\n .version(\"1.0.0\");\n\n program\n .command(\"generate\")\n .description(\"Generate TypeScript bindings for a Stellar contract\")\n .helpOption(\"-h, --help\", \"Display help for command\")\n .option(\"--wasm <path>\", \"Path to local WASM file\")\n .option(\"--wasm-hash <hash>\", \"Hash of WASM blob on network\")\n .option(\"--contract-id <id>\", \"Contract ID on network\")\n .option(\"--rpc-url <url>\", \"RPC server URL\")\n .option(\n \"--network <network>\",\n \"Network options to use: mainnet, testnet, futurenet, or localnet\",\n )\n .option(\"--output-dir <dir>\", \"Output directory for generated bindings\")\n .option(\n \"--allow-http\",\n \"Allow insecure HTTP connections to RPC server\",\n false,\n )\n .option(\"--timeout <ms>\", \"RPC request timeout in milliseconds\")\n .option(\n \"--headers <json>\",\n 'Custom headers as JSON object (e.g., \\'{\"Authorization\": \"Bearer token\"}\\')',\n )\n .option(\n \"--contract-name <name>\",\n \"Name for the generated contract client class\",\n )\n .option(\"--overwrite\", \"Overwrite existing files\", false)\n .action(async (options) => {\n try {\n // Map network to passphrase and default RPC URL\n let networkPassphrase: string | undefined;\n let rpcUrl: string | undefined = options.rpcUrl;\n let allowHttp: boolean = options.allowHttp;\n\n if (options.network) {\n const network = options.network.toLowerCase();\n const config = NETWORK_CONFIG[network];\n\n if (!config) {\n throw new Error(\n `\\n✗ Invalid network: ${options.network}. Must be mainnet, testnet, futurenet, or localnet`,\n );\n }\n\n networkPassphrase = config.passphrase;\n\n // Use default RPC URL if not provided (only needed for network sources)\n const needsRpcUrl = options.wasmHash || options.contractId;\n if (!rpcUrl && needsRpcUrl) {\n if (config.rpcUrl) {\n rpcUrl = config.rpcUrl;\n console.log(`Using default RPC URL for ${network}: ${rpcUrl}`);\n\n // Auto-enable allowHttp for localnet when using default HTTP URL\n if (network === \"localnet\" && !options.allowHttp) {\n allowHttp = true;\n }\n } else if (network === \"mainnet\") {\n throw new Error(\n `\\n✗ --rpc-url is required for mainnet. Find RPC providers at: https://developers.stellar.org/docs/data/rpc/rpc-providers`,\n );\n }\n }\n }\n\n if (options.outputDir === undefined) {\n throw new Error(\"Output directory (--output-dir) is required\");\n }\n\n // Parse headers JSON if provided\n let headers: Record<string, string> | undefined;\n if (options.headers) {\n try {\n headers = JSON.parse(options.headers);\n } catch {\n throw new Error(`Invalid JSON for --headers: ${options.headers}`);\n }\n }\n\n // Parse timeout if provided\n let timeout: number | undefined;\n if (options.timeout) {\n timeout = parseInt(options.timeout, 10);\n // require digits only, so values parseInt would otherwise silently\n // truncate (\"10abc\" -> 10, \"10.9\" -> 10) are rejected\n if (!/^\\d+$/.test(options.timeout.trim()) || timeout <= 0) {\n throw new Error(\n `Invalid timeout value: ${options.timeout}. Must be a positive integer.`,\n );\n }\n }\n\n console.log(\"Fetching contract...\");\n\n const { generator, source } = await createGenerator({\n wasm: options.wasm,\n wasmHash: options.wasmHash,\n contractId: options.contractId,\n rpcUrl,\n networkPassphrase,\n serverOptions: { allowHttp, timeout, headers },\n });\n\n logSourceInfo(source);\n\n // Derive contract name from source or use provided/default\n const contractName =\n options.contractName || deriveContractName(source) || \"contract\";\n console.log(\n `\\n✓ Generating TypeScript bindings for \"${contractName}\"...`,\n );\n\n const bindings = await generateAndWrite(generator, {\n contractName,\n outputDir: path.resolve(options.outputDir),\n overwrite: options.overwrite,\n });\n\n for (const d of bindings.diagnostics) {\n if (d.declarations > 1) {\n console.warn(\n `\\n⚠ Event \"${d.rawName}\" is declared ${d.declarations} times; ` +\n `declaration ${d.occurrence + 1} generated as ` +\n `${d.interfaceName} with filter ${d.filterMethodName}(). ` +\n `Review the generated bindings to confirm which declaration ` +\n `you need.`,\n );\n } else {\n const renamed = [\n ...(d.interfaceRenamed ? [d.interfaceName] : []),\n ...(d.filterMethodRenamed ? [`${d.filterMethodName}()`] : []),\n ];\n console.warn(\n `\\n⚠ Event \"${d.rawName}\": generated name` +\n `${renamed.length > 1 ? \"s\" : \"\"} ${renamed.join(\" and \")} ` +\n `${renamed.length > 1 ? \"were\" : \"was\"} renamed to avoid a ` +\n `collision with another generated name.`,\n );\n }\n }\n\n console.log(\n `\\n✓ Successfully generated bindings in ${options.outputDir}`,\n );\n console.log(`\\nUsage:`);\n console.log(\n ` import { Client } from './${path.basename(options.outputDir)}';`,\n );\n } catch (error) {\n if (error instanceof WasmFetchError) {\n console.error(`\\n✗ Error: ${error.message}`);\n if (error.cause) {\n console.error(` Caused by: ${error.cause.message}`);\n }\n } else if (error instanceof Error) {\n console.error(`\\n✗ Error: ${error.message}`);\n } else {\n console.error(`\\n✗ Unexpected error:`, error);\n }\n process.exit(1);\n }\n });\n program.parse();\n}\n\nexport { runCli };\n"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ export declare function writeBindings(outputDir: string, bindings: GeneratedBind
44
44
  /**
45
45
  * Generate and write bindings to disk
46
46
  */
47
- export declare function generateAndWrite(generator: BindingGenerator, options: GenerateAndWriteOptions): Promise<void>;
47
+ export declare function generateAndWrite(generator: BindingGenerator, options: GenerateAndWriteOptions): Promise<GeneratedBindings>;
48
48
  /**
49
49
  * Log source information
50
50
  */
@@ -1,26 +1,6 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import * as path from 'path';
3
3
  import { BindingGenerator } from '../bindings/generator.js';
4
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/int.js';
5
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/hyper.js';
6
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-int.js';
7
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/unsigned-hyper.js';
8
- import '../node_modules/.pnpm/@stellar_js-xdr@4.0.0/node_modules/@stellar/js-xdr/src/xdr-type.js';
9
- import 'buffer';
10
- import '../base/generated/curr_generated.js';
11
- import '@noble/hashes/sha2.js';
12
- import '../base/signing.js';
13
- import '../base/keypair.js';
14
- import 'base32.js';
15
- import '../base/util/continued_fraction.js';
16
- import '../base/util/bignumber.js';
17
- import '../base/transaction_builder.js';
18
- import '../base/muxed_account.js';
19
- import '../base/scval.js';
20
- import '../base/numbers/uint128.js';
21
- import '../base/numbers/uint256.js';
22
- import '../base/numbers/int128.js';
23
- import '../base/numbers/int256.js';
24
4
  import { WasmFetchError } from '../bindings/wasm_fetcher.js';
25
5
  import { RpcServer } from '../rpc/server.js';
26
6
 
@@ -124,6 +104,7 @@ async function generateAndWrite(generator, options) {
124
104
  const { outputDir, overwrite = false, ...genOptions } = options;
125
105
  const bindings = generator.generate(genOptions);
126
106
  await writeBindings(outputDir, bindings, overwrite);
107
+ return bindings;
127
108
  }
128
109
  function logSourceInfo(source) {
129
110
  console.log("\nSource:");
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../src/cli/util.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport {\n BindingGenerator,\n type GeneratedBindings,\n type GenerateOptions,\n} from \"../bindings/generator.js\";\nimport { WasmFetchError } from \"../bindings/index.js\";\nimport { RpcServer } from \"../rpc/server.js\";\n\nexport type GenerateAndWriteOptions = GenerateOptions & {\n outputDir: string;\n overwrite?: boolean;\n};\n\n/**\n * Source information about where the contract was fetched from\n */\nexport type ContractSource =\n | { type: \"file\"; path: string }\n | { type: \"wasm-hash\"; hash: string; rpcUrl: string; network: string }\n | {\n type: \"contract-id\";\n contractId: string;\n rpcUrl: string;\n network: string;\n };\n\nexport type CreateGeneratorArgs = {\n wasm?: string;\n wasmHash?: string;\n contractId?: string;\n rpcUrl?: string;\n networkPassphrase?: string;\n serverOptions?: RpcServer.Options;\n};\n\nexport type CreateGeneratorResult = {\n generator: BindingGenerator;\n source: ContractSource;\n};\n\n/**\n * Verify that the server is on the expected network\n */\nasync function verifyNetwork(\n server: RpcServer,\n expectedPassphrase: string,\n): Promise<void> {\n const networkResponse = await server.getNetwork();\n if (networkResponse.passphrase !== expectedPassphrase) {\n throw new WasmFetchError(\n `Network mismatch: expected \"${expectedPassphrase}\", got \"${networkResponse.passphrase}\"`,\n );\n }\n}\n\n/**\n * Create a BindingGenerator from local file, network hash, or contract ID\n */\nexport async function createGenerator(\n args: CreateGeneratorArgs,\n): Promise<CreateGeneratorResult> {\n // Validate exactly one source is provided\n const sources = [args.wasm, args.wasmHash, args.contractId].filter(Boolean);\n if (sources.length === 0) {\n throw new WasmFetchError(\n \"Must provide one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n if (sources.length > 1) {\n throw new WasmFetchError(\n \"Must provide only one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n\n // Local WASM file\n if (args.wasm) {\n const wasmBuffer = await fs.readFile(args.wasm);\n return {\n generator: BindingGenerator.fromWasm(wasmBuffer),\n source: { type: \"file\", path: args.wasm },\n };\n }\n\n // Network sources require RPC URL and network\n if (!args.rpcUrl) {\n throw new WasmFetchError(\n \"--rpc-url is required when fetching from network\",\n );\n }\n if (!args.networkPassphrase) {\n throw new WasmFetchError(\n \"--network is required when fetching from network\",\n );\n }\n\n const server = new RpcServer(args.rpcUrl, args.serverOptions);\n await verifyNetwork(server, args.networkPassphrase);\n\n // WASM hash\n if (args.wasmHash) {\n return {\n generator: await BindingGenerator.fromWasmHash(args.wasmHash, server),\n source: {\n type: \"wasm-hash\",\n hash: args.wasmHash,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n if (args.contractId) {\n const generator = await BindingGenerator.fromContractId(\n args.contractId,\n server,\n );\n return {\n generator,\n source: {\n type: \"contract-id\",\n contractId: args.contractId,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n throw new WasmFetchError(\"Invalid arguments\");\n}\n\n/**\n * Write generated bindings to disk\n */\nexport async function writeBindings(\n outputDir: string,\n bindings: GeneratedBindings,\n overwrite: boolean,\n): Promise<void> {\n // Check if output directory exists\n try {\n const stat = await fs.stat(outputDir);\n if (stat.isFile()) {\n throw new Error(`Output path is a file: ${outputDir}`);\n }\n if (!overwrite) {\n throw new Error(`Directory exists (use --overwrite): ${outputDir}`);\n }\n await fs.rm(outputDir, { recursive: true, force: true });\n } catch (error: any) {\n if (error.code !== \"ENOENT\") throw error;\n }\n\n await fs.mkdir(path.join(outputDir, \"src\"), { recursive: true });\n\n const writes = [\n fs.writeFile(path.join(outputDir, \"src/index.ts\"), bindings.index),\n fs.writeFile(path.join(outputDir, \"src/client.ts\"), bindings.client),\n fs.writeFile(path.join(outputDir, \".gitignore\"), bindings.gitignore),\n fs.writeFile(path.join(outputDir, \"README.md\"), bindings.readme),\n fs.writeFile(path.join(outputDir, \"package.json\"), bindings.packageJson),\n fs.writeFile(path.join(outputDir, \"tsconfig.json\"), bindings.tsConfig),\n ];\n\n if (bindings.types.trim()) {\n writes.push(\n fs.writeFile(path.join(outputDir, \"src/types.ts\"), bindings.types),\n );\n }\n\n await Promise.all(writes);\n}\n/**\n * Generate and write bindings to disk\n */\nexport async function generateAndWrite(\n generator: BindingGenerator,\n options: GenerateAndWriteOptions,\n): Promise<void> {\n const { outputDir, overwrite = false, ...genOptions } = options;\n const bindings = generator.generate(genOptions);\n await writeBindings(outputDir, bindings, overwrite);\n}\n\n/**\n * Log source information\n */\nexport function logSourceInfo(source: ContractSource): void {\n console.log(\"\\nSource:\");\n switch (source.type) {\n case \"file\":\n console.log(` Type: Local file`);\n console.log(` Path: ${source.path}`);\n break;\n case \"wasm-hash\":\n console.log(` Type: WASM hash`);\n console.log(` Hash: ${source.hash}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n case \"contract-id\":\n console.log(` Type: Contract ID`);\n console.log(` Address: ${source.contractId}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n }\n}\n\n/**\n * Derive contract name from source path\n */\nexport function deriveContractName(source: ContractSource): string | null {\n if (source.type !== \"file\") return null;\n\n return path\n .basename(source.path, path.extname(source.path))\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/_/g, \"-\")\n .toLowerCase();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sources":["../../../../src/cli/util.ts"],"sourcesContent":["import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport {\n BindingGenerator,\n type GeneratedBindings,\n type GenerateOptions,\n} from \"../bindings/generator.js\";\nimport { WasmFetchError } from \"../bindings/index.js\";\nimport { RpcServer } from \"../rpc/server.js\";\n\nexport type GenerateAndWriteOptions = GenerateOptions & {\n outputDir: string;\n overwrite?: boolean;\n};\n\n/**\n * Source information about where the contract was fetched from\n */\nexport type ContractSource =\n | { type: \"file\"; path: string }\n | { type: \"wasm-hash\"; hash: string; rpcUrl: string; network: string }\n | {\n type: \"contract-id\";\n contractId: string;\n rpcUrl: string;\n network: string;\n };\n\nexport type CreateGeneratorArgs = {\n wasm?: string;\n wasmHash?: string;\n contractId?: string;\n rpcUrl?: string;\n networkPassphrase?: string;\n serverOptions?: RpcServer.Options;\n};\n\nexport type CreateGeneratorResult = {\n generator: BindingGenerator;\n source: ContractSource;\n};\n\n/**\n * Verify that the server is on the expected network\n */\nasync function verifyNetwork(\n server: RpcServer,\n expectedPassphrase: string,\n): Promise<void> {\n const networkResponse = await server.getNetwork();\n if (networkResponse.passphrase !== expectedPassphrase) {\n throw new WasmFetchError(\n `Network mismatch: expected \"${expectedPassphrase}\", got \"${networkResponse.passphrase}\"`,\n );\n }\n}\n\n/**\n * Create a BindingGenerator from local file, network hash, or contract ID\n */\nexport async function createGenerator(\n args: CreateGeneratorArgs,\n): Promise<CreateGeneratorResult> {\n // Validate exactly one source is provided\n const sources = [args.wasm, args.wasmHash, args.contractId].filter(Boolean);\n if (sources.length === 0) {\n throw new WasmFetchError(\n \"Must provide one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n if (sources.length > 1) {\n throw new WasmFetchError(\n \"Must provide only one of: --wasm, --wasm-hash, or --contract-id\",\n );\n }\n\n // Local WASM file\n if (args.wasm) {\n const wasmBuffer = await fs.readFile(args.wasm);\n return {\n generator: BindingGenerator.fromWasm(wasmBuffer),\n source: { type: \"file\", path: args.wasm },\n };\n }\n\n // Network sources require RPC URL and network\n if (!args.rpcUrl) {\n throw new WasmFetchError(\n \"--rpc-url is required when fetching from network\",\n );\n }\n if (!args.networkPassphrase) {\n throw new WasmFetchError(\n \"--network is required when fetching from network\",\n );\n }\n\n const server = new RpcServer(args.rpcUrl, args.serverOptions);\n await verifyNetwork(server, args.networkPassphrase);\n\n // WASM hash\n if (args.wasmHash) {\n return {\n generator: await BindingGenerator.fromWasmHash(args.wasmHash, server),\n source: {\n type: \"wasm-hash\",\n hash: args.wasmHash,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n if (args.contractId) {\n const generator = await BindingGenerator.fromContractId(\n args.contractId,\n server,\n );\n return {\n generator,\n source: {\n type: \"contract-id\",\n contractId: args.contractId,\n rpcUrl: args.rpcUrl,\n network: args.networkPassphrase,\n },\n };\n }\n\n throw new WasmFetchError(\"Invalid arguments\");\n}\n\n/**\n * Write generated bindings to disk\n */\nexport async function writeBindings(\n outputDir: string,\n bindings: GeneratedBindings,\n overwrite: boolean,\n): Promise<void> {\n // Check if output directory exists\n try {\n const stat = await fs.stat(outputDir);\n if (stat.isFile()) {\n throw new Error(`Output path is a file: ${outputDir}`);\n }\n if (!overwrite) {\n throw new Error(`Directory exists (use --overwrite): ${outputDir}`);\n }\n await fs.rm(outputDir, { recursive: true, force: true });\n } catch (error: any) {\n if (error.code !== \"ENOENT\") throw error;\n }\n\n await fs.mkdir(path.join(outputDir, \"src\"), { recursive: true });\n\n const writes = [\n fs.writeFile(path.join(outputDir, \"src/index.ts\"), bindings.index),\n fs.writeFile(path.join(outputDir, \"src/client.ts\"), bindings.client),\n fs.writeFile(path.join(outputDir, \".gitignore\"), bindings.gitignore),\n fs.writeFile(path.join(outputDir, \"README.md\"), bindings.readme),\n fs.writeFile(path.join(outputDir, \"package.json\"), bindings.packageJson),\n fs.writeFile(path.join(outputDir, \"tsconfig.json\"), bindings.tsConfig),\n ];\n\n if (bindings.types.trim()) {\n writes.push(\n fs.writeFile(path.join(outputDir, \"src/types.ts\"), bindings.types),\n );\n }\n\n await Promise.all(writes);\n}\n/**\n * Generate and write bindings to disk\n */\nexport async function generateAndWrite(\n generator: BindingGenerator,\n options: GenerateAndWriteOptions,\n): Promise<GeneratedBindings> {\n const { outputDir, overwrite = false, ...genOptions } = options;\n const bindings = generator.generate(genOptions);\n await writeBindings(outputDir, bindings, overwrite);\n return bindings;\n}\n\n/**\n * Log source information\n */\nexport function logSourceInfo(source: ContractSource): void {\n console.log(\"\\nSource:\");\n switch (source.type) {\n case \"file\":\n console.log(` Type: Local file`);\n console.log(` Path: ${source.path}`);\n break;\n case \"wasm-hash\":\n console.log(` Type: WASM hash`);\n console.log(` Hash: ${source.hash}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n case \"contract-id\":\n console.log(` Type: Contract ID`);\n console.log(` Address: ${source.contractId}`);\n console.log(` RPC: ${source.rpcUrl}`);\n console.log(` Network: ${source.network}`);\n break;\n }\n}\n\n/**\n * Derive contract name from source path\n */\nexport function deriveContractName(source: ContractSource): string | null {\n if (source.type !== \"file\") return null;\n\n return path\n .basename(source.path, path.extname(source.path))\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/_/g, \"-\")\n .toLowerCase();\n}\n"],"names":[],"mappings":"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"}
@@ -205,7 +205,7 @@ import { ExpiredStateError, ExternalServiceError, FakeAccountError, InternalWall
205
205
  *
206
206
  * To see an even more complicated example, where Alice swaps with Bob but the
207
207
  * transaction is invoked by yet another party, check out
208
- * [test-swap.js](https://github.com/stellar/js-stellar-sdk/blob/master/test/e2e/src/test-swap.js).
208
+ * [test-swap.js](https://github.com/stellar/js-stellar-sdk/blob/main/test/e2e/src/test-swap.js).
209
209
  *
210
210
  */
211
211
  export declare class AssembledTransaction<T> {
@@ -373,8 +373,9 @@ export declare class AssembledTransaction<T> {
373
373
  */
374
374
  static buildWithOp<T>(operation: xdr.Operation, options: AssembledTransactionOptions<T>): Promise<AssembledTransaction<T>>;
375
375
  private static buildFootprintRestoreTransaction;
376
- simulate: ({ restore }?: {
376
+ simulate: ({ restore, useUpgradedAuth, }?: {
377
377
  restore?: boolean;
378
+ useUpgradedAuth?: boolean;
378
379
  }) => Promise<this>;
379
380
  get simulationData(): {
380
381
  result: Api.SimulateHostFunctionResult;
@@ -477,12 +478,13 @@ export declare class AssembledTransaction<T> {
477
478
  */
478
479
  expiration?: number | Promise<number>;
479
480
  /**
480
- * Sign all auth entries for this account. Default: the account that
481
- * constructed the transaction
481
+ * Sign all auth entries for this account. Default: when `signAuthEntry`
482
+ * is a `Signer` or `Keypair`, its own address; otherwise the account that
483
+ * constructed the transaction (`publicKey`).
482
484
  */
483
485
  address?: string;
484
486
  /**
485
- * You must provide this here if you did not provide one before and you are not passing `authorizeEntry`. Default: the `signAuthEntry` function from the `Client` options. Must sign things as the given `publicKey`.
487
+ * You must provide this here if you did not provide one before and you are not passing `authorizeEntry`. Default: the `signAuthEntry` from the `Client` options. Must sign things as the given `address`.
486
488
  */
487
489
  signAuthEntry?: ClientOptions["signAuthEntry"];
488
490
  /**
@@ -17,11 +17,12 @@ import { Contract } from '../base/contract.js';
17
17
  import { Address } from '../base/address.js';
18
18
  import '../base/scval.js';
19
19
  import { SorobanDataBuilder } from '../base/sorobandata_builder.js';
20
- import { getAddressCredentials, authorizeEntry } from '../base/auth.js';
20
+ import { inspectAuthEntry, authorizeEntry, getAddressCredentials } from '../base/auth.js';
21
21
  import '../base/numbers/uint128.js';
22
22
  import '../base/numbers/uint256.js';
23
23
  import '../base/numbers/int128.js';
24
24
  import '../base/numbers/int256.js';
25
+ import { toSignTransaction, toSignAuthEntry, signerAddress } from './signer.js';
25
26
  import { Api } from '../rpc/api.js';
26
27
  import { RpcServer } from '../rpc/server.js';
27
28
  import { assembleTransaction } from '../rpc/transaction.js';
@@ -339,7 +340,10 @@ class AssembledTransaction {
339
340
  await tx.simulate({ restore: false });
340
341
  return tx;
341
342
  }
342
- simulate = async ({ restore } = {}) => {
343
+ simulate = async ({
344
+ restore,
345
+ useUpgradedAuth
346
+ } = {}) => {
343
347
  if (!this.built) {
344
348
  if (!this.raw) {
345
349
  throw new Error(
@@ -349,9 +353,15 @@ class AssembledTransaction {
349
353
  this.built = this.raw.build();
350
354
  }
351
355
  restore = restore ?? this.options.restore;
356
+ useUpgradedAuth = useUpgradedAuth ?? this.options.useUpgradedAuth;
352
357
  delete this.simulationResult;
353
358
  delete this.simulationTransactionData;
354
- this.simulation = await this.server.simulateTransaction(this.built);
359
+ this.simulation = await this.server.simulateTransaction(
360
+ this.built,
361
+ void 0,
362
+ void 0,
363
+ useUpgradedAuth
364
+ );
355
365
  if (restore && Api.isSimulationRestore(this.simulation)) {
356
366
  const account = await getAccount(this.options, this.server);
357
367
  const result = await this.restoreFootprint(
@@ -368,7 +378,7 @@ class AssembledTransaction {
368
378
  networkPassphrase: this.options.networkPassphrase
369
379
  }).addOperation(op).setTimeout(this.options.timeoutInSeconds ?? DEFAULT_TIMEOUT);
370
380
  delete this.built;
371
- await this.simulate();
381
+ await this.simulate({ useUpgradedAuth });
372
382
  return this;
373
383
  }
374
384
  throw new AssembledTransaction.Errors.RestorationFailure(
@@ -453,7 +463,11 @@ You can set \`restore\` to true in the method options in order to automatically
453
463
  "This is a read call. It requires no signature or sending. Use `force: true` to sign and send anyway."
454
464
  );
455
465
  }
456
- if (!signTransaction) {
466
+ const signTx = toSignTransaction(
467
+ signTransaction,
468
+ this.options.networkPassphrase
469
+ );
470
+ if (!signTx) {
457
471
  throw new AssembledTransaction.Errors.NoSigner(
458
472
  "You must provide a signTransaction function, either when calling `signAndSend` or when initializing your Client"
459
473
  );
@@ -484,7 +498,7 @@ You can set \`restore\` to true in the method options in order to automatically
484
498
  if (this.options.submit !== void 0)
485
499
  signOpts.submit = this.options.submit;
486
500
  if (this.options.submitUrl) signOpts.submitUrl = this.options.submitUrl;
487
- const { signedTxXdr: signature, error } = await signTransaction(
501
+ const { signedTxXdr: signature, error } = await signTx(
488
502
  this.built.toXDR(),
489
503
  signOpts
490
504
  );
@@ -523,7 +537,10 @@ You can set \`restore\` to true in the method options in order to automatically
523
537
  watcher
524
538
  } = {}) => {
525
539
  if (!this.signed) {
526
- const signer = signTransaction || this.options.signTransaction;
540
+ const signer = toSignTransaction(
541
+ signTransaction || this.options.signTransaction,
542
+ this.options.networkPassphrase
543
+ );
527
544
  const wrappedSignTransaction = this.options.submit && signer ? (tx, opts) => signer(tx, { ...opts, submit: false }) : signTransaction;
528
545
  await this.sign({ force, signTransaction: wrappedSignTransaction });
529
546
  }
@@ -564,15 +581,16 @@ You can set \`restore\` to true in the method options in order to automatically
564
581
  const rawInvokeHostFunctionOp = this.built.operations[0];
565
582
  return [
566
583
  ...new Set(
567
- (rawInvokeHostFunctionOp.auth ?? []).map((entry) => getAddressCredentials(entry.credentials())).filter(
568
- (addrAuth) => (
584
+ (rawInvokeHostFunctionOp.auth ?? []).map((entry) => inspectAuthEntry(entry)).filter(
585
+ (info) => (
569
586
  // skip source-account credentials (no address payload), which
570
- // are covered by the envelope signature on the source account
571
- addrAuth !== null && (includeAlreadySigned || addrAuth.signature().switch().name === "scvVoid")
587
+ // are covered by the envelope signature on the source account.
588
+ // Only the top-level credentials (signers[0]) matter here — this
589
+ // method reports (and signAuthEntries signs) the top-level
590
+ // address, so unsigned delegate nodes must not keep it listed.
591
+ info.address !== null && (includeAlreadySigned || !info.signers[0].signed)
572
592
  )
573
- ).map(
574
- (addrAuth) => Address.fromScAddress(addrAuth.address()).toString()
575
- )
593
+ ).map((info) => info.address)
576
594
  )
577
595
  ];
578
596
  };
@@ -595,11 +613,15 @@ You can set \`restore\` to true in the method options in order to automatically
595
613
  signAuthEntries = async ({
596
614
  expiration = (async () => (await this.server.getLatestLedger()).sequence + 100)(),
597
615
  signAuthEntry = this.options.signAuthEntry,
598
- address = this.options.publicKey,
616
+ address = signerAddress(signAuthEntry) ?? this.options.publicKey,
599
617
  authorizeEntry: authorizeEntry$1 = authorizeEntry
600
618
  } = {}) => {
601
619
  if (!this.built)
602
620
  throw new Error("Transaction has not yet been assembled or simulated");
621
+ const signAuth = toSignAuthEntry(
622
+ signAuthEntry,
623
+ this.options.networkPassphrase
624
+ );
603
625
  if (authorizeEntry$1 === authorizeEntry) {
604
626
  const needsNonInvokerSigningBy = this.needsNonInvokerSigningBy();
605
627
  if (needsNonInvokerSigningBy.length === 0) {
@@ -612,7 +634,7 @@ You can set \`restore\` to true in the method options in order to automatically
612
634
  `No auth entries for public key "${address}"`
613
635
  );
614
636
  }
615
- if (!signAuthEntry) {
637
+ if (!signAuth) {
616
638
  throw new AssembledTransaction.Errors.NoSigner(
617
639
  "You must provide `signAuthEntry` or a custom `authorizeEntry`"
618
640
  );
@@ -632,7 +654,7 @@ You can set \`restore\` to true in the method options in order to automatically
632
654
  addrAuth.address()
633
655
  ).toString();
634
656
  if (authEntryAddress !== address) continue;
635
- const sign = signAuthEntry ?? Promise.resolve;
657
+ const sign = signAuth ?? Promise.resolve;
636
658
  authEntries[i] = await authorizeEntry$1(
637
659
  entry,
638
660
  async (preimage) => {