diff --git a/index.d.ts b/index.d.ts index c756ce0..3feea4f 100644 --- a/index.d.ts +++ b/index.d.ts @@ -359,6 +359,7 @@ export declare function oracleDelegatedPuzzle(oraclePuzzleHash: Buffer, oracleFe * @returns {Promise} The signature. */ export declare function signCoinSpends(coinSpends: Array, privateKeys: Array, forTestnet: boolean): Buffer +export declare function hexSpendBundleToCoinSpends(hex: string): Array /** * Computes the ID (name) of a coin. * diff --git a/index.js b/index.js index fc7a1ab..25190fc 100644 --- a/index.js +++ b/index.js @@ -310,7 +310,7 @@ if (!nativeBinding) { throw new Error(`Failed to load native binding`) } -const { newLineageProof, newEveProof, Tls, Peer, PeerType, selectCoins, sendXch, morphLauncherId, createServerCoin, mintStore, oracleSpend, addFee, masterPublicKeyToWalletSyntheticKey, masterPublicKeyToFirstPuzzleHash, masterSecretKeyToWalletSyntheticSecretKey, secretKeyToPublicKey, puzzleHashToAddress, addressToPuzzleHash, adminDelegatedPuzzleFromKey, writerDelegatedPuzzleFromKey, oracleDelegatedPuzzle, signCoinSpends, getCoinId, updateStoreMetadata, updateStoreOwnership, meltStore, signMessage, verifySignedMessage, syntheticKeyToPuzzleHash, getCost, getMainnetGenesisChallenge, getTestnet11GenesisChallenge, simulatorNewPuzzle, simulatorNewBlspair, simulatorNewProgram } = nativeBinding +const { newLineageProof, newEveProof, Tls, Peer, PeerType, selectCoins, sendXch, morphLauncherId, createServerCoin, mintStore, oracleSpend, addFee, masterPublicKeyToWalletSyntheticKey, masterPublicKeyToFirstPuzzleHash, masterSecretKeyToWalletSyntheticSecretKey, secretKeyToPublicKey, puzzleHashToAddress, addressToPuzzleHash, adminDelegatedPuzzleFromKey, writerDelegatedPuzzleFromKey, oracleDelegatedPuzzle, signCoinSpends, hexSpendBundleToCoinSpends, getCoinId, updateStoreMetadata, updateStoreOwnership, meltStore, signMessage, verifySignedMessage, syntheticKeyToPuzzleHash, getCost, getMainnetGenesisChallenge, getTestnet11GenesisChallenge, simulatorNewPuzzle, simulatorNewBlspair, simulatorNewProgram } = nativeBinding module.exports.newLineageProof = newLineageProof module.exports.newEveProof = newEveProof @@ -334,6 +334,7 @@ module.exports.adminDelegatedPuzzleFromKey = adminDelegatedPuzzleFromKey module.exports.writerDelegatedPuzzleFromKey = writerDelegatedPuzzleFromKey module.exports.oracleDelegatedPuzzle = oracleDelegatedPuzzle module.exports.signCoinSpends = signCoinSpends +module.exports.hexSpendBundleToCoinSpends = hexSpendBundleToCoinSpends module.exports.getCoinId = getCoinId module.exports.updateStoreMetadata = updateStoreMetadata module.exports.updateStoreOwnership = updateStoreOwnership diff --git a/src/lib.rs b/src/lib.rs index bd17733..a8d6cdf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1368,6 +1368,17 @@ pub fn sign_coin_spends( sig.to_js() } +#[napi] +pub fn hex_spend_bundle_to_coin_spends(hex: String) -> napi::Result> { + let bytes = hex::decode(hex).map_err(js::err)?; + let spend_bundle = RustSpendBundle::from_bytes(&bytes).map_err(js::err)?; + spend_bundle + .coin_spends + .into_iter() + .map(|cs| cs.to_js()) + .collect::>>() +} + #[napi] /// Computes the ID (name) of a coin. /// @@ -1615,5 +1626,5 @@ pub fn simulator_new_program(pk: Buffer) -> napi::Result { let pk = RustPublicKey::from_js(pk)?; let program = to_program([AggSigMe::new(pk, b"Hello, world!".to_vec().into())]).map_err(js::err)?; - Ok(program.to_js()?) + program.to_js() }