2.0.54 • Published 2 months ago

trava-simulation-route v2.0.54

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

TRAVA SIMULATION ROUTE

Table of contents

import { ApplicationState } from "../State/ApplicationState";

let chainId = Number((await provider.getNetwork()).chainId);

let appState = new ApplicationState(
    userAddress: String,
    smartWalletAddress: String,
    provider: JsonRpcProvider, // reader
    chainId: chainId
);

Initialize state

Các action liên quan đến token

Khi sử dụng đồng token nào, thì khởi tạo state về số dư của đồng token đó:

appState1 = await updateUserTokenBalance(
    appState,
    tokenAddress
)

Nếu sử dụng đồng BNB

appState2 = await updateUserEthBalance(
    appState1
)

Các action liên quan đến pools: deposit, borrow, withdraw, repay

Khi sử dụng các action trong pools, thì thực hiện update state của user về pool này

appState3 = await updateTravaLPInfo(
    appState2,
    market
)

Khi gọi action supply và withdraw

appState31 = await updateLPtTokenInfo(
    appState3,
    tokenAddress
)

Khi gọi action borrow và repay

appState32 = await updateLPDebtTokenInfo(
    appState3,
    tokenAddress
)

Khi goi action claim rewards

appState31 = await updateLPtTokenInfo(
    appState3,
    tokenAddress
)

init tokenBalance of rTrava in _to address

khi goi action convert rewards

appState31 = await updateLPtTokenInfo(
    appState3,
    tokenAddress
)
init rTrava balacne in _from address
init trava balance in _to address

Các action liên qua đến nft

Tương tác với các mảnh armouries

Update các armouries của main wallet

appState4 = await updateNFTBalanceFromContract(
    appState3,
    "walletState"
)

Update các armouries của smart wallet

appState4 = await updateNFTBalanceFromContract(
    appState3,
    "smartWalletState"
)

Tương tác với các Knight

Update các Knight của main wallet

appState4 = await updateCollectionBalanceFromContract(
    appState3,
    "walletState"
)

Update các Knight của smart wallet

appState4 = await updateCollectionBalanceFromContract(
    appState3,
    "smartWalletState"
)

Tương tác với các Marketplace / Sell armoury

Update các armouries đang bán trên marketplace

appState4 = await updateSellingNFTFromContract(
    appState3
)
// update nft mà user đang bán
appState41 = await updateOwnedSellingNFT(
    appState4
)

Update state của trava token như trên

appState5 = await updateUserTokenBalance(
    appState4,
    travaTokenAddress
)

Update các armouries mà user đang bán trên marketplace

appState5 = await updateOwnedSellingNFT(
    appState4
)

Tương tác với các Marketplace / Auction

First, update auctioning NFT From Contract when chose any action in Auction

appState = await updateAuctioningNFTFromContract(
    appState
)

When create auction,

First update Owned Auctioning NFT

appState = await updateOwnedAuctioningNFT(
    appState
)

Then, update collection of from wallet

appState = await updateCollectionBalanceFromContract(
    appState
)

When make bid auction,

update trava balance of from address

appState = await updateUserTokenBalance(
    appState,
    travaTokenAddress
)

appState = await updateUserEthBalance(
    appState
)

or

appState = await updateSmartWalletTokenBalance(
    appState,
    travaTokenAddress
)

appState = await updateSmartWalletEthBalance(
    appState
)

when edit auction price

update Owned Auctioning NFT

appState = await updateOwnedAuctioningNFT(
    appState,
    from wallet state
)

when cancel auction

update Owned Auctioning NFT

appState = await updateOwnedAuctioningNFT(
    appState,
    from wallet state
)

Then, update collection of to wallet

appState = await updateCollectionBalanceFromContract(
    appState,
    to wallet state
)

when finalize auction update Owned Auctioning NFT if smartWallet is nftSeller,

update Trava balance, BNB balance of to wallet

appState = await updateUserTokenBalance(
    appState,
    travaTokenAddress
)

