@xlink-network/xlink-sdk
Version:
59 lines (57 loc) • 1.82 kB
JavaScript
import {
sum
} from "./chunk-YV2TZGS6.mjs";
import {
BigNumber
} from "./chunk-KHTJNOQE.mjs";
// src/bitcoinUtils/bitcoinHelpers.ts
import * as btc from "@scure/btc-signer";
import { Address, OutScript } from "@scure/btc-signer";
function sumUTXO(utxos) {
return sum(utxos.map((utxo) => utxo.amount));
}
function isSameUTXO(utxo1, utxo2) {
return utxo1.txId === utxo2.txId && utxo1.index === utxo2.index;
}
function addressToScriptPubKey(network, address) {
const addr = Address(network).decode(address);
return OutScript.encode(addr);
}
function scriptPubKeyToAddress(network, output) {
return Address(network).encode(OutScript.decode(output));
}
function bitcoinToSatoshi(bitcoinAmount) {
return BigNumber.toBigInt({}, BigNumber.rightMoveDecimals(8, bitcoinAmount));
}
function satoshiToBitcoin(satoshiAmount) {
return BigNumber.toString(BigNumber.leftMoveDecimals(8, satoshiAmount));
}
function getP2TRInternalPublicKey_from_P2TR_publicKey(network, publicKey) {
const ecdsaPublicKeyLength = 33;
if (publicKey.byteLength !== ecdsaPublicKeyLength) {
throw new Error("Invalid public key length");
}
return publicKey.slice(1);
}
function getTapInternalKey_from_P2TR_publicKey(network, publicKey) {
return btc.p2tr(
getP2TRInternalPublicKey_from_P2TR_publicKey(network, publicKey),
void 0,
network
).tapInternalKey;
}
function getRedeemScript_from_P2SH_P2WPKH_publicKey(network, publicKey) {
return btc.p2sh(btc.p2wpkh(publicKey, network), network).redeemScript;
}
export {
sumUTXO,
isSameUTXO,
addressToScriptPubKey,
scriptPubKeyToAddress,
bitcoinToSatoshi,
satoshiToBitcoin,
getP2TRInternalPublicKey_from_P2TR_publicKey,
getTapInternalKey_from_P2TR_publicKey,
getRedeemScript_from_P2SH_P2WPKH_publicKey
};
//# sourceMappingURL=chunk-VA3HOX5B.mjs.map