Fee Controller

All chain related functions which are not vault dependent

Functions

Create an instance
const fee = new FeeController({
    baseUrl: 'http://localhost:8000',
    walletType: {
        embedded: true, // for external wallet it should be false
        supportAa: boolean
    },
    selectedChainName,
    environment = "mainnet",
    aa,
    selectedWallet,
} as TriaArgs);
Get Send Fee
getSendFee({
    chain,
    payload,
  }: {
    chain: ChainData;
    payload: Send;
  }): Promise<FeeResponse>
Check Token Allowance
checkTokenAllowance({
    triaName,
    payload,
    chain,
  }: {
    triaName: string;
    payload: Approve;
    chain: ChainData;
  }): Promise<CheckTokenAllowanceResponse>;
export interface Approve {
  tokenAddress: string;
  amount: number;
  spender: string;
}
export interface CheckTokenAllowanceResponse {
  success: boolean;
  allowance?: boolean;
  message?: string;
}
  • Can be used to show Approve button or Swap button

  • Can be used to check allowance for the pay token and then proceed to Approve or the Txn requested for (like Mint, Swap, etc)

Get Approve Fee
getApproveFee({
    triaName,
    chain,
    payload,
  }: {
    triaName: string;
    chain: ChainData;
    payload: Approve;
  }): Promise<FeeResponse>
export interface Approve {
  tokenAddress: string; // e.g. USDC token
  amount: number; // eg. 1 MATIC
  spender: string; // contract address approving for
}
Get Call Contract Fee
getCallContractFee({
    triaName,
    chain,
    contractDetails,
  }: {
    triaName: string;
    chain: ChainData;
    contractDetails: ContractDetails;
  }): Promise<FeeResponse>;
export interface ContractDetails {
  contractAddress: string;
  abi: Object[];
  functionName: string;
  args: [];
  value?: number; // e.g. 1, if 1 MATIC to transfer, and 0 if no native token to be paid needed, if paying in ERC20 token need not be specified, use approve function for the same
}
Get Send NFT Fee
getSendNFTFee({
    chain,
    fromTriaName,
    recipientTriaName,
    nftDetails,
  }: {
    chain: ChainData;
    fromTriaName: string;
    recipientTriaName: string;
    nftDetails: NFTDetails;
  }): Promise<FeeResponse>
interface NFTDetails {
  type: string; // ERC721 | ERC1155
  tokenAddress: string;  
  tokenId: string; 
  amount: number; // expect from FE hook // same as quantity
}
  • Use tokenAddress and tokenId, to getNFTDetails from User Controller.

Types

FeeResponse
export type FeeResponse = {
  success: boolean;
  fee?: {
    eth: string;
    usd?: string;
    plaformFeeInPercent?: number;
    platformFeeInEth?: string;
    platformFeeInUsd?: string;
    totalInEth?: string;
    totalInUsd?: string;
  };
  message?: string;
  error?: any;
// Example
{
  success: true,
  fee: { eth: '0.03473308532709981', usd: '0.025999068957661964' }
}
ChainData
export type ChainData = {
  chainName?: string;
  customChain?: CustomChainData;
};

export type CustomChainData = {
  type: "EVM";
  chainId: number;
  rpcUrl: string;
  currencySymbol: string;
  currencyName?: string;
  chainName?: string;
  chainLogo?: string;
  explorerUrl?: string;
};

Last updated