@lifi/sdk 3.8.10 → 3.9.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 -2
- package/src/_cjs/core/EVM/EVM.js +2 -2
- package/src/_cjs/core/EVM/EVM.js.map +1 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js +3 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/publicClient.js +8 -0
- package/src/_cjs/core/EVM/publicClient.js.map +1 -1
- package/src/_cjs/core/EVM/{getENSAddress.js → resolveENSAddress.js} +4 -4
- package/src/_cjs/core/EVM/resolveENSAddress.js.map +1 -0
- package/src/_cjs/core/EVM/resolveEVMAddress.js +11 -0
- package/src/_cjs/core/EVM/resolveEVMAddress.js.map +1 -0
- package/src/_cjs/core/EVM/uns/constants.js +78 -0
- package/src/_cjs/core/EVM/uns/constants.js.map +1 -0
- package/src/_cjs/core/EVM/uns/resolveUNSAddress.js +82 -0
- package/src/_cjs/core/EVM/uns/resolveUNSAddress.js.map +1 -0
- package/src/_cjs/core/Solana/Solana.js +2 -2
- package/src/_cjs/core/Solana/Solana.js.map +1 -1
- package/src/_cjs/core/Solana/resolveSolanaAddress.js +8 -0
- package/src/_cjs/core/Solana/resolveSolanaAddress.js.map +1 -0
- package/src/_cjs/core/Sui/Sui.js +2 -2
- package/src/_cjs/core/Sui/Sui.js.map +1 -1
- package/src/_cjs/core/Sui/resolveSuiAddress.js +8 -0
- package/src/_cjs/core/Sui/resolveSuiAddress.js.map +1 -0
- package/src/_cjs/core/UTXO/UTXO.js +2 -3
- package/src/_cjs/core/UTXO/UTXO.js.map +1 -1
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js +25 -1
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_cjs/core/UTXO/resolveUTXOAddress.js +7 -0
- package/src/_cjs/core/UTXO/resolveUTXOAddress.js.map +1 -0
- package/src/_cjs/core/UTXO/utils.js +3 -0
- package/src/_cjs/core/UTXO/utils.js.map +1 -1
- package/src/_cjs/version.js +1 -1
- package/src/_cjs/version.js.map +1 -1
- package/src/_esm/core/EVM/EVM.js +2 -2
- package/src/_esm/core/EVM/EVM.js.map +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +3 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/publicClient.js +9 -0
- package/src/_esm/core/EVM/publicClient.js.map +1 -1
- package/src/_esm/core/EVM/{getENSAddress.js → resolveENSAddress.js} +2 -2
- package/src/_esm/core/EVM/resolveENSAddress.js.map +1 -0
- package/src/_esm/core/EVM/resolveEVMAddress.js +8 -0
- package/src/_esm/core/EVM/resolveEVMAddress.js.map +1 -0
- package/src/_esm/core/EVM/uns/constants.js +74 -0
- package/src/_esm/core/EVM/uns/constants.js.map +1 -0
- package/src/_esm/core/EVM/uns/resolveUNSAddress.js +80 -0
- package/src/_esm/core/EVM/uns/resolveUNSAddress.js.map +1 -0
- package/src/_esm/core/Solana/Solana.js +2 -2
- package/src/_esm/core/Solana/Solana.js.map +1 -1
- package/src/_esm/core/Solana/resolveSolanaAddress.js +5 -0
- package/src/_esm/core/Solana/resolveSolanaAddress.js.map +1 -0
- package/src/_esm/core/Sui/Sui.js +2 -2
- package/src/_esm/core/Sui/Sui.js.map +1 -1
- package/src/_esm/core/Sui/resolveSuiAddress.js +5 -0
- package/src/_esm/core/Sui/resolveSuiAddress.js.map +1 -0
- package/src/_esm/core/UTXO/UTXO.js +2 -4
- package/src/_esm/core/UTXO/UTXO.js.map +1 -1
- package/src/_esm/core/UTXO/UTXOStepExecutor.js +35 -4
- package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_esm/core/UTXO/resolveUTXOAddress.js +5 -0
- package/src/_esm/core/UTXO/resolveUTXOAddress.js.map +1 -0
- package/src/_esm/core/UTXO/utils.js +2 -0
- package/src/_esm/core/UTXO/utils.js.map +1 -1
- package/src/_esm/version.js +1 -1
- package/src/_esm/version.js.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/publicClient.d.ts.map +1 -1
- package/src/_types/core/EVM/resolveENSAddress.d.ts +2 -0
- package/src/_types/core/EVM/resolveENSAddress.d.ts.map +1 -0
- package/src/_types/core/EVM/resolveEVMAddress.d.ts +3 -0
- package/src/_types/core/EVM/resolveEVMAddress.d.ts.map +1 -0
- package/src/_types/core/EVM/uns/constants.d.ts +51 -0
- package/src/_types/core/EVM/uns/constants.d.ts.map +1 -0
- package/src/_types/core/EVM/uns/resolveUNSAddress.d.ts +3 -0
- package/src/_types/core/EVM/uns/resolveUNSAddress.d.ts.map +1 -0
- package/src/_types/core/Solana/resolveSolanaAddress.d.ts +2 -0
- package/src/_types/core/Solana/resolveSolanaAddress.d.ts.map +1 -0
- package/src/_types/core/Sui/resolveSuiAddress.d.ts +2 -0
- package/src/_types/core/Sui/resolveSuiAddress.d.ts.map +1 -0
- package/src/_types/core/UTXO/UTXO.d.ts.map +1 -1
- package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -1
- package/src/_types/core/UTXO/resolveUTXOAddress.d.ts +2 -0
- package/src/_types/core/UTXO/resolveUTXOAddress.d.ts.map +1 -0
- package/src/_types/core/UTXO/utils.d.ts +1 -0
- package/src/_types/core/UTXO/utils.d.ts.map +1 -1
- package/src/_types/core/types.d.ts +2 -2
- package/src/_types/core/types.d.ts.map +1 -1
- package/src/_types/version.d.ts +1 -1
- package/src/_types/version.d.ts.map +1 -1
- package/src/core/EVM/EVM.ts +2 -2
- package/src/core/EVM/EVMStepExecutor.ts +3 -1
- package/src/core/EVM/publicClient.ts +13 -1
- package/src/core/EVM/{getENSAddress.ts → resolveENSAddress.ts} +1 -1
- package/src/core/EVM/resolveEVMAddress.ts +15 -0
- package/src/core/EVM/uns/constants.ts +81 -0
- package/src/core/EVM/uns/resolveUNSAddress.ts +123 -0
- package/src/core/Solana/Solana.ts +2 -2
- package/src/core/Solana/resolveSolanaAddress.ts +7 -0
- package/src/core/Sui/Sui.ts +2 -2
- package/src/core/Sui/resolveSuiAddress.ts +7 -0
- package/src/core/UTXO/UTXO.ts +2 -4
- package/src/core/UTXO/UTXOStepExecutor.ts +48 -4
- package/src/core/UTXO/resolveUTXOAddress.ts +6 -0
- package/src/core/UTXO/utils.ts +4 -0
- package/src/core/types.ts +7 -1
- package/src/version.ts +1 -1
- package/src/_cjs/core/EVM/getENSAddress.js.map +0 -1
- package/src/_esm/core/EVM/getENSAddress.js.map +0 -1
- package/src/_types/core/EVM/getENSAddress.d.ts +0 -2
- package/src/_types/core/EVM/getENSAddress.d.ts.map +0 -1
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import type { Client, ReplacementReason } from '@bigmi/core'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AddressType,
|
|
4
|
+
getAddressInfo,
|
|
5
|
+
hexToUnit8Array,
|
|
6
|
+
signPsbt,
|
|
7
|
+
waitForTransaction,
|
|
8
|
+
withTimeout,
|
|
9
|
+
} from '@bigmi/core'
|
|
10
|
+
import * as ecc from '@bitcoinerlab/secp256k1'
|
|
3
11
|
import { ChainId } from '@lifi/types'
|
|
4
|
-
import { address, networks, Psbt } from 'bitcoinjs-lib'
|
|
12
|
+
import { address, initEccLib, networks, Psbt } from 'bitcoinjs-lib'
|
|
5
13
|
import { config } from '../../config.js'
|
|
6
14
|
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
7
15
|
import { TransactionError } from '../../errors/errors.js'
|
|
@@ -17,7 +25,7 @@ import type {
|
|
|
17
25
|
import { waitForDestinationChainTransaction } from '../waitForDestinationChainTransaction.js'
|
|
18
26
|
import { getUTXOPublicClient } from './getUTXOPublicClient.js'
|
|
19
27
|
import { parseUTXOErrors } from './parseUTXOErrors.js'
|
|
20
|
-
import { isPsbtFinalized } from './utils.js'
|
|
28
|
+
import { isPsbtFinalized, toXOnly } from './utils.js'
|
|
21
29
|
|
|
22
30
|
export interface UTXOStepExecutorOptions extends StepExecutorOptions {
|
|
23
31
|
client: Client
|
|
@@ -143,8 +151,44 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
143
151
|
|
|
144
152
|
const psbtHex = transactionRequest.data
|
|
145
153
|
|
|
154
|
+
// Initialize ECC library required for Taproot operations
|
|
155
|
+
// https://github.com/bitcoinjs/bitcoinjs-lib?tab=readme-ov-file#using-taproot
|
|
156
|
+
initEccLib(ecc)
|
|
157
|
+
|
|
146
158
|
const psbt = Psbt.fromHex(psbtHex, { network: networks.bitcoin })
|
|
147
159
|
|
|
160
|
+
psbt.data.inputs.forEach((input, index) => {
|
|
161
|
+
const accountAddress = input.witnessUtxo
|
|
162
|
+
? address.fromOutputScript(
|
|
163
|
+
input.witnessUtxo.script,
|
|
164
|
+
networks.bitcoin
|
|
165
|
+
)
|
|
166
|
+
: (this.client.account?.address as string)
|
|
167
|
+
const addressInfo = getAddressInfo(accountAddress)
|
|
168
|
+
if (addressInfo.type === AddressType.p2tr) {
|
|
169
|
+
// Taproot (P2TR) addresses require specific PSBT fields for proper signing
|
|
170
|
+
|
|
171
|
+
// tapInternalKey: Required for Taproot key-path spending
|
|
172
|
+
// Most wallets / libraries usually handle this already
|
|
173
|
+
if (!input.tapInternalKey) {
|
|
174
|
+
const pubKey = this.client.account?.publicKey
|
|
175
|
+
if (pubKey) {
|
|
176
|
+
const tapInternalKey = toXOnly(hexToUnit8Array(pubKey))
|
|
177
|
+
psbt.updateInput(index, {
|
|
178
|
+
tapInternalKey,
|
|
179
|
+
})
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// sighashType: Required by bitcoinjs-lib even though the bitcoin protocol allows defaults
|
|
183
|
+
// check if sighashType is default (0) or not set (undefined)
|
|
184
|
+
if (!input.sighashType) {
|
|
185
|
+
psbt.updateInput(index, {
|
|
186
|
+
sighashType: 1, // Default to Transaction.SIGHASH_ALL - 1
|
|
187
|
+
})
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
|
|
148
192
|
const inputsToSign = Array.from(
|
|
149
193
|
psbt.data.inputs
|
|
150
194
|
.reduce((map, input, index) => {
|
|
@@ -172,7 +216,7 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
172
216
|
const signedPsbtHex = await withTimeout(
|
|
173
217
|
() =>
|
|
174
218
|
signPsbt(this.client, {
|
|
175
|
-
psbt:
|
|
219
|
+
psbt: psbt.toHex(),
|
|
176
220
|
inputsToSign: inputsToSign,
|
|
177
221
|
finalize: false,
|
|
178
222
|
}),
|
package/src/core/UTXO/utils.ts
CHANGED
|
@@ -8,3 +8,7 @@ export function isPsbtFinalized(psbt: Psbt): boolean {
|
|
|
8
8
|
return false
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
// helper function to convert full public key (33 bytes) to x-only compressed format (32 bytes) required after taproot update
|
|
13
|
+
export const toXOnly = (pubKey: Uint8Array) =>
|
|
14
|
+
pubKey.length === 32 ? pubKey : pubKey.subarray(1, 33)
|
package/src/core/types.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
ChainId,
|
|
2
3
|
ChainType,
|
|
4
|
+
CoinKey,
|
|
3
5
|
FeeCost,
|
|
4
6
|
GasCost,
|
|
5
7
|
LiFiStep,
|
|
@@ -14,7 +16,11 @@ import type { Client } from 'viem'
|
|
|
14
16
|
export interface SDKProvider {
|
|
15
17
|
readonly type: ChainType
|
|
16
18
|
isAddress(address: string): boolean
|
|
17
|
-
resolveAddress(
|
|
19
|
+
resolveAddress(
|
|
20
|
+
name: string,
|
|
21
|
+
chainId?: ChainId,
|
|
22
|
+
token?: CoinKey
|
|
23
|
+
): Promise<string | undefined>
|
|
18
24
|
getStepExecutor(options: StepExecutorOptions): Promise<StepExecutor>
|
|
19
25
|
getBalance(walletAddress: string, tokens: Token[]): Promise<TokenAmount[]>
|
|
20
26
|
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/sdk'
|
|
2
|
-
export const version = '3.
|
|
2
|
+
export const version = '3.9.0-beta.0'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getENSAddress.js","sourceRoot":"","sources":["../../../core/EVM/getENSAddress.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,kCAAmD;AACnD,uDAAmD;AAE5C,MAAM,aAAa,GAAG,KAAK,EAChC,IAAY,EACiB,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAe,EAAC,eAAO,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAa,EAAC,MAAM,EAAE;YAC1C,IAAI,EAAE,IAAA,eAAS,EAAC,IAAI,CAAC;SACtB,CAAC,CAAA;QACF,OAAO,OAA6B,CAAA;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,OAAM;IACR,CAAC;AACH,CAAC,CAAA;AAbY,QAAA,aAAa,iBAazB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getENSAddress.js","sourceRoot":"","sources":["../../../core/EVM/getENSAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,IAAY,EACiB,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;YAC1C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;SACtB,CAAC,CAAA;QACF,OAAO,OAA6B,CAAA;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,SAAS;QACT,OAAM;IACR,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getENSAddress.d.ts","sourceRoot":"","sources":["../../../core/EVM/getENSAddress.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,KACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAW5B,CAAA"}
|