import { ethers } from 'ethers'; import { arrayify, joinSignature, splitSignature } from 'ethers/lib/utils.js'; import type { CancelOrderRequest } from '../types.js'; const signCancelOrderPersonal = async ( cancelOrderRequest: CancelOrderRequest, signer: ethers.Signer, ) => { const types = ['string', 'string', 'address']; const message = ethers.utils.solidityKeccak256( types, ['cancelOrder', cancelOrderRequest.id, cancelOrderRequest.senderAddress], ); const signature = await signer.signMessage(arrayify(message)); // NOTE: metamask broke sig.v value and we fix it in next line return joinSignature(splitSignature(signature)); }; export default signCancelOrderPersonal;