UNPKG

@openocean.finance/widget-sdk

Version:

OpenOcean Any-to-Any Cross-Chain-Swap SDK

42 lines 1.6 kB
import { keccak256 } from 'viem'; import { signTypedData } from 'viem/actions'; import { getAction } from 'viem/utils'; import { getPermitTransferFromValues } from './getPermitTransferFromValues.js'; import { getPermitData } from './signatureTransfer.js'; export async function signPermit2Message(params) { const { client, chain, tokenAddress, amount, data, witness } = params; const permitTransferFrom = await getPermitTransferFromValues(client, chain, tokenAddress, amount); // Create witness data for the OpenOcean call const _witness = witness ? { witness: { diamondAddress: chain.diamondAddress, diamondCalldataHash: keccak256(data), }, witnessTypeName: 'OpenOceanCall', witnessType: { OpenOceanCall: [ { name: 'diamondAddress', type: 'address' }, { name: 'diamondCalldataHash', type: 'bytes32' }, ], }, } : undefined; const permitData = getPermitData(permitTransferFrom, chain.permit2, chain.id, _witness); const primaryType = witness ? 'PermitWitnessTransferFrom' : 'PermitTransferFrom'; const signature = await getAction(client, signTypedData, 'signTypedData')({ account: client.account, primaryType, domain: permitData.domain, types: permitData.types, message: permitData.message, }); return { ...permitData, primaryType, signature, }; } //# sourceMappingURL=signPermit2Message.js.map