@indigo-labs/indigo-sdk
Version:
Indigo SDK for interacting with Indigo endpoints via lucid-evolution
51 lines (46 loc) • 4.05 kB
text/typescript
import { InterestOracleContract } from '../src/contracts/interest-oracle';
import { CDPContract, CDPDatum, PriceOracleContract } from '../src/index';
describe('Datum checks', () => {
it('Price Oracle', () => {
expect(PriceOracleContract.decodePriceOracleDatum('d8799fd8799f1a0013c347ff1b00000194d68e13d8ff')).toEqual({ price: 1295175n, expiration: 1738766423000n });
expect(PriceOracleContract.encodePriceOracleDatum({ price: 1295175n, expiration: 1738766423000n })).toEqual('d8799fd8799f1a0013c347ff1b00000194d68e13d8ff');
});
it('Interest Oracle', () => {
expect(InterestOracleContract.decodeInterestOracleDatum('d8799f1b0180e51d1ae19514d8799f1a00030d40ff1b00000194ce33c598ff')).toEqual({ unitaryInterest: 108338304224695572n, interestRate: 200000n, lastUpdated: 1738626287000n });
expect(InterestOracleContract.encodeInterestOracleDatum({ unitaryInterest: 108338304224695572n, interestRate: 200000n, lastUpdated: 1738626287000n })).toEqual('d8799f1b0180e51d1ae19514d8799f1a00030d40ff1b00000194ce33c598ff');
});
it('CDP', () => {
// Active CDP
const activeCDPDatum = 'd8799fd8799fd8799f581c98e30e1c6dbb727dc98bdcb48b99b313c97fabfb537ff4b29a94ed1cff44695553441b00000004d9b0a47ed8799f1b00000194d5ebec201b03022de04fddf5f9ffffff';
const activeCDPObject: CDPDatum = { type: 'CDP', owner: '98e30e1c6dbb727dc98bdcb48b99b313c97fabfb537ff4b29a94ed1c', asset: 'iUSD', mintedAmount: 20832101502n, fees: { type: 'ActiveCDPInterestTracking', last_settled: 1738755796000n, unitary_interest_snapshot: 216786173503075833n } };
expect(CDPContract.decodeCdpDatum(activeCDPDatum)).toEqual(activeCDPObject);
expect(CDPContract.encodeCdpDatum(activeCDPObject)).toEqual(activeCDPDatum);
// Frozen CDP
const frozenCDPDatum = 'd8799fd8799fd87a8044695553441a0050924ed87a9f1a0002765a1a0003ca56ffffff';
const frozenCDPObject: CDPDatum = { type: 'CDP', owner: undefined, asset: 'iUSD', mintedAmount: 5280334n, fees: { type: 'FrozenCDPAccumulatedFees', lovelaces_treasury: 161370n, lovelaces_indy_stakers: 248406n } };
expect(CDPContract.decodeCdpDatum(frozenCDPDatum)).toEqual(frozenCDPObject);
expect(CDPContract.encodeCdpDatum(frozenCDPObject)).toEqual(frozenCDPDatum);
});
it('iAsset', () => {
const assetDatum = 'd87a9fd8799f4469455448d87a9fd8799fd8799f581c6c9497ffd7e8baf86c3c0d6fcd43c524daa49ad5fceba26d715468e952694554483230323231323139313931333032ffffffd8799f581c7b75e317505dddce858ae7bf200656a967c7544e55efa5d18ef302494d694554485f494e544552455354ffd8799f1a08f0d180ffd8799f1a06dac2c0ffd8799f1a068e7780ffd8799f1a000186a0ffd8799f1a001e8480ffd8799f19c350ffd8799f1a000f4240ffd8799f1a000f4240ffd8799f1a01c9c380ffd87980d8799f4469534f4cffffff';;
const assetObject: CDPDatum = {
type: 'IAsset',
name: 'iETH',
price: [{ unCurrencySymbol: '6c9497ffd7e8baf86c3c0d6fcd43c524daa49ad5fceba26d715468e9'}, {unTokenName: 'iETH20221219191302'}],
interestOracle: [{ unCurrencySymbol: '7b75e317505dddce858ae7bf200656a967c7544e55efa5d18ef30249'}, {unTokenName: 'iETH_INTEREST'}],
redemptionRatioPercentage: {getOnChainInt: 150000000n},
maintenanceRatioPercentage: {getOnChainInt: 115000000n},
liquidationRatioPercentage: {getOnChainInt: 110000000n},
debtMintingFeePercentage: {getOnChainInt: 100000n},
liquidationProcessingFeePercentage: {getOnChainInt: 2000000n},
stabilityPoolWithdrawalFeePercentage: {getOnChainInt: 50000n},
redemptionReimbursementPercentage: {getOnChainInt: 1000000n},
redemptionProcessingFeePercentage: {getOnChainInt: 1000000n},
interestCollectorPortionPercentage: {getOnChainInt: 30000000n},
firstAsset: false,
nextAsset: 'iSOL',
};
expect(CDPContract.decodeCdpDatum(assetDatum)).toEqual(assetObject);
expect(CDPContract.encodeCdpDatum(assetObject)).toEqual(assetDatum);
});
});