UI Integration
The UI should have the following addresses available to make calls to.
BoringVault
TellerWithMultiAssetSupport
AccountantWithRateProviders
ArcticArchitectureLens
Atomic Queue
Overall Metrics
To get the Total Value Locked call
ArcticArchitectureLens.totalAssets(BoringVault *boringVault*, AccountantWithRateProviders *accountant)*)This will return the ERC20asset, as well as the amount ofassetsin the BoringVault in terms ofasset.To get a users share balance call
ArcticArchitectureLens.balanceOf(*address* *account*, BoringVault *boringVault*)To get a users balance in terms of
assetcall *ArcticArchitectureLens.*balanceOfInAssets(*address* *account*, BoringVault *boringVault*, AccountantWithRateProviders *accountant*)To get a users share unlock time call
ArcticArchitectureLens.userUnlockTime(address user)
deposit Flow
deposit FlowdepositAsset: The asset the user is trying to deposit with.
depositAmount: The amount of depositAsset the user wants to deposit.
The BoringVault must be approved to spend at least
depositAmountofdepositAsset.If not the user should be prompted to approve
The user needs at least
depositAmountofdepositAssetin their wallet.You can call
ArcticArchitectureLens.checkUserDepositto see if a users deposit will succeed, if the function returns true it will succeed, if it returns false, the deposit will revert.This function checks the users balance, allowance, if the Teller is paused, and if
depositAssetis supported.
You can call
ArcticArchitectureLens.previewDepositto see how many shares the user will receive from the deposit.Determine the
minimumMintfor the user deposit. You can use the value from previewDeposit, and lower it by a few bps.Call
Teller.deposit(depositAsset, depositAmount, minimumMint)
depositWithPermit Flow
depositWithPermit FlowdepositAsset: The asset the user is trying to deposit with.
depositAmount: The amount of depositAsset the user wants to deposit.
The BoringVault must be permitted to spend at least
depositAmountofdepositAsset.If not the user should be prompted to sign a permit message
The user needs at least
depositAmountofdepositAssetin their wallet.You can call
ArcticArchitectureLens.checkUserDepositWithPermitto see if a users deposit will succeed, if the function returns true it will succeed, if it returns false, the deposit will revert.This function checks the users balance, if the Teller is paused, and if
depositAssetis supported.
You can call
ArcticArchitectureLens.previewDepositto see how many shares the user will receive from the deposit.Determine the
minimumMintfor the user deposit. You can use the value from previewDeposit, and lower it by a few bps.Call
Teller.depositWithPermit(depositAsset, depositAmount, minimumMint, deadline, v, r, s)
💡 After a deposit using deposit or depositWithPermit, all of the users shares will be locked to their address until ArcticArchitectureLens.userUnlockTime time has passed.
Withdraw Flow
User withdraws are processed using the Atomic Queue.
User should approve the atomic queue to spend their BoringVault share.
The user must have enough BoringVault shares to cover the amount they are trying to withdraw
The UI can call
Accountant.getRateInQuoteSafe(ERC20 want)then apply an appropriate discount to the answer to determine the atomicPrice to use for the request.The UI can call
AtomicQueue.isAtomicRequestValidwhich returns a bool indicating whether or not the request is validThe user should call
AtomicQueue.updateAtomicRequestonce there request is valid
💡 Withdraw requests are usually fulfilled in 1-3 days depending on the discount applied to the users shares.
Last updated