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' }
}Last updated
