@lifi/sdk 3.3.0-alpha.3 → 3.3.0-beta.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 (156) hide show
  1. package/package.json +3 -7
  2. package/src/_cjs/config.js +1 -0
  3. package/src/_cjs/config.js.map +1 -1
  4. package/src/_cjs/core/EVM/EVMStepExecutor.js +15 -3
  5. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
  6. package/src/_cjs/core/EVM/checkAllowance.js +5 -1
  7. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
  8. package/src/_cjs/core/EVM/switchChain.js +5 -1
  9. package/src/_cjs/core/EVM/switchChain.js.map +1 -1
  10. package/src/_cjs/core/Solana/SolanaStepExecutor.js +10 -2
  11. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
  12. package/src/_cjs/core/StatusManager.js +2 -1
  13. package/src/_cjs/core/StatusManager.js.map +1 -1
  14. package/src/_cjs/core/UTXO/UTXOStepExecutor.js +39 -17
  15. package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -1
  16. package/src/_cjs/core/UTXO/getUTXOPublicClient.js +1 -0
  17. package/src/_cjs/core/UTXO/getUTXOPublicClient.js.map +1 -1
  18. package/src/_cjs/core/UTXO/parseUTXOErrors.js +4 -0
  19. package/src/_cjs/core/UTXO/parseUTXOErrors.js.map +1 -1
  20. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js +31 -0
  21. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
  22. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js +27 -0
  23. package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
  24. package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -9
  25. package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
  26. package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js +185 -0
  27. package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
  28. package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js +45 -0
  29. package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
  30. package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js +3 -0
  31. package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
  32. package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js +51 -0
  33. package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
  34. package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js +50 -0
  35. package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
  36. package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js +48 -0
  37. package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
  38. package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js +28 -0
  39. package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
  40. package/src/_cjs/errors/constants.js +1 -0
  41. package/src/_cjs/errors/constants.js.map +1 -1
  42. package/src/_cjs/services/api.js +1 -1
  43. package/src/_cjs/services/balance.js +9 -2
  44. package/src/_cjs/services/balance.js.map +1 -1
  45. package/src/_cjs/version.js +1 -1
  46. package/src/_cjs/version.js.map +1 -1
  47. package/src/_esm/config.js +1 -0
  48. package/src/_esm/config.js.map +1 -1
  49. package/src/_esm/core/EVM/EVMStepExecutor.js +15 -3
  50. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  51. package/src/_esm/core/EVM/checkAllowance.js +5 -1
  52. package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
  53. package/src/_esm/core/EVM/switchChain.js +5 -1
  54. package/src/_esm/core/EVM/switchChain.js.map +1 -1
  55. package/src/_esm/core/Solana/SolanaStepExecutor.js +10 -2
  56. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
  57. package/src/_esm/core/StatusManager.js +11 -4
  58. package/src/_esm/core/StatusManager.js.map +1 -1
  59. package/src/_esm/core/UTXO/UTXOStepExecutor.js +41 -35
  60. package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -1
  61. package/src/_esm/core/UTXO/getUTXOPublicClient.js +1 -0
  62. package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -1
  63. package/src/_esm/core/UTXO/parseUTXOErrors.js +5 -0
  64. package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -1
  65. package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js +28 -0
  66. package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
  67. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js +24 -0
  68. package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
  69. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -10
  70. package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
  71. package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js +230 -0
  72. package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
  73. package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js +58 -0
  74. package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
  75. package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js +2 -0
  76. package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
  77. package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js +55 -0
  78. package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
  79. package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js +53 -0
  80. package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
  81. package/src/_esm/core/UTXO/utxo-stack/utils/observe.js +51 -0
  82. package/src/_esm/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
  83. package/src/_esm/core/UTXO/utxo-stack/utils/poll.js +28 -0
  84. package/src/_esm/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
  85. package/src/_esm/errors/constants.js +1 -0
  86. package/src/_esm/errors/constants.js.map +1 -1
  87. package/src/_esm/services/api.js +1 -1
  88. package/src/_esm/services/balance.js +9 -2
  89. package/src/_esm/services/balance.js.map +1 -1
  90. package/src/_esm/version.js +1 -1
  91. package/src/_esm/version.js.map +1 -1
  92. package/src/_types/config.d.ts.map +1 -1
  93. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
  94. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
  95. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
  96. package/src/_types/core/StatusManager.d.ts +18 -8
  97. package/src/_types/core/StatusManager.d.ts.map +1 -1
  98. package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -1
  99. package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -1
  100. package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts +13 -0
  101. package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts.map +1 -0
  102. package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts +15 -0
  103. package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts.map +1 -0
  104. package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts +2 -2
  105. package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts.map +1 -1
  106. package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts +1 -1
  107. package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts.map +1 -1
  108. package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts +76 -0
  109. package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts.map +1 -0
  110. package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts +26 -0
  111. package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts.map +1 -0
  112. package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts +16 -0
  113. package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts.map +1 -1
  114. package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts +35 -0
  115. package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts.map +1 -0
  116. package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts +3 -0
  117. package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts.map +1 -0
  118. package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts +3 -0
  119. package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts.map +1 -0
  120. package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts +19 -0
  121. package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts.map +1 -0
  122. package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts +13 -0
  123. package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts.map +1 -0
  124. package/src/_types/errors/constants.d.ts +2 -1
  125. package/src/_types/errors/constants.d.ts.map +1 -1
  126. package/src/_types/services/balance.d.ts.map +1 -1
  127. package/src/_types/types/internal.d.ts +1 -0
  128. package/src/_types/types/internal.d.ts.map +1 -1
  129. package/src/_types/version.d.ts +1 -1
  130. package/src/_types/version.d.ts.map +1 -1
  131. package/src/config.ts +1 -0
  132. package/src/core/EVM/EVMStepExecutor.ts +12 -10
  133. package/src/core/EVM/checkAllowance.ts +4 -3
  134. package/src/core/EVM/switchChain.ts +4 -4
  135. package/src/core/Solana/SolanaStepExecutor.ts +8 -7
  136. package/src/core/StatusManager.ts +24 -22
  137. package/src/core/UTXO/UTXOStepExecutor.ts +56 -53
  138. package/src/core/UTXO/getUTXOPublicClient.ts +1 -0
  139. package/src/core/UTXO/parseUTXOErrors.ts +11 -0
  140. package/src/core/UTXO/utxo-stack/actions/getBlock.ts +58 -0
  141. package/src/core/UTXO/utxo-stack/actions/getBlockStats.ts +55 -0
  142. package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +24 -11
  143. package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +1 -1
  144. package/src/core/UTXO/utxo-stack/actions/waitForTransaction.ts +387 -0
  145. package/src/core/UTXO/utxo-stack/actions/watchBlockNumber.ts +105 -0
  146. package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +16 -0
  147. package/src/core/UTXO/utxo-stack/types/blockStats.ts +35 -0
  148. package/src/core/UTXO/utxo-stack/utils/cancelTransaction.ts +75 -0
  149. package/src/core/UTXO/utxo-stack/utils/modifyFee.ts +78 -0
  150. package/src/core/UTXO/utxo-stack/utils/observe.ts +81 -0
  151. package/src/core/UTXO/utxo-stack/utils/poll.ts +46 -0
  152. package/src/errors/constants.ts +1 -0
  153. package/src/services/api.ts +1 -1
  154. package/src/services/balance.ts +11 -2
  155. package/src/types/internal.ts +1 -0
  156. package/src/version.ts +1 -1