or

appState = await updateSmartWalletTokenBalance(
    appState,
    travaTokenAddress
)

if smartWallet is bidder,

appState = await updateCollectionBalanceFromContract(
    appState,
    to wallet state
)

Tương tác với NFT Marketplace / VeTrava

Khi chọn bất cứ action nào của veTrava NFT Marketplace, update user lock balance của from address

appState = await updateSellingVeTrava(appState);
appState = await updateTravaGovernanceState(appState)

Khi chọn action Create Sale VeTrava

appState = await updateUserLockBalance(appState, fromAddress);

Khi chon action Cancel sale VeTrava

appState = await updateUserLockBalance(appState, toAddress)

Khi chon action Buy veTrava

appState = await updateUserLockBalance(appState, toAddress)

appState = await updateTokenBalance(appState, from address, busd token address)

appState = await updateTokenBalance(appState, from address, trava token address)

Tuong tac voi liquidity Campain

Update state cua smart wallet

newAppState = await updateLiquidityCampainState(
    appState
)

Khi stake: update stakedToken balance for smart wallet, update underlyingToken balance for from address
Khi withdraw: update underlyingToken balance for "to" Address and Smart Wallet Address
Khi claimReward: update Trava balance for "to" address

Tuong tac voi Trava Staking

Update state cua Smart Wallet trong cac vault

newAppState = await updateAllAccountVault(oldAppState, address)
Khi stake: update stakedToken balance for smart wallet, update underlyingToken balance for from address
Khi withdraw: update underlyingToken balance for "to" Address and Smart Wallet Address
Khi claimReward: update Trava balance for "to" address
stakedPool = await newAppState.smartWalletState.travaLPStakingStateList.get(stakedTokenAdress.toLownerCase())

TVL = stakedPool.TVL
APR = stakedPool.APR
reward = stakedPool.claimableReward
deposited = stakedPool.deposited

Tương tác với Trava NFT Mission / Expedition

Khi tham gia vào các action của expedition

appState = await updateExpeditionState(appState)

appState = await updateOwnerKnightInExpeditionState(appState, smartWalletAddress)

Trava NFT Expedition Deploy update trava balance of from address update knight balance of from address update ticket balance of from address

appState = await updateUserLockBalance(appState, fromAddress);
appState = await updateCollectionBalanceFromContract(appState, fromAddress);
appState = await updateOwnerTicketState(appState, fromAddress);

Trava NFT Expedition Abandon update knight balance of to address

appState = await updateCollectionBalanceFromContract(appState, toAddress);

Trava NFT Expedition Abandon update knight balance of to address update trava balance of to address

appState = await updateCollectionBalanceFromContract(appState, fromAddress);
appState = await updateUserLockBalance(appState, toAddress);

Tương tác với Trava Governance

Khi chon bat cu action nao cua Trava Governance, update TravaGovernanceState

appState = await updateTravaGovernanceState(appState);

Khi chon action Create Lock, update Trava Governace State cua from address, to address, update bep20 balance of from address

appState = await updateUserLockBalance(appState, fromAddress)
appState = await updateUserLockBalance(appState, toAddress)
appState = /// update token balance cua from address

Khi chon action merge, update Trava Governace State cua from address

appState = await updateUserLockBalance(appState, fromAddress)

Khi chon cac action : coumpound, change unlock time, update Trava Governace State cua smart wallet address

appState = await updateUserLockBalance(appState, smartWalletAddress)

Khi chon cac action : withdraw update Trava Governace State cua smart wallet address, update trava balance va token lock balance cua to address

appState = await updateUserLockBalance(appState, smartWalletAddress)
appState = /// update trava balance cua to address
appState = /// update token locked balance cua to address

Khi chon action increase balance, Trava Governace State cua smart wallet address, update token locked balance cua from address

appState = // update token locked balance cua from address

Tương tác với veTrava NFT Marketplace

Khi chọn bất cứ action nào của veTrava NFT Marketplace, update selling veTrava NFT

