@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
152 lines • 5.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getNetworkAlpacaApi = void 0;
const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
function adaptOp(backendOp) {
const { date } = backendOp.tx;
const newDate = new Date(date);
return {
...backendOp,
value: BigInt(backendOp.value),
tx: { ...backendOp.tx, fees: BigInt(backendOp.tx.fees), date: newDate },
};
}
const ALPACA_URL = "http://0.0.0.0:3000";
const buildBroadcast = networkFamily => async function broadcast(signedOperation) {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: `${ALPACA_URL}/${networkFamily}/transaction/broadcast`,
data: {
rawTransaction: signedOperation,
},
});
return data.transactionIdentifier;
};
const buildCombine = networkFamily => async function combine(tx, signature, pubKey) {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: `${ALPACA_URL}/${networkFamily}/transaction/combine`,
data: {
raw_transaction: tx,
signature: signature,
pubkey: pubKey,
},
});
return data.signedTransaction;
};
const buildEstimateFees = networkFamily => async function estimateFees(intent) {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: `${ALPACA_URL}/${networkFamily}/transaction/estimate`,
data: {
intent: {
...intent,
amount: intent.amount.toString(10),
},
},
});
return {
value: BigInt(data.fee),
};
};
const buildValidateIntent = networkFamily => async function validateIntent(transaction) {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: `${ALPACA_URL}/${networkFamily}/transaction/validate`,
data: {
transaction,
},
});
return data;
};
const buildGetBalance = (networkFamily) => async function getBalance(address) {
const { data } = await (0, live_network_1.default)({
method: "GET",
url: `${ALPACA_URL}/${networkFamily}/account/${address}/balance`,
});
return [
{
value: BigInt(data.value),
asset: data.asset,
locked: BigInt(data?.locked ?? "0"),
},
];
};
const buildGetNextSequence = (networkFamily) => async function getNextSequence(address) {
const { data } = await (0, live_network_1.default)({
method: "GET",
url: `${ALPACA_URL}/${networkFamily}/account/${address}/info`,
});
return data;
};
const buildListOperations = networkFamily => async function listOperations(address, { minHeight = 0 }) {
const { data } = await (0, live_network_1.default)({
method: "GET",
url: `${ALPACA_URL}/${networkFamily}/account/${address}/operations`,
data: {
from: minHeight,
},
});
return { items: data.operations.map(op => adaptOp(op)), next: undefined };
};
const buildLastBlock = networkFamily => async function lastBlock() {
const { data } = await (0, live_network_1.default)({
method: "GET",
url: `${ALPACA_URL}/${networkFamily}/lastblock`,
});
return {
height: data.height,
time: new Date(data.time),
hash: data.hash,
};
};
const buildCraftTransaction = networkFamily => async function craftTransaction(intent) {
const { data } = await (0, live_network_1.default)({
method: "POST",
url: `${ALPACA_URL}/${networkFamily}/transaction/encode`,
data: {
intent: {
...intent,
amount: intent.amount.toString(10),
},
},
});
return data;
};
const getNetworkAlpacaApi = (networkFamily) => ({
broadcast: buildBroadcast(networkFamily),
combine: buildCombine(networkFamily),
validateIntent: buildValidateIntent(networkFamily),
estimateFees: buildEstimateFees(networkFamily),
getBalance: buildGetBalance(networkFamily),
getNextSequence: buildGetNextSequence(networkFamily),
listOperations: buildListOperations(networkFamily),
lastBlock: buildLastBlock(networkFamily),
craftTransaction: buildCraftTransaction(networkFamily),
craftRawTransaction: (_transaction, _sender, _publicKey, _sequence) => {
throw new Error("craftRawTransaction is not supported");
},
getBlock(_height) {
throw new Error("getBlock is not supported");
},
getBlockInfo(_height) {
throw new Error("getBlockInfo is not supported");
},
getStakes(_address, _cursor) {
throw new Error("getStakes is not supported");
},
getRewards(_address, _cursor) {
throw new Error("getRewards is not supported");
},
getValidators(_cursor) {
throw new Error("getValidators is not supported");
},
validateAddress(_address) {
throw new Error("validateAddress is not supported");
},
});
exports.getNetworkAlpacaApi = getNetworkAlpacaApi;
//# sourceMappingURL=network-alpaca.js.map