Skip to main content

deposit(amount)

Mint ctAssets by consuming the underlying token previously approved to the vault. Before calling deposit(amount), the vault must be approved to spend the underlying token.

Signature​

await vault.deposit(amount: bigint): Promise<Tx>

Parameters​

  • amount: underlying amount, in underlying base units (bigint).

Returns​

  • Tx: { hash, wait }. Call await tx.wait(confirmations?) to confirm. It resolves a viem TransactionReceipt and throws when the transaction reverts.

Example​

// Prerequisite: the vault was created with a wallet client:
// const vault = getVault(version, vaultAddress, chainId, publicClient, walletClient)

const vaultAddr = vault.getAddress();

// Approve 1.0 underlying (SDK helper produces a BigInt in underlying units)
const amount = await vault.toUnderlyingBigInt("1.0");

// 1) Approve underlying to the vault
const erc20 = await vault.getUnderlyingErc20();
const approveTx = await erc20.approve(vaultAddr, amount);
await approveTx.wait();

// (Optional) Preview how many shares you will mint
const preview = await vault.previewConversion(amount);
// console.log("Expected shares:", await vault.applyDecimals(preview.vaultTokensReceivingRaw));

// 2) Deposit 1.0 underlying
const depositTx = await vault.deposit(amount);
const receipt = await depositTx.wait();
console.log("Deposit confirmed in block", receipt.blockNumber);