Skip to main content

vault.depositAndMint(DepositAndMint)

Deposit an array of RWA NFTs into the vault and mint the corresponding amount of security tokens.

DepositAndMint Type Parameters

ParameterTypeRequiredDescription
vaultControllerSignerRequiredVault controller signer that owns the NFTs. Must be connected to a provider.
vaultstringRequiredVault address.
rwaNftsstring[]RequiredAddresses of the RWA NFT contracts (MNFT/CNFT).
tokenIdsstring[]RequiredToken IDs of the NFTs to deposit.
amountnumberRequiredAmount of security tokens to mint.

Returns

FieldTypeDescription
statusdeposited_and_mintedStatus of the operation.
vaultstringVault address.
controllerstringVault controller address.
rwaNftsstring[]NFT contract addresses provided.
tokenIdsstring[]Token IDs deposited.
amountnumberAmount of security tokens minted.
receiptTransactionReceiptTransaction receipt for the deposit and mint call.

Usage

TypeScript

import 'dotenv/config';
import { RWA, Chain, type SDKInit } from "@peaq-network/rwa";
import { JsonRpcProvider, Wallet } from "ethers";

async function main() {
  // 0. Create RWA instance and get provider
  const provider = new JsonRpcProvider(process.env.HTTPS_BASE_URL);
  const init: SDKInit = { chainId: Chain.AGUNG, provider: provider };
  const rwa_sdk = new RWA(init);

  // 1. Vault controller
  const vaultController = new Wallet(process.env.ALICE_PRIVATE_KEY!, provider);

  // 2. Deposit NFTs and mint tokens
  const result = await rwa_sdk.vault.depositAndMint({
    vaultController: vaultController,
    vault: "0x907229D0A25A5Bb16F0ff3D890f38Eb4Ad52Ea1a",
    rwaNfts: [
      "0x5Ca3db1f292f913DDdA8C5385E5391438665463c",
      "0x5Ca3db1f292f913DDdA8C5385E5391438665463c",
      "0x35D67095A5a6f00CBE288cF744b3efC48de3699a"
    ],
    tokenIds: [
      "1262843802665614120367007478296348432923457422026",
      "880598419457374294774049460835571533031091411284",
      "110399289532161649501907442204937966168773206671183427730650359857010370852178"
    ],
    amount: 10000
  });
  console.log("Result", result);
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});

JavaScript

import 'dotenv/config';
import { RWA, Chain } from "@peaq-network/rwa";
import { JsonRpcProvider, Wallet } from "ethers";

async function main() {
  // 0. Create RWA instance and get provider
  const provider = new JsonRpcProvider(process.env.HTTPS_BASE_URL);
  const rwa_sdk = new RWA({ chainId: Chain.AGUNG, provider });

  // 1. Vault controller
  const vaultController = new Wallet(process.env.ALICE_PRIVATE_KEY, provider);

  // 2. Deposit NFTs and mint tokens
  const result = await rwa_sdk.vault.depositAndMint({
    vaultController: vaultController,
    vault: "0x907229D0A25A5Bb16F0ff3D890f38Eb4Ad52Ea1a",
    rwaNfts: [
      "0x5Ca3db1f292f913DDdA8C5385E5391438665463c",
      "0x5Ca3db1f292f913DDdA8C5385E5391438665463c",
      "0x35D67095A5a6f00CBE288cF744b3efC48de3699a"
    ],
    tokenIds: [
      "1262843802665614120367007478296348432923457422026",
      "880598419457374294774049460835571533031091411284",
      "110399289532161649501907442204937966168773206671183427730650359857010370852178"
    ],
    amount: 10000
  });
  console.log("Result", result);
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});

Example outputs

Result {
  status: 'deposited_and_minted',
  vault: '0x4b76a8F7cdB68a9353c83e18077E6bbC760243B3',
  controller: '0x16cd4D21537eD8F33bE08271A9FA6DCC426709b2',
  rwaNfts: [
    '0x5Ca3db1f292f913DDdA8C5385E5391438665463c',
    '0x5Ca3db1f292f913DDdA8C5385E5391438665463c',
    '0x35D67095A5a6f00CBE288cF744b3efC48de3699a'
  ],
  tokenIds: [
    '1262843802665614120367007478296348432923457422026',
    '880598419457374294774049460835571533031091411284',
    '110399289532161649501907442204937966168773206671183427730650359857010370852178'
  ],
  amount: 10000,
  receipt: ContractTransactionReceipt {
    ...
  }
}
Notes:
  • Ensure the vault has been approved as operator for the provided NFTs by the vaultController.
  • Ensure rwaNfts and tokenIds arrays align by index.