@silo-finance/adapter-common
v0.0.1
Published
Abstract adapter interfaces for Silo Finance SDKs
Readme
@silo-finance/adapter-common
Abstract adapter interfaces for Silo Finance SDKs. This package defines the contract that blockchain adapter implementations must fulfill.
Purpose
This package provides TypeScript interfaces that enable:
- Pluggable architecture: Swap between viem, ethers.js, or custom implementations
- Type safety: Consistent types across all adapters
- Future extensibility: Easy to add new blockchain libraries
Available Adapters
| Package | Status | Description |
|---------|--------|-------------|
| @silo-finance/adapter-viem | Available | Viem implementation |
| @silo-finance/adapter-ethers | Coming soon | Ethers.js implementation |
Installation
pnpm add @silo-finance/adapter-commonNote: Most users should install
@silo-finance/adapter-viemor@silo-finance/silo-sdkdirectly instead of this package.
Interfaces
Core Adapter Interfaces
import type {
ReadAdapter,
WriteAdapter,
} from "@silo-finance/adapter-common";ReadAdapter - Read-only blockchain operations:
readContract()- Read from a contractmulticall()- Batch multiple contract readsgetChainId()- Get current chain IDgetBalance()- Get native token balancegetBlockNumber()- Get current block number
WriteAdapter - Write operations (extends ReadAdapter):
writeContract()- Send a transactiongetAddress()- Get connected wallet addresssignMessage()- Sign a messagewaitForTransaction()- Wait for tx confirmation
Silo-Specific Interfaces
import type {
MarketReadOperations,
PositionReadOperations,
TokenReadOperations,
SiloWriteOperations,
SiloReadAdapter,
SiloWriteAdapter,
} from "@silo-finance/adapter-common";MarketReadOperations:
fetchMarket()- Fetch market datafetchSilo()- Fetch silo datafetchBorrowAPR()/fetchDepositAPR()- Fetch APRsfetchUtilization()- Fetch utilization ratefetchLiquidity()- Fetch available liquidity
PositionReadOperations:
fetchPosition()- Fetch user positionfetchUserLtv()- Fetch user LTVfetchIsSolvent()- Check solvency
TokenReadOperations:
fetchTokenBalance()- Get token balancefetchAllowance()- Get token allowancefetchTokenMetadata()- Get token info
SiloWriteOperations:
deposit()/withdraw()- Deposit/withdraw collateralborrow()/repay()- Borrow/repay debtapprove()- Approve token spending
Combined Interfaces
// Complete read adapter
interface SiloReadAdapter extends
ReadAdapter,
MarketReadOperations,
PositionReadOperations,
TokenReadOperations {
readonly chainId: number;
}
// Full adapter with write capabilities
interface SiloWriteAdapter extends
SiloReadAdapter,
WriteAdapter,
SiloWriteOperations {}Parameter Types
import type {
PositionData,
TokenMetadata,
DepositParams,
WithdrawParams,
BorrowParams,
RepayParams,
ApproveParams,
} from "@silo-finance/adapter-common";Creating a Custom Adapter
To create a custom adapter (e.g., for ethers.js):
import type { SiloWriteAdapter, CreateWriteAdapterFn } from "@silo-finance/adapter-common";
const createEthersAdapter: CreateWriteAdapterFn<EthersConfig> = (config) => {
return {
chainId: config.chainId,
async readContract(params) {
// Implement using ethers.js
},
async writeContract(params) {
// Implement using ethers.js
},
// ... implement all other methods
};
};