{"_id":"@0xunreal/vault-sdk","_rev":"3-d736472c983f0a8e6b91506a13e89ca5","name":"@0xunreal/vault-sdk","description":"Mercurial Vault SDK is a typescript library that allows you to interact with Mercurial v2's vault.","dist-tags":{"latest":"0.5.7"},"versions":{"0.5.3":{"name":"@0xunreal/vault-sdk","version":"0.5.3","keywords":[],"author":{"name":"mercurial-finance"},"license":"MIT","_id":"@0xunreal/vault-sdk@0.5.3","homepage":"https://github.com/mercurial-finance/mercurial_sdk#readme","bugs":{"url":"https://github.com/mercurial-finance/mercurial_sdk/issues"},"dist":{"shasum":"7f7bd4f1c780cd2d41b8784802a1e7b02219f0d7","tarball":"https://registry.npmjs.org/@0xunreal/vault-sdk/-/vault-sdk-0.5.3.tgz","fileCount":202,"integrity":"sha512-AWeU8YSyUJEGhMoY1j7ehHIyHLEk6EN7CunWLQv1Z0wXt6joS3r0HP0qu5UABxugEVPaf3cACnePF3s3peQjVg==","signatures":[{"sig":"MEUCIQDuIJehCqFWOtZkQrKRT4DGDfTelAYXL9e+DLevwNVSsAIgA9D/T9RelIg7IN2lWncVEzn8AGzeaN9kjHOrWnoo6ms=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":829777},"main":"dist/cjs/index.js","_from":"file:0xunreal-vault-sdk-0.5.3.tgz","types":"./dist/cjs/index.d.ts","module":"dist/esm/index.js","scripts":{"test":"jest ./src/vault/tests/*.test.ts --runInBand","build":"pnpm rimraf dist && tsc -p tsconfig.build.json && tsc -p tsconfig.esm.json","test-affiliate":"jest ./src/vault/tests/affiliate.test.ts --runInBand"},"_npmUser":{"name":"0xunreal","email":"0xunreal@proton.me"},"_resolved":"C:\\Users\\tamas\\AppData\\Local\\Temp\\32959346016a9fd75b910a8efd7c24ff\\0xunreal-vault-sdk-0.5.3.tgz","_integrity":"sha512-AWeU8YSyUJEGhMoY1j7ehHIyHLEk6EN7CunWLQv1Z0wXt6joS3r0HP0qu5UABxugEVPaf3cACnePF3s3peQjVg==","repository":{"url":"git+https://github.com/mercurial-finance/mercurial_sdk.git","type":"git"},"_npmVersion":"10.2.5","description":"Mercurial Vault SDK is a typescript library that allows you to interact with Mercurial v2's vault.","directories":{"test":"tests"},"_nodeVersion":"20.13.1","dependencies":{"jsbi":"4.3.0","bn.js":"5.2.1","decimal.js":"10.3.1","cross-fetch":"^3.1.5","@solana/web3.js":"~1.72.0","@solana/spl-token":"0.4.6","@project-serum/anchor":"0.25.0","@solana/buffer-layout":"^4.0.0","@saberhq/anchor-contrib":"1.13.32","@quarryprotocol/quarry-sdk":"5.0.2","@solana/spl-token-registry":"0.2.1105","@mercurial-finance/mango-v4":"0.5.4","@mercurial-finance/optimist":"^0.1.4","@mercurial-finance/port-sdk":"0.2.69","@mercurial-finance/drift-sdk":"1.0.3","@mercurial-finance/frakt-sdk":"0.0.2","@mithraic-labs/psylend-utils":"0.0.3-rc39","@mercurial-finance/solend-sdk":"0.6.5","@mercurial-finance/apricot-sdk":"0.17.6","@mercurial-finance/francium-sdk":"1.4.3","@mercurial-finance/cypher-client":"^4.1.4","@blockworks-foundation/mango-client":"^3.4.7","@mercurial-finance/marginfi-client-v2":"1.0.2","@mercurial-finance/tulip-platform-sdk":"2.0.30"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^28.1.0","mocha":"^10.0.0","rimraf":"^5.0.7","ts-jest":"^28.0.2","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/chai":"^4.3.1","@types/jest":"^27.5.1","@types/bn.js":"^5.1.0","@types/mocha":"^9.1.1","@saberhq/token-utils":"1.13.32","@tsconfig/recommended":"^1.0.1","@saberhq/solana-contrib":"1.13.32"},"_npmOperationalInternal":{"tmp":"tmp/vault-sdk_0.5.3_1719509227743_0.28301681110360355","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"@0xunreal/vault-sdk","version":"0.5.4","keywords":[],"author":{"name":"mercurial-finance"},"license":"MIT","_id":"@0xunreal/vault-sdk@0.5.4","homepage":"https://github.com/mercurial-finance/mercurial_sdk#readme","bugs":{"url":"https://github.com/mercurial-finance/mercurial_sdk/issues"},"dist":{"shasum":"34a6fbaa381acaefdeb26a70ed8cafaba419f374","tarball":"https://registry.npmjs.org/@0xunreal/vault-sdk/-/vault-sdk-0.5.4.tgz","fileCount":186,"integrity":"sha512-gxlIft+ExslaWO92KOhY+aSDXo1CgZa/eIpVLIBY/H2i7r+s7L5RcRVgKzUYKBTwVEA2AxQkI1QMfh2ZYUQBrQ==","signatures":[{"sig":"MEUCIQDlMP2vYeDRpc3jG/wjOwLVKdbTBAT4Dtph+cwYQ/z6LgIgQWBL+8OrEx22Bu8iLpB0IYACwF+sEQFjSIEQyrKB50w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":780018},"main":"dist/cjs/index.js","_from":"file:0xunreal-vault-sdk-0.5.4.tgz","types":"./dist/cjs/index.d.ts","module":"dist/esm/index.js","scripts":{"test":"jest ./src/vault/tests/*.test.ts --runInBand","build":"pnpm rimraf dist && tsc -p tsconfig.build.json && tsc -p tsconfig.esm.json","test-affiliate":"jest ./src/vault/tests/affiliate.test.ts --runInBand"},"_npmUser":{"name":"0xunreal","email":"0xunreal@proton.me"},"_resolved":"C:\\Users\\tamas\\AppData\\Local\\Temp\\cb35985cea105f7e72a2e5cf9f451bab\\0xunreal-vault-sdk-0.5.4.tgz","_integrity":"sha512-gxlIft+ExslaWO92KOhY+aSDXo1CgZa/eIpVLIBY/H2i7r+s7L5RcRVgKzUYKBTwVEA2AxQkI1QMfh2ZYUQBrQ==","repository":{"url":"git+https://github.com/mercurial-finance/mercurial_sdk.git","type":"git"},"_npmVersion":"10.2.5","description":"Mercurial Vault SDK is a typescript library that allows you to interact with Mercurial v2's vault.","directories":{"test":"tests"},"_nodeVersion":"20.13.1","dependencies":{"jsbi":"4.3.0","bn.js":"5.2.1","decimal.js":"10.3.1","cross-fetch":"^3.1.5","@solana/web3.js":"~1.72.0","@solana/spl-token":"0.4.6","@project-serum/anchor":"0.25.0","@solana/buffer-layout":"^4.0.0","@saberhq/anchor-contrib":"1.13.32","@quarryprotocol/quarry-sdk":"5.0.2","@solana/spl-token-registry":"0.2.1105","@mercurial-finance/mango-v4":"0.5.4","@mercurial-finance/optimist":"^0.1.4","@mercurial-finance/port-sdk":"0.2.69","@mercurial-finance/frakt-sdk":"0.0.2","@mithraic-labs/psylend-utils":"0.0.3-rc39","@mercurial-finance/solend-sdk":"0.6.5","@mercurial-finance/francium-sdk":"1.4.3","@mercurial-finance/cypher-client":"^4.1.4","@blockworks-foundation/mango-client":"^3.4.7","@mercurial-finance/marginfi-client-v2":"1.0.2","@mercurial-finance/tulip-platform-sdk":"2.0.30"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^28.1.0","mocha":"^10.0.0","rimraf":"^5.0.7","ts-jest":"^28.0.2","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/chai":"^4.3.1","@types/jest":"^27.5.1","@types/bn.js":"^5.1.0","@types/mocha":"^9.1.1","@saberhq/token-utils":"1.13.32","@tsconfig/recommended":"^1.0.1","@saberhq/solana-contrib":"1.13.32"},"_npmOperationalInternal":{"tmp":"tmp/vault-sdk_0.5.4_1719520805185_0.43845544798253555","host":"s3://npm-registry-packages"}},"0.5.5":{"name":"@0xunreal/vault-sdk","version":"0.5.5","keywords":[],"author":{"name":"mercurial-finance"},"license":"MIT","_id":"@0xunreal/vault-sdk@0.5.5","homepage":"https://github.com/mercurial-finance/mercurial_sdk#readme","bugs":{"url":"https://github.com/mercurial-finance/mercurial_sdk/issues"},"dist":{"shasum":"48eb8021fe28223863ff59798b787436ba175f21","tarball":"https://registry.npmjs.org/@0xunreal/vault-sdk/-/vault-sdk-0.5.5.tgz","fileCount":186,"integrity":"sha512-uq0pPbHU4E5bB6ZzwfTsdse3Sqe8gkXyeLy0CqVXHsq7WdIfcz1+Fhy8G7jGl1mei4JOmQdYl4l4CILaW4sBWw==","signatures":[{"sig":"MEQCIHKqhcipoZ8PGEDlzkm3byiTBnaRSEjQ2VBNZTETWdNPAiABW/nbBJbMh/B6Jjs8j0GHK/saL6hJnF1q07DCueR/jg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":780019},"main":"dist/cjs/index.js","_from":"file:0xunreal-vault-sdk-0.5.5.tgz","types":"./dist/cjs/index.d.ts","module":"dist/esm/index.js","scripts":{"test":"jest ./src/vault/tests/*.test.ts --runInBand","build":"pnpm rimraf dist && tsc -p tsconfig.build.json && tsc -p tsconfig.esm.json","test-affiliate":"jest ./src/vault/tests/affiliate.test.ts --runInBand"},"_npmUser":{"name":"0xunreal","email":"0xunreal@proton.me"},"_resolved":"C:\\Users\\tamas\\AppData\\Local\\Temp\\ae4181e74e8c0366c225a16bf92af511\\0xunreal-vault-sdk-0.5.5.tgz","_integrity":"sha512-uq0pPbHU4E5bB6ZzwfTsdse3Sqe8gkXyeLy0CqVXHsq7WdIfcz1+Fhy8G7jGl1mei4JOmQdYl4l4CILaW4sBWw==","repository":{"url":"git+https://github.com/mercurial-finance/mercurial_sdk.git","type":"git"},"_npmVersion":"10.2.5","description":"Mercurial Vault SDK is a typescript library that allows you to interact with Mercurial v2's vault.","directories":{"test":"tests"},"_nodeVersion":"20.13.1","dependencies":{"jsbi":"4.3.0","bn.js":"5.2.1","decimal.js":"10.3.1","cross-fetch":"^3.1.5","@solana/web3.js":"~1.72.0","@solana/spl-token":"^0.4.7","@project-serum/anchor":"0.25.0","@solana/buffer-layout":"^4.0.0","@saberhq/anchor-contrib":"1.13.32","@quarryprotocol/quarry-sdk":"5.0.2","@solana/spl-token-registry":"0.2.1105","@mercurial-finance/mango-v4":"0.5.4","@mercurial-finance/optimist":"^0.1.4","@mercurial-finance/port-sdk":"0.2.69","@mercurial-finance/frakt-sdk":"0.0.2","@mithraic-labs/psylend-utils":"0.0.3-rc39","@mercurial-finance/solend-sdk":"0.6.5","@mercurial-finance/francium-sdk":"1.4.3","@mercurial-finance/cypher-client":"^4.1.4","@blockworks-foundation/mango-client":"^3.4.7","@mercurial-finance/marginfi-client-v2":"1.0.2","@mercurial-finance/tulip-platform-sdk":"2.0.30"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","jest":"^28.1.0","mocha":"^10.0.0","rimraf":"^5.0.7","ts-jest":"^28.0.2","ts-mocha":"^10.0.0","typescript":"^5.4.5","@types/chai":"^4.3.1","@types/jest":"^27.5.1","@types/bn.js":"^5.1.0","@types/mocha":"^9.1.1","@saberhq/token-utils":"1.13.32","@tsconfig/recommended":"^1.0.1","@saberhq/solana-contrib":"1.13.32"},"_npmOperationalInternal":{"tmp":"tmp/vault-sdk_0.5.5_1719520926031_0.07764890017235881","host":"s3://npm-registry-packages"}},"0.5.7":{"name":"@0xunreal/vault-sdk","version":"0.5.7","description":"Mercurial Vault SDK is a typescript library that allows you to interact with Mercurial v2's vault.","main":"dist/cjs/index.js","module":"dist/esm/index.js","keywords":[],"author":{"name":"mercurial-finance"},"license":"MIT","dependencies":{"@blockworks-foundation/mango-client":"^3.4.7","@mercurial-finance/cypher-client":"^4.1.4","@mercurial-finance/frakt-sdk":"0.0.2","@mercurial-finance/francium-sdk":"1.4.3","@mercurial-finance/mango-v4":"0.5.4","@mercurial-finance/marginfi-client-v2":"1.0.2","@mercurial-finance/solend-sdk":"0.6.5","@mercurial-finance/tulip-platform-sdk":"2.0.30","@mithraic-labs/psylend-utils":"0.0.3-rc39","@project-serum/anchor":"0.25.0","@quarryprotocol/quarry-sdk":"5.0.2","@saberhq/anchor-contrib":"1.13.32","@solana/buffer-layout":"^4.0.0","@solana/spl-token":"0.4.7","@solana/spl-token-registry":"0.2.4574","@solana/web3.js":"~1.93.3","bn.js":"5.2.1","cross-fetch":"^3.1.5","decimal.js":"10.3.1","jsbi":"4.3.0"},"devDependencies":{"@saberhq/solana-contrib":"1.13.32","@saberhq/token-utils":"1.13.32","@tsconfig/recommended":"^1.0.1","@types/bn.js":"^5.1.0","@types/chai":"^4.3.1","@types/jest":"^27.5.1","@types/mocha":"^9.1.1","chai":"^4.3.6","jest":"^28.1.0","mocha":"^10.0.0","rimraf":"^5.0.7","ts-jest":"^28.0.2","ts-mocha":"^10.0.0","typescript":"^5.4.5"},"directories":{"test":"tests"},"repository":{"type":"git","url":"git+https://github.com/mercurial-finance/mercurial_sdk.git"},"bugs":{"url":"https://github.com/mercurial-finance/mercurial_sdk/issues"},"homepage":"https://github.com/mercurial-finance/mercurial_sdk#readme","scripts":{"build":"pnpm rimraf dist && tsc -p tsconfig.build.json && tsc -p tsconfig.esm.json","test":"jest ./src/vault/tests/*.test.ts --runInBand","test-affiliate":"jest ./src/vault/tests/affiliate.test.ts --runInBand"},"types":"./dist/cjs/index.d.ts","_id":"@0xunreal/vault-sdk@0.5.7","_integrity":"sha512-bj13W5wACjycUZXa0bbbkbTxKVC8UENFYILwBMkwhVqmdaUwIM0oti1OkM+YWciQ8d2hREh0vlZxVvP4vYQYlw==","_resolved":"C:\\Users\\tamas\\AppData\\Local\\Temp\\269e5826803404b127fa7f18e6b07a3c\\0xunreal-vault-sdk-0.5.7.tgz","_from":"file:0xunreal-vault-sdk-0.5.7.tgz","_nodeVersion":"20.13.1","_npmVersion":"10.2.5","dist":{"integrity":"sha512-bj13W5wACjycUZXa0bbbkbTxKVC8UENFYILwBMkwhVqmdaUwIM0oti1OkM+YWciQ8d2hREh0vlZxVvP4vYQYlw==","shasum":"038bcad246b85c5d8c8cf10822edb2928cb01353","tarball":"https://registry.npmjs.org/@0xunreal/vault-sdk/-/vault-sdk-0.5.7.tgz","fileCount":170,"unpackedSize":725331,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGciWKviLcEfwwSdFSc8ARi07Vo5JOeAuLbEkFkvorSgAiAh1knZ5YqnLmuAQ/dalOTkPWDEMQPldJg1sC9mcwY4uQ=="}]},"_npmUser":{"name":"0xunreal","email":"0xunreal@proton.me"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vault-sdk_0.5.7_1719531888265_0.11498801142064319"},"_hasShrinkwrap":false}},"time":{"created":"2024-06-27T17:27:07.641Z","modified":"2024-06-27T23:44:48.606Z","0.5.3":"2024-06-27T17:27:07.932Z","0.5.4":"2024-06-27T20:40:05.407Z","0.5.5":"2024-06-27T20:42:06.270Z","0.5.7":"2024-06-27T23:44:48.442Z"},"maintainers":[{"name":"0xunreal","email":"0xunreal@proton.me"}],"author":{"name":"mercurial-finance"},"repository":{"type":"git","url":"git+https://github.com/mercurial-finance/mercurial_sdk.git"},"keywords":[],"license":"MIT","homepage":"https://github.com/mercurial-finance/mercurial_sdk#readme","bugs":{"url":"https://github.com/mercurial-finance/mercurial_sdk/issues"},"readme":"# Mercurial Vault SDK\r\n\r\n<p align=\"center\">\r\n<img align=\"center\" src=\"https://vaults.mercurial.finance/icons/logo.svg\" width=\"180\" height=\"180\" />\r\n</p>\r\n<br>\r\n\r\n## Getting started\r\nNPM: https://www.npmjs.com/package/@mercurial-finance/vault-sdk\r\n\r\nSDK: https://github.com/mercurial-finance/vault-sdk\r\n\r\nDemo: https://vault-sdk-demo.vercel.app/\r\n\r\nDemo repo: https://github.com/mercurial-finance/vault-sdk-demo\r\n- Easiest way to get started with our Typescript SDK, the example demo includes all functionality and information we display on our own site.\r\n\r\nDocs: https://docs.mercurial.finance/mercurial-dynamic-yield-infra/\r\n\r\nDiscord: https://discord.com/channels/841152225564950528/864859354335412224\r\n\r\n<hr>\r\n\r\n## Install\r\n\r\n1. Install deps\r\n\r\n```\r\nnpm i @mercurial-finance/vault-sdk @project-serum/anchor @solana/web3.js @solana/spl-token @solana/spl-token-registry\r\n```\r\n\r\n2. Initialize VaultImpl instance\r\n- Affiliate or partner? refer to the [Vault Affiliate Program]()\r\n```ts\r\nimport VaultImpl from '@mercurial-finance/vault-sdk';\r\nimport { PublicKey } from '@solana/web3.js';\r\nimport { StaticTokenListResolutionStrategy, TokenInfo } from \"@solana/spl-token-registry\";\r\nimport { Wallet, AnchorProvider } from '@project-serum/anchor';\r\n\r\n// Connection, Wallet, and AnchorProvider to interact with the network\r\nconst mainnetConnection = new Connection('https://api.mainnet-beta.solana.com');\r\nconst mockWallet = new Wallet(new Keypair());\r\nconst provider = new AnchorProvider(mainnetConnection, mockWallet, {\r\n    commitment: 'confirmed',\r\n});\r\n// Alternatively, to use Solana Wallet Adapter, refer to `Demo Repo`\r\n\r\nconst tokenMap = new StaticTokenListResolutionStrategy().resolve();\r\n// Find the token info you want to use.\r\nconst SOL_TOKEN_INFO = tokenMap.find(token => token.symbol === 'SOL') as TokenInfo;\r\nconst vaultImpl = await VaultImpl.create(connection, SOL_TOKEN_INFO);\r\n```\r\n\r\n3. To interact with the VaultImpl\r\n```ts\r\n// To refetch the vault's latest supply\r\n// Alternatively, use `vaultImpl.lpSupply`\r\nconst lpSupply = await vaultImpl.getVaultSupply();\r\n\r\n// Rewards are not instantly redeemable, and are subject to a lock.\r\n// This function returns the amount of LP that are redeemable.\r\nconst unlockedAmount = await vaultImpl.getWithdrawableAmount()\r\n\r\n// To deposit into the vault\r\nconst amountInLamports = 1 * 10 ** SOL_TOKEN_INFO.decimals; // 1.0 SOL\r\nconst depositTx = await vaultImpl.deposit(mockWallet.publicKey, new BN(amountInLamports)); // Web3 Transaction Object\r\nconst depositResult = await provider.sendAndConfirm(depositTx); // Transaction hash\r\n\r\n// Get the user's ATA LP balance\r\nconst userLpBalance = await vaultImpl.getUserBalance(mockWallet.publicKey);\r\n\r\n// To withdraw from the vault\r\nconst withdrawTx = await vaultImpl.withdraw(mockWallet.publicKey, new BN(userLpBalance)); // Web3 Transaction Object\r\nconst withdrawResult = await provider.sendAndConfirm(withdrawTx); // Transaction hash\r\n```\r\n\r\n4. Helper function\r\n```ts\r\nimport { helper } from '@mercurial-finance/vault-sdk';\r\n\r\nconst userShare = await vaultImpl.getUserBalance(mockWallet.publicKey);\r\nconst unlockedAmount = await vaultImpl.getWithdrawableAmount()\r\nconst lpSupply = await vaultImpl.getVaultSupply();\r\n\r\n// To convert user's LP balance into underlying token amount\r\nconst underlyingShare = helper.getAmountByShare(userShare, unlockedAmount, lpSupply)\r\n\r\n// To convert underlying token amount into user's LP balance\r\nconst amountInLamports = 1 * 10 ** SOL_TOKEN_INFO.decimals; // 1.0 SOL\r\nconst lpToUnmint = helper.getUnmintAmount(new BN(amountInLamports), unlockedAmount, lpSupply) // To withdraw 1.0 SOL\r\n```\r\n\r\n<hr>\r\n\r\n## Vault Affiliate\r\nTo be a part of the Mercurial Finance's Vault Affiliate Program, visit our Discord above!\r\n\r\n<br>\r\n\r\n#### To initialize vault with affiliate\r\nAffiliates only need to initialize the vault instance with the third paratemer `opt.affiliate`, subsequently, all interaction with the vault are the same as the usage guide above, no further configuration required.\r\n\r\n```ts\r\nconst vaultImpl = await VaultImpl.create(\r\n    connection, \r\n    SOL_TOKEN_INFO,\r\n    {\r\n        affiliateId: new PublicKey('YOUR_PARTNER_PUBLIC_KEY');\r\n    }\r\n);\r\n```\r\n\r\n#### To check Partner info\r\n```ts\r\n// Affiliate / Partner info\r\nconst partnerInfo = await vaultImpl.getAffiliateInfo();\r\n```","readmeFilename":"README.md"}