@ton/appkit 0.0.5-alpha.3 → 1.0.0-alpha.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 (428) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/CHANGELOG.md +132 -0
  3. package/dist/cjs/actions/index.d.ts +8 -0
  4. package/dist/cjs/actions/index.d.ts.map +1 -1
  5. package/dist/cjs/actions/index.js +18 -2
  6. package/dist/cjs/actions/jettons/create-transfer-jetton-transaction.d.ts +1 -1
  7. package/dist/cjs/actions/jettons/create-transfer-jetton-transaction.d.ts.map +1 -1
  8. package/dist/cjs/actions/jettons/create-transfer-jetton-transaction.js +17 -5
  9. package/dist/cjs/actions/jettons/get-jetton-balance.d.ts +1 -1
  10. package/dist/cjs/actions/jettons/get-jetton-balance.d.ts.map +1 -1
  11. package/dist/cjs/actions/jettons/get-jetton-balance.js +8 -3
  12. package/dist/cjs/actions/jettons/get-jetton-info.d.ts.map +1 -1
  13. package/dist/cjs/actions/jettons/get-jetton-info.js +15 -6
  14. package/dist/cjs/actions/jettons/get-jetton-wallet-address.d.ts +1 -1
  15. package/dist/cjs/actions/jettons/get-jetton-wallet-address.d.ts.map +1 -1
  16. package/dist/cjs/actions/jettons/get-jetton-wallet-address.js +15 -4
  17. package/dist/cjs/actions/nft/get-nft.d.ts +1 -1
  18. package/dist/cjs/actions/nft/get-nft.d.ts.map +1 -1
  19. package/dist/cjs/actions/staking/get-staking-provider-metadata.d.ts +19 -0
  20. package/dist/cjs/actions/staking/get-staking-provider-metadata.d.ts.map +1 -0
  21. package/dist/cjs/actions/staking/get-staking-provider-metadata.js +18 -0
  22. package/dist/cjs/actions/staking/get-staking-provider.d.ts +21 -0
  23. package/dist/cjs/actions/staking/get-staking-provider.d.ts.map +1 -0
  24. package/dist/cjs/actions/staking/get-staking-provider.js +17 -0
  25. package/dist/cjs/actions/staking/get-staking-providers.d.ts +3 -2
  26. package/dist/cjs/actions/staking/get-staking-providers.d.ts.map +1 -1
  27. package/dist/cjs/actions/staking/get-staking-providers.js +2 -2
  28. package/dist/cjs/actions/staking/set-default-staking-provider.d.ts +18 -0
  29. package/dist/cjs/actions/staking/set-default-staking-provider.d.ts.map +1 -0
  30. package/dist/cjs/actions/staking/set-default-staking-provider.js +18 -0
  31. package/dist/cjs/actions/staking/watch-staking-providers.d.ts +17 -0
  32. package/dist/cjs/actions/staking/watch-staking-providers.d.ts.map +1 -0
  33. package/dist/cjs/actions/staking/watch-staking-providers.js +28 -0
  34. package/dist/cjs/actions/swap/get-swap-provider.d.ts +15 -0
  35. package/dist/cjs/actions/swap/get-swap-provider.d.ts.map +1 -0
  36. package/dist/cjs/actions/swap/get-swap-provider.js +14 -0
  37. package/dist/cjs/actions/swap/get-swap-providers.d.ts +15 -0
  38. package/dist/cjs/actions/swap/get-swap-providers.d.ts.map +1 -0
  39. package/dist/cjs/actions/swap/get-swap-providers.js +17 -0
  40. package/dist/cjs/actions/swap/get-swap-quote.d.ts.map +1 -1
  41. package/dist/cjs/actions/swap/get-swap-quote.js +6 -1
  42. package/dist/cjs/actions/swap/set-default-swap-provider.d.ts +18 -0
  43. package/dist/cjs/actions/swap/set-default-swap-provider.d.ts.map +1 -0
  44. package/dist/cjs/actions/swap/set-default-swap-provider.js +18 -0
  45. package/dist/cjs/actions/swap/watch-swap-providers.d.ts +17 -0
  46. package/dist/cjs/actions/swap/watch-swap-providers.d.ts.map +1 -0
  47. package/dist/cjs/actions/swap/watch-swap-providers.js +29 -0
  48. package/dist/cjs/connectors/tonconnect/connectors/ton-connect-connector.js +2 -2
  49. package/dist/cjs/core/app-kit/constants/events.d.ts +0 -6
  50. package/dist/cjs/core/app-kit/constants/events.d.ts.map +1 -1
  51. package/dist/cjs/core/app-kit/constants/events.js +1 -7
  52. package/dist/cjs/core/app-kit/index.d.ts +2 -2
  53. package/dist/cjs/core/app-kit/index.d.ts.map +1 -1
  54. package/dist/cjs/core/app-kit/index.js +1 -2
  55. package/dist/cjs/core/app-kit/services/app-kit.d.ts +3 -1
  56. package/dist/cjs/core/app-kit/services/app-kit.d.ts.map +1 -1
  57. package/dist/cjs/core/app-kit/services/app-kit.js +4 -2
  58. package/dist/cjs/core/app-kit/types/config.d.ts +4 -2
  59. package/dist/cjs/core/app-kit/types/config.d.ts.map +1 -1
  60. package/dist/cjs/core/app-kit/types/events.d.ts +2 -7
  61. package/dist/cjs/core/app-kit/types/events.d.ts.map +1 -1
  62. package/dist/cjs/core/cache/adapters/lru-app-kit-cache.d.ts +20 -0
  63. package/dist/cjs/core/cache/adapters/lru-app-kit-cache.d.ts.map +1 -0
  64. package/dist/cjs/core/cache/adapters/lru-app-kit-cache.js +32 -0
  65. package/dist/cjs/core/cache/adapters/lru-app-kit-cache.test.d.ts +9 -0
  66. package/dist/cjs/core/cache/adapters/lru-app-kit-cache.test.d.ts.map +1 -0
  67. package/dist/cjs/core/cache/adapters/lru-app-kit-cache.test.js +68 -0
  68. package/dist/cjs/core/cache/index.d.ts +11 -0
  69. package/dist/cjs/core/cache/index.d.ts.map +1 -0
  70. package/dist/cjs/core/cache/index.js +14 -0
  71. package/dist/cjs/core/cache/types/app-kit-cache.d.ts +14 -0
  72. package/dist/cjs/core/cache/types/app-kit-cache.d.ts.map +1 -0
  73. package/dist/cjs/core/cache/types/app-kit-cache.js +9 -0
  74. package/dist/cjs/core/cache/utils/get-cache-key.d.ts +9 -0
  75. package/dist/cjs/core/cache/utils/get-cache-key.d.ts.map +1 -0
  76. package/dist/cjs/core/cache/utils/get-cache-key.js +12 -0
  77. package/dist/cjs/core/cache/utils/get-cache-key.test.d.ts +9 -0
  78. package/dist/cjs/core/cache/utils/get-cache-key.test.d.ts.map +1 -0
  79. package/dist/cjs/core/cache/utils/get-cache-key.test.js +30 -0
  80. package/dist/cjs/index.d.ts +1 -0
  81. package/dist/cjs/index.d.ts.map +1 -1
  82. package/dist/cjs/index.js +1 -0
  83. package/dist/cjs/queries/balances/get-balance-by-address.d.ts.map +1 -1
  84. package/dist/cjs/queries/balances/get-balance-by-address.js +9 -3
  85. package/dist/cjs/queries/index.d.ts +0 -1
  86. package/dist/cjs/queries/index.d.ts.map +1 -1
  87. package/dist/cjs/queries/index.js +1 -3
  88. package/dist/cjs/queries/jettons/get-jetton-balance-by-address.d.ts.map +1 -1
  89. package/dist/cjs/queries/jettons/get-jetton-balance-by-address.js +11 -11
  90. package/dist/cjs/queries/jettons/get-jetton-info.d.ts.map +1 -1
  91. package/dist/cjs/queries/jettons/get-jetton-info.js +5 -1
  92. package/dist/cjs/queries/jettons/get-jetton-wallet-address.d.ts.map +1 -1
  93. package/dist/cjs/queries/jettons/get-jetton-wallet-address.js +6 -1
  94. package/dist/cjs/queries/jettons/get-jettons-by-address.d.ts.map +1 -1
  95. package/dist/cjs/queries/jettons/get-jettons-by-address.js +9 -3
  96. package/dist/cjs/queries/nft/get-nft.d.ts +1 -1
  97. package/dist/cjs/queries/nft/get-nft.d.ts.map +1 -1
  98. package/dist/cjs/queries/nft/get-nft.js +5 -1
  99. package/dist/cjs/queries/nft/get-nfts-by-address.d.ts.map +1 -1
  100. package/dist/cjs/queries/nft/get-nfts-by-address.js +5 -1
  101. package/dist/cjs/queries/staking/get-staked-balance.d.ts +1 -1
  102. package/dist/cjs/queries/staking/get-staked-balance.d.ts.map +1 -1
  103. package/dist/cjs/queries/staking/get-staked-balance.js +7 -1
  104. package/dist/cjs/queries/staking/get-staking-provider-info.d.ts +1 -1
  105. package/dist/cjs/queries/staking/get-staking-provider-info.d.ts.map +1 -1
  106. package/dist/cjs/queries/staking/get-staking-provider-info.js +3 -1
  107. package/dist/cjs/queries/staking/get-staking-quote.d.ts +1 -1
  108. package/dist/cjs/queries/staking/get-staking-quote.d.ts.map +1 -1
  109. package/dist/cjs/queries/staking/get-staking-quote.js +8 -2
  110. package/dist/cjs/queries/swap/get-swap-quote.d.ts.map +1 -1
  111. package/dist/cjs/queries/swap/get-swap-quote.js +1 -1
  112. package/dist/cjs/staking/index.d.ts +2 -2
  113. package/dist/cjs/staking/index.d.ts.map +1 -1
  114. package/dist/cjs/staking/index.js +3 -1
  115. package/dist/cjs/swap/index.d.ts +2 -1
  116. package/dist/cjs/swap/index.d.ts.map +1 -1
  117. package/dist/cjs/swap/index.js +6 -0
  118. package/dist/cjs/types/connector.d.ts +0 -1
  119. package/dist/cjs/types/connector.d.ts.map +1 -1
  120. package/dist/cjs/types/primitives.d.ts +1 -1
  121. package/dist/cjs/types/primitives.d.ts.map +1 -1
  122. package/dist/cjs/utils/address/is-valid-address.d.ts +11 -0
  123. package/dist/cjs/utils/address/is-valid-address.d.ts.map +1 -0
  124. package/dist/cjs/utils/address/is-valid-address.js +38 -0
  125. package/dist/cjs/utils/address/to-bounceble-address.d.ts +11 -0
  126. package/dist/cjs/utils/address/to-bounceble-address.d.ts.map +1 -0
  127. package/dist/cjs/utils/address/to-bounceble-address.js +36 -0
  128. package/dist/cjs/utils/address/to-non-bounceble-address.d.ts +11 -0
  129. package/dist/cjs/utils/address/to-non-bounceble-address.d.ts.map +1 -0
  130. package/dist/cjs/utils/address/to-non-bounceble-address.js +36 -0
  131. package/dist/cjs/utils/amount/calc-fiat-value.d.ts +13 -0
  132. package/dist/cjs/utils/amount/calc-fiat-value.d.ts.map +1 -0
  133. package/dist/cjs/utils/amount/calc-fiat-value.js +22 -0
  134. package/dist/cjs/utils/amount/calc-fiat-value.test.d.ts +9 -0
  135. package/dist/cjs/utils/amount/calc-fiat-value.test.d.ts.map +1 -0
  136. package/dist/cjs/utils/amount/calc-fiat-value.test.js +39 -0
  137. package/dist/cjs/utils/amount/format-large-value.d.ts +9 -0
  138. package/dist/cjs/utils/amount/format-large-value.d.ts.map +1 -0
  139. package/dist/cjs/utils/amount/format-large-value.js +40 -0
  140. package/dist/cjs/utils/amount/format-large-value.test.d.ts +9 -0
  141. package/dist/cjs/utils/amount/format-large-value.test.d.ts.map +1 -0
  142. package/dist/cjs/utils/amount/format-large-value.test.js +43 -0
  143. package/dist/cjs/utils/amount/truncate-decimals.d.ts +9 -0
  144. package/dist/cjs/utils/amount/truncate-decimals.d.ts.map +1 -0
  145. package/dist/cjs/utils/amount/truncate-decimals.js +59 -0
  146. package/dist/cjs/utils/amount/truncate-decimals.test.d.ts +9 -0
  147. package/dist/cjs/utils/amount/truncate-decimals.test.d.ts.map +1 -0
  148. package/dist/cjs/utils/amount/truncate-decimals.test.js +83 -0
  149. package/dist/cjs/utils/balance/calc-max-spendable.d.ts +33 -0
  150. package/dist/cjs/utils/balance/calc-max-spendable.d.ts.map +1 -0
  151. package/dist/cjs/utils/balance/calc-max-spendable.js +29 -0
  152. package/dist/cjs/utils/balance/calc-max-spendable.test.d.ts +9 -0
  153. package/dist/cjs/utils/balance/calc-max-spendable.test.d.ts.map +1 -0
  154. package/dist/cjs/utils/balance/calc-max-spendable.test.js +38 -0
  155. package/dist/cjs/utils/balance/get-ton-shortfall.d.ts +58 -0
  156. package/dist/cjs/utils/balance/get-ton-shortfall.d.ts.map +1 -0
  157. package/dist/cjs/utils/balance/get-ton-shortfall.js +46 -0
  158. package/dist/cjs/utils/balance/get-ton-shortfall.test.d.ts +9 -0
  159. package/dist/cjs/utils/balance/get-ton-shortfall.test.d.ts.map +1 -0
  160. package/dist/cjs/utils/balance/get-ton-shortfall.test.js +133 -0
  161. package/dist/cjs/utils/functions/debounce.d.ts +80 -0
  162. package/dist/cjs/utils/functions/debounce.d.ts.map +1 -0
  163. package/dist/cjs/utils/functions/debounce.js +107 -0
  164. package/dist/cjs/utils/index.d.ts +10 -0
  165. package/dist/cjs/utils/index.d.ts.map +1 -1
  166. package/dist/cjs/utils/index.js +10 -0
  167. package/dist/cjs/utils/jetton/jetton-info.d.ts +2 -1
  168. package/dist/cjs/utils/jetton/jetton-info.d.ts.map +1 -1
  169. package/dist/cjs/utils/jetton/jetton-info.js +11 -1
  170. package/dist/cjs/utils/jetton/jetton-info.test.d.ts +9 -0
  171. package/dist/cjs/utils/jetton/jetton-info.test.d.ts.map +1 -0
  172. package/dist/cjs/utils/jetton/jetton-info.test.js +54 -0
  173. package/dist/cjs/utils/predicate/is-number.d.ts +9 -0
  174. package/dist/cjs/utils/predicate/is-number.d.ts.map +1 -0
  175. package/dist/cjs/utils/predicate/is-number.js +20 -0
  176. package/dist/cjs/utils/predicate/is-string.d.ts +1 -1
  177. package/dist/cjs/utils/predicate/is-string.d.ts.map +1 -1
  178. package/dist/cjs/utils/predicate/is-string.js +4 -3
  179. package/dist/esm/actions/index.d.ts +8 -0
  180. package/dist/esm/actions/index.d.ts.map +1 -1
  181. package/dist/esm/actions/index.js +8 -0
  182. package/dist/esm/actions/jettons/create-transfer-jetton-transaction.d.ts +1 -1
  183. package/dist/esm/actions/jettons/create-transfer-jetton-transaction.d.ts.map +1 -1
  184. package/dist/esm/actions/jettons/create-transfer-jetton-transaction.js +17 -5
  185. package/dist/esm/actions/jettons/get-jetton-balance.d.ts +1 -1
  186. package/dist/esm/actions/jettons/get-jetton-balance.d.ts.map +1 -1
  187. package/dist/esm/actions/jettons/get-jetton-balance.js +7 -2
  188. package/dist/esm/actions/jettons/get-jetton-info.d.ts.map +1 -1
  189. package/dist/esm/actions/jettons/get-jetton-info.js +15 -6
  190. package/dist/esm/actions/jettons/get-jetton-wallet-address.d.ts +1 -1
  191. package/dist/esm/actions/jettons/get-jetton-wallet-address.d.ts.map +1 -1
  192. package/dist/esm/actions/jettons/get-jetton-wallet-address.js +15 -4
  193. package/dist/esm/actions/nft/get-nft.d.ts +1 -1
  194. package/dist/esm/actions/nft/get-nft.d.ts.map +1 -1
  195. package/dist/esm/actions/staking/get-staking-provider-metadata.d.ts +19 -0
  196. package/dist/esm/actions/staking/get-staking-provider-metadata.d.ts.map +1 -0
  197. package/dist/esm/actions/staking/get-staking-provider-metadata.js +14 -0
  198. package/dist/esm/actions/staking/get-staking-provider.d.ts +21 -0
  199. package/dist/esm/actions/staking/get-staking-provider.d.ts.map +1 -0
  200. package/dist/esm/actions/staking/get-staking-provider.js +13 -0
  201. package/dist/esm/actions/staking/get-staking-providers.d.ts +3 -2
  202. package/dist/esm/actions/staking/get-staking-providers.d.ts.map +1 -1
  203. package/dist/esm/actions/staking/get-staking-providers.js +2 -2
  204. package/dist/esm/actions/staking/set-default-staking-provider.d.ts +18 -0
  205. package/dist/esm/actions/staking/set-default-staking-provider.d.ts.map +1 -0
  206. package/dist/esm/actions/staking/set-default-staking-provider.js +14 -0
  207. package/dist/esm/actions/staking/watch-staking-providers.d.ts +17 -0
  208. package/dist/esm/actions/staking/watch-staking-providers.d.ts.map +1 -0
  209. package/dist/esm/actions/staking/watch-staking-providers.js +24 -0
  210. package/dist/esm/actions/swap/get-swap-provider.d.ts +15 -0
  211. package/dist/esm/actions/swap/get-swap-provider.d.ts.map +1 -0
  212. package/dist/esm/actions/swap/get-swap-provider.js +10 -0
  213. package/dist/esm/actions/swap/get-swap-providers.d.ts +15 -0
  214. package/dist/esm/actions/swap/get-swap-providers.d.ts.map +1 -0
  215. package/dist/esm/actions/swap/get-swap-providers.js +13 -0
  216. package/dist/esm/actions/swap/get-swap-quote.d.ts.map +1 -1
  217. package/dist/esm/actions/swap/get-swap-quote.js +6 -1
  218. package/dist/esm/actions/swap/set-default-swap-provider.d.ts +18 -0
  219. package/dist/esm/actions/swap/set-default-swap-provider.d.ts.map +1 -0
  220. package/dist/esm/actions/swap/set-default-swap-provider.js +14 -0
  221. package/dist/esm/actions/swap/watch-swap-providers.d.ts +17 -0
  222. package/dist/esm/actions/swap/watch-swap-providers.d.ts.map +1 -0
  223. package/dist/esm/actions/swap/watch-swap-providers.js +25 -0
  224. package/dist/esm/connectors/tonconnect/connectors/ton-connect-connector.js +2 -2
  225. package/dist/esm/core/app-kit/constants/events.d.ts +0 -6
  226. package/dist/esm/core/app-kit/constants/events.d.ts.map +1 -1
  227. package/dist/esm/core/app-kit/constants/events.js +0 -6
  228. package/dist/esm/core/app-kit/index.d.ts +2 -2
  229. package/dist/esm/core/app-kit/index.d.ts.map +1 -1
  230. package/dist/esm/core/app-kit/index.js +1 -1
  231. package/dist/esm/core/app-kit/services/app-kit.d.ts +3 -1
  232. package/dist/esm/core/app-kit/services/app-kit.d.ts.map +1 -1
  233. package/dist/esm/core/app-kit/services/app-kit.js +4 -2
  234. package/dist/esm/core/app-kit/types/config.d.ts +4 -2
  235. package/dist/esm/core/app-kit/types/config.d.ts.map +1 -1
  236. package/dist/esm/core/app-kit/types/events.d.ts +2 -7
  237. package/dist/esm/core/app-kit/types/events.d.ts.map +1 -1
  238. package/dist/esm/core/cache/adapters/lru-app-kit-cache.d.ts +20 -0
  239. package/dist/esm/core/cache/adapters/lru-app-kit-cache.d.ts.map +1 -0
  240. package/dist/esm/core/cache/adapters/lru-app-kit-cache.js +28 -0
  241. package/dist/esm/core/cache/adapters/lru-app-kit-cache.test.d.ts +9 -0
  242. package/dist/esm/core/cache/adapters/lru-app-kit-cache.test.d.ts.map +1 -0
  243. package/dist/esm/core/cache/adapters/lru-app-kit-cache.test.js +66 -0
  244. package/dist/esm/core/cache/index.d.ts +11 -0
  245. package/dist/esm/core/cache/index.d.ts.map +1 -0
  246. package/dist/esm/core/cache/index.js +9 -0
  247. package/dist/esm/core/cache/types/app-kit-cache.d.ts +14 -0
  248. package/dist/esm/core/cache/types/app-kit-cache.d.ts.map +1 -0
  249. package/dist/esm/core/cache/types/app-kit-cache.js +8 -0
  250. package/dist/esm/core/cache/utils/get-cache-key.d.ts +9 -0
  251. package/dist/esm/core/cache/utils/get-cache-key.d.ts.map +1 -0
  252. package/dist/esm/core/cache/utils/get-cache-key.js +8 -0
  253. package/dist/esm/core/cache/utils/get-cache-key.test.d.ts +9 -0
  254. package/dist/esm/core/cache/utils/get-cache-key.test.d.ts.map +1 -0
  255. package/dist/esm/core/cache/utils/get-cache-key.test.js +28 -0
  256. package/dist/esm/index.d.ts +1 -0
  257. package/dist/esm/index.d.ts.map +1 -1
  258. package/dist/esm/index.js +1 -0
  259. package/dist/esm/queries/balances/get-balance-by-address.d.ts.map +1 -1
  260. package/dist/esm/queries/balances/get-balance-by-address.js +10 -4
  261. package/dist/esm/queries/index.d.ts +0 -1
  262. package/dist/esm/queries/index.d.ts.map +1 -1
  263. package/dist/esm/queries/index.js +0 -1
  264. package/dist/esm/queries/jettons/get-jetton-balance-by-address.d.ts.map +1 -1
  265. package/dist/esm/queries/jettons/get-jetton-balance-by-address.js +12 -12
  266. package/dist/esm/queries/jettons/get-jetton-info.d.ts.map +1 -1
  267. package/dist/esm/queries/jettons/get-jetton-info.js +6 -2
  268. package/dist/esm/queries/jettons/get-jetton-wallet-address.d.ts.map +1 -1
  269. package/dist/esm/queries/jettons/get-jetton-wallet-address.js +7 -2
  270. package/dist/esm/queries/jettons/get-jettons-by-address.d.ts.map +1 -1
  271. package/dist/esm/queries/jettons/get-jettons-by-address.js +10 -4
  272. package/dist/esm/queries/nft/get-nft.d.ts +1 -1
  273. package/dist/esm/queries/nft/get-nft.d.ts.map +1 -1
  274. package/dist/esm/queries/nft/get-nft.js +6 -2
  275. package/dist/esm/queries/nft/get-nfts-by-address.d.ts.map +1 -1
  276. package/dist/esm/queries/nft/get-nfts-by-address.js +6 -2
  277. package/dist/esm/queries/staking/get-staked-balance.d.ts +1 -1
  278. package/dist/esm/queries/staking/get-staked-balance.d.ts.map +1 -1
  279. package/dist/esm/queries/staking/get-staked-balance.js +8 -2
  280. package/dist/esm/queries/staking/get-staking-provider-info.d.ts +1 -1
  281. package/dist/esm/queries/staking/get-staking-provider-info.d.ts.map +1 -1
  282. package/dist/esm/queries/staking/get-staking-provider-info.js +4 -2
  283. package/dist/esm/queries/staking/get-staking-quote.d.ts +1 -1
  284. package/dist/esm/queries/staking/get-staking-quote.d.ts.map +1 -1
  285. package/dist/esm/queries/staking/get-staking-quote.js +9 -3
  286. package/dist/esm/queries/swap/get-swap-quote.d.ts.map +1 -1
  287. package/dist/esm/queries/swap/get-swap-quote.js +1 -1
  288. package/dist/esm/staking/index.d.ts +2 -2
  289. package/dist/esm/staking/index.d.ts.map +1 -1
  290. package/dist/esm/staking/index.js +1 -1
  291. package/dist/esm/swap/index.d.ts +2 -1
  292. package/dist/esm/swap/index.d.ts.map +1 -1
  293. package/dist/esm/swap/index.js +1 -1
  294. package/dist/esm/types/connector.d.ts +0 -1
  295. package/dist/esm/types/connector.d.ts.map +1 -1
  296. package/dist/esm/types/primitives.d.ts +1 -1
  297. package/dist/esm/types/primitives.d.ts.map +1 -1
  298. package/dist/esm/utils/address/is-valid-address.d.ts +11 -0
  299. package/dist/esm/utils/address/is-valid-address.d.ts.map +1 -0
  300. package/dist/esm/utils/address/is-valid-address.js +33 -0
  301. package/dist/esm/utils/address/to-bounceble-address.d.ts +11 -0
  302. package/dist/esm/utils/address/to-bounceble-address.d.ts.map +1 -0
  303. package/dist/esm/utils/address/to-bounceble-address.js +31 -0
  304. package/dist/esm/utils/address/to-non-bounceble-address.d.ts +11 -0
  305. package/dist/esm/utils/address/to-non-bounceble-address.d.ts.map +1 -0
  306. package/dist/esm/utils/address/to-non-bounceble-address.js +31 -0
  307. package/dist/esm/utils/amount/calc-fiat-value.d.ts +13 -0
  308. package/dist/esm/utils/amount/calc-fiat-value.d.ts.map +1 -0
  309. package/dist/esm/utils/amount/calc-fiat-value.js +19 -0
  310. package/dist/esm/utils/amount/calc-fiat-value.test.d.ts +9 -0
  311. package/dist/esm/utils/amount/calc-fiat-value.test.d.ts.map +1 -0
  312. package/dist/esm/utils/amount/calc-fiat-value.test.js +37 -0
  313. package/dist/esm/utils/amount/format-large-value.d.ts +9 -0
  314. package/dist/esm/utils/amount/format-large-value.d.ts.map +1 -0
  315. package/dist/esm/utils/amount/format-large-value.js +36 -0
  316. package/dist/esm/utils/amount/format-large-value.test.d.ts +9 -0
  317. package/dist/esm/utils/amount/format-large-value.test.d.ts.map +1 -0
  318. package/dist/esm/utils/amount/format-large-value.test.js +41 -0
  319. package/dist/esm/utils/amount/truncate-decimals.d.ts +9 -0
  320. package/dist/esm/utils/amount/truncate-decimals.d.ts.map +1 -0
  321. package/dist/esm/utils/amount/truncate-decimals.js +55 -0
  322. package/dist/esm/utils/amount/truncate-decimals.test.d.ts +9 -0
  323. package/dist/esm/utils/amount/truncate-decimals.test.d.ts.map +1 -0
  324. package/dist/esm/utils/amount/truncate-decimals.test.js +81 -0
  325. package/dist/esm/utils/balance/calc-max-spendable.d.ts +33 -0
  326. package/dist/esm/utils/balance/calc-max-spendable.d.ts.map +1 -0
  327. package/dist/esm/utils/balance/calc-max-spendable.js +25 -0
  328. package/dist/esm/utils/balance/calc-max-spendable.test.d.ts +9 -0
  329. package/dist/esm/utils/balance/calc-max-spendable.test.d.ts.map +1 -0
  330. package/dist/esm/utils/balance/calc-max-spendable.test.js +36 -0
  331. package/dist/esm/utils/balance/get-ton-shortfall.d.ts +58 -0
  332. package/dist/esm/utils/balance/get-ton-shortfall.d.ts.map +1 -0
  333. package/dist/esm/utils/balance/get-ton-shortfall.js +42 -0
  334. package/dist/esm/utils/balance/get-ton-shortfall.test.d.ts +9 -0
  335. package/dist/esm/utils/balance/get-ton-shortfall.test.d.ts.map +1 -0
  336. package/dist/esm/utils/balance/get-ton-shortfall.test.js +131 -0
  337. package/dist/esm/utils/functions/debounce.d.ts +80 -0
  338. package/dist/esm/utils/functions/debounce.d.ts.map +1 -0
  339. package/dist/esm/utils/functions/debounce.js +103 -0
  340. package/dist/esm/utils/index.d.ts +10 -0
  341. package/dist/esm/utils/index.d.ts.map +1 -1
  342. package/dist/esm/utils/index.js +10 -0
  343. package/dist/esm/utils/jetton/jetton-info.d.ts +2 -1
  344. package/dist/esm/utils/jetton/jetton-info.d.ts.map +1 -1
  345. package/dist/esm/utils/jetton/jetton-info.js +9 -0
  346. package/dist/esm/utils/jetton/jetton-info.test.d.ts +9 -0
  347. package/dist/esm/utils/jetton/jetton-info.test.d.ts.map +1 -0
  348. package/dist/esm/utils/jetton/jetton-info.test.js +52 -0
  349. package/dist/esm/utils/predicate/is-number.d.ts +9 -0
  350. package/dist/esm/utils/predicate/is-number.d.ts.map +1 -0
  351. package/dist/esm/utils/predicate/is-number.js +16 -0
  352. package/dist/esm/utils/predicate/is-string.d.ts +1 -1
  353. package/dist/esm/utils/predicate/is-string.d.ts.map +1 -1
  354. package/dist/esm/utils/predicate/is-string.js +2 -2
  355. package/docs/actions.md +57 -9
  356. package/docs/swap.md +4 -4
  357. package/package.json +4 -3
  358. package/src/actions/index.ts +32 -0
  359. package/src/actions/jettons/create-transfer-jetton-transaction.ts +22 -6
  360. package/src/actions/jettons/get-jetton-balance.ts +10 -3
  361. package/src/actions/jettons/get-jetton-info.ts +18 -6
  362. package/src/actions/jettons/get-jetton-wallet-address.ts +19 -5
  363. package/src/actions/nft/get-nft.ts +1 -1
  364. package/src/actions/staking/get-staking-provider-metadata.ts +32 -0
  365. package/src/actions/staking/get-staking-provider.ts +30 -0
  366. package/src/actions/staking/get-staking-providers.ts +5 -3
  367. package/src/actions/staking/set-default-staking-provider.ts +26 -0
  368. package/src/actions/staking/watch-staking-providers.ts +39 -0
  369. package/src/actions/swap/get-swap-provider.ts +21 -0
  370. package/src/actions/swap/get-swap-providers.ts +20 -0
  371. package/src/actions/swap/get-swap-quote.ts +7 -1
  372. package/src/actions/swap/set-default-swap-provider.ts +26 -0
  373. package/src/actions/swap/watch-swap-providers.ts +38 -0
  374. package/src/connectors/tonconnect/connectors/ton-connect-connector.ts +2 -2
  375. package/src/core/app-kit/constants/events.ts +0 -7
  376. package/src/core/app-kit/index.ts +1 -2
  377. package/src/core/app-kit/services/app-kit.ts +7 -3
  378. package/src/core/app-kit/types/config.ts +4 -2
  379. package/src/core/app-kit/types/events.ts +2 -10
  380. package/src/core/cache/adapters/lru-app-kit-cache.test.ts +77 -0
  381. package/src/core/cache/adapters/lru-app-kit-cache.ts +38 -0
  382. package/src/core/cache/index.ts +12 -0
  383. package/src/core/cache/types/app-kit-cache.ts +14 -0
  384. package/src/core/cache/utils/get-cache-key.test.ts +34 -0
  385. package/src/core/cache/utils/get-cache-key.ts +12 -0
  386. package/src/index.ts +1 -0
  387. package/src/queries/balances/get-balance-by-address.ts +11 -4
  388. package/src/queries/index.ts +0 -6
  389. package/src/queries/jettons/get-jetton-balance-by-address.ts +13 -12
  390. package/src/queries/jettons/get-jetton-info.ts +6 -2
  391. package/src/queries/jettons/get-jetton-wallet-address.ts +7 -2
  392. package/src/queries/jettons/get-jettons-by-address.ts +18 -4
  393. package/src/queries/nft/get-nft.ts +7 -3
  394. package/src/queries/nft/get-nfts-by-address.ts +6 -2
  395. package/src/queries/staking/get-staked-balance.ts +10 -3
  396. package/src/queries/staking/get-staking-provider-info.ts +5 -2
  397. package/src/queries/staking/get-staking-quote.ts +13 -4
  398. package/src/queries/swap/get-swap-quote.ts +3 -1
  399. package/src/staking/index.ts +10 -1
  400. package/src/swap/index.ts +2 -4
  401. package/src/types/connector.ts +0 -1
  402. package/src/types/primitives.ts +1 -1
  403. package/src/utils/address/is-valid-address.ts +40 -0
  404. package/src/utils/address/to-bounceble-address.ts +35 -0
  405. package/src/utils/address/to-non-bounceble-address.ts +35 -0
  406. package/src/utils/amount/calc-fiat-value.test.ts +46 -0
  407. package/src/utils/amount/calc-fiat-value.ts +18 -0
  408. package/src/utils/amount/format-large-value.test.ts +50 -0
  409. package/src/utils/amount/format-large-value.ts +43 -0
  410. package/src/utils/amount/truncate-decimals.test.ts +97 -0
  411. package/src/utils/amount/truncate-decimals.ts +56 -0
  412. package/src/utils/balance/calc-max-spendable.test.ts +46 -0
  413. package/src/utils/balance/calc-max-spendable.ts +44 -0
  414. package/src/utils/balance/get-ton-shortfall.test.ts +148 -0
  415. package/src/utils/balance/get-ton-shortfall.ts +82 -0
  416. package/src/utils/functions/debounce.ts +169 -0
  417. package/src/utils/index.ts +10 -0
  418. package/src/utils/jetton/jetton-info.test.ts +65 -0
  419. package/src/utils/jetton/jetton-info.ts +12 -1
  420. package/src/utils/predicate/is-number.ts +19 -0
  421. package/src/utils/predicate/is-string.ts +2 -2
  422. package/dist/cjs/queries/staking/get-staking-providers.d.ts +0 -20
  423. package/dist/cjs/queries/staking/get-staking-providers.d.ts.map +0 -1
  424. package/dist/cjs/queries/staking/get-staking-providers.js +0 -25
  425. package/dist/esm/queries/staking/get-staking-providers.d.ts +0 -20
  426. package/dist/esm/queries/staking/get-staking-providers.d.ts.map +0 -1
  427. package/dist/esm/queries/staking/get-staking-providers.js +0 -20
  428. package/src/queries/staking/get-staking-providers.ts +0 -52
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ export const isNumber = (value) => {
9
+ if (typeof value !== 'number') {
10
+ return false;
11
+ }
12
+ if (Number.isNaN(value)) {
13
+ return false;
14
+ }
15
+ return Number.isFinite(value);
16
+ };
@@ -5,5 +5,5 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- export declare function isString(value: unknown): value is string;
8
+ export declare const isString: (value: unknown) => value is string;
9
9
  //# sourceMappingURL=is-string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-string.d.ts","sourceRoot":"","sources":["../../../../src/utils/predicate/is-string.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD"}
