UNPKG

@ledgerhq/coin-hedera

Version:
48 lines 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildSignOperation = void 0; const rxjs_1 = require("rxjs"); const sdk_1 = require("@hashgraph/sdk"); const buildOptimisticOperation_1 = require("./buildOptimisticOperation"); const network_1 = require("../api/network"); const buildSignOperation = (signerContext) => ({ account, transaction, deviceId }) => new rxjs_1.Observable(o => { void (async function () { try { o.next({ type: "device-signature-requested", }); const hederaTransaction = await (0, network_1.buildUnsignedTransaction)({ account, transaction, }); const accountPublicKey = sdk_1.PublicKey.fromString(account.seedIdentifier); const res = await signerContext(deviceId, async (signer) => { await hederaTransaction.signWith(accountPublicKey, async (bodyBytes) => { return await signer.signTransaction(bodyBytes); }); return hederaTransaction.toBytes(); }); o.next({ type: "device-signature-granted", }); const operation = await (0, buildOptimisticOperation_1.buildOptimisticOperation)({ account, transaction, }); o.next({ type: "signed", signedOperation: { operation, // NOTE: this needs to match the inverse operation in js-broadcast signature: Buffer.from(res).toString("base64"), }, }); o.complete(); } catch (err) { o.error(err); } })(); }); exports.buildSignOperation = buildSignOperation; //# sourceMappingURL=signOperation.js.map