@ledgerhq/coin-internet_computer
Version:
Ledger Internet Computer integration
31 lines • 1.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.broadcast = void 0;
const logs_1 = require("@ledgerhq/logs");
const invariant_1 = __importDefault(require("invariant"));
const api_1 = require("../api");
const consts_1 = require("../consts");
function isBroadcastRawData(data) {
if (typeof data !== "object" || data === null) {
return false;
}
return ("encodedSignedCallBlob" in data &&
typeof data.encodedSignedCallBlob === "string" &&
"transferRequestIdHex" in data &&
typeof data.transferRequestIdHex === "string");
}
// Main broadcast function for handling Internet Computer transactions
const broadcast = async ({ signedOperation: { operation, rawData }, }) => {
(0, logs_1.log)("debug", "[broadcast] Internet Computer transaction broadcast initiated");
// Validate rawData with type guard
(0, invariant_1.default)(isBroadcastRawData(rawData), "[ICP](broadcast) Invalid rawData format");
(0, invariant_1.default)(operation.extra, "[ICP](broadcast) Missing operation extra");
const syncCallResponse = await (0, api_1.broadcastTxn)(Buffer.from(rawData.encodedSignedCallBlob, "hex"), consts_1.MAINNET_LEDGER_CANISTER_ID, "call");
await (0, api_1.ensureTransferCallAccepted)(syncCallResponse, rawData.transferRequestIdHex);
return operation;
};
exports.broadcast = broadcast;
//# sourceMappingURL=broadcast.js.map