UNPKG

@ledgerhq/live-common

Version:
51 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSigner = void 0; const rxjs_1 = require("rxjs"); const live_signer_evm_1 = require("@ledgerhq/live-signer-evm"); const live_env_1 = require("@ledgerhq/live-env"); const ethers_1 = require("ethers"); const isDmkTransport = (transport) => { return ("dmk" in transport && transport.dmk !== undefined && "sessionId" in transport && transport.sessionId !== undefined); }; const createLiveSigner = (transport) => { if (isDmkTransport(transport)) { return new live_signer_evm_1.DmkSignerEth(transport.dmk, transport.sessionId); } return new live_signer_evm_1.LegacySignerEth(transport); }; const createSigner = (transport) => { const signer = createLiveSigner(transport); return { getAddress: signer.getAddress.bind(signer), signTransaction: async (path, tx) => { // Configure type of resolutions necessary for the clear signing const resolutionConfig = { externalPlugins: true, erc20: true, nft: false, uniswapV3: true, }; const loadConfig = { cryptoassetsBaseURL: (0, live_env_1.getEnv)("DYNAMIC_CAL_BASE_URL"), nftExplorerBaseURL: (0, live_env_1.getEnv)("NFT_METADATA_SERVICE") + "/v1/ethereum", }; signer.setLoadConfig(loadConfig); const observable = signer.clearSignTransaction(path, tx.substring(2), resolutionConfig, true); const event = observable.pipe((0, rxjs_1.filter)((event) => { return event.type === "signer.evm.signed"; })); const { value } = await (0, rxjs_1.firstValueFrom)(event); return ethers_1.Signature.from({ r: "0x" + value.r, s: "0x" + value.s, v: typeof value.v === "number" ? value.v : parseInt(value.v, 16), }).serialized; }, }; }; exports.createSigner = createSigner; //# sourceMappingURL=Eth.js.map