@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.
- package/package.json +3 -7
- package/src/_cjs/config.js +1 -0
- package/src/_cjs/config.js.map +1 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js +15 -3
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/checkAllowance.js +5 -1
- package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/switchChain.js +5 -1
- package/src/_cjs/core/EVM/switchChain.js.map +1 -1
- package/src/_cjs/core/Solana/SolanaStepExecutor.js +10 -2
- package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_cjs/core/StatusManager.js +2 -1
- package/src/_cjs/core/StatusManager.js.map +1 -1
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js +39 -17
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_cjs/core/UTXO/getUTXOPublicClient.js +1 -0
- package/src/_cjs/core/UTXO/getUTXOPublicClient.js.map +1 -1
- package/src/_cjs/core/UTXO/parseUTXOErrors.js +4 -0
- package/src/_cjs/core/UTXO/parseUTXOErrors.js.map +1 -1
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js +31 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js +27 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -9
- package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
- package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js +185 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js +45 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js +3 -0
- package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js +51 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js +50 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js +48 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js +28 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
- package/src/_cjs/errors/constants.js +1 -0
- package/src/_cjs/errors/constants.js.map +1 -1
- package/src/_cjs/services/api.js +1 -1
- package/src/_cjs/services/balance.js +9 -2
- package/src/_cjs/services/balance.js.map +1 -1
- package/src/_cjs/version.js +1 -1
- package/src/_cjs/version.js.map +1 -1
- package/src/_esm/config.js +1 -0
- package/src/_esm/config.js.map +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +15 -3
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/checkAllowance.js +5 -1
- package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
- package/src/_esm/core/EVM/switchChain.js +5 -1
- package/src/_esm/core/EVM/switchChain.js.map +1 -1
- package/src/_esm/core/Solana/SolanaStepExecutor.js +10 -2
- package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_esm/core/StatusManager.js +11 -4
- package/src/_esm/core/StatusManager.js.map +1 -1
- package/src/_esm/core/UTXO/UTXOStepExecutor.js +41 -35
- package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_esm/core/UTXO/getUTXOPublicClient.js +1 -0
- package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -1
- package/src/_esm/core/UTXO/parseUTXOErrors.js +5 -0
- package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js +28 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js +24 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -10
- package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js +230 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js +58 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js +2 -0
- package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js +55 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js +53 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/observe.js +51 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/poll.js +28 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
- package/src/_esm/errors/constants.js +1 -0
- package/src/_esm/errors/constants.js.map +1 -1
- package/src/_esm/services/api.js +1 -1
- package/src/_esm/services/balance.js +9 -2
- package/src/_esm/services/balance.js.map +1 -1
- package/src/_esm/version.js +1 -1
- package/src/_esm/version.js.map +1 -1
- package/src/_types/config.d.ts.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
- package/src/_types/core/StatusManager.d.ts +18 -8
- package/src/_types/core/StatusManager.d.ts.map +1 -1
- package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts +13 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts +15 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts +2 -2
- package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts +76 -0
- package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts +26 -0
- package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts +16 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts +35 -0
- package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts +19 -0
- package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts +13 -0
- package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts.map +1 -0
- package/src/_types/errors/constants.d.ts +2 -1
- package/src/_types/errors/constants.d.ts.map +1 -1
- package/src/_types/services/balance.d.ts.map +1 -1
- package/src/_types/types/internal.d.ts +1 -0
- package/src/_types/types/internal.d.ts.map +1 -1
- package/src/_types/version.d.ts +1 -1
- package/src/_types/version.d.ts.map +1 -1
- package/src/config.ts +1 -0
- package/src/core/EVM/EVMStepExecutor.ts +12 -10
- package/src/core/EVM/checkAllowance.ts +4 -3
- package/src/core/EVM/switchChain.ts +4 -4
- package/src/core/Solana/SolanaStepExecutor.ts +8 -7
- package/src/core/StatusManager.ts +24 -22
- package/src/core/UTXO/UTXOStepExecutor.ts +56 -53
- package/src/core/UTXO/getUTXOPublicClient.ts +1 -0
- package/src/core/UTXO/parseUTXOErrors.ts +11 -0
- package/src/core/UTXO/utxo-stack/actions/getBlock.ts +58 -0
- package/src/core/UTXO/utxo-stack/actions/getBlockStats.ts +55 -0
- package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +24 -11
- package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +1 -1
- package/src/core/UTXO/utxo-stack/actions/waitForTransaction.ts +387 -0
- package/src/core/UTXO/utxo-stack/actions/watchBlockNumber.ts +105 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +16 -0
- package/src/core/UTXO/utxo-stack/types/blockStats.ts +35 -0
- package/src/core/UTXO/utxo-stack/utils/cancelTransaction.ts +75 -0
- package/src/core/UTXO/utxo-stack/utils/modifyFee.ts +78 -0
- package/src/core/UTXO/utxo-stack/utils/observe.ts +81 -0
- package/src/core/UTXO/utxo-stack/utils/poll.ts +46 -0
- package/src/errors/constants.ts +1 -0
- package/src/services/api.ts +1 -1
- package/src/services/balance.ts +11 -2
- package/src/types/internal.ts +1 -0
- 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
|
+
}
|
package/src/errors/constants.ts
CHANGED
package/src/services/api.ts
CHANGED
|
@@ -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(
|
package/src/services/balance.ts
CHANGED
|
@@ -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(
|
|
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
|
}
|
package/src/types/internal.ts
CHANGED
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/sdk'
|
|
2
|
-
export const version = '3.3.0-
|
|
2
|
+
export const version = '3.3.0-beta.0'
|