SDK Reference
Full API reference for @layercover/sdk
Complete API documentation for the @layercover/sdk package.
BuyCoverModal {#buycovermodal}
For full control over modal visibility with your own trigger UI:
import { useState } from 'react'; import { BuyCoverModal } from '@layercover/sdk/react'; import { ViemAdapter } from '@layercover/sdk'; import { useWalletClient } from 'wagmi'; function MyPage() { const [isOpen, setIsOpen] = useState(false); const { data: walletClient } = useWalletClient(); const signer = walletClient ? ViemAdapter.fromWalletClient(walletClient) : undefined; return ( <> <button onClick={() => setIsOpen(true)}>Buy Cover</button> <BuyCoverModal open={isOpen} onClose={() => setIsOpen(false)} signer={signer} poolId={1} deployment="avalanche_fuji_usdc" onSuccess={() => { setIsOpen(false); refetchPositions(); }} /> </> ); }
| Prop | Type | Required | Description |
|---|---|---|---|
open | boolean | ✅ | Controls modal visibility |
onClose | () => void | ✅ | Called when modal is dismissed |
signer | Signer | ✅ | ethers v6 signer |
poolId | number | ✅ | Target pool ID |
availableBalance | number | User token balance (display only) | |
onSuccess | () => void | Callback on successful purchase | |
referralCode | string | Referral code as bytes32 hex (0x + 64 hex chars) | |
theme | Theme | Custom theme | |
apiBaseUrl | string | Override API base URL | |
deployment | string | Deployment identifier such as avalanche_fuji_usdc |
Headless SDK {#headless}
For complete control without UI components:
import { LayerCoverSDK } from '@layercover/sdk'; const sdk = await LayerCoverSDK.create(signer, { apiBaseUrl: 'https://app.layercover.com', deployment: 'base_sepolia_usdc', chainId: 84532, });
Using wagmi/viem:
import { LayerCoverSDK, ViemAdapter } from '@layercover/sdk'; const signer = ViemAdapter.fromWalletClient(walletClient); const sdk = await LayerCoverSDK.create(signer);
Fetching Quotes
const quotes = await sdk.getActiveQuotes(poolId); const best = quotes[0] ?? null;
Purchasing Coverage
import { encodeBytes32String, parseUnits } from 'ethers'; const amount = parseUnits('1000', 6); const referralCode = encodeBytes32String('YOUR_CODE'); const result = await sdk.purchase(poolId, amount, 4, undefined, referralCode); console.log(result.txHash, result.policyId);
useLayerCover Hook
React hook for pool discovery, quotes, and purchases:
import { useLayerCover } from '@layercover/sdk/react'; function CoveragePanel({ signer, poolId }) { const { quotes, bestRate, purchase, loading, error, } = useLayerCover({ signer, poolId, apiBaseUrl: 'https://app.layercover.com', deployment: 'avalanche_fuji_usdc', }); const handlePurchase = async () => { const result = await purchase('1000', 4); if (result) console.log(`Policy: ${result.policyId}`); }; if (loading) return <div>Loading quotes...</div>; if (error) return <div>Error: {error}</div>; return ( <div> <p>Best rate: {bestRate ?? 'N/A'} bps</p> <button onClick={handlePurchase}>Purchase</button> <p>Quotes: {quotes.length}</p> </div> ); }
| Return Value | Type | Description |
|---|---|---|
quotes | FixedRateQuote[] | Active quotes for the selected pool |
bestRate | number | null | Lowest rate in bps |
purchase | (amount, weeks) => Promise<PurchaseResult | null> | Execute a purchase |
loading | boolean | True while loading |
error | string | Human-readable error string |
Contract Addresses
Fetch dynamic addresses/config from API:
const res = await fetch('https://app.layercover.com/api/config'); const config = await res.json(); console.log(config.contracts?.policyManager); console.log(config.contracts?.intentMatcher ?? config.contracts?.intentOrderBook); console.log(config.chainId, config.deployment);
Or see Contract Addresses for a static reference.
Need Help?
- Discord: discord.gg/layercover
- Contract Interfaces: Smart Contracts Reference