samo-bas-ran
Version:
Rango Exchange Types
103 lines (97 loc) • 3.4 kB
text/typescript
import { SwapperMeta, Token } from './meta'
import {
Asset,
Amount,
SwapperType,
ExpenseType,
AmountRestrictionType,
AssetWithTicker,
} from '../shared'
export {
Asset,
Amount,
SwapperType,
ExpenseType,
AmountRestrictionType,
AssetWithTicker,
}
/**
* A fee unit, including the type of asset and the amount of fee
*
* @property {string} name - A display name for this fee, example: Network Fee
* @property {Token} token - Underlying token for paying fee, example: BNB for BSC blockchain
* @property {ExpenseType} expenseType - Type of the fee, example: FROM_SOURCE_WALLET
* @property {string} amount - The human readable amount of fee, example: 0.004
*
*/
export type SwapFee = {
name: string
token: Token
expenseType: ExpenseType
amount: string
}
/**
* A quote path from asset x (from) to asset y (to)
*
* @property {Token} from - The source asset
* @property {Token} to - The destination asset
* @property {SwapperMeta} swapper - Swapper for this path
* @property {SwapperType} swapperType - Type of swapper
* @property {string} expectedOutput - Expected output
* @property {number} estimatedTimeInSeconds - Expected duration
*
*/
export type QuotePath = {
from: Token
to: Token
swapper: SwapperMeta
swapperType: SwapperType
expectedOutput: string
estimatedTimeInSeconds: number
}
/**
* Limitations on input amount for requested route
*
* @property {string | null} min - Limitation on minimum input amount for this route
* @property {string | null} max - Limitation on maximum input amount for this route
* @property {AmountRestrictionType} type - type of limitation
*
*/
export type AmountRestriction = {
min: string | null
max: string | null
type: AmountRestrictionType
}
/**
* A step of a multi-step swap route
*
* @property {Token} from - Source token
* @property {Token} to - Destination token
* @property {string} outputAmount - The estimation of Rango from output amount for Y
* @property {string} outputAmountMin - The estimation of Rango from output amount for Y
* @property {number | null} outputAmountUsd - The estimation of Rango from output usd value for Y
* @property {SwapperMeta} swapper - Swapper suggested for this path
* @property {QuotePath[] | null} path - The internal routing of this step showing how the initial swap request will
* be split and executed. This can be used for previewing purpose to give the user a sense of what's going to happen.
* Null indicates that there is no internal mechanism and swapping is simple and straight-forward.
* @property {SwapFee[]} fee - List of fees that are taken from user in this step
* @property {number | null} feeUsd - Amount of fee in usd
* @property {AmountRestriction | null} amountRestriction - restrictions on input amount. This field is informational
* and there is no need to apply it in client-side
* @property {number} estimatedTimeInSeconds - The estimated time (in seconds) that this step might take, beware that
* this number is just an estimation and should be used only for user preview, example: 15
*
*/
export type QuoteSimulationResult = {
from: Token
to: Token
outputAmount: string
outputAmountMin: string
outputAmountUsd: number | null
swapper: SwapperMeta
path: QuotePath[] | null
fee: SwapFee[]
feeUsd: number | null
amountRestriction: AmountRestriction | null
estimatedTimeInSeconds: number
}