List approved assets
Discover which assets a fund accepts for subscriptions and redemptions.
function getApprovedAssets() external view returns (address[] memory);
function getApprovedAsset(address asset) external view returns (ApprovedAsset memory);
function isApprovedAsset(address asset) external view returns (bool);
function assetDecimals(address asset) external view returns (uint8);
struct ApprovedAsset {
address asset;
string symbol;
uint8 decimals;
bool isFeeModuleAsset;
bool canDeposit; // accepted for subscriptions
bool canRedeem; // accepted for redemptions
}import { createPublicClient, http, parseAbi } from "viem";
import { mainnet } from "viem/chains";
const SHARES = "0x...";
const abi = parseAbi([
"function getApprovedAssets() view returns (address[])",
"function getApprovedAsset(address asset) view returns ((address asset, string symbol, uint8 decimals, bool isFeeModuleAsset, bool canDeposit, bool canRedeem))",
"function isApprovedAsset(address asset) view returns (bool)",
]);
const client = createPublicClient({ chain: mainnet, transport: http() });
const assets = await client.readContract({ address: SHARES, abi, functionName: "getApprovedAssets" });
// e.g. ["0xA0b8...eB48", "0xdAC1...1ec7"]
for (const a of assets) {
const info = await client.readContract({ address: SHARES, abi, functionName: "getApprovedAsset", args: [a] });
console.log(info.symbol, { canDeposit: info.canDeposit, canRedeem: info.canRedeem });
// "USDC" { canDeposit: true, canRedeem: true }
}import { ethers } from "ethers";
const SHARES = "0x...";
const abi = [
"function getApprovedAssets() view returns (address[])",
"function getApprovedAsset(address asset) view returns (tuple(address asset, string symbol, uint8 decimals, bool isFeeModuleAsset, bool canDeposit, bool canRedeem))",
"function isApprovedAsset(address asset) view returns (bool)",
];
const provider = new ethers.JsonRpcProvider("https://eth.llamarpc.com");
const shares = new ethers.Contract(SHARES, abi, provider);
const assets = await shares.getApprovedAssets();
for (const a of assets) {
const info = await shares.getApprovedAsset(a);
console.log(info.symbol, { canDeposit: info.canDeposit, canRedeem: info.canRedeem });
}

Last updated