appState = await updateSellingVeTrava(appState);

Khi chọn action Create Sale

appState = await updateUserLockBalance(appState, fromAddress);

Khi chọn action veTrava Buy

appState = await updateTokenBalance(appState, _from, priceTokenAddress);
appState = await updateUserLockBalance(appState, toAddress);

Khi chọn action Cancel Sale

appState = await updateUserLockBalance(appState, toAddress);

Khi chọn action Tranfer veTrava NFT

appState = await updateUserLockBalance(appState, walletAddress);
appState = await updateUserLockBalance(appState, smartWalletAddress);

Tương tác với Others Lending pools

Khi chọn bất cứ action nào của Others Lending pools fork Compound

appState = await updateForkCompoundLPState(appState, entity_id);

Khi chọn bất cứ action nào của Others Lending pools fork Aave

appState = await updateForkAaveLPState(appState, entity_id);

Simulate state

Sau khi init state xong. Với mỗi state, các simulate khác nhau

Simulate Utilities actions

Pull token

appState6 = await simulateSendToken(
    appState5,
    tokenAddress,
    from: wallet address
    to: smart wallet address,
    amount: number | string
)

Sendtoken

appState7 = await simulateSendToken(
    appState6,
    tokenAddress,
    from: smart wallet address
    to: main wallet address,
    amount: number | string
)

Wrap

appState8 = await simulateWrap(
    appState7,
    amount: number | string
)

Unwrap

appState9 = await simulateUnwrap(
    appState8,
    amount: number | string
)

Swap

appState10 = await simulateSwap(
    appState9,
    fromToken: token 1 address,
    toToken: token2 address,
    fromAmount: amount of token 1 will swap
    toAmount: amount of token 2 will receive
    fromAddress,
    toAddress
)

Simulate Trava Pools actions

Deposit

appState11 = await SimulationSupply(
    appState10,
    from,
    tokenAddress,
    amount: string
)

Borrow

appState12 = await SimulationBorrow(
    appState11,
    to,
    tokenAddress,
    amount: string
)

Repay

get max amount:

maxAmount = appState.smartWalletState.detailTokenInPool[tokenAddress].dToken.balances
appState13 = await SimulationRepay(
    appState12,
    from,
    tokenAddress,
    amount: string
)

Withdraw

get max amount:

maxAmount = appState.smartWalletState.detailTokenInPool[tokenAddress].tToken.balances
appState14 = await SimulationWithdraw(
    appState13,
    to,
    tokenAddress,
    amount
)

ClaimRewards

get max rewards:

claimableRewards = await calculateMaxRewards(appState);
appState15 = await SimulationClaimReward(
    appState14,
    to,
    MAX_UINT256
)

Convert rewards

get max rTrava cua from address

maxRTrava =
        app.walletState.tokenBalance.get(rTravaAddress.toLowerCase())
        or
        app.smartWalletState.tokenBalance.get(rTravaAddress.toLowerCase())
appState16 = await SimulationConvertReward(
    appState15,
    from,
    to,
    MAX_UINT256
)

Simulate Trava NFT Marketplace / Sell armoury

Buy NFT

appState15 = await simulateTravaNFTBuy(
    appState14,
    tokenId,
    from,
    to
)

Sell NFT

appState16 = await simulateTravaNFTSell(
    appState15,
    tokenId,
    price: numer | String,
    from: String
)

Cancel order

appState17 = await simulateTravaNFTCancelSale(
    appState16,
    to,
    tokenId
)

Simulate Trava NFT Marketplace / Auction

Create Auction

appState = await simulateTravaNFTCreateAuction(
    appState,
    tokenId,
    startingBid,
    duration (ms),
    from
)

Make edit auction price

appState = await simulateTravaNFTEditAuctionPrice(
    appState,
    tokenId,
    startingBid
)

Make bid auction

appState = await simulateTravaNFTMakeBidAuction(
    appState,
    tokenId,
    bidPrice,
    from
)

