Useful information functions from LyncLootBox class
NOTE -
These are information functions and do not require a signer. Just the provider will work!
Initialize the class before calling any of these functions.
import { LyncLootBox, LootBoxError } from "@lyncworld/lootbox-evm-sdk";
import { ethers } from "ethers";
const lb = new LyncLootBox();
await lb.initialize(
	ChainIdentifier.BASE_SEPOLIA, // your chain
	provider, // provider
	lootboxId // your lootbox id / address
);
1. isEmpty​
Checks if the lootbox is empty or not.
const empty = await lb.isEmpty();
console.log(empty); // true or false
2. itemAddresses​
Lists the item addresses that are present in the lootbox.
const itemAddresses = await lb.itemAddresses();
console.log(itemAddresses); // Array of addresses
NOTE -
It has an optional parameter useSubgraph which takes a boolean. If set to true, it will utilize the subgraph instead of directly querying the blockchain.
3. owner​
Returns the owner of the lootbox.
const owner = await lb.owner();
console.log(owner); // Owner address
4. active​
Returns the status of the lootbox.
const isActive = await lb.active();
console.log(isActive); // true or false
5. permanentlyStopped​
Returns whether the lootbox is permanently stopped or not.
const killed = await lb.permanentlyStopped();
console.log(killed); // true or false
6. chainId​
Returns the chainId.
const chainId = await lb.chainId();
console.log(chainId); // chain id
7. creator​
Returns the address of the lootbox creator.
const creator = await lb.creator();
console.log(creator); // Address of lootbox creator
8. merkleRoot​
Returns the merkle root since we use the merkle tree method of whitelisting large number addresses.
const merkleRoot = await lb.merkleRoot();
console.log(merkleRoot); // merkleRoot Hex
9. remainingOpens​
Returns the number of time a wallet can still open the lootbox.
const walletAddress = "0x...";
const opens = await lb.remainingOpens(walletAddress);
console.log(opens); // number of opens for the walletAddress
10. hasPendingClaims​
Returns whether a wallet has some pending claims or not.
const walletAddress = "0x...";
const canClaim = await lb.hasPendingClaims(walletAddress);
console.log(canClaim); // true of false
11. lootboxContents​
Returns the current state of the lootbox. Details like which item is present in the lootbox, quantity and tokenIds.
NOTE -
This function utilizes the subgraph, which may result in a slight delay in retrieving the data.
const contents = await lb.lootboxContents();
console.log(contents); 
Example output:
{
  erc20Items: [
    {
      itemAddress: '0x...', // addres of the erc20 token
      tokenAmount: '85517387241022654383'
    },
    ... more items
  ],
  erc721Items: [
	  {
		  itemAddress: '0x...', // addres of the erc721 token
			tokenIds: []
    },
    ... more items
  ],
  erc1155Items: [
    {
      itemAddress: '0x...', // addres of the erc1155 token
      tokenIds: ['1', '2', '3', ...], // remaining token Ids
	    tokenAmounts: ['5', '8', '1', ...] // remaining token amounts
    },
    ... more items
  ]
}
12. trustedForwarder
Get the current trusted forwarder address.
const trustedForwarder = await lb.trustedForwarder();
console.log(trustedForwarder); // address of trustedForwarder
13. getRewardsForAddress
Get the rewards for the address which has opened the lootbox. It returns all the accumulated rewards.
const walletAddress = "0x..."; 
const rewards = await lb.getRewardsForAddress(walletAddress);
console.log(rewards); // array of rewards
Example output:
[
  {
    itemAddress: '0x8869d99c72aF9d4A00090e298Af990303216f0D0',
    tokenId: '',
    tokenAmount: '12933075821210463238',
    uri: '',
    type: 'ERC20'
  },
  {
    itemAddress: '0xd34EFc9525bb841D707ae99bfd4fD77f92775980',
    tokenId: '35',
    tokenAmount: '1',
    uri: '<https://example.com/35.json>',
    type: 'ERC721'
  },
  {
    itemAddress: '0xd34EFc9525bb841D707ae99bfd4fD77f92775980',
    tokenId: '73',
    tokenAmount: '1',
    uri: '<https://example.com/73.json>',
    type: 'ERC721'
  },
  {
    itemAddress: '0xd34EFc9525bb841D707ae99bfd4fD77f92775980',
    tokenId: '14',
    tokenAmount: '1',
    uri: '<https://example.com/14.json>',
    type: 'ERC721'
  },
  {
    itemAddress: '0x815b49F19e0ea4e4cdc87a65B96D6A8222e0AF21',
    tokenId: '29',
    tokenAmount: '1',
    uri: '<https://example.com/29.json>',
    type: 'ERC721'
  },
  {
    itemAddress: '0x408410fe1d572E5560d3f73F330EC4F298D20B4f',
    tokenId: '4',
    tokenAmount: '1',
    uri: '<https://example.com/4.json>',
    type: 'ERC1155'
  },
  {
    itemAddress: '0x408410fe1d572E5560d3f73F330EC4F298D20B4f',
    tokenId: '7',
    tokenAmount: '1',
    uri: '<https://example.com/7.json>',
    type: 'ERC1155'
  },
  {
    itemAddress: '0x2B4B00f625E595C4B5e7381968ff32fB565985D4',
    tokenId: '2',
    tokenAmount: '3',
    uri: '<https://example.com/2.json>',
    type: 'ERC1155'
  }
]
14. getAllRewardsForAddress
Returns all the rewards a wallet has gotten till now. Uses subgraph
const walletAddress = "0x..."; 
const rewardsAll = await lb.getAllRewardsForAddress(walletAddress);
console.log(rewardsAll); // array 
Example output:
{
  erc20Items: [
    {
      itemAddress: '0x...', // addres of the erc20 token
      tokenAmount: '85517387241022654383' // total token amount for this wallet
    },
    ... more items
  ],
  erc721Items: [
	  {
		  itemAddress: '0x...', // addres of the erc721 token
			tokenIds: ['2', '3', ...] // all the token ids for this wallet
    },
    ... more items
  ],
  erc1155Items: [
    {
      itemAddress: '0x...', // addres of the erc1155 token
      tokenIds: ['1', '2', '3', ...], // all the token ids for this wallet
	    tokenAmounts: ['5', '8', '1', ...] // respective token amounts 
    },
    ... more items
  ]
}