@ape.swap/v2-zap-sdk
Version:
🛠An SDK for zap V2
131 lines (127 loc) • 7.8 kB
JavaScript
import { SupportedChainId, validateAndParseAddress } from '@ape.swap/sdk-core';
import invariant from 'tiny-invariant';
var _ZAP_ADDRESS, _MINI_APE_ADDRESS;
var ZapType;
(function (ZapType) {
ZapType[ZapType["ZAP"] = 0] = "ZAP";
ZapType[ZapType["ZAP_LP_MIGRATOR"] = 1] = "ZAP_LP_MIGRATOR";
ZapType[ZapType["ZAP_LP_POOL"] = 2] = "ZAP_LP_POOL";
ZapType[ZapType["ZAP_SINGLE_ASSET_POOL"] = 3] = "ZAP_SINGLE_ASSET_POOL";
ZapType[ZapType["ZAP_T_BILL"] = 4] = "ZAP_T_BILL";
ZapType[ZapType["ZAP_MINI_APE"] = 5] = "ZAP_MINI_APE";
})(ZapType || (ZapType = {}));
// Set the zap address for each chain
var ZAP_ADDRESS = (_ZAP_ADDRESS = {}, _ZAP_ADDRESS[SupportedChainId.MAINNET] = '', _ZAP_ADDRESS[SupportedChainId.BSC] = '0x7E060D0e0563fbD4CD2b3B845a992Eab31e47f8b', _ZAP_ADDRESS[SupportedChainId.BSC_TESTNET] = '0xEe0e3270d2C62AC598E435212a5f87A431e4dDcF', _ZAP_ADDRESS[SupportedChainId.POLYGON] = '0x236290f7da54465BF7A26f279d2B3553e5402780', _ZAP_ADDRESS[SupportedChainId.POLYGON_MUMBAI] = '', _ZAP_ADDRESS[SupportedChainId.TLOS] = '0x10614e4395AAc006ca0Ef4970d1412e8e921d911', _ZAP_ADDRESS);
var MINI_APE_ADDRESS = (_MINI_APE_ADDRESS = {}, _MINI_APE_ADDRESS[SupportedChainId.POLYGON] = '0x54aff400858Dcac39797a81894D9920f16972D1D', _MINI_APE_ADDRESS);
var ZERO_HEX = '0x0';
var ZapV1 = /*#__PURE__*/function () {
/**
* Cannot be constructed.
*/
function ZapV1() {}
/**
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.
* @param zap get zap values
* @param options options for the call parameters
*/
ZapV1.zapCallParameters = function zapCallParameters(zap, options) {
var _currencyIn$currency;
!zap ? process.env.NODE_ENV !== "production" ? invariant(false, 'null Zap') : invariant(false) : void 0;
var chainId = zap.chainId,
currencyIn = zap.currencyIn,
currencyOut1 = zap.currencyOut1,
currencyOut2 = zap.currencyOut2,
pairOut = zap.pairOut;
var zapType = options.zapType,
maxPrice = options.maxPrice;
!(chainId !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, 'CHAIN_ID') : invariant(false) : void 0;
var etherIn = (_currencyIn$currency = currencyIn.currency) == null ? void 0 : _currencyIn$currency.isNative;
var path1 = currencyOut1.path.map(function (token) {
return token.address;
});
var path2 = currencyOut2.path.map(function (token) {
return token.address;
});
var currencyInToken = currencyIn == null ? void 0 : currencyIn.currency;
var to = validateAndParseAddress(options.recipient);
var stakingContractAddress = options == null ? void 0 : options.stakingContractAddress;
var stakingPid = options == null ? void 0 : options.stakingPid;
var deadline = 'ttl' in options ? "0x" + (Math.floor(new Date().getTime() / 1000) + options.ttl).toString(16) : "0x" + options.deadline.toString(16);
var methodName;
var args;
var value;
switch (zapType) {
case ZapType.ZAP:
if (etherIn) {
methodName = 'zapNative';
args = [[currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], to, deadline];
value = currencyIn.inputAmount.toString();
} else {
methodName = 'zap';
args = [currencyInToken.address, currencyIn.inputAmount.toString(), [currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], to, deadline];
value = ZERO_HEX;
}
break;
case ZapType.ZAP_SINGLE_ASSET_POOL:
!stakingContractAddress ? process.env.NODE_ENV !== "production" ? invariant(false, 'Missing Pool Address') : invariant(false) : void 0;
if (etherIn) {
methodName = 'zapSingleAssetPoolNative';
args = [path1, currencyOut1.minOutputAmount, deadline, stakingContractAddress];
value = currencyIn.inputAmount.toString();
} else {
methodName = 'zapSingleAssetPool';
args = [currencyInToken.address, currencyIn.inputAmount.toString(), path1, currencyOut1.minOutputAmount, deadline, stakingContractAddress];
value = ZERO_HEX;
}
break;
case ZapType.ZAP_LP_POOL:
!stakingContractAddress ? process.env.NODE_ENV !== "production" ? invariant(false, 'Missing Pool Address') : invariant(false) : void 0;
if (etherIn) {
methodName = 'zapLPPoolNative';
args = [[currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], deadline, stakingContractAddress];
value = currencyIn.inputAmount.toString();
} else {
methodName = 'zapLPPool';
args = [currencyInToken.address, currencyIn.inputAmount.toString(), [currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], deadline, stakingContractAddress];
value = ZERO_HEX;
}
break;
case ZapType.ZAP_T_BILL:
!stakingContractAddress ? process.env.NODE_ENV !== "production" ? invariant(false, 'Missing Bill Address') : invariant(false) : void 0;
if (etherIn) {
methodName = 'zapTBillNative';
args = [[currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], deadline, stakingContractAddress, maxPrice || '0'];
value = currencyIn.inputAmount.toString();
} else {
methodName = 'zapTBill';
args = [currencyInToken.address, currencyIn.inputAmount.toString(), [currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], deadline, stakingContractAddress, maxPrice || '0'];
value = ZERO_HEX;
}
break;
case ZapType.ZAP_MINI_APE:
!stakingPid ? process.env.NODE_ENV !== "production" ? invariant(false, 'Missing contract PID') : invariant(false) : void 0;
if (etherIn) {
methodName = 'zapMiniApeV2Native';
args = [[currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], deadline, MINI_APE_ADDRESS[SupportedChainId.POLYGON] || '', stakingPid];
value = currencyIn.inputAmount.toString();
} else {
methodName = 'zapMiniApeV2';
args = [currencyInToken.address, currencyIn.inputAmount.toString(), [currencyOut1.outputCurrency.address, currencyOut2.outputCurrency.address], path1, path2, [currencyOut1.minOutputAmount, currencyOut2.minOutputAmount], [pairOut.minInAmount.token1, pairOut.minInAmount.token2], deadline, MINI_APE_ADDRESS[SupportedChainId.POLYGON] || '', stakingPid];
value = ZERO_HEX;
}
break;
default:
methodName = '';
args = [];
value = '0';
}
return {
methodName: methodName,
args: args,
value: value
};
};
return ZapV1;
}();
export { ZAP_ADDRESS, ZapType, ZapV1 };
//# sourceMappingURL=v2-zap-sdk.esm.js.map