Rho Protocol SDK
npm install @rholabs/rho-sdk``shell`
npm install @rholabs/rho-sdk
Create Rho SDK with testnet configuration:
`shell
import RhoSDK from '@rholabs/rho-sdk';
const rhoSDK = new RhoSDK({ network: 'testnet' });
`
RhoSDKParams: Object (optional)
`typescript
export type RhoSDKNetwork = 'mainnet' | 'testnet' | 'custom'
export interface RhoSDKParams {
network?: RhoSDKNetwork
routerAddress?: string
viewAddress?: string
quoterAddress?: string
rpcUrl?: string
oracleServiceUrl?: string
privateKey?: string
provider?: JsonRpcProvider | BrowserProvider
signer?: JsonRpcSigner
}
`
`shell`
getActiveMarketIds(offset, limit)
Get active market ids
Parameters
1. offset - Number (optional)limit
2. - Number (optional)
Returns
String[]
---
`shell`
getActiveMarkets({ oraclePackages, offset, limit })
Get active markets
Parameters
1. oraclePackages - OraclePackages[] (optional)offset
2. - Number (optional)limit
3. - Number (optional)
Returns
MarketInfo[]
---
`shell`
getPortfolio({ userAddress, oraclePackages, offset, limit })
Get user portfolio
Parameters
1. userAddress - StringoraclePackages
2. - OraclePackages[] (optional)offset
3. - Number (optional)limit
4. - Number (optional)
Returns
MarketPortfolio[]
---
`shell`
getTradeQuote({ marketId, futureId, notional, userAddress, oraclePackages? })
Get trade quote
Parameters
1. marketId - StringfutureId
2. - Stringnotional
3. - BigIntuserAddress
4. - StringoraclePackages
5. - OraclePackages[] (optional)
Returns
TradeQuote
---
`shell`
getLiquidityProvisionQuote({ marketId, futureId, notional, operation, lowerBound, upperBound, userAddress, oraclePackages? })
Get liquidity provision quote
Parameters
1. marketId - StringfutureId
2. - Stringnotional
3. - BigIntoperation
4. - LiquidityOperationlowerBound
5. - StringupperBound
6. - StringuserAddress
7. - StringoraclePackages
8. - OraclePackages[] (optional)
Returns
LiquidityQuote
---
`shell`
executeTrade({ marketId, futureId, notional, riskDirection, futureRateLimit, collateral, deadlineTimestamp, settleMaturedPositions?, oraclePackages? })
Execute trade
Parameters
1. marketId - StringfutureId
2. - Stringnotional
3. - BigIntriskDirection
4. - RiskDirectionfutureRateLimit
5. - BigIntcollateral
6. - BigIntdeadline
7. - Number (optional, Date.now() + 5 _ 60 _ 1000)settleMaturedPositions
8. - Boolean (optional, true)oraclePackages
9. - OraclePackages[] (optional)
Returns
TransactionReceipt
---
`shell`
deposit({ marketId, recipientAddress, amount, settleMaturedPositions?, oraclePackages? })
Deposit
Parameters
1. marketId - StringrecipientAddress
2. - Stringamount
3. - BigIntsettleMaturedPositions
4. - Boolean (optional)oraclePackages
5. - OraclePackages[] (optional)
Returns
TransactionReceipt
---
`shell`
withdraw({ marketId, amount, settleMaturedPositions?, oraclePackages? })
Withdraw
Parameters
1. marketId - Stringamount
2. - BigIntsettleMaturedPositions
3. - Boolean (optional, true)oraclePackages
4. - OraclePackages[] (optional)
Returns
TransactionReceipt
---
`shell`
provideLiquidity({ marketId, futureId, notional, collateral, lowerBound, upperBound, deadlineTimestamp?, settleMaturedPositions?, oraclePackages? })
Provide liquidity
Parameters
1. marketId - StringfutureId
2. - Stringnotional
3. - BigIntcollateral
4. - BigIntlowerBound
5. - StringupperBound
6. - Stringdeadline
7. - Number (optional, Date.now() + 5 _ 60 _ 1000)settleMaturedPositions
8. - Boolean (optional, true)oraclePackages
9. - OraclePackages[] (optional)
Returns
TransactionReceipt
---
`shell`
removeLiquidity({ marketId, futureId, notional, collateral, lowerBound, upperBound, deadlineTimestamp?, settleMaturedPositions?, oraclePackages? })
Remove liquidity
Parameters
1. marketId - StringfutureId
2. - Stringnotional
3. - BigIntcollateral
4. - BigIntlowerBound
5. - StringupperBound
6. - Stringdeadline
7. - NumbersettleMaturedPositions
8. - Boolean (optional, Date.now() + 5 _ 60 _ 1000)oraclePackages
9. - OraclePackages[] (optional)
Returns
TransactionReceipt
---
`shell
import RhoSDK from '@rholabs/rho-sdk';
const rhoSDK = new RhoSDK({ network: 'testnet' })
`
`shell
import RhoSDK from '@rholabs/rho-sdk';
const rhoSDK = new RhoSDK({
network: 'testnet',
privateKey: '
})
`
`
if (window.ethereum) {
const provider = new ethers.BrowserProvider(window.ethereum)
await provider.send("eth_requestAccounts", [])
const signer = await provider.getSigner()
const sdk = new RhoSDK({ network: 'testnet', signer })
const markets = await sdk.getActiveMarkets()
}
`
Create .env file:
``
TEST_PRIVATE_KEY=12345
and run the tests:
``
yarn test
``
npm login
1. Bump version in package.json
2. Build package
``
yarn build
3. Publish
```
npm publish --access public