UNPKG

@getclave/lifi-sdk

Version:

LI.FI Any-to-Any Cross-Chain-Swap SDK

45 lines (44 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.signPermit2Message = signPermit2Message; const viem_1 = require("viem"); const actions_1 = require("viem/actions"); const utils_1 = require("viem/utils"); const getPermitTransferFromValues_1 = require("./getPermitTransferFromValues"); const signatureTransfer_1 = require("./signatureTransfer"); async function signPermit2Message(params) { const { client, chain, tokenAddress, amount, data, witness } = params; const permitTransferFrom = await (0, getPermitTransferFromValues_1.getPermitTransferFromValues)(client, chain, tokenAddress, amount); // Create witness data for the LI.FI call const _witness = witness ? { witness: { diamondAddress: chain.diamondAddress, diamondCalldataHash: (0, viem_1.keccak256)(data), }, witnessTypeName: 'LiFiCall', witnessType: { LiFiCall: [ { name: 'diamondAddress', type: 'address' }, { name: 'diamondCalldataHash', type: 'bytes32' }, ], }, } : undefined; const permitData = (0, signatureTransfer_1.getPermitData)(permitTransferFrom, chain.permit2, chain.id, _witness); const primaryType = witness ? 'PermitWitnessTransferFrom' : 'PermitTransferFrom'; const signature = await (0, utils_1.getAction)(client, actions_1.signTypedData, 'signTypedData')({ account: client.account, primaryType, domain: permitData.domain, types: permitData.types, message: permitData.message, }); return { ...permitData, primaryType, signature, }; }