Vault API
import {JsonRpcClient} from '@defichain/jellyfish-api-jsonrpc'
const client = new JsonRpcClient('http://foo:bar@localhost:8554')
// Using client.vault.
const something = await client.vault.method()
createVault
Creates a vault transaction.
interface vault {
createVault (vault: CreateVault, utxos: UTXO[] = []): Promise<string>
}
interface CreateVault {
ownerAddress: string
loanSchemeId?: string
}
interface UTXO {
txid: string
vout: number
}
updateVault
Create update vault transaction.
interface vault {
updateVault (vaultId: string, vault: UpdateVault, utxos: UTXO[] = []): Promise<string>
}
interface UpdateVault {
ownerAddress?: string
loanSchemeId?: string
}
interface UTXO {
txid: string
vout: number
}
getVault
Returns information about vault.
interface vault {
getVault (vaultId: string, verbose: boolean = false): Promise<VaultActive | VaultLiquidation>
}
enum VaultState {
UNKNOWN = 'unknown',
ACTIVE = 'active',
IN_LIQUIDATION = 'inLiquidation',
FROZEN = 'frozen',
MAY_LIQUIDATE = 'mayLiquidate',
}
interface Vault {
vaultId: string
loanSchemeId: string
ownerAddress: string
state: VaultState
}
interface VaultActive extends Vault {
collateralAmounts: string[]
loanAmounts: string[]
interestAmounts: string[]
collateralValue: BigNumber
loanValue: BigNumber
interestValue: BigNumber
collateralRatio: number
informativeRatio: BigNumber
nextCollateralRatio?: BigNumber
interestPerBlockValue?: BigNumber
interestsPerBlock?: string[]
}
interface VaultLiquidation extends Vault {
liquidationHeight: number
liquidationPenalty: number
batchCount: number
batches: VaultLiquidationBatch[]
}
interface VaultLiquidationBatch {
index: number
collaterals: string[]
loan: string
highestBid?: HighestBid
}
interface HighestBid {
amount: string // amount@symbol
owner: string
}
listVaults
List all available vaults.
interface vault {
listVaults (pagination: VaultPagination = {}, options: ListVaultOptions = {}): Promise<Array<Vault | VaultActive | VaultLiquidation>>
}
enum VaultState {
UNKNOWN = 'unknown',
ACTIVE = 'active',
IN_LIQUIDATION = 'inLiquidation',
FROZEN = 'frozen',
MAY_LIQUIDATE = 'mayLiquidate',
}
interface Vault {
vaultId: string
loanSchemeId: string
ownerAddress: string
state: VaultState
}
interface VaultActive extends Vault {
collateralAmounts: string[]
loanAmounts: string[]
interestAmounts: string[]
collateralValue: BigNumber
loanValue: BigNumber
interestValue: BigNumber
collateralRatio: number
informativeRatio: BigNumber
}
interface VaultLiquidation extends Vault {
liquidationHeight: number
liquidationPenalty: number
batchCount: number
batches: VaultLiquidationBatch[]
}
interface VaultLiquidationBatch {
index: number
collaterals: string[]
loan: string
highestBid?: HighestBid
}
interface HighestBid {
amount: string // amount@symbol
owner: string
}
interface ListVaultOptions {
ownerAddress?: string
loanSchemeId?: string
state?: VaultState
verbose?: boolean
}
interface VaultPagination {
start?: string
including_start?: boolean
limit?: number
}
closeVault
Close vault.
interface vault {
closeVault (closeVault: CloseVault, utxos: UTXO[] = []): Promise<string>
}
interface CloseVault {
vaultId: string
to: string
}
depositToVault
Deposit to vault.
interface vault {
depositToVault (depositVault: DepositVault, utxos: UTXO[] = []): Promise<string>
}
interface DepositVault {
vaultId: string
from: string
amount: string // amount@symbol
}
interface UTXO {
txid: string
vout: number
}
withdrawFromVault
Withdraw from vault.
interface vault {
withdrawFromVault (withdrawVault: WithdrawVault, utxos: UTXO[] = []): Promise<string>
}
interface WithdrawVault {
vaultId: string
to: string
amount: string // amount@symbol
}
interface UTXO {
txid: string
vout: number
}
placeAuctionBid
Bid to vault in auction.
interface vault {
placeAuctionBid (placeAuctionBid: PlaceAuctionBid, utxos: UTXO[] = []): Promise<string>
}
interface PlaceAuctionBid {
vaultId: string
index: number
from: string
amount: string // amount@symbol
}
interface UTXO {
txid: string
vout: number
}
listAuctions
List all available auctions.
interface vault {
listAuctions (pagination: AuctionPagination = {}): Promise<VaultLiquidation[]>
}
enum VaultState {
UNKNOWN = 'unknown',
ACTIVE = 'active',
IN_LIQUIDATION = 'inLiquidation',
FROZEN = 'frozen',
MAY_LIQUIDATE = 'mayLiquidate',
}
interface AuctionPagination {
start?: AuctionPaginationStart
including_start?: boolean
limit?: number
}
interface AuctionPaginationStart {
vaultId?: string
height?: number
}
interface Vault {
vaultId: string
loanSchemeId: string
ownerAddress: string
state: VaultState
}
interface VaultLiquidation extends Vault {
liquidationHeight: number
liquidationPenalty: number
batchCount: number
batches: VaultLiquidationBatch[]
}
interface VaultLiquidationBatch {
index: number
collaterals: string[]
loan: string
highestBid?: HighestBid
}
interface HighestBid {
amount: string // amount@symbol
owner: string
}
listAuctionHistory
Returns information about auction history.
interface vault {
listAuctionHistory (owner: string = 'mine', pagination?: ListAuctionHistoryPagination): Promise<ListAuctionHistoryDetail[]>
}
interface ListAuctionHistoryPagination {
maxBlockHeight?: number
vaultId?: string
index?: number
limit?: number
}
interface ListAuctionHistoryDetail {
winner: string
blockHeight: number
blockHash: string
blockTime: number
vaultId: string
batchIndex: number
auctionBid: string
auctionWon: string[]
}
estimateCollateral
Returns amount of collateral tokens needed to take an amount of loan tokens for a target collateral ratio.
interface vault {
estimateCollateral (loanAmounts: string[], targetRatio: number, tokenSplit: TokenPercentageSplit = { DFI: 1 }): Promise<string[]> // Returns array of token@amount`
}
interface TokenPercentageSplit {
[token: string]: number // Token: split
}
estimateLoan
Returns amount of loan tokens a vault can take depending on a target collateral ratio.
interface vault {
estimateLoan (vaultId: string, tokenSplit: TokenPercentageSplit, targetRatio?: number): Promise<string[]> // Returns array of token@amount`
}
interface TokenPercentageSplit {
[token: string]: number // Token: split
}
estimateVault
Returns estimated vault for given collateral and loan amounts.
interface vault {
estimateVault (collateralAmounts: string[], loanAmounts: string[]): Promise<VaultEstimation>
}
interface VaultEstimation {
collateralValue: BigNumber // n.nnnnnnnn (amount) The total collateral value in USD
loanValue: BigNumber // n.nnnnnnnn (amount) The total loan value in USD
informativeRatio: BigNumber // n.nnnnnnnn (amount) Informative ratio with 8 digit precision
collateralRatio: number // n (uint) Ratio as unsigned int
}