@@ -0,0 +1,81 @@
1
+ import type { MaybePromise } from 'viem'
2
+
3
+ type Callback = ((...args: any[]) => any) | undefined
4
+ type Callbacks = Record<string, Callback>
5
+
6
+ /** @internal */
7
+ export const listenersCache = /*#__PURE__*/ new Map<
8
+ string,
9
+ { id: number; fns: Callbacks }[]
10
+ >()
11
+ /** @internal */
12
+ export const cleanupCache = /*#__PURE__*/ new Map<string, () => void>()
13
+
14
+ type EmitFunction<callbacks extends Callbacks> = (
15
+ emit: callbacks
16
+ ) => MaybePromise<void | (() => void)>
17
+
18
+ let callbackCount = 0
19
+
20
+ /**
21
+ * @description Sets up an observer for a given function. If another function
22
+ * is set up under the same observer id, the function will only be called once
23
+ * for both instances of the observer.
24
+ */
25
+ export function observe<callbacks extends Callbacks>(
26
+ observerId: string,
27
+ callbacks: callbacks,
28
+ fn: EmitFunction<callbacks>
29
+ ) {
30
+ const callbackId = ++callbackCount
31
+
32
+ const getListeners = () => listenersCache.get(observerId) || []
33
+
34
+ const unsubscribe = () => {
35
+ const listeners = getListeners()
36
+ listenersCache.set(
37
+ observerId,
38
+ listeners.filter((cb: any) => cb.id !== callbackId)
39
+ )
40
+ }
41
+
42
+ const unwatch = () => {
43
+ const cleanup = cleanupCache.get(observerId)
44
+ if (getListeners().length === 1 && cleanup) {
45
+ cleanup()
46
+ }
47
+ unsubscribe()
48
+ }
49
+
50
+ const listeners = getListeners()
51
+ listenersCache.set(observerId, [
52
+ ...listeners,
53
+ { id: callbackId, fns: callbacks },
54
+ ])
55
+
56
+ if (listeners && listeners.length > 0) {
57
+ return unwatch
58
+ }
59
+
60
+ const emit: callbacks = {} as callbacks
61
+ for (const key in callbacks) {
62
+ emit[key] = ((
63
+ ...args: Parameters<NonNullable<callbacks[keyof callbacks]>>
64
+ ) => {
65
+ const listeners = getListeners()
66
+ if (listeners.length === 0) {
67
+ return
68
+ }
69
+ for (const listener of listeners) {
70
+ listener.fns[key]?.(...args)
71
+ }
72
+ }) as callbacks[Extract<keyof callbacks, string>]
73
+ }
74
+
75
+ const cleanup = fn(emit)
76
+ if (typeof cleanup === 'function') {
77
+ cleanupCache.set(observerId, cleanup)
78
+ }
79
+
80
+ return unwatch
81
+ }
@@ -0,0 +1,46 @@
1
+ import { sleep } from '../../../../utils/sleep.js'
2
+
3
+ type PollOptions<T> = {
4
+ // Whether or not to emit when the polling starts.
5
+ emitOnBegin?: boolean | undefined
6
+ // The initial wait time (in ms) before polling.
7
+ initialWaitTime?: ((data: T | void) => Promise<number>) | undefined
8
+ // The interval (in ms).
9
+ interval: number
10
+ }
11
+
12
+ /**
13
+ * @description Polls a function at a specified interval.
14
+ */
15
+ export function poll<T>(
16
+ fn: ({ unpoll }: { unpoll: () => void }) => Promise<T | void>,
17
+ { emitOnBegin, initialWaitTime, interval }: PollOptions<T>
18
+ ) {
19
+ let active = true
20
+
21
+ const unwatch = () => (active = false)
22
+
23
+ const watch = async () => {
24
+ let data: T | void = undefined
25
+ if (emitOnBegin) {
26
+ data = await fn({ unpoll: unwatch })
27
+ }
28
+
29
+ const initialWait = (await initialWaitTime?.(data)) ?? interval
30
+ await sleep(initialWait)
31
+
32
+ const poll = async () => {
33
+ if (!active) {
34
+ return
35
+ }
36
+ await fn({ unpoll: unwatch })
37
+ await sleep(interval)
38
+ poll()
39
+ }
40
+
41
+ poll()
42
+ }
43
+ watch()
44
+
45
+ return unwatch
46
+ }
@@ -34,6 +34,7 @@ export enum LiFiErrorCode {
34
34
  WalletChangedDuringExecution = 1017,
35
35
  TransactionExpired = 1018,
36
36
  TransactionSimulationFailed = 1019,
37
+ TransactionConflict = 1020,
37
38
  }
