mars-interface/src/functions/queries/getRedbankQuery.ts
Linkie Link 5d7f86662a
v1.2.0
2023-02-07 17:52:13 +01:00

69 lines
1.9 KiB
TypeScript

import {
getBalanceQuery,
getContractQuery,
getIncentiveQuery,
getMarketQuery,
getUserCollateralQuery,
getUserIncentivesQuery,
} from '.'
export const REDBANK_WASM_KEY = 'rbwasmkey'
export const USER_COLLATERAL_WASM_KEY = 'ucwasmkey'
export const getRedbankQuery = (
address: string,
redBankContractAddress: string,
incentivesContractAddress: string,
whitelistedAssets?: Asset[],
) => {
const wasmQueries = whitelistedAssets?.map((asset: Asset) => {
let query = ''
const denom = asset.denom
const symbol = asset.symbol
const contract_addr = asset.contract_addr
if (!denom) return query
// Load cw 20 balance
if (contract_addr) {
query = getContractQuery(symbol, contract_addr, getBalanceQuery(redBankContractAddress || ''))
}
// Load market info
const marketQuery = getMarketQuery(denom)
const marketKey = `${symbol}Market`
query = query + getContractQuery(marketKey, redBankContractAddress || '', marketQuery)
const incentiveKey = `${symbol}MarketIncentive`
query =
query +
getContractQuery(
incentiveKey,
incentivesContractAddress || '',
getIncentiveQuery(asset.denom || ''),
)
return query
})
return `query RedbankQuery {
${REDBANK_WASM_KEY}: wasm {
${wasmQueries}
${
address &&
getContractQuery(
'collateral',
redBankContractAddress || '',
getUserCollateralQuery(address),
)
}
${
address &&
getContractQuery(
'unclaimedRewards',
incentivesContractAddress || '',
getUserIncentivesQuery(address),
)
}
}
}`
}