UNPKG

zic-evm-sdk

Version:
241 lines (240 loc) 6.92 kB
import { ethers } from "ethers"; import { OdysseyZebecCard, Token, Weth, ZebecCard } from "./artifacts"; import { CardConfig, CardPurchaseOfDay, CardTypeId, FeeTier, SupportedChainId, SwapAndBuyCardParams, SwapData } from "./types"; /** * A class which holds methods and properties to interact with Zebec Instanct Card evm contracts. * @example * * const signer = <ethers.Signer Instance> // most wallet provider have way to create signer * const chainId = 11155111 // sepolia; * const service = new ZebecCardService(signer, chainId); * */ export declare class ZebecCardService { readonly signer: ethers.Signer; readonly chainId: SupportedChainId; readonly zebecCard: ZebecCard | OdysseyZebecCard; readonly usdcToken: Token; readonly weth: Weth; /** * Create instance of ZebecCardService. * @param signer ethers signer * @param chainId chain ID supported by sdk */ constructor(signer: ethers.Signer, chainId: SupportedChainId); /** * Sets Native Fee in card config. * * Can only be invoked admin. * * @param params * @returns */ setNativeFee(params: { feeInPercent: string; }): Promise<ethers.ContractTransactionResponse>; /** * Sets NonNative Fee in card config * * Can only be invoked admin. * * @param params * @returns */ setNonNativeFee(params: { feeInPercent: string; }): Promise<ethers.ContractTransactionResponse>; /** * Sets Revenue Fee in card config * * Can only be invoked admin. * * @param params * @returns */ setRevenueFee(params: { feeInPercent: string; }): Promise<ethers.ContractTransactionResponse>; /** * Sets Revenue vault address in card config * * Can only be invoked admin. * * @param params * @returns */ setRevenueVault(params: { vaultAddress: ethers.AddressLike; }): Promise<ethers.ContractTransactionResponse>; /** * Sets commission vault address in card config * * Can only be invoked admin. * * @param params * @returns */ setCommissionVault(params: { vaultAddress: ethers.AddressLike; }): Promise<ethers.ContractTransactionResponse>; /** * Sets card vault address in card config * * Can only be invoked admin. * */ setCardVault(params: { vaultAddress: ethers.AddressLike; }): Promise<ethers.ContractTransactionResponse>; /** * Sets usdc address in card config * Can only be invoked by admin */ setUsdcAddress(params: { tokenAddress: ethers.AddressLike; }): Promise<ethers.ContractTransactionResponse>; /** * Sets minimum card amount for purchasing card in card config */ setMinCardAmount(params: { minCardAmount: string; }): Promise<ethers.ContractTransactionResponse>; /** * Sets maximum card amount for purchasing card in card config */ setMaxCardAmount(params: { maxCardAmount: string; }): Promise<ethers.ContractTransactionResponse>; /** * Sets daily card purchase limit in card config */ setDailyCardPurchaseLimit(params: { dailyCardPurchaseLimit: string; }): Promise<ethers.ContractTransactionResponse>; /** * Updates fee for given min - max (range) amount and inserts if range in not found. */ setFee(params: { minAmount: string; maxAmount: string; feePercent: string; }): Promise<ethers.ContractTransactionResponse>; /** * Sets fee tiers only be invoked by admin */ setFeeTiers(params: { feeTiers: FeeTier[]; }): Promise<ethers.ContractTransactionResponse>; private _parseFeeTiers; setCustomFee(params: { tokenAddress: string; fee: number | string; }): Promise<ethers.ContractTransactionResponse>; getCustomFee(params: { tokenAddress: string; }): Promise<string>; /** * Deposits usdc to user vault * @param params * @returns */ depositUsdc(params: { amount: string; }): Promise<ethers.ContractTransactionResponse>; /** * Withdraw usdc from user vault * @param params * @returns */ withdraw(params: { amount: string; }): Promise<ethers.ContractTransactionResponse>; /** * Transfer specified amount from user's vault balance to card vault with some fee amount for card purchase. * @param params * @returns */ buyCard(params: { amount: string; cardTypeId: CardTypeId; buyerEmail: string; }): Promise<ethers.ContractTransactionResponse>; /** * Swaps given src token to usdc and transfers to user's vault * @param params * @param overrides * @returns */ swapAndDeposit(params: Omit<SwapData, "gas" | "gasPrice">, overrides?: ethers.Overrides): Promise<ethers.ContractTransactionResponse>; buyCardDirect(params: { amount: string; cardTypeId: CardTypeId; buyerEmail: string; }): Promise<ethers.ContractTransactionResponse>; swapAndBuyCardDirect(params: SwapAndBuyCardParams, overrides?: ethers.Overrides): Promise<ethers.ContractTransactionResponse>; /** * Deposit usdc from user's vault to yield provider * @param params * @returns */ generateYield(params: { amount: string; }): Promise<ethers.ContractTransactionResponse>; /** * Withdaw deposits and yield from yield provider * @param params * @returns */ withdrawYield(params: { amount: string; }): Promise<ethers.ContractTransactionResponse>; /** * Gets user's vault balance * @param params * @returns */ getUserBalance(params: { userAddress: ethers.AddressLike; }): Promise<string>; /** * Gets user's card purchase * @param params * @returns */ getCardPurhcaseOfDay(params: { userAddress: ethers.AddressLike; }): Promise<CardPurchaseOfDay>; /** * Gets Zebec Instant Card contract configs * @returns */ getCardConfig(): Promise<CardConfig>; /** * Gets fee tiers * @returns Array of fee tier */ getFeeTiers(): Promise<Array<FeeTier>>; /** * Gets admin adddress * @returns */ getAdmin(): Promise<string>; /** * add allowance of given amount of given token to given spender * @param params * @returns */ approve(params: { token: string; spender: ethers.AddressLike; amount: string; }): Promise<ethers.ContractTransactionResponse | null>; /** * Wrap ETH to Wrapped ETH * @param param * @returns */ wrapEth(param: { amount: string; }): Promise<ethers.ContractTransactionResponse>; }