import { iAssetBase, iAavePoolAssets, IMarketRates, iAssetAggregatorBase, AavePools, iMultiPoolsAssets, IReserveParams, tEthereumAddress, iBasicDistributionParams, } from "./types"; import BigNumber from "bignumber.js"; import {getParamPerPool} from "./contracts-helpers"; export const TEST_SNAPSHOT_ID = "0x1"; // ---------------- // MATH // ---------------- export const WAD = Math.pow(10, 18).toString(); export const HALF_WAD = new BigNumber(WAD).multipliedBy(0.5).toString(); export const RAY = new BigNumber(10).exponentiatedBy(27).toFixed(); export const HALF_RAY = new BigNumber(RAY).multipliedBy(0.5).toFixed(); export const WAD_RAY_RATIO = Math.pow(10, 9).toString(); export const oneEther = new BigNumber(Math.pow(10, 18)); export const oneRay = new BigNumber(Math.pow(10, 27)); export const MAX_UINT_AMOUNT = "115792089237316195423570985008687907853269984665640564039457584007913129639935"; // ---------------- // PROTOCOL GLOBAL PARAMS // ---------------- export const OPTIMAL_UTILIZATION_RATE = new BigNumber(0.8).times(RAY); export const EXCESS_UTILIZATION_RATE = new BigNumber(0.2).times(RAY); export const ONE_YEAR = "31536000"; export const APPROVAL_AMOUNT_LENDING_POOL_CORE = "1000000000000000000000000000"; export const TOKEN_DISTRIBUTOR_PERCENTAGE_BASE = "10000"; export const MOCK_USD_PRICE_IN_WEI = "5848466240000000"; export const USD_ADDRESS = "0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96"; export const MOCK_ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; export const ONE_ADDRESS = "0x0000000000000000000000000000000000000001"; export const AAVE_REFERRAL = "0"; // ---------------- // COMMON PROTOCOL PARAMS ACROSS POOLS AND NETWORKS // ---------------- export const ALL_AAVE_RESERVES_SYMBOLS = [ [ "ETH", "DAI", "LEND", "TUSD", "BAT", "USDC", "USDT", "SUSD", "ZRX", "MKR", "WBTC", "LINK", "KNC", "MANA", "REP", "SNX", "BUSD", "UNI_DAI_ETH", "UNI_USDC_ETH", "UNI_SETH_ETH", "UNI_LINK_ETH", "UNI_MKR_ETH", "UNI_LEND_ETH", ], ]; export const MOCK_CHAINLINK_AGGREGATORS_PRICES: iAssetAggregatorBase = { DAI: oneEther.multipliedBy("0.00369068412860").toFixed(), TUSD: oneEther.multipliedBy("0.00364714136416").toFixed(), USDC: oneEther.multipliedBy("0.00367714136416").toFixed(), LEND: oneEther.multipliedBy("0.00003620948469").toFixed(), BAT: oneEther.multipliedBy("0.00137893825230").toFixed(), USDT: oneEther.multipliedBy("0.00369068412860").toFixed(), SUSD: oneEther.multipliedBy("0.00364714136416").toFixed(), MKR: oneEther.multipliedBy("2.508581").toFixed(), REP: oneEther.multipliedBy("0.048235").toFixed(), ZRX: oneEther.multipliedBy("0.001151").toFixed(), WBTC: oneEther.multipliedBy("47.332685").toFixed(), LINK: oneEther.multipliedBy("0.009955").toFixed(), KNC: oneEther.multipliedBy("0.001072").toFixed(), MANA: oneEther.multipliedBy("0.000158").toFixed(), SNX: oneEther.multipliedBy("0.00442616").toFixed(), BUSD: oneEther.multipliedBy("0.00736484").toFixed(), USD: MOCK_USD_PRICE_IN_WEI, UNI_DAI_ETH: oneEther.multipliedBy("2.1").toFixed(), UNI_USDC_ETH: oneEther.multipliedBy("2.1").toFixed(), UNI_SETH_ETH: oneEther.multipliedBy("2.1").toFixed(), UNI_LEND_ETH: oneEther.multipliedBy("2.1").toFixed(), UNI_LINK_ETH: oneEther.multipliedBy("2.1").toFixed(), UNI_MKR_ETH: oneEther.multipliedBy("2.1").toFixed(), }; export const ALL_ASSETS_INITIAL_PRICES: iAssetBase = { ...MOCK_CHAINLINK_AGGREGATORS_PRICES, ETH: oneEther.toFixed(), }; export const LENDING_RATE_ORACLE_RATES_COMMON: iAavePoolAssets = { ETH: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, DAI: { borrowRate: oneRay.multipliedBy(0.039).toFixed(), }, TUSD: { borrowRate: oneRay.multipliedBy(0.035).toFixed(), }, USDC: { borrowRate: oneRay.multipliedBy(0.039).toFixed(), }, SUSD: { borrowRate: oneRay.multipliedBy(0.035).toFixed(), }, USDT: { borrowRate: oneRay.multipliedBy(0.035).toFixed(), }, BAT: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, LEND: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, LINK: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, KNC: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, REP: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, MKR: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, MANA: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, WBTC: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, ZRX: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, SNX: { borrowRate: oneRay.multipliedBy(0.03).toFixed(), }, BUSD: { borrowRate: oneRay.multipliedBy(0.05).toFixed(), }, }; export const getReservesConfigByPool = ( pool: AavePools ): iMultiPoolsAssets => getParamPerPool>( { [AavePools.proto]: { DAI: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.05) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "75", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, TUSD: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "75", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, USDC: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "75", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "6", }, USDT: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "6", }, SUSD: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "18", }, LEND: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "115", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, BAT: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, ETH: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "75", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, LINK: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "65", liquidationThreshold: "70", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, WBTC: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "115", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "8", }, KNC: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, REP: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, MKR: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, MANA: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, ZRX: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "60", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: true, reserveDecimals: "18", }, SNX: { baseVariableBorrowRate: new BigNumber(0.03) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.12) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "65", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "18", }, BUSD: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "110", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "18", }, }, [AavePools.secondary]: { ETH: { baseVariableBorrowRate: new BigNumber(0) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.08) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "18", }, DAI: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.07) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.06).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "18", }, USDC: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.07) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.06).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "6", }, USDT: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.07) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.06).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "-1", liquidationThreshold: "80", liquidationBonus: "105", borrowingEnabled: true, stableBorrowRateEnabled: false, reserveDecimals: "6", }, UNI_DAI_ETH: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "68", liquidationThreshold: "73", liquidationBonus: "110", borrowingEnabled: false, stableBorrowRateEnabled: false, reserveDecimals: "18", }, UNI_USDC_ETH: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "68", liquidationThreshold: "73", liquidationBonus: "110", borrowingEnabled: false, stableBorrowRateEnabled: false, reserveDecimals: "18", }, UNI_SETH_ETH: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "48", liquidationThreshold: "66", liquidationBonus: "110", borrowingEnabled: false, stableBorrowRateEnabled: false, reserveDecimals: "18", }, UNI_LEND_ETH: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "51", liquidationThreshold: "66", liquidationBonus: "110", borrowingEnabled: false, stableBorrowRateEnabled: false, reserveDecimals: "18", }, UNI_LINK_ETH: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "63", liquidationThreshold: "68", liquidationBonus: "110", borrowingEnabled: false, stableBorrowRateEnabled: false, reserveDecimals: "18", }, UNI_MKR_ETH: { baseVariableBorrowRate: new BigNumber(0.01) .multipliedBy(oneRay) .toFixed(), variableRateSlope1: new BigNumber(0.04) .multipliedBy(oneRay) .toFixed(), variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), baseLTVAsCollateral: "48", liquidationThreshold: "66", liquidationBonus: "110", borrowingEnabled: false, stableBorrowRateEnabled: false, reserveDecimals: "18", }, }, }, pool ); export const getFeeDistributionParamsCommon = ( receiver: tEthereumAddress ): iBasicDistributionParams => { const receivers = [receiver, ZERO_ADDRESS]; const percentages = ["2000", "8000"]; return { receivers, percentages, }; };