Documentation Index
Fetch the complete documentation index at: https://mintlify.com/collinsville22/Sable/llms.txt
Use this file to discover all available pages before exploring further.
Token Addresses
Source: ~/workspace/source/src/lib/constants.ts:3
export const TOKENS = {
WBTC: {
address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",
symbol: "WBTC",
name: "Wrapped BTC",
decimals: 8,
icon: "/tokens/wbtc.svg",
},
ETH: {
address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
symbol: "ETH",
name: "Ether",
decimals: 18,
icon: "/tokens/eth.svg",
},
USDC: {
address: "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8",
symbol: "USDC",
name: "USD Coin",
decimals: 6,
icon: "/tokens/usdc.svg",
},
STRK: {
address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
symbol: "STRK",
name: "Starknet",
decimals: 18,
icon: "/tokens/strk.svg",
},
USDT: {
address: "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8",
symbol: "USDT",
name: "Tether USD",
decimals: 6,
icon: "/tokens/usdt.svg",
},
} as const;
Vault Contracts
Source: ~/workspace/source/src/lib/constants.ts:115
export const SABLE_CONTRACTS = {
SENTINEL: "0x04ec7fdb1679450fb88eae9facc439a46be4ddeba628211e269a7467f6e0971b",
CITADEL: "0x077ad8d0fe4b946cedc02eb8eb61a64e85bcde802a83e879e8c68fed8b9b130e",
TRIDENT: "0x058aadc9db62700de03d89a7c8f2952851d94e75f854cc6a340ef92d00cd3fb8",
DELTA_NEUTRAL: "0x06c8779ee7ed14b35ac5c6eae5dc721cc3e8104a65ffef4b5252babc407a1012",
TURBO: "0x05f3d02005027296ccfb90574544b941d9ddc55c673e6fe0e92cb6f07e68d1f7",
APEX: "0x071eb7fc3a912c0ee85b1dc795e29fd77ff4203a33384a1171dd4fcb7c7b3df9",
DCA: "0x730f5de50171590132ff9238859d7eccbfa8359393f52083b3b88b397955e56",
STABLECOIN_VAULT: "0x070fc554c4a9714646c5f53aea26611a70c529133a34c00f2b8f95fd2cba742d",
CDP: "0x042f0f1cbb5ce44cc411f608d3c8295f3816ef7c3b6764cd6e46463efc7ca499",
} as const;
Vault Descriptions
| Vault | Strategy | Risk Level |
|---|
| Sentinel | Vesu Prime lending | Low (1/5) |
| Citadel | Endur staking | Low-Med (2/5) |
| Trident | Leverage staking loop | Medium (3/5) |
| Delta Neutral | Neutral position via Nostra | Low-Med (2/5) |
| Turbo | Optimized Vesu lending | Medium (3/5) |
| Apex | Multi-protocol split | Med-High (4/5) |
| DCA | Dollar-cost averaging contract | N/A |
| CDP | Collateralized debt positions | N/A |
Vesu Pools
Source: ~/workspace/source/src/lib/constants.ts:41
export const VESU_POOLS = {
RE7_XBTC: {
id: "0x03a8416bf20d036df5b1cf3447630a2e1cb04685f6b0c3a70ed7fb1473548ecf",
name: "Re7 xBTC",
vTokenAddress: "0x0131cc09160f144ec5880a0bc1a0633999030fa6a546388b5d0667cb171a52a0",
vTokenSymbol: "vWBTC-Re7xBTC",
},
PRIME: {
id: "0x0451fe483d5921a2919ddd81d0de6696669bccdacd859f72a4fba7656b97c3b5",
name: "Prime",
vTokenAddress: "0x04ecb0667140b9f45b067d026953ed79f22723f1cfac05a7b26c3ac06c88f56c",
vTokenSymbol: "vWBTC",
},
RE7_USDC_CORE: {
id: "0x03976cac265a12609934089004df458ea29c776d77da423c96dc761d09d24124",
name: "Re7 USDC Core",
},
} as const;
Shielded Pools V4
Source: ~/workspace/source/src/lib/constants.ts:191
Sentinel (BTC Vaults)
export const SHIELDED_POOLS_V4 = {
sentinel_1x: {
pool: "0x002bdb9769851d0307e812351cc1eb31b617951fba786cfd5d58baff36589a33",
verifier: "0x03329c4d5c2e37dfd20d46c3c20be9230b2152c71947ead441c342d989d52ffa",
denomination: BigInt(20_000), // 0.0002 BTC
label: "0.0002 BTC",
vaultId: "sentinel",
vaultAddress: "0x04ec7fdb1679450fb88eae9facc439a46be4ddeba628211e269a7467f6e0971b",
deployBlock: 7298400,
},
sentinel_2x: {
pool: "0x02a94630f46bcf7362c12ed5b0163b4dd7644eb923aaada61ffb858d7912e03d",
verifier: "0x03329c4d5c2e37dfd20d46c3c20be9230b2152c71947ead441c342d989d52ffa",
denomination: BigInt(40_000), // 0.0004 BTC
label: "0.0004 BTC",
vaultId: "sentinel",
vaultAddress: "0x04ec7fdb1679450fb88eae9facc439a46be4ddeba628211e269a7467f6e0971b",
deployBlock: 7298400,
},
sentinel_3x: {
pool: "0x038224d3966b850913cfc4dd610032d8082e14c90fce91819a0fb994b1cc63f3",
verifier: "0x03329c4d5c2e37dfd20d46c3c20be9230b2152c71947ead441c342d989d52ffa",
denomination: BigInt(60_000), // 0.0006 BTC
label: "0.0006 BTC",
vaultId: "sentinel",
vaultAddress: "0x04ec7fdb1679450fb88eae9facc439a46be4ddeba628211e269a7467f6e0971b",
deployBlock: 7298400,
},
sentinel_4x: {
pool: "0x06de0d6c46431628f0cd257aa4384125b2380a7c5362aab2b146283181c2dff3",
verifier: "0x03329c4d5c2e37dfd20d46c3c20be9230b2152c71947ead441c342d989d52ffa",
denomination: BigInt(80_000), // 0.0008 BTC
label: "0.0008 BTC",
vaultId: "sentinel",
vaultAddress: "0x04ec7fdb1679450fb88eae9facc439a46be4ddeba628211e269a7467f6e0971b",
deployBlock: 7298400,
},
} as const;
Delta Neutral (Stablecoin Yield)
Source: ~/workspace/source/src/lib/constants.ts:238
export const SHIELDED_POOLS_V4_DN = {
dn_1x: {
pool: "0x07298d2765e1dc61dae0f5d8c70b86e1857b038ab7a1f7c473111321aaac51aa",
denomination: BigInt(36_000), // 0.00036 BTC
label: "0.00036 BTC",
vaultId: "delta-neutral",
vaultAddress: "0x06c8779ee7ed14b35ac5c6eae5dc721cc3e8104a65ffef4b5252babc407a1012",
},
dn_2x: { denomination: BigInt(72_000) }, // 0.00072 BTC
dn_3x: { denomination: BigInt(108_000) }, // 0.00108 BTC
dn_4x: { denomination: BigInt(144_000) }, // 0.00144 BTC
} as const;
Stablecoin Pools (USDC)
Source: ~/workspace/source/src/lib/constants.ts:339
export const SHIELDED_POOLS_V4_STABLE = {
stable_10: {
pool: "0x04f4af2cf01a1cf28f424ce2ce3d7fed7f11792c88e5ce7a3eedd21cea24a5eb",
denomination: BigInt(10_000_000), // 10 USDC
label: "10 USDC",
vaultId: "stables",
vaultAddress: "0x070fc554c4a9714646c5f53aea26611a70c529133a34c00f2b8f95fd2cba742d",
},
stable_25: { denomination: BigInt(25_000_000) }, // 25 USDC
stable_50: { denomination: BigInt(50_000_000) }, // 50 USDC
stable_100: { denomination: BigInt(100_000_000) }, // 100 USDC
} as const;
Private Swap Pools
Source: ~/workspace/source/src/lib/constants.ts:290
export const SHIELDED_POOLS_V4_SWAP = {
swap_1x: { denomination: BigInt(20_000), vaultId: "swap" }, // 0.0002 BTC
swap_2x: { denomination: BigInt(40_000), vaultId: "swap" }, // 0.0004 BTC
swap_3x: { denomination: BigInt(60_000), vaultId: "swap" }, // 0.0006 BTC
swap_4x: { denomination: BigInt(80_000), vaultId: "swap" }, // 0.0008 BTC
} as const;
Verifiers
Source: ~/workspace/source/src/lib/constants.ts:186
// V4 Groth16 Verifier (all V4 pools use same verifier)
export const GROTH16_VERIFIER_V4 =
"0x03329c4d5c2e37dfd20d46c3c20be9230b2152c71947ead441c342d989d52ffa" as const;
All V4 shielded pools use the same Groth16 verifier contract deployed via Garaga.
Protocol Addresses
Source: ~/workspace/source/src/lib/constants.ts:60
export const NOSTRA = {
WBTC_SUPPLY_TOKEN: "0x0735d0f09a4e8bf8a17005fa35061b5957dcaa56889fc75df9e94530ff6991ea",
IWBTC_C: "0x05b7d301fa769274f20e89222169c0fad4d846c366440afc160aafadd6f88f0c",
DUSDC: "0x063d69ae657bd2f40337c39bf35a870ac27ddf91e6623c2f52529db4c1619a51",
CDP_MANAGER: "0x073f6addc9339de9822cab4dac8c9431779c09077f02ba7bc36904ea342dd9eb",
} as const;
export const PRAGMA_ORACLE =
"0x2a85bd616f912537c50a49a4076db02c00b29b2cdc8a197ce92ed1837fa875b" as const;
export const PROTOCOLS = {
VESU: { name: "Vesu", url: "https://vesu.xyz" },
EKUBO: { name: "Ekubo", url: "https://ekubo.org" },
NOSTRA: { name: "Nostra", url: "https://nostra.finance" },
TROVES: { name: "Troves", url: "https://troves.fi" },
ENDUR: { name: "Endur", url: "https://endur.fi" },
AVNU: {
name: "AVNU",
router: "0x04270219d365d6b017231b52e92b3fb5d7c8378b05e9abc97724537a80e93b0f",
url: "https://avnu.fi",
},
} as const;
DeFiLlama Pool IDs
Source: ~/workspace/source/src/lib/constants.ts:69
export const DEFILLAMA_POOL_IDS = {
EKUBO_WBTC_ETH: "d7fd5fb4-df43-4070-9936-0fd6f4ef838c",
EKUBO_USDC_WBTC: "cbe54b27-0445-421f-836c-8cfe66417839",
EKUBO_LBTC_WBTC: "c081f909-9fd1-4070-930d-ac93fc58d49e",
NOSTRA_WBTC: "5b32abf1-deaf-4c98-9afc-8a1934632ed3",
TROVES_WBTC_ETH: "756f1ae5-40ac-4d1b-b6f0-f1b05214f5c0",
TROVES_XWBTC: "162f89ec-cf47-4ec9-81ee-8a68c3607827",
ENDUR_WBTC: "867e3e6b-4ebb-46fd-92d5-4d4afbf28553",
} as const;
Vault Strategies
Source: ~/workspace/source/src/lib/constants.ts:92
export const VAULT_STRATEGIES = {
LENDING: "lending",
DUAL_LENDING: "dual_lending",
LP_PROVISION: "lp_provision",
DELTA_NEUTRAL: "delta_neutral",
LEVERAGE_LOOP: "leverage_loop",
MULTI_STRATEGY: "multi_strategy",
} as const;
export type VaultStrategy = (typeof VAULT_STRATEGIES)[keyof typeof VAULT_STRATEGIES];
Risk Levels
Source: ~/workspace/source/src/lib/constants.ts:105
export type RiskLevel = 1 | 2 | 3 | 4 | 5;
export const RISK_LABELS: Record<RiskLevel, { label: string; color: string }> = {
1: { label: "Low", color: "text-up" },
2: { label: "Low-Med", color: "text-up" },
3: { label: "Medium", color: "text-caution" },
4: { label: "Med-High", color: "text-btc" },
5: { label: "High", color: "text-down" },
};
Network Configuration
export const STARKNET_CHAIN_ID = "0x534e5f4d41494e" as const;
export const VOYAGER_BASE = "https://voyager.online";
export const STARKSCAN_BASE = "https://starkscan.co";
Usage Examples
Token Addresses
import { TOKENS } from '@/lib/constants';
// Get WBTC address
const wbtcAddr = TOKENS.WBTC.address;
// Format amount
const amount = 100000000; // 1 WBTC
const formatted = (amount / 10 ** TOKENS.WBTC.decimals).toFixed(TOKENS.WBTC.decimals);
Vault Addresses
import { SABLE_CONTRACTS } from '@/lib/constants';
import { useVaultRead } from '@/hooks/use-vault-contract';
const { getTotalAssets } = useVaultRead(SABLE_CONTRACTS.SENTINEL);
const assets = await getTotalAssets();
Shielded Pools
import { SHIELDED_POOLS_V4 } from '@/lib/constants';
const pool = SHIELDED_POOLS_V4.sentinel_1x;
console.log(`Deposit ${pool.label} to ${pool.pool}`);
Block Explorers
import { VOYAGER_BASE } from '@/lib/constants';
const txUrl = `${VOYAGER_BASE}/tx/${txHash}`;
window.open(txUrl, '_blank');