@ledgerhq/coin-internet_computer
Version:
Ledger Internet Computer integration
21 lines • 1.02 kB
JavaScript
import { broadcastTxn } from "../api";
import { log } from "@ledgerhq/logs";
import invariant from "invariant";
import { MAINNET_LEDGER_CANISTER_ID } from "../consts";
// Type guard to validate rawData shape
function isBroadcastRawData(data) {
return (typeof data === "object" &&
data !== null &&
"encodedSignedCallBlob" in data &&
typeof data.encodedSignedCallBlob === "string");
}
// Main broadcast function for handling Internet Computer transactions
export const broadcast = async ({ signedOperation: { operation, rawData }, }) => {
log("debug", "[broadcast] Internet Computer transaction broadcast initiated");
// Validate rawData with type guard
invariant(isBroadcastRawData(rawData), "[ICP](broadcast) Invalid rawData format");
invariant(operation.extra, "[ICP](broadcast) Missing operation extra");
await broadcastTxn(Buffer.from(rawData.encodedSignedCallBlob, "hex"), MAINNET_LEDGER_CANISTER_ID, "call");
return operation;
};
//# sourceMappingURL=broadcast.js.map