Files
xo-stack/packages/docs/src/tools/stack/blockchain-functions.ts
T

60 lines
1.8 KiB
TypeScript

import { BlockchainElectrum, encodeExtendedJson, Transaction } from '@xocash/stack';
export const electrumClient = {
from: [
{
label: 'From Servers',
inputs: ['Servers'],
models: ['bch.imaginary.cash, cashnode.bch.ninja, electrum.imaginary.cash'],
callback: async (args: [string]) => {
const electrum = await BlockchainElectrum.from({
opts: {
servers: args[0].replaceAll(' ', '').split(','),
application: 'XO-tools',
},
});
return electrum;
},
},
],
to: [],
methods: [
{
label: 'Fetch Unspents',
inputs: ['Address'],
models: ['Address'],
callback: async (electrum: BlockchainElectrum, args: [string]) => {
const unspents = await electrum.fetchUnspents(args[0]);
return encodeExtendedJson(unspents.toArray(), 2);
},
},
{
label: 'Fetch Transaction',
inputs: ['Transaction Hash'],
models: ['Transaction Hash'],
callback: async (electrum: BlockchainElectrum, args: [string]) => {
const transaction = await electrum.fetchTransaction(args[0]);
return encodeExtendedJson(transaction, 2);
},
},
{
label: 'Fetch Transactions',
inputs: ['Address'],
models: ['Address'],
callback: async (electrum: BlockchainElectrum, args: [string]) => {
const transactions = await electrum.fetchTransactions(args[0]);
return encodeExtendedJson(transactions.toArray(), 2);
},
},
{
label: 'Broadcast Transaction',
inputs: ['Transaction'],
models: ['Transaction'],
callback: async (electrum: BlockchainElectrum, args: [string]) => {
const tx = Transaction.from(args[0]);
return await electrum.broadcastTransaction(tx);
},
},
],
};