UNPKG

viem

Version:

TypeScript Interface for Ethereum

324 lines • 11.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPool = getPool; exports.getLiquidityBalance = getLiquidityBalance; exports.rebalanceSwap = rebalanceSwap; exports.rebalanceSwapSync = rebalanceSwapSync; exports.mint = mint; exports.mintSync = mintSync; exports.burn = burn; exports.burnSync = burnSync; exports.watchRebalanceSwap = watchRebalanceSwap; exports.watchMint = watchMint; exports.watchBurn = watchBurn; const tempo_1 = require("ox/tempo"); const multicall_js_1 = require("../../actions/public/multicall.js"); const readContract_js_1 = require("../../actions/public/readContract.js"); const watchContractEvent_js_1 = require("../../actions/public/watchContractEvent.js"); const writeContract_js_1 = require("../../actions/wallet/writeContract.js"); const writeContractSync_js_1 = require("../../actions/wallet/writeContractSync.js"); const parseEventLogs_js_1 = require("../../utils/abi/parseEventLogs.js"); const Abis = require("../Abis.js"); const Addresses = require("../Addresses.js"); const utils_js_1 = require("../internal/utils.js"); async function getPool(client, parameters) { const { userToken, validatorToken, ...rest } = parameters; const [pool, totalSupply] = await (0, multicall_js_1.multicall)(client, { ...rest, contracts: getPool.calls({ userToken, validatorToken }), allowFailure: false, deployless: true, }); return { reserveUserToken: pool.reserveUserToken, reserveValidatorToken: pool.reserveValidatorToken, totalSupply, }; } (function (getPool) { function calls(args) { const { userToken, validatorToken } = args; return [ (0, utils_js_1.defineCall)({ address: Addresses.feeManager, abi: Abis.feeAmm, args: [tempo_1.TokenId.toAddress(userToken), tempo_1.TokenId.toAddress(validatorToken)], functionName: 'getPool', }), (0, utils_js_1.defineCall)({ address: Addresses.feeManager, abi: Abis.feeAmm, args: [tempo_1.PoolId.from({ userToken, validatorToken })], functionName: 'totalSupply', }), ]; } getPool.calls = calls; })(getPool || (exports.getPool = getPool = {})); async function getLiquidityBalance(client, parameters) { const { address, poolId, userToken, validatorToken, ...rest } = parameters; return (0, readContract_js_1.readContract)(client, { ...rest, ...getLiquidityBalance.call({ address, poolId, userToken, validatorToken, }), }); } (function (getLiquidityBalance) { function call(args) { const { address } = args; const poolId = (() => { if ('poolId' in args && args.poolId) return args.poolId; if ('userToken' in args && 'validatorToken' in args) return tempo_1.PoolId.from({ userToken: args.userToken, validatorToken: args.validatorToken, }); throw new Error('`poolId`, or `userToken` and `validatorToken` must be provided.'); })(); return (0, utils_js_1.defineCall)({ address: Addresses.feeManager, abi: Abis.feeAmm, args: [poolId, address], functionName: 'liquidityBalances', }); } getLiquidityBalance.call = call; })(getLiquidityBalance || (exports.getLiquidityBalance = getLiquidityBalance = {})); async function rebalanceSwap(client, parameters) { return rebalanceSwap.inner(writeContract_js_1.writeContract, client, parameters); } (function (rebalanceSwap) { async function inner(action, client, parameters) { const { userToken, validatorToken, amountOut, to, ...rest } = parameters; const call = rebalanceSwap.call({ userToken, validatorToken, amountOut, to, }); return (await action(client, { ...rest, ...call, })); } rebalanceSwap.inner = inner; function call(args) { const { userToken, validatorToken, amountOut, to } = args; return (0, utils_js_1.defineCall)({ address: Addresses.feeManager, abi: Abis.feeAmm, functionName: 'rebalanceSwap', args: [ tempo_1.TokenId.toAddress(userToken), tempo_1.TokenId.toAddress(validatorToken), amountOut, to, ], }); } rebalanceSwap.call = call; function extractEvent(logs) { const [log] = (0, parseEventLogs_js_1.parseEventLogs)({ abi: Abis.feeAmm, logs, eventName: 'RebalanceSwap', strict: true, }); if (!log) throw new Error('`RebalanceSwap` event not found.'); return log; } rebalanceSwap.extractEvent = extractEvent; })(rebalanceSwap || (exports.rebalanceSwap = rebalanceSwap = {})); async function rebalanceSwapSync(client, parameters) { const { throwOnReceiptRevert = true, ...rest } = parameters; const receipt = await rebalanceSwap.inner(writeContractSync_js_1.writeContractSync, client, { ...rest, throwOnReceiptRevert, }); const { args } = rebalanceSwap.extractEvent(receipt.logs); return { ...args, receipt, }; } async function mint(client, parameters) { return mint.inner(writeContract_js_1.writeContract, client, parameters); } (function (mint) { async function inner(action, client, parameters) { const { to, userTokenAddress, validatorTokenAddress, validatorTokenAmount, ...rest } = parameters; const call = mint.call({ to, userTokenAddress, validatorTokenAddress, validatorTokenAmount, }); return (await action(client, { ...rest, ...call, })); } mint.inner = inner; function call(args) { const { to, userTokenAddress, validatorTokenAddress, validatorTokenAmount, } = args; return (0, utils_js_1.defineCall)({ address: Addresses.feeManager, abi: Abis.feeAmm, functionName: 'mint', args: [ tempo_1.TokenId.toAddress(userTokenAddress), tempo_1.TokenId.toAddress(validatorTokenAddress), validatorTokenAmount, to, ], }); } mint.call = call; function extractEvent(logs) { const [log] = (0, parseEventLogs_js_1.parseEventLogs)({ abi: Abis.feeAmm, logs, eventName: 'Mint', strict: true, }); if (!log) throw new Error('`Mint` event not found.'); return log; } mint.extractEvent = extractEvent; })(mint || (exports.mint = mint = {})); async function mintSync(client, parameters) { const { throwOnReceiptRevert = true, ...rest } = parameters; const receipt = await mint.inner(writeContractSync_js_1.writeContractSync, client, { ...rest, throwOnReceiptRevert, }); const { args } = mint.extractEvent(receipt.logs); return { ...args, receipt, }; } async function burn(client, parameters) { return burn.inner(writeContract_js_1.writeContract, client, parameters); } (function (burn) { async function inner(action, client, parameters) { const { liquidity, to, userToken, validatorToken, ...rest } = parameters; const call = burn.call({ liquidity, to, userToken, validatorToken }); return (await action(client, { ...rest, ...call, })); } burn.inner = inner; function call(args) { const { liquidity, to, userToken, validatorToken } = args; return (0, utils_js_1.defineCall)({ address: Addresses.feeManager, abi: Abis.feeAmm, functionName: 'burn', args: [ tempo_1.TokenId.toAddress(userToken), tempo_1.TokenId.toAddress(validatorToken), liquidity, to, ], }); } burn.call = call; function extractEvent(logs) { const [log] = (0, parseEventLogs_js_1.parseEventLogs)({ abi: Abis.feeAmm, logs, eventName: 'Burn', strict: true, }); if (!log) throw new Error('`Burn` event not found.'); return log; } burn.extractEvent = extractEvent; })(burn || (exports.burn = burn = {})); async function burnSync(client, parameters) { const { throwOnReceiptRevert = true, ...rest } = parameters; const receipt = await burn.inner(writeContractSync_js_1.writeContractSync, client, { ...rest, throwOnReceiptRevert, }); const { args } = burn.extractEvent(receipt.logs); return { ...args, receipt, }; } function watchRebalanceSwap(client, parameters) { const { onRebalanceSwap, userToken, validatorToken, ...rest } = parameters; return (0, watchContractEvent_js_1.watchContractEvent)(client, { ...rest, address: Addresses.feeManager, abi: Abis.feeAmm, eventName: 'RebalanceSwap', args: userToken !== undefined && validatorToken !== undefined ? { userToken: tempo_1.TokenId.toAddress(userToken), validatorToken: tempo_1.TokenId.toAddress(validatorToken), } : undefined, onLogs: (logs) => { for (const log of logs) onRebalanceSwap(log.args, log); }, strict: true, }); } function watchMint(client, parameters) { const { onMint, to, userToken, validatorToken, ...rest } = parameters; return (0, watchContractEvent_js_1.watchContractEvent)(client, { ...rest, address: Addresses.feeManager, abi: Abis.feeAmm, eventName: 'Mint', args: { to, ...(userToken !== undefined && { userToken: tempo_1.TokenId.toAddress(userToken), }), ...(validatorToken !== undefined && { validatorToken: tempo_1.TokenId.toAddress(validatorToken), }), }, onLogs: (logs) => { for (const log of logs) onMint(log.args, log); }, strict: true, }); } function watchBurn(client, parameters) { const { onBurn, userToken, validatorToken, ...rest } = parameters; return (0, watchContractEvent_js_1.watchContractEvent)(client, { ...rest, address: Addresses.feeManager, abi: Abis.feeAmm, eventName: 'Burn', args: userToken !== undefined && validatorToken !== undefined ? { userToken: tempo_1.TokenId.toAddress(userToken), validatorToken: tempo_1.TokenId.toAddress(validatorToken), } : undefined, onLogs: (logs) => { for (const log of logs) onBurn(log.args, log); }, strict: true, }); } //# sourceMappingURL=amm.js.map