@openocean.finance/widget-sdk
Version:
OpenOcean Any-to-Any Cross-Chain-Swap SDK
33 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkPermitSupport = void 0;
const widget_types_1 = require("@openocean.finance/widget-types");
const config_js_1 = require("../../config.js");
const getAllowance_js_1 = require("./getAllowance.js");
const getNativePermit_js_1 = require("./permits/getNativePermit.js");
const publicClient_js_1 = require("./publicClient.js");
const checkPermitSupport = async ({ chain, tokenAddress, ownerAddress, amount, }) => {
const provider = config_js_1.config.getProvider(widget_types_1.ChainType.EVM);
let client = await provider?.getWalletClient?.();
if (!client) {
client = await (0, publicClient_js_1.getPublicClient)(chain.id);
}
let nativePermit;
try {
nativePermit = await (0, getNativePermit_js_1.getNativePermit)(client, chain.id, tokenAddress, chain.permit2Proxy, amount);
}
catch {
client = await (0, publicClient_js_1.getPublicClient)(chain.id);
nativePermit = await (0, getNativePermit_js_1.getNativePermit)(client, chain.id, tokenAddress, chain.permit2Proxy, amount);
}
let permit2Allowance;
if (chain.permit2) {
permit2Allowance = await (0, getAllowance_js_1.getAllowance)(chain.id, tokenAddress, ownerAddress, chain.permit2);
}
return {
nativePermitSupported: !!nativePermit,
permit2AllowanceSufficient: !!permit2Allowance && permit2Allowance >= amount,
};
};
exports.checkPermitSupport = checkPermitSupport;
//# sourceMappingURL=checkPermitSupport.js.map