Make cancel auction

appState = await simulateTravaNFTCancelAuction(
    appState,
    tokenId,
    to
)

Fninalize auction

appState = await simulateTravaNFTFinalizeAuction(
    appState,
    tokenId,
    to
)

Simulate Trava NFT Marketplace / VeTrava

Simulate Create Sale veTrava NFT

appState2 = await simulateNFTVeTravaCreateSale(
    appState,
    idVeTrava,
    fromAddress,
    priceAmount,
    addressPriceToken,
);

Simulate Cancel Sale veTrava NFT

appState3 = await simulateNFTVeTravaCancelSale(
    appState,
    idVeTrava,
    toAddress,
);

Simulate Buy veTrava NFT

appState4 = await simulateNFTVeTravaBuy(
    appState,
    idVeTrava,
    toAddress,
);

Simulate Trava NFT Utilities

Transfer armoury

appState18 = await simulateTravaNFTTransfer(
    appState17,
    from: address sender,
    to: address receiver,
    tokenId: nummber | string
    contract: NFT_CORE address
)

Transfer collection

appState19 = await simulateTravaNFTTransfer(
    appState18,
    from: address sender,
    to: address receiver,
    tokenId: nummber | string
    contract: NFT_COLLECTION address
)

Simulate Tranfer veTrava NFT

appState1 = await simulateNFTVeTravaTransfer(
    appState,
    idVeTrava,
    fromAddress,
    toAddress
);

Simulate Trava NFT Mission

Trava NFT Expedition

Simulate Trava NFT Expedition Deploy

appState = await simulateExpeditionDeploy(
    appState,
    vaultAddress,
    knightId,
    buffWinRateTiket array,
    buffExpTick array,
    _fromAddress (from kinght),
    _fromAddress (from fee),
    _fromAddress (from ticket)
)

Simulate Trava NFT Expedition Abandon

appState = await simulateExpeditionAbandon(
    appState,
    vaultAddress,
    knightId,
    toAddress
)

Simulate Trava NFT Expedition Withdraw

appState = await simulateExpeditionWithdraw(
    appState,
    vaultAddress,
    knightId,
    toAddress
)

Simulate Trava Liquidity Campain

Simulate Trava Liquidity Campain Stake

maxAmount = fromState.getTokenBalanceOf(underlyingTokenAddress)

newAppState = await SimulationJoinLiquidity(
    oldAppState,
    stakedTokenAddress,
    from,
    amount
)

Simulate Trava Liquidity Campain Redeem (Withdraw)

maxAmount = oldAppState.smartWalletState.liquidityCampainState.get(stakedTokenAddress.toLowerCase())!.deposited;
newAppState = await SimulationWithdrawLiquidity(
    oldAppState,
    stakedTokenAddress,
    to,
    amount
)

Simulate Trava Liquidity Campain Claim (Withdraw)

maxAmount = oldAppState.smartWalletState.liquidityCampainState.get(stakedTokenAddress.toLowerCase())!.claimableReward;

newAppState = await SimulationClaimRewardLiquidity(
    oldAppState,
    stakedTokenAddress,
    to,
    maxAmount
)

Simulate Trava Staking

Simulate Trava Staking Stake

maxAmount = fromState.getTokenBalanceOf(underlyingTokenAddress)

newAppState = await simulateStakeStaking(
    oldAppState,
    stakedTokenAddress,
    from,
    amount
)

Simulate Trava Staking Redeem (Withdraw)

maxAmount = oldAppState.smartWalletState.travaLPStakingStateList.get(stakedTokenAddress.toLowerCase())!.deposited;
newAppState = await simulateStakingRedeem(
    oldAppState,
    stakedTokenAddress,
    to,
    amount
)

Simulate Trava Staking Claim (Withdraw)

maxAmount = oldAppState.smartWalletState.travaLPStakingStateList.get(stakedTokenAddress.toLowerCase())!.claimableReward;

