import type { Account, Chain, Client, Transport } from "viem"; import { approve, allowance, balanceOf, decimals, name, symbol, totalSupply, } from "viem-erc20/actions"; import { asset } from "./public/asset.js"; import { convertToAssets } from "./public/convertToAssets.js"; import { convertToShares } from "./public/convertToShares.js"; import { maxDeposit } from "./public/maxDeposit.js"; import { maxMint } from "./public/maxMint.js"; import { maxRedeem } from "./public/maxRedeem.js"; import { maxWithdraw } from "./public/maxWithdraw.js"; import { previewDeposit } from "./public/previewDeposit.js"; import { previewMint } from "./public/previewMint.js"; import { previewRedeem } from "./public/previewRedeem.js"; import { previewWithdraw } from "./public/previewWithdraw.js"; import { totalAssets } from "./public/totalAssets.js"; import { deposit } from "./wallet/deposit.js"; import { mint } from "./wallet/mint.js"; import { redeem } from "./wallet/redeem.js"; import { withdraw } from "./wallet/withdraw.js"; // for .extend() usage export const erc4626PublicActions = () => < TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends Account | undefined = Account | undefined, >( client: Client, ) => ({ allowance: (params: Parameters[1]) => allowance(client, params), asset: (params: Parameters[1]) => asset(client, params), balanceOf: (params: Parameters[1]) => balanceOf(client, params), convertToAssets: (params: Parameters[1]) => convertToAssets(client, params), convertToShares: (params: Parameters[1]) => convertToShares(client, params), decimals: (params: Parameters[1]) => decimals(client, params), maxDeposit: (params: Parameters[1]) => maxDeposit(client, params), maxMint: (params: Parameters[1]) => maxMint(client, params), maxRedeem: (params: Parameters[1]) => maxRedeem(client, params), maxWithdraw: (params: Parameters[1]) => maxWithdraw(client, params), name: (params: Parameters[1]) => name(client, params), previewDeposit: (params: Parameters[1]) => previewDeposit(client, params), previewMint: (params: Parameters[1]) => previewMint(client, params), previewRedeem: (params: Parameters[1]) => previewRedeem(client, params), previewWithdraw: (params: Parameters[1]) => previewWithdraw(client, params), symbol: (params: Parameters[1]) => symbol(client, params), totalAssets: (params: Parameters[1]) => totalAssets(client, params), totalSupply: (params: Parameters[1]) => totalSupply(client, params), }); // for .extend() usage export const erc4626WalletActions = () => (client: Client) => ({ approve: (params: Parameters[1]) => approve(client, params), deposit: (params: Parameters[1]) => deposit(client, params), mint: (params: Parameters[1]) => mint(client, params), redeem: (params: Parameters[1]) => redeem(client, params), withdraw: (params: Parameters[1]) => withdraw(client, params), });