@openocean.finance/widget-sdk
Version:
OpenOcean Any-to-Any Cross-Chain-Swap SDK
44 lines • 1.78 kB
JavaScript
;
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_js_1 = require("./getPermitTransferFromValues.js");
const signatureTransfer_js_1 = require("./signatureTransfer.js");
async function signPermit2Message(params) {
const { client, chain, tokenAddress, amount, data, witness } = params;
const permitTransferFrom = await (0, getPermitTransferFromValues_js_1.getPermitTransferFromValues)(client, chain, tokenAddress, amount);
const _witness = witness
? {
witness: {
diamondAddress: chain.diamondAddress,
diamondCalldataHash: (0, viem_1.keccak256)(data),
},
witnessTypeName: 'OpenOceanCall',
witnessType: {
OpenOceanCall: [
{ name: 'diamondAddress', type: 'address' },
{ name: 'diamondCalldataHash', type: 'bytes32' },
],
},
}
: undefined;
const permitData = (0, signatureTransfer_js_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,
};
}
//# sourceMappingURL=signPermit2Message.js.map