{"_id":"@hubra-labs/rasol-max","_rev":"37-db948b0e56269103ad627474b2eeefbe","name":"@hubra-labs/rasol-max","dist-tags":{"latest":"0.6.0"},"versions":{"0.5.7":{"name":"@hubra-labs/rasol-max","version":"0.5.7","keywords":["solana","raSOL","raSOL max","leveraged staking","voltr","save finance","sanctum","hubra"],"license":"Apache-2.0","_id":"@hubra-labs/rasol-max@0.5.7","maintainers":[{"name":"amir_ac","email":"hello@hubra.app"}],"homepage":"https://github.com/Hubra-labs/rasol-max-adapter#readme","bugs":{"url":"https://github.com/Hubra-labs/rasol-max-adapter/issues"},"dist":{"shasum":"abf3f270399cb5a3f8247a9d73cbd495c6bf6e4d","tarball":"https://registry.npmjs.org/@hubra-labs/rasol-max/-/rasol-max-0.5.7.tgz","fileCount":84,"integrity":"sha512-4RIcbXWykTD+iLGGGIGLttdFk2ANXOEI2DnyNh10FsFBGh8XaDIxCO0n/+pKgHTxgOnR7sT44WnJX+VRsDACBg==","signatures":[{"sig":"MEUCIQCpvfv8U13bPRWgdAbFKOoxeNOCIw7sFgOZWy/iPxzciAIgANKIYtpCtNgSU7d+0QtC0axpe9LMbYRvjBR2LDfuMQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252667},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1da89773fad25bdf767cdb473e01170ba85f9403","scripts":{"test":"node --test --import tsx tests/*.test.ts","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"amir_ac","email":"hello@hubra.app"},"repository":{"url":"git+https://github.com/Hubra-labs/rasol-max-adapter.git","type":"git"},"_npmVersion":"11.10.1","description":"TypeScript SDK for raSOL max — a leveraged liquid-staking strategy on Solana mainnet. Read strategy metrics, build deposit + withdraw transactions.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"@sanctumso/inf1":"^0.0.2-dev-4","@sanctumso/sanctum-router":"^0.0.1-dev-9","@solana-program/compute-budget":"^0.15.0","@solana-program/address-lookup-table":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","typescript":"^5.4.0","@solana/kit":"^6.9.0","@types/node":"^20.11.0","@voltr/vault-sdk":"^2.1.0","@solana-program/token":"^0.13.0"},"peerDependencies":{"@solana/kit":"^6.9.0","@voltr/vault-sdk":"^2.1.0","@solana-program/token":"^0.13.0"},"_npmOperationalInternal":{"tmp":"tmp/rasol-max_0.5.7_1782591232332_0.10141442794104738","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"@hubra-labs/rasol-max","version":"0.5.8","keywords":["solana","raSOL","raSOL max","leveraged staking","voltr","save finance","sanctum","hubra"],"license":"Apache-2.0","_id":"@hubra-labs/rasol-max@0.5.8","maintainers":[{"name":"amir_ac","email":"hello@hubra.app"}],"homepage":"https://github.com/Hubra-labs/rasol-max-adapter#readme","bugs":{"url":"https://github.com/Hubra-labs/rasol-max-adapter/issues"},"dist":{"shasum":"ca4f46a7a74022ce2e8b68d08bc51421ba0aae02","tarball":"https://registry.npmjs.org/@hubra-labs/rasol-max/-/rasol-max-0.5.8.tgz","fileCount":83,"integrity":"sha512-PoxSMzr9bA1hWt8ZMwPby2+apmrqOkyCOP6ItBbALaD/2GRs7qj5Uu1LwmOI+9ISrgL1Tf+msz+l9H98ruE9mA==","signatures":[{"sig":"MEYCIQCZ+yLCPrVX0kftnMDqQBankrZ+97z2yOGyxyTGN8PMxAIhAJNebtMM9EnF3jyiRzlZ5A3c881vWvih2eVm0QAF+vrK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257928},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1503adccde5569560e9b3b43b229026b3282488f","scripts":{"test":"node --test --import tsx tests/*.test.ts","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"amir_ac","email":"hello@hubra.app"},"repository":{"url":"git+https://github.com/Hubra-labs/rasol-max-adapter.git","type":"git"},"_npmVersion":"11.10.1","description":"TypeScript SDK for raSOL max — a leveraged liquid-staking strategy on Solana mainnet. Read strategy metrics, build deposit + withdraw transactions.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"@sanctumso/inf1":"^0.0.2-dev-4","@sanctumso/sanctum-router":"^0.0.1-dev-9","@solana-program/compute-budget":"^0.15.0","@solana-program/address-lookup-table":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","typescript":"^5.4.0","@solana/kit":"^6.9.0","@types/node":"^20.11.0","@voltr/vault-sdk":"^2.1.0","@solana-program/token":"^0.13.0"},"peerDependencies":{"@solana/kit":"^6.9.0","@voltr/vault-sdk":"^2.1.0","@solana-program/token":"^0.13.0"},"_npmOperationalInternal":{"tmp":"tmp/rasol-max_0.5.8_1782594768090_0.22700982407986858","host":"s3://npm-registry-packages-npm-production"}},"0.5.9":{"name":"@hubra-labs/rasol-max","version":"0.5.9","keywords":["solana","raSOL","raSOL max","leveraged staking","voltr","save finance","sanctum","hubra"],"license":"Apache-2.0","_id":"@hubra-labs/rasol-max@0.5.9","maintainers":[{"name":"amir_ac","email":"hello@hubra.app"}],"homepage":"https://github.com/Hubra-labs/rasol-max-adapter#readme","bugs":{"url":"https://github.com/Hubra-labs/rasol-max-adapter/issues"},"dist":{"shasum":"4ec5853d8dde4471ac25915685b0ea46e5de4144","tarball":"https://registry.npmjs.org/@hubra-labs/rasol-max/-/rasol-max-0.5.9.tgz","fileCount":87,"integrity":"sha512-kk6IUXJFH7JrtP6BTGhjvFT1LNIVvvvGvF7VXzk5Xk3n4RkHv0jPKDy5hS7n2vCTO6WQ8ggYL3C+ejnGiAKU8w==","signatures":[{"sig":"MEUCIC3BdC3ErSZqO5aqeJBDvYv3rwFQPQMxZQpBx2i7OPRgAiEA46V4VuCsVe/6Bp0fTd83H5TKPDsPuk0Zv2x2icXsCAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264594},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bee6a592b3fb5fd9aa1dc36d0fa7dee35014e0ba","scripts":{"test":"node --test --import tsx tests/*.test.ts","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"amir_ac","email":"hello@hubra.app"},"repository":{"url":"git+https://github.com/Hubra-labs/rasol-max-adapter.git","type":"git"},"_npmVersion":"11.10.1","description":"TypeScript SDK for raSOL max — a leveraged liquid-staking strategy on Solana mainnet. Read strategy metrics, build deposit + withdraw transactions.","directories":{},"_nodeVersion":"25.7.0","dependencies":{"@sanctumso/inf1":"^0.0.2-dev-4","@sanctumso/sanctum-router":"^0.0.1-dev-9","@solana-program/compute-budget":"^0.15.0","@solana-program/address-lookup-table":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","typescript":"^5.4.0","@solana/kit":"^6.9.0","@types/node":"^20.11.0","@voltr/vault-sdk":"^2.1.0","@solana-program/token":"^0.13.0"},"peerDependencies":{"@solana/kit":"^6.9.0","@voltr/vault-sdk":"^2.1.0","@solana-program/token":"^0.13.0"},"_npmOperationalInternal":{"tmp":"tmp/rasol-max_0.5.9_1784581925893_0.5592923819579252","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@hubra-labs/rasol-max","version":"0.6.0","description":"TypeScript SDK for raSOL max — a leveraged liquid-staking strategy on Solana mainnet. Read strategy metrics, build deposit + withdraw transactions.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/Hubra-labs/rasol-max-adapter.git"},"bugs":{"url":"https://github.com/Hubra-labs/rasol-max-adapter/issues"},"homepage":"https://github.com/Hubra-labs/rasol-max-adapter#readme","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test":"node --test --import tsx tests/*.test.ts","clean":"rm -rf dist"},"keywords":["solana","raSOL","raSOL max","leveraged staking","voltr","save finance","sanctum","hubra"],"engines":{"node":">=20"},"peerDependencies":{"@solana-program/token":"^0.13.0","@solana/kit":"^6.9.0","@voltr/vault-sdk":"^2.1.0"},"dependencies":{"@sanctumso/inf1":"^0.0.2-dev-4","@sanctumso/sanctum-router":"^0.0.1-dev-9","@solana-program/address-lookup-table":"^0.11.0","@solana-program/compute-budget":"^0.15.0"},"devDependencies":{"@solana-program/token":"^0.13.0","@solana/kit":"^6.9.0","@types/node":"^20.11.0","@voltr/vault-sdk":"^2.1.0","tsx":"^4.22.3","typescript":"^5.4.0"},"publishConfig":{"access":"public"},"gitHead":"d19d5a7f9238a5c59386ab7ad5ae6e2f1dc14ca4","_id":"@hubra-labs/rasol-max@0.6.0","_nodeVersion":"25.7.0","_npmVersion":"11.10.1","dist":{"integrity":"sha512-X23hzxErarb6gFyeUl5DbtzhO4Ex3kR0ipwfdDKQ97O8SwfEg7uHGvDFoCTilBYX4oYq2BR7LjobsuMgk0LogQ==","shasum":"da988765c368131d9aa2384c8163fdf6670662b6","tarball":"https://registry.npmjs.org/@hubra-labs/rasol-max/-/rasol-max-0.6.0.tgz","fileCount":87,"unpackedSize":268097,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHwGryDR/U/iI5UyHGgneFWPViujgkrQZpwKdetHTQLIAiEAtkBXgKFrHqDVoohDT5dh9Ox5uoVKBVtLATlmfL/uhfU="}]},"_npmUser":{"name":"amir_ac","email":"hello@hubra.app"},"directories":{},"maintainers":[{"name":"amir_ac","email":"hello@hubra.app"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rasol-max_0.6.0_1787675916150_0.11575352977853748"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T06:33:11.850Z","modified":"2026-08-25T16:38:36.456Z","0.1.0-alpha.0":"2026-05-24T06:33:12.213Z","0.2.0-alpha.0":"2026-05-24T06:56:09.389Z","0.3.0":"2026-05-24T07:32:59.200Z","0.3.1":"2026-05-24T08:30:33.816Z","0.4.0":"2026-05-24T15:16:16.698Z","0.4.1":"2026-05-24T15:22:33.988Z","0.4.2":"2026-05-24T15:52:40.174Z","0.4.3":"2026-05-24T16:08:16.057Z","0.4.4":"2026-05-24T16:37:49.884Z","0.4.5":"2026-05-24T16:51:37.391Z","0.5.0":"2026-05-24T21:29:04.802Z","0.5.2":"2026-05-25T08:25:13.607Z","0.5.3":"2026-05-25T16:49:51.128Z","0.5.4":"2026-05-25T16:57:52.763Z","0.5.5":"2026-05-26T15:13:53.278Z","0.5.6":"2026-06-27T20:09:51.984Z","0.5.7":"2026-06-27T20:13:52.482Z","0.5.8":"2026-06-27T21:12:48.261Z","0.5.9":"2026-07-20T21:12:06.038Z","0.6.0":"2026-08-25T16:38:36.300Z"},"bugs":{"url":"https://github.com/Hubra-labs/rasol-max-adapter/issues"},"license":"Apache-2.0","homepage":"https://github.com/Hubra-labs/rasol-max-adapter#readme","keywords":["solana","raSOL","raSOL max","leveraged staking","voltr","save finance","sanctum","hubra"],"repository":{"type":"git","url":"git+https://github.com/Hubra-labs/rasol-max-adapter.git"},"description":"TypeScript SDK for raSOL max — a leveraged liquid-staking strategy on Solana mainnet. Read strategy metrics, build deposit + withdraw transactions.","maintainers":[{"name":"amir_ac","email":"hello@hubra.app"}],"readme":"# @hubra-labs/rasol-max\n\nTypeScript SDK for **raSOL max** — a leveraged liquid-staking strategy\non Solana mainnet.\n\nraSOL max takes liquid-staked SOL (raSOL) and levers it for amplified\nstaking yield. Depositors receive a `raSOL max` LP token that tracks the\nstrategy's net asset value; the position is maintained on-chain, so\nholders earn the leveraged return without managing it themselves.\n\nThis SDK is the read + transaction-building layer for depositors: read\nlive strategy metrics (TVL, current leverage, net APY) and build the\ndeposit and withdraw transactions.\n\n## Install\n\n```sh\nnpm install @hubra-labs/rasol-max\n# peer deps:\nnpm install @solana/kit @solana-program/token @voltr/vault-sdk\n```\n\n## Quickstart\n\n```ts\nimport { createSolanaRpc } from \"@solana/kit\";\nimport { RasolMaxClient } from \"@hubra-labs/rasol-max\";\n\nconst rpc = createSolanaRpc(\"https://api.mainnet-beta.solana.com\");\nconst client = new RasolMaxClient({ rpc });\n\n// 1. Read strategy state\nconst data = await client.getStrategyData();\nconsole.log({\n  tvlRasol: data.tvlRasol,\n  leverageBps: data.leverageBps,\n  borrowAprBps: data.borrowAprBps,\n  strategyApyBps: data.strategyApyBps,\n  paused: data.paused,\n});\n\n// 2. Crank (permissionless NAV refresh)\nconst crankIx = await client.buildCrankIx();\n// sign + send via your tx transport\n\n// 3. Deposit (raSOL → raSOLmax LP)\nconst depositIxs = await client.buildDeposit({\n  owner: yourSigner,        // TransactionSigner from @solana/kit\n  amount: 100_000_000n,     // 0.1 raSOL\n});\n\n// 4. Withdraw (raSOLmax LP → raSOL)\nconst { instructions } = await client.buildWithdraw({\n  owner: yourSigner,\n  lpAmount: 50_000_000n,\n});\n```\n\n## Status\n\n\n| Surface             | Status | Notes                                                                                                               |\n| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------- |\n| `getStrategyData()` | ✅      | NAV, leverage, borrow APR, supply APR, simple APY.                                                                  |\n| `buildCrankIx()`    | ✅      | Permissionless.                                                                                                     |\n| `buildDeposit()`    | ✅      | Deposit ix(s), with an optional `crank` prefix.                                                                     |\n| `quoteWithdraw()`   | ✅      | Returns the routing decision without building the tx.                                                               |\n| `buildWithdraw()`   | ✅      | Resolves the withdrawal route and returns the instruction set; some routes return the adapter ALT to compress with. |\n\n\n\n\n## Withdraw routing\n\n`buildWithdraw()` resolves a route internally and returns the\ninstruction set to sign. The caller does not pick the route; pass\n`owner` and `lpAmount` and use the returned `instructions` (and\n`lookupTable`, when present).\n\n### ALT compression\n\nSome routes return an address-lookup-table address in\n`result.lookupTable`. When present, compress your transaction message\nwith it before signing:\n\n```ts\nimport {\n  compressTransactionMessageUsingAddressLookupTables,\n  fetchAddressLookupTable,\n} from \"@solana/kit\";\n\nconst { instructions, lookupTable } = await client.buildWithdraw({ owner, lpAmount });\nif (lookupTable) {\n  const alt = await fetchAddressLookupTable(rpc, lookupTable);\n  const message = compressTransactionMessageUsingAddressLookupTables(\n    baseMessage,\n    { [lookupTable]: alt.data.addresses },\n  );\n}\n```\n\nWithout ALT compression a routed withdrawal can exceed the 1232-byte\ntransaction size limit. The SDK does **not** auto-extend the ALT.\n\n## NAV mirror\n\nThe off-chain `computeNav()` is a literal port of `nav.rs::compute_nav_from_amounts`:\n\n```\nNAV (raSOL) = strategy_collateral_ata.amount\n            + strategy_ctoken_ata.amount × cToken→raSOL\n            + obligation.deposited_amount × cToken→raSOL\n            − obligation.borrowed_sol     × SOL→raSOL\n```\n\n`vault_strategy_asset_ata` is deliberately excluded (Voltr-side\ntransit ATA; counting it double-counts in-flight withdraw payouts).\nThrows `InsolventError` when debt &gt; assets (mirrors the on-chain\nH-C guard).\n\n## Versioning\n\n\n| SDK     | Adapter program                               | Notes    |\n| ------- | --------------------------------------------- | -------- |\n| `0.3.x` | `LST3EutZgtbsLp3RqagSfjTB6kB8BwEQjexEkqBZiRr` | v2 pilot |\n\n\nMajor version bumps on any adapter program-ID rotation. Minor bumps\nfor new ixs / new SDK surface. Patch for read-path / typecode fixes.\n\n## License\n\nApache-2.0.","readmeFilename":"README.md"}