38
39
 
39
40
  export enum ErrorMessage {
@@ -154,7 +154,7 @@ export const getContractCallsQuote = async (
154
154
  }
155
155
  })
156
156
  if (
157
- !isContractCallsRequestWithFromAmount(params) ||
157
+ !isContractCallsRequestWithFromAmount(params) &&
158
158
  !isContractCallsRequestWithToAmount(params)
159
159
  ) {
160
160
  throw new SDKError(
@@ -70,7 +70,7 @@ export const getTokenBalancesByChain = async (
70
70
  }
71
71
 
72
72
  const tokenAmountsByChain: { [chainId: number]: TokenAmount[] } = {}
73
- await Promise.allSettled(
73
+ const tokenAmountsSettled = await Promise.allSettled(
74
74
  Object.keys(tokensByChain).map(async (chainIdStr) => {
75
75
  const chainId = parseInt(chainIdStr)
76
76
  const chain = await config.getChainById(chainId)
@@ -83,7 +83,9 @@ export const getTokenBalancesByChain = async (
83
83
  : provider.isAddress(tokenAddress)
84
84
  )
85
85
  if (!provider) {
86
- throw new Error('SDK Token Provider not found.')
86
+ throw new Error(
87
+ `SDK Token Provider for ${chain.chainType} is not found.`
88
+ )
87
89
  }
88
90
  const tokenAmounts = await provider.getBalance(
89
91
  walletAddress,
@@ -92,5 +94,12 @@ export const getTokenBalancesByChain = async (
92
94
  tokenAmountsByChain[chainId] = tokenAmounts
93
95
  })
94
96
  )
97
+ if (config.get().debug) {
98
+ tokenAmountsSettled.forEach((promise) => {
99
+ if (promise.status === 'rejected') {
100
+ console.log("Couldn't fetch token balance.", promise.reason)
101
+ }
102
+ })
103
+ }
95
104
  return tokenAmountsByChain
96
105
  }
@@ -13,6 +13,7 @@ export interface SDKBaseConfig {
13
13
  disableVersionCheck?: boolean
14
14
  widgetVersion?: string
15
15
  preloadChains: boolean
16
+ debug: boolean
16
17
  }
17
18
 
18
19
  export interface SDKConfig extends Partial<Omit<SDKBaseConfig, 'integrator'>> {
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/sdk'
2
- export const version = '3.3.0-alpha.3'
2
+ export const version = '3.3.0-beta.0'