newAppState = await simulateStakingClaimRewards(
    oldAppState,
    stakedTokenAddress,
    to,
    maxAmount
)

Simulate Trava Governance State

Simulate Create Lock

newAppState = await simulateTravaGovernanceCreateLock(
    oldAppState,
    tokenId,
    amount,
    from,
    period
)

Simulate Increase Balance

newAppState = await simulateTravaGovernanceIncreaseBalance(
    oldAppState,
    tokenId,
    amount,
    fromAddress,
    smartWalletAddress
)

Simulate Change unlock time

newAppState = await simulateTravaGovernanceChangeUnlockTime(
    oldAppState,
    tokenId,
    newUnlockTime
)

Simulate Compound

newAppState = await simulateTravaGovernanceCompound(
    oldAppState,
    tokenId
)

Simulate Withdraw

newAppState = await simulateTravaGovernanceWithdraw(
    oldAppState,
    tokenId,
    to
)

Simulate Merge

newAppState = await simulateTravaGovernanceMerge(
    oldAppState,
    tokenId1,
    tokenId2,
    from
)

Simulate state

Sau khi init state xong. Với mỗi state, các simulate khác nhau

Simulate Utilities actions

Pull token

appState6 = await simulateSendTokenV2(
    appState5,
    tokenAddress,
    from: wallet address
    to: smart wallet address,
    amount: string,
    contractAddress: address of actions
)

Sendtoken

appState7 = await simulateSendTokenV2(
    appState6,
    tokenAddress,
    from: smart wallet address
    to: main wallet address,
    amount: string,
    contractAddress: address of actions
)

Wrap

appState8 = await simulateWrapV2(
    appState7,
    amount:  string,
    contractAddress: address of actions
)

Unwrap

appState9 = await simulateUnwrapV2(
    appState8,
    amount:  string,
    contractAddress: address of actions
)

VeTravaTransfer

appState1 = await simulateNFTVeTravaTransfer(
    appState,
    idVeTrava,
    fromAddress,
    toAddress
);

Simulate Others Lending Pool

Simulate Supply

  • Compound
appState1 = await SimulationSupplyForkCompoundLP(
    appState,
    from address,
    entity_id,
    tokenAddress,
    amount
);
  • Aave
appState1 = await SimulationSupplyForkAaveLP(
    appState,
    from address,
    entity_id,
    tokenAddress,
    amount
);

Simulate Borrow

  • Compound
appState1 = await SimulationBorrowForkCompoundLP(
    appState,
    to address,
    entity_id,
    tokenAddress,
    amount
);
  • Aave
appState1 = await SimulationBorrowForkAaveLP(
    appState,
    to address,
    entity_id,
    tokenAddress,
    amount
);

Simulate Repay

  • Compound
appState1 = await SimulationRepayForkCompoundLP(
    appState,
    from address,
    entity_id,
    tokenAddress,
    amount
);
  • Aave
appState1 = await SimulationRepayForkAaveLP(
    appState,
    from address,
    entity_id,
    tokenAddress,
    amount
);

Simulate Withdraw

  • Compound
appState1 = await SimulationWithdrawForkCompoundLP(
    appState,
    to address,
    entity_id,
    tokenAddress,
    amount
);
  • Aave
appState1 = await SimulationWithdrawForkAaveLP(
    appState,
    to address,
    entity_id,
    tokenAddress,
    amount
);

Simulate Collateral

  • Compound
inputCollateral {
  tokenAddress: EthAddress,
  enableAsColl: 0|1,
}
inputCollaterals = Array<inputCollateral>
appState = await SimulationCollateral(
    appState,
    smart wallet address,
    entity_id,
    inputCollaterals
    );

Simulate Transfer tToken

appState1 = await SimulationTransferTToken(
    appState,
    fromAddress,
    toAddress,
    _tokenAddress,
    _amount
)

Simulate Transfer Staked Token

appState1 = await simulateTransferStakedToken(
    appState,
    _stakingPool,
    fromAddress,
    toAddress,
    _amount
);

