@indigo-labs/indigo-sdk
Version:
Indigo SDK for interacting with Indigo endpoints via lucid-evolution
140 lines (101 loc) • 7.55 kB
Markdown
# Indigo SDK
** Not ready for production yet **
`indigo-sdk` is a TypeScript SDK designed to interact with Indigo endpoints for managing CDPs (Collateralized Debt Positions), Staking Positions, and Stability Pool Accounts by integrating the [lucid-evolution](https://github.com/Anastasia-Labs/lucid-evolution) library.
## Installation
```bash
npm install @indigo-labs/indigo-sdk
```
## Development
### Prerequisites
- Node.js (version specified in `.nvmrc`)
- pnpm package manager
### Setup
1. Clone this repository
2. Install dependencies: `pnpm install`
3. Build the project: `pnpm run build`
### Available Scripts
- `pnpm run build` - Build the project using tsup
- `pnpm run lint` - Run ESLint to check code quality
- `pnpm run format` - Format code using Prettier
- `pnpm run format:check` - Check if code is properly formatted
- `pnpm run test` - Run tests using Vitest
### Code Quality
This project uses:
- **ESLint** for code linting and quality checks
- **Prettier** for code formatting
- **TypeScript** for type safety
### Running Tests
There are currently a few unit tests available for datums, hash checks, and interest calculations. Additionally, acceptance tests have been published for CDPs, Staking Positions, and Stability Pool accounts. These tests initialize the Indigo Protocol and positively test that the transaction building is working in an emulated Cardano Blockchain.
Instructions:
1. Clone this repository
2. Run `pnpm install`
3. Run `pnpm run test`
## Transaction endpoints
The SDK exposes **transaction builders** (mostly async functions that return a Lucid `TxBuilder`, or attach to an existing builder). They are grouped below by on-chain contract module under `src/contracts/`.
### CDP (`cdp`)
| Function | Summary |
| -------------- | -------------------------------------------------------------------------------- |
| `openCdp` | Open a new CDP: deposit collateral, mint iAsset. |
| `depositCdp` | Add collateral to an existing CDP. |
| `withdrawCdp` | Withdraw collateral from an existing CDP |
| `mintCdp` | Mint additional iAsset debt with an existing CDP. |
| `burnCdp` | Burn iAsset to pay down existing CDP's debt. |
| `closeCdp` | Close a CDP, burn remaining debt and withdraw collateral. |
| `redeemCdp` | Redeem iAsset for collateral (burning CDP debt and withdrawing collateral). |
| `freezeCdp` | Freeze a CDP marking it for liquidation. |
| `liquidateCdp` | Liquidate a frozen CDP via the stability pool: absorb debt, move collateral. |
| `mergeCdps` | Merge several frozen CDPs for the same iAsset into a single combined frozen CDP. |
### Collector (`collector`)
| Function | Summary |
| ---------------- | ----------------------------------------------------------- |
| `collectorFeeTx` | Attach a collector fee payment to an in-flight transaction. |
### Governance (`gov`)
| Function | Summary |
| -------------------- | ------------------------------------------ |
| `createProposal` | Create a governance proposal. |
| `createShardsChunks` | Create poll shards for voting. |
| `vote` | Vote on a poll shard. |
| `mergeShards` | Merge poll shards to a poll manager. |
| `endProposal` | End the poll and prepare it for execution. |
| `executeProposal` | Execute a passed proposal. |
### Stability pool (`stability-pool`)
| Function | Summary |
| ---------------------------- | ----------------------------------------------------- |
| `requestSpAccountCreation` | Create request for Stability pool account creation. |
| `requestSpAccountAdjustment` | Create request for Stability pool account adjustment. |
| `requestSpAccountClosure` | Create request for Stability pool account closure. |
| `processSpRequest` | Process a request against a Stability pool. |
| `createE2s2sSnapshots` | Record new epoch–scale–sum snapshot. |
### Staking (`staking`)
| Function | Summary |
| ----------------------- | -------------------------------------------------------- |
| `openStakingPosition` | Create INDY staking position. |
| `adjustStakingPosition` | Adjust the stake in your INDY staking position. |
| `closeStakingPosition` | Close your staking position and withdraw your stake. |
| `distributeAda` | Distribute ADA from collector to INDY stakers as reward. |
### Interest oracle (`interest-oracle`)
| Function | Summary |
| --------------------- | -------------------------------------------------------- |
| `startInterestOracle` | Bootstrap an interest oracle UTxO. |
| `feedInterestOracle` | Update the oracle’s interest rate and last-updated time. |
### Interest collection (`interest-collection`)
| Function | Summary |
| ---------------------- | ------------------------------------------------------------------------------------------- |
| `batchCollectInterest` | Settle and collect interest for multiple CDPs in a single Tx. |
| `distributeInterest` | Distribute funds held by interest collector UTxOs according to the interest admin multisig. |
| `updatePermissions` | Update interest admin permissions. |
### Treasury (`treasury`)
| Function | Summary |
| --------------------------- | ---------------------------------------------------------------------------- |
| `treasuryFeeTx` | Attach a treasury fee payment to an in-flight transaction. |
| `treasuryMerge` | Merge multiple treasury UTxOs into one. |
| `treasurySplit` | Split one treasury UTxO into separate outputs per asset. |
| `treasuryPrepareWithdrawal` | Prepare treasury UTXO tied to a proposal execution and requested withdrawal. |
### ROB — Indigo order book (`rob`)
| Function | Summary |
| ----------- | ------------------------------------------------------------------------------------- |
| `openRob` | Create a buy-iAsset or sell-iAsset order. |
| `cancelRob` | Cancel an open order and recover the deposit. |
| `redeemRob` | Fill market order using current oracle price. |
| `adjustRob` | Adjust deposit on an order, update limit price and claim proceeds from order filling. |
| `claimRob` | Claim proceeds from a filled or partially filled order. |