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