@ledgerhq/coin-internet_computer
Version:
Ledger Internet Computer integration
42 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildSignOperation = void 0;
const rxjs_1 = require("rxjs");
const addresses_1 = require("./bridgeHelpers/addresses");
const icpRosetta_1 = require("./bridgeHelpers/icpRosetta");
const buildOptimisticOperation_1 = require("./buildOptimisticOperation");
const common_logic_1 = require("../common-logic");
const buildSignOperation = (signerContext) => ({ account, transaction, deviceId }) => new rxjs_1.Observable(o => {
async function main() {
const { xpub } = account;
const { derivationPath } = (0, addresses_1.getAddress)(account);
const { unsignedTxn, payloads } = await (0, icpRosetta_1.getUnsignedTransaction)(transaction, account);
o.next({
type: "device-signature-requested",
});
const { signedTxn } = await (0, icpRosetta_1.signICPTransaction)({
signerContext,
deviceId,
unsignedTxn,
path: (0, common_logic_1.getPath)(derivationPath),
payloads,
pubkey: xpub ?? "",
});
o.next({
type: "device-signature-granted",
});
const { hash } = await (0, icpRosetta_1.getTxnMetadata)(signedTxn);
const operation = await (0, buildOptimisticOperation_1.buildOptimisticOperation)(account, transaction, hash);
o.next({
type: "signed",
signedOperation: {
operation,
signature: signedTxn,
expirationDate: (0, icpRosetta_1.getTxnExpirationDate)(unsignedTxn),
},
});
}
main().then(() => o.complete(), e => o.error(e));
});
exports.buildSignOperation = buildSignOperation;
//# sourceMappingURL=signOperation.js.map