@rholabs/rho-sdk
Version:
Rho Protocol SDK
112 lines (90 loc) • 2.97 kB
text/typescript
import { BrowserProvider, JsonRpcSigner, JsonRpcProvider } from 'ethers'
import { LiquidityOperation, OraclePackage, RiskDirection } from './typings'
export type RhoSDKNetwork = 'mainnet' | 'testnet' | 'devnet' | 'custom'
export interface RhoSDKParams {
network?: RhoSDKNetwork
routerAddress?: string
viewAddress?: string
quoterAddress?: string
rpcUrl?: string
oracleServiceUrl?: string | string[]
privateKey?: string
provider?: JsonRpcProvider | BrowserProvider
signer?: JsonRpcSigner
}
export interface RhoSDKConfig extends RhoSDKParams {
routerAddress: string
viewAddress: string
quoterAddress: string
rpcUrl: string
oracleServiceUrl: string | string[]
}
export interface OraclePackagesParams {
oraclePackages?: OraclePackage[]
}
export interface PaginationParams {
offset?: number
limit?: number
}
export interface UserPaginationParams extends PaginationParams {
userAddress: string
}
export interface UserOracleParams extends OraclePackagesParams {
userAddress: string
}
export interface UserOraclePaginationParams extends UserOracleParams, PaginationParams {}
export interface OraclePaginationParams extends OraclePackagesParams, PaginationParams {}
export interface MarketOracleParams extends OraclePackagesParams {
marketId: string
}
export interface MarketUserOracleParams extends UserOracleParams, MarketOracleParams {}
export interface MarketFutureOracleParams extends OraclePackagesParams {
marketId: string
futureId: string
}
export interface MarketFutureOraclePaginationParams extends MarketFutureOracleParams, PaginationParams {}
export interface FutureMarketUserOracleParams extends MarketUserOracleParams {
futureId: string
}
export interface TradeQuoteParams extends FutureMarketUserOracleParams {
notional: bigint
}
export interface LiquidityPositionQuoteParams extends TradeQuoteParams {
operation: LiquidityOperation
lowerBound: string
upperBound: string
}
export interface LiquidatePositionParams extends MarketUserOracleParams {
futureIds: string[]
positionsPercentage: string[]
settleMaturedPositions?: boolean
}
export interface ExecuteTradeParams extends MarketFutureOracleParams {
riskDirection: RiskDirection
notional: bigint
futureRateLimit: bigint
depositAmount: bigint
deadline?: number
settleMaturedPositions?: boolean
}
export interface DepositParams extends MarketUserOracleParams {
amount: bigint
settleMaturedPositions?: boolean
}
export interface WithdrawParams extends MarketOracleParams {
amount: bigint
unwrapNativeToken?: boolean
settleMaturedPositions?: boolean
}
export interface LiquidityOperationParams extends MarketFutureOracleParams {
notional: bigint
collateral: string
lowerBound: string
upperBound: string
deadline?: number
settleMaturedPositions?: boolean
}
export interface TransferPositionsOwnershipParams extends MarketUserOracleParams {
depositAmount: bigint
settleMaturedPositions?: boolean
}