zic-evm-sdk
Version:
An sdk for interacting with zebec card evm contracts
241 lines (240 loc) • 6.92 kB
TypeScript
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>;
}