1
+ {"version":3,"file":"is-string.d.ts","sourceRoot":"","sources":["../../../../src/utils/predicate/is-string.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAElD,CAAC"}
@@ -5,6 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- export function isString(value) {
8
+ export const isString = (value) => {
9
9
  return typeof value === 'string';
10
- }
10
+ };
package/docs/actions.md CHANGED
@@ -202,7 +202,6 @@ if (!selectedWallet) {
202
202
  const balance = await getJettonBalance(appKit, {
203
203
  jettonAddress: 'EQDBE420tTQIkoWcZ9pEOTKY63WVmwyIl3hH6yWl0r_h51Tl',
204
204
  ownerAddress: selectedWallet.getAddress(),
205
- jettonDecimals: 6,
206
205
  });
207
206
  console.log('Jetton Balance:', balance.toString());
208
207
  ```
@@ -246,7 +245,6 @@ const tx = await createTransferJettonTransaction(appKit, {
246
245
  recipientAddress: 'EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c',
247
246
  amount: '100', // 100 USDT
248
247
  comment: 'Hello Jetton',
249
- jettonDecimals: 6,
250
248
  });
251
249
  console.log('Transfer Transaction:', tx);
252
250
  ```
@@ -260,7 +258,6 @@ const result = await transferJetton(appKit, {
260
258
  jettonAddress: 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs',
261
259
  recipientAddress: 'EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c',
262
260
  amount: '100',
263
- jettonDecimals: 6,
264
261
  });
265
262
  console.log('Transfer Result:', result);
266
263
  ```
@@ -445,11 +442,12 @@ console.log('NFT Transfer Result:', result);
445
442
  Register a custom provider in AppKit (e.g., Swap or Streaming).
446
443
 
447
444
  ```ts
448
- const omnistonProvider = new OmnistonSwapProvider({
449
- defaultSlippageBps: 100, // 1%
450
- });
451
-
452
- registerProvider(appKit, omnistonProvider);
445
+ registerProvider(
446
+ appKit,
447
+ createOmnistonProvider({
448
+ defaultSlippageBps: 100, // 1%
449
+ }),
450
+ );
453
451
  ```
454
452
 
455
453
  ## Signing
@@ -502,6 +500,45 @@ Get the `SwapManager` instance to interact with swap providers directly.
502
500
  const swapManager = getSwapManager(appKit);
503
501
  ```
504
502
 
503
+ ### `getSwapProvider`
504
+
505
+ Get a specific swap provider by its ID.
506
+
507
+ ```ts
508
+ const swapProvider = getSwapProvider(appKit, { id: 'stonfi' });
509
+ ```
510
+
511
+ ### `getSwapProviders`
512
+
513
+ Get all registered swap providers. The returned array keeps a stable reference until the provider list changes.
514
+
515
+ ```ts
516
+ const swapProviders = getSwapProviders(appKit);
517
+ console.log(
518
+ 'Registered providers:',
519
+ swapProviders.map((p) => p.providerId),
520
+ );
521
+ ```
522
+
523
+ ### `setDefaultSwapProvider`
524
+
525
+ Set the default swap provider. Subsequent quote and swap-transaction calls will use this provider when none is specified.
526
+
527
+ ```ts
528
+ setDefaultSwapProvider(appKit, { providerId: 'stonfi' });
529
+ ```
530
+
531
+ ### `watchSwapProviders`
532
+
533
+ Watch for new swap providers registration.
534
+
535
+ ```ts
536
+ const unsubscribe = watchSwapProviders(appKit, {
537
+ onChange: () => console.log('Swap providers updated'),
538
+ });
539
+ unsubscribe();
540
+ ```
541
+
505
542
  ### `getSwapQuote`
506
543
 
507
544
  Get a swap quote from registered providers.
@@ -546,7 +583,7 @@ console.log('Available Staking Providers:', providers);
546
583
 
547
584
  ### `getStakingProviderInfo`
548
585
 
549
- Get information about a specific staking provider.
586
+ Get dynamic information about a specific staking provider (e.g. APY, rate).
550
587
 
551
588
  ```ts
552
589
  const providerInfo = await getStakingProviderInfo(appKit, {
@@ -555,6 +592,17 @@ const providerInfo = await getStakingProviderInfo(appKit, {
555
592
  console.log('Provider Info:', providerInfo);
556
593
  ```
557
594
 
595
+ ### `getStakingProviderMetadata`
596
+
597
+ Get static metadata about a specific staking provider.
598
+
599
+ ```ts
600
+ const providerMetadata = getStakingProviderMetadata(appKit, {
601
+ providerId: 'tonstakers',
602
+ });
603
+ console.log('Provider Metadata:', providerMetadata);
604
+ ```
605
+
558
606
  ### `getStakingQuote`
559
607
 
560
608
  Get a staking or unstaking quote.
package/docs/swap.md CHANGED
@@ -37,11 +37,11 @@ const appKit = new AppKit({
37
37
  },
38
38
  },
39
39
  providers: [
40
- new OmnistonSwapProvider({
40
+ createOmnistonProvider({
41
41
  apiUrl: 'https://api.ston.fi',
42
42
  defaultSlippageBps: 100, // 1%
43
43
  }),
44
- new DeDustSwapProvider({
44
+ createDeDustProvider({
45
45
  defaultSlippageBps: 100,
46
46
  referralAddress: 'EQ...', // Optional
47
47
  }),
@@ -67,8 +67,8 @@ const appKit = new AppKit({
67
67
  });
68
68
 
69
69
  // 2. Register swap providers
70
- registerProvider(appKit, new OmnistonSwapProvider({ defaultSlippageBps: 100 }));
71
- registerProvider(appKit, new DeDustSwapProvider({ defaultSlippageBps: 100 }));
70
+ registerProvider(appKit, createOmnistonProvider({ defaultSlippageBps: 100 }));
71
+ registerProvider(appKit, createDeDustProvider({ defaultSlippageBps: 100 }));
72
72
  ```
73
73
 
74
74
  ## Configuration
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ton/appkit",
3
- "version": "0.0.5-alpha.3",
3
+ "version": "1.0.0-alpha.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -79,7 +79,8 @@
79
79
  }
80
80
  },
81
81
  "dependencies": {
82
- "@ton/walletkit": "0.0.12-alpha.3"
82
+ "lru-cache": "11.3.5",
83
+ "@ton/walletkit": "1.0.0-alpha.0"
83
84
  },
84
85
  "peerDependencies": {
85
86
  "@tanstack/query-core": ">=5.0.0",
@@ -104,7 +105,7 @@
104
105
  "devDependencies": {
105
106
  "@tanstack/query-core": "5.99.0",
106
107
  "@ton/core": "0.63.1",
107
- "@tonconnect/ui": "2.4.4",
108
+ "@tonconnect/ui": "2.5.0-alpha.0",
108
109
  "typescript": "~5.9.3",
109
110
  "vitest": "^4.1.4"
110
111
  },
@@ -115,7 +115,19 @@ export { signCell, type SignCellParameters, type SignCellReturnType } from './si
115
115
 
116
116
  // Swap
117
117
  export { getSwapManager, type GetSwapManagerReturnType } from './swap/get-swap-manager';
118
+ export { getSwapProvider, type GetSwapProviderOptions, type GetSwapProviderReturnType } from './swap/get-swap-provider';
119
+ export { getSwapProviders, type GetSwapProvidersReturnType } from './swap/get-swap-providers';
120
+ export {
121
+ setDefaultSwapProvider,
122
+ type SetDefaultSwapProviderParameters,
123
+ type SetDefaultSwapProviderReturnType,
124
+ } from './swap/set-default-swap-provider';
118
125
  export { getSwapQuote, type GetSwapQuoteOptions, type GetSwapQuoteReturnType } from './swap/get-swap-quote';
126
+ export {
127
+ watchSwapProviders,
128
+ type WatchSwapProvidersParameters,
129
+ type WatchSwapProvidersReturnType,
130
+ } from './swap/watch-swap-providers';
119
131
  export {
120
132
  buildSwapTransaction,
121
133
  type BuildSwapTransactionOptions,
@@ -125,6 +137,21 @@ export {
125
137
  // Staking
126
138
  export { getStakingManager, type GetStakingManagerReturnType } from './staking/get-staking-manager';
127
139
  export { getStakingProviders, type GetStakingProvidersReturnType } from './staking/get-staking-providers';
140
+ export {
141
+ getStakingProvider,
142
+ type GetStakingProviderOptions,
143
+ type GetStakingProviderReturnType,
144
+ } from './staking/get-staking-provider';
145
+ export {
146
+ setDefaultStakingProvider,
147
+ type SetDefaultStakingProviderParameters,
148
+ type SetDefaultStakingProviderReturnType,
149
+ } from './staking/set-default-staking-provider';
150
+ export {
151
+ watchStakingProviders,
152
+ type WatchStakingProvidersParameters,
153
+ type WatchStakingProvidersReturnType,
154
+ } from './staking/watch-staking-providers';
128
155
  export {
129
156
  getStakingQuote,
130
157
  type GetStakingQuoteOptions,
@@ -145,6 +172,11 @@ export {
145
172
  type GetStakingProviderInfoOptions,
146
173
  type GetStakingProviderInfoReturnType,
147
174
  } from './staking/get-staking-provider-info';
175
+ export {
176
+ getStakingProviderMetadata,
177
+ type GetStakingProviderMetadataOptions,
178
+ type GetStakingProviderMetadataReturnType,
179
+ } from './staking/get-staking-provider-metadata';
148
180
 
149
181
  // Transactions
150
182
  export {
@@ -17,12 +17,14 @@ import {
17
17
  import type { TransactionRequest } from '../../types/transaction';
18
18
  import type { AppKit } from '../../core/app-kit';
19
19
  import { getSelectedWallet } from '../wallets/get-selected-wallet';
20
+ import { getJettonInfo } from './get-jetton-info';
21
+ import { isNumber } from '../../utils';
20
22
 
21
23
  export interface CreateTransferJettonTransactionParameters {
22
24
  jettonAddress: string;
23
25
  recipientAddress: string;
24
26
  amount: string;
25
- jettonDecimals: number;
27
+ jettonDecimals?: number;
26
28
  comment?: string;
27
29
  }
28
30
 
@@ -44,16 +46,30 @@ export const createTransferJettonTransaction = async (
44
46
  }
45
47
 
46
48
  // Get client from network manager
47
- const client = appKit.networkManager.getClient(wallet.getNetwork());
49
+ const network = wallet.getNetwork();
50
+ const client = appKit.networkManager.getClient(network);
48
51
 
49
52
  // Get jetton wallet address
50
- const jettonWalletAddress = await getJettonWalletAddressFromClient(client, jettonAddress, wallet.getAddress());
53
+ const ownerAddress = wallet.getAddress();
54
+ const jettonWalletAddress = await getJettonWalletAddressFromClient(client, jettonAddress, ownerAddress);
55
+
56
+ let decimals = jettonDecimals;
57
+
58
+ if (!isNumber(decimals)) {
59
+ const jettonInfo = await getJettonInfo(appKit, { address: jettonAddress, network });
60
+
61
+ if (!isNumber(jettonInfo?.decimals)) {
62
+ throw new Error(`Jetton decimals not found for address ${jettonAddress}`);
63
+ }
64
+
65
+ decimals = jettonInfo.decimals;
66
+ }
51
67
 
52
68
  // Create jetton transfer payload
53
69
  const jettonPayload = createJettonTransferPayload({
54
- amount: parseUnits(amount, jettonDecimals),
70
+ amount: parseUnits(amount, decimals),
55
71
  destination: recipientAddress,
56
- responseDestination: wallet.getAddress(),
72
+ responseDestination: ownerAddress,
57
73
  comment,
58
74
  });
59
75
 
@@ -62,6 +78,6 @@ export const createTransferJettonTransaction = async (
62
78
  targetAddress: jettonWalletAddress,
63
79
  amount: DEFAULT_JETTON_GAS_FEE,
64
80
  payload: jettonPayload,
65
- fromAddress: wallet.getAddress(),
81
+ fromAddress: ownerAddress,
66
82
  });
67
83
  };
@@ -11,13 +11,14 @@ import type { TokenAmount, UserFriendlyAddress } from '@ton/walletkit';
11
11
 
12
12
  import type { AppKit } from '../../core/app-kit';
13
13
  import { getJettonWalletAddress } from './get-jetton-wallet-address';
14
- import { resolveNetwork } from '../../utils/network/resolve-network';
14
+ import { getJettonInfo } from './get-jetton-info';
15
+ import { isNumber, resolveNetwork } from '../../utils';
15
16
  import type { Network } from '../../types/network';
16
17
 
17
18
  export interface GetJettonBalanceOptions {
18
19
  jettonAddress: UserFriendlyAddress;
19
20
  ownerAddress: UserFriendlyAddress;
20
- jettonDecimals: number;
21
+ jettonDecimals?: number;
21
22
  network?: Network;
22
23
  }
23
24
 
@@ -38,5 +39,11 @@ export const getJettonBalance = async (
38
39
  });
39
40
  const balance = await getJettonBalanceFromClient(client, jettonWalletAddress);
40
41
 
41
- return formatUnits(balance, jettonDecimals);
42
+ if (isNumber(jettonDecimals)) {
43
+ return formatUnits(balance, jettonDecimals);
44
+ }
45
+
46
+ const jettonInfo = await getJettonInfo(appKit, { address: jettonAddress, network });
47
+
48
+ return formatUnits(balance, jettonInfo?.decimals ?? 0);
42
49
  };
@@ -9,8 +9,9 @@
9
9
  import type { JettonInfo } from '@ton/walletkit';
10
10
 
11
11
  import type { AppKit } from '../../core/app-kit';
12
- import { resolveNetwork } from '../../utils/network/resolve-network';
12
+ import { toBounceableAddress, resolveNetwork, isJettonInfo } from '../../utils';
13
13
  import type { Network } from '../../types/network';
14
+ import { getCacheKey } from '../../core/cache';
14
15
 
15
16
  export interface GetJettonInfoOptions {
16
17
  address: string;
@@ -19,16 +20,23 @@ export interface GetJettonInfoOptions {
19
20
 
20
21
  export type GetJettonInfoReturnType = JettonInfo | null;
21
22
 
23
+ const getJettonInfoCacheKey = getCacheKey('jetton-info');
24
+
22
25
  export const getJettonInfo = async (
23
26
  appKit: AppKit,
24
27
  options: GetJettonInfoOptions,
25
28
  ): Promise<GetJettonInfoReturnType> => {
26
- const { address, network } = options;
29
+ const address = toBounceableAddress(options.address);
30
+ const network = resolveNetwork(appKit, options.network);
31
+ const cacheKey = getJettonInfoCacheKey(address, network.chainId);
32
+
33
+ const cached = await appKit.cache.get(cacheKey);
34
+ if (cached && isJettonInfo(cached)) return cached;
27
35
 
28
- const client = appKit.networkManager.getClient(resolveNetwork(appKit, network));
36
+ const client = appKit.networkManager.getClient(network);
29
37
 
30
38
  const response = await client.jettonsByAddress({
31
- address: address,
39
+ address,
32
40
  offset: 0,
33
41
  limit: 1,
34
42
  });
@@ -61,13 +69,17 @@ export const getJettonInfo = async (
61
69
  }
62
70
  }
63
71
 
64
- return {
72
+ const result: GetJettonInfoReturnType = {
73
+ address,
65
74
  decimals,
66
- address: jetton.jetton,
67
75
  name: tokenInfo?.name ?? '',
68
76
  symbol: tokenInfo?.symbol ?? '',
69
77
  description: tokenInfo?.description ?? '',
70
78
  image: tokenInfo?.image,
71
79
  uri: tokenInfo?.extra?.uri,
72
80
  };
81
+
82
+ await appKit.cache.set(cacheKey, result);
83
+
84
+ return result;
73
85
  };
@@ -7,11 +7,12 @@
7
7
  */
8
8
 
9
9
  import { getJettonWalletAddressFromClient } from '@ton/walletkit';
10
- import type { UserFriendlyAddress } from '@ton/walletkit';
11
10
 
11
+ import type { UserFriendlyAddress } from '../../types/primitives';
12
12
  import type { AppKit } from '../../core/app-kit';
13
- import { resolveNetwork } from '../../utils/network/resolve-network';
14
13
  import type { Network } from '../../types/network';
14
+ import { getCacheKey } from '../../core/cache';
15
+ import { isFriendlyTonAddress, resolveNetwork, toBounceableAddress } from '../../utils';
15
16
 
16
17
  export interface GetJettonWalletAddressOptions {
17
18
  jettonAddress: UserFriendlyAddress;
@@ -21,13 +22,26 @@ export interface GetJettonWalletAddressOptions {
21
22
 
22
23
  export type GetJettonWalletAddressReturnType = UserFriendlyAddress;
23
24
 
25
+ const getJettonWalletCacheKey = getCacheKey('jetton-wallet-address');
26
+
24
27
  export const getJettonWalletAddress = async (
25
28
  appKit: AppKit,
26
29
  options: GetJettonWalletAddressOptions,
27
30
  ): Promise<GetJettonWalletAddressReturnType> => {
28
- const { jettonAddress, ownerAddress, network } = options;
31
+ const ownerAddress = toBounceableAddress(options.ownerAddress);
32
+ const jettonAddress = toBounceableAddress(options.jettonAddress);
33
+ const network = resolveNetwork(appKit, options.network);
34
+
35
+ const cacheKey = getJettonWalletCacheKey(network.chainId, ownerAddress, jettonAddress);
36
+
37
+ const cached = await appKit.cache.get(cacheKey);
38
+ if (cached && isFriendlyTonAddress(cached)) {
39
+ return cached;
40
+ }
29
41
 
30
- const client = appKit.networkManager.getClient(resolveNetwork(appKit, network));
42
+ const client = appKit.networkManager.getClient(network);
43
+ const jettonWalletAddress = await getJettonWalletAddressFromClient(client, jettonAddress, ownerAddress);
44
+ await appKit.cache.set(cacheKey, jettonWalletAddress);
31
45
 
32
- return getJettonWalletAddressFromClient(client, jettonAddress, ownerAddress);
46
+ return jettonWalletAddress;
33
47
  };
@@ -19,7 +19,7 @@ export interface GetNftOptions {
19
19
  network?: Network;
20
20
  }
21
21
 
22
- export type GetNftReturnType = NFT | null;
22
+ export type GetNftReturnType = NFT | undefined;
23
23
 
24
24
  export const getNft = async (appKit: AppKit, options: GetNftOptions): Promise<GetNftReturnType> => {
25
25
  const { address, network } = options;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import type { StakingProviderMetadata, Network } from '@ton/walletkit';
10
+
11
+ import { resolveNetwork } from '../../utils';
12
+ import type { AppKit } from '../../core/app-kit';
13
+
14
+ export type GetStakingProviderMetadataOptions = {
15
+ network?: Network;
16
+ providerId?: string;
17
+ };
18
+
19
+ export type GetStakingProviderMetadataReturnType = StakingProviderMetadata;
20
+
21
+ /**
22
+ * Get staking provider static metadata
23
+ */
24
+ export const getStakingProviderMetadata = (
25
+ appKit: AppKit,
26
+ options: GetStakingProviderMetadataOptions = {},
27
+ ): GetStakingProviderMetadataReturnType => {
28
+ return appKit.stakingManager.getStakingProviderMetadata(
29
+ resolveNetwork(appKit, options.network),
30
+ options.providerId,
31
+ );
32
+ };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import type { StakingProviderInterface } from '@ton/walletkit';
10
+
11
+ import type { AppKit } from '../../core/app-kit';
12
+
13
+ export type GetStakingProviderOptions = {
14
+ /**
15
+ * Provider ID to get. If not provided, returns default provider.
16
+ */
17
+ id?: string;
18
+ };
19
+
20
+ export type GetStakingProviderReturnType = StakingProviderInterface;
21
+
22
+ /**
23
+ * Get staking provider instance
24
+ */
25
+ export const getStakingProvider = (
26
+ appKit: AppKit,
27
+ options: GetStakingProviderOptions = {},
28
+ ): GetStakingProviderReturnType => {
29
+ return appKit.stakingManager.getProvider(options.id);
30
+ };
@@ -6,13 +6,15 @@
6
6
  *
7
7
  */
8
8
 
9
+ import type { StakingProviderInterface } from '@ton/walletkit';
10
+
9
11
  import type { AppKit } from '../../core/app-kit';
10
12
 
11
- export type GetStakingProvidersReturnType = string[];
13
+ export type GetStakingProvidersReturnType = StakingProviderInterface[];
12
14
 
13
15
  /**
14
- * Get available staking provider IDs
16
+ * Get all registered staking providers.
15
17
  */
16
18
  export const getStakingProviders = (appKit: AppKit): GetStakingProvidersReturnType => {
17
- return appKit.stakingManager.getRegisteredProviders();
19
+ return appKit.stakingManager.getProviders();
18
20
  };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import type { AppKit } from '../../core/app-kit';
10
+
11
+ export interface SetDefaultStakingProviderParameters {
12
+ providerId: string;
13
+ }
14
+
15
+ export type SetDefaultStakingProviderReturnType = void;
16
+
17
+ /**
18
+ * Set the default staking provider.
19
+ * Subsequent quote and stake-transaction calls will use this provider when none is specified.
20
+ */
21
+ export const setDefaultStakingProvider = (
22
+ appKit: AppKit,
23
+ parameters: SetDefaultStakingProviderParameters,
24
+ ): SetDefaultStakingProviderReturnType => {
25
+ appKit.stakingManager.setDefaultProvider(parameters.providerId);
26
+ };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import type { AppKit } from '../../core/app-kit';
10
+
11
+ export interface WatchStakingProvidersParameters {
12
+ onChange: () => void;
13
+ }
14
+
15
+ export type WatchStakingProvidersReturnType = () => void;
16
+
17
+ /**
18
+ * Watch for staking providers registration and default provider changes
19
+ */
20
+ export const watchStakingProviders = (
21
+ appKit: AppKit,
22
+ parameters: WatchStakingProvidersParameters,
23
+ ): WatchStakingProvidersReturnType => {
24
+ const { onChange } = parameters;
25
+
26
+ const onEvent = (event: { payload: { type: string } }) => {
27
+ if (event.payload.type === 'staking') {
28
+ onChange();
29
+ }
30
+ };
31
+
32
+ const unsubscribeRegistered = appKit.emitter.on('provider:registered', onEvent);
33
+ const unsubscribeDefaultChanged = appKit.emitter.on('provider:default-changed', onEvent);
34
+
35
+ return () => {
36
+ unsubscribeRegistered();
37
+ unsubscribeDefaultChanged();
38
+ };
39
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import type { SwapProviderInterface } from '@ton/walletkit';
10
+
11
+ import type { AppKit } from '../../core/app-kit';
12
+
13
+ export interface GetSwapProviderOptions {
14
+ id?: string;
15
+ }
16
+
17
+ export type GetSwapProviderReturnType = SwapProviderInterface;
18
+
19
+ export const getSwapProvider = (appKit: AppKit, options: GetSwapProviderOptions = {}): GetSwapProviderReturnType => {
20
+ return appKit.swapManager.getProvider(options.id);
21
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) TonTech.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import type { SwapProviderInterface } from '@ton/walletkit';
10
+
11
+ import type { AppKit } from '../../core/app-kit';
12
+
13
+ export type GetSwapProvidersReturnType = SwapProviderInterface[];
14
+
15
+ /**
16
+ * Get all registered swap providers.
17
+ */
18
+ export const getSwapProviders = (appKit: AppKit): GetSwapProvidersReturnType => {
19
+ return appKit.swapManager.getProviders();
20
+ };
@@ -9,6 +9,7 @@
9
9
  import type { SwapQuote, SwapQuoteParams } from '@ton/walletkit';
10
10
 
11
11
  import type { AppKit } from '../../core/app-kit';
12
+ import { resolveNetwork } from '../../utils';
12
13
 
13
14
  export type GetSwapQuoteOptions<T = unknown> = SwapQuoteParams<T> & {
14
15
  providerId?: string;
@@ -23,5 +24,10 @@ export const getSwapQuote = async <T = unknown>(
23
24
  appKit: AppKit,
24
25
  options: GetSwapQuoteOptions<T>,
25
26
  ): GetSwapQuoteReturnType => {
26
- return appKit.swapManager.getQuote(options, options.providerId);
27
+ const optionsWithNetwork = {
28
+ ...options,
29
+ network: resolveNetwork(appKit, options.network),
30
+ };
31
+
32
+ return appKit.swapManager.getQuote(optionsWithNetwork, options.providerId);
27
33
  };