Skip to main content

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

VaultStrategyRisk Level
SentinelVesu Prime lendingLow (1/5)
CitadelEndur stakingLow-Med (2/5)
TridentLeverage staking loopMedium (3/5)
Delta NeutralNeutral position via NostraLow-Med (2/5)
TurboOptimized Vesu lendingMedium (3/5)
ApexMulti-protocol splitMed-High (4/5)
DCADollar-cost averaging contractN/A
CDPCollateralized debt positionsN/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');

Build docs developers (and LLMs) love