Simulate Tranfer veTrava NFT

appState1 = await simulateNFTVeTravaTransfer(
    appState,
    idVeTrava,
    fromAddress,
    toAddress
);
2.0.54

2 months ago

2.0.53

2 months ago

2.0.51

2 months ago

2.0.52

2 months ago

2.0.49

2 months ago

2.0.50

2 months ago

2.0.48

4 months ago

2.0.46

4 months ago

2.0.47

4 months ago

2.0.45

4 months ago

2.0.44

4 months ago

2.0.42

4 months ago

2.0.43

4 months ago

2.0.41

4 months ago

2.0.39

4 months ago

2.0.40

4 months ago

2.0.37

4 months ago

2.0.38

4 months ago

2.0.36

4 months ago

2.0.35

4 months ago

2.0.33

4 months ago

2.0.34

4 months ago

2.0.32

4 months ago

2.0.31

4 months ago

2.0.30

5 months ago

2.0.28

6 months ago

2.0.29

5 months ago

2.0.26

6 months ago

2.0.27

6 months ago

2.0.24

6 months ago

2.0.25

6 months ago

2.0.22

6 months ago

2.0.23

6 months ago

2.0.20

6 months ago

2.0.21

6 months ago

2.0.3

7 months ago

2.0.2

7 months ago

2.0.5

7 months ago

2.0.4

7 months ago

2.0.7

7 months ago

2.0.6

7 months ago

2.0.9

7 months ago

2.0.8

7 months ago

2.0.1

7 months ago

2.0.15

6 months ago

1.0.80

7 months ago

2.0.16

6 months ago

2.0.13

6 months ago

2.0.14

6 months ago

2.0.11

6 months ago

2.0.12

6 months ago

2.0.10

6 months ago

1.0.81

7 months ago

2.0.19

6 months ago

2.0.17

6 months ago

2.0.18

6 months ago

1.0.79

7 months ago

1.0.78

7 months ago

1.0.77

8 months ago

1.0.76

8 months ago

1.0.75

8 months ago

1.0.74

8 months ago

1.0.73

8 months ago

1.0.72

8 months ago

1.0.71

8 months ago

1.0.70

8 months ago

1.0.69

8 months ago

1.0.68

8 months ago

1.0.67

8 months ago

1.0.66

8 months ago

1.0.65

8 months ago

1.0.64

8 months ago

1.0.63

8 months ago

1.0.62

8 months ago

1.0.61

8 months ago

1.0.60

8 months ago

1.0.59

8 months ago

1.0.58

8 months ago

1.0.57

8 months ago

1.0.56

8 months ago

1.0.55

8 months ago

1.0.54

8 months ago

1.0.53

8 months ago

1.0.52

8 months ago

1.0.51

8 months ago

1.0.50

8 months ago

1.0.49

8 months ago

1.0.48

8 months ago

1.0.47

8 months ago

1.0.46

8 months ago

1.0.45

8 months ago

1.0.44

8 months ago

1.0.43

8 months ago

1.0.42

8 months ago

1.0.41

8 months ago

1.0.40

8 months ago

1.0.39

8 months ago

1.0.38

8 months ago

1.0.37

8 months ago

1.0.36

8 months ago

1.0.35

8 months ago

1.0.34

8 months ago

1.0.32

8 months ago

1.0.31

8 months ago

1.0.30

8 months ago

1.0.29

8 months ago

1.0.28

8 months ago

1.0.27

8 months ago

1.0.26

8 months ago

1.0.25

8 months ago

1.0.24

8 months ago

1.0.23

8 months ago

1.0.22

8 months ago

1.0.21

9 months ago

1.0.20

9 months ago

1.0.19

9 months ago

1.0.18

9 months ago

1.0.17

9 months ago

1.0.16

9 months ago

1.0.15

9 months ago

1.0.14

9 months ago

1.0.13

9 months ago

1.0.12

9 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago