{"_id":"@breezebaby/breeze-sdk","_rev":"11-45c05df4aacf5bc4658672e3df0fe458","name":"@breezebaby/breeze-sdk","dist-tags":{"latest":"2.0.4"},"versions":{"0.0.1":{"name":"@breezebaby/breeze-sdk","version":"0.0.1","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@0.0.1","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"47c08593bf9380a625c8adb21d47f11a7139dda7","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-0.0.1.tgz","fileCount":32,"integrity":"sha512-DOE7oLGka5F7isOpEeJcLIDMMGvxT5c2xvCjs6AyAg0O+VubUE4Hk1zlEsbaBSt0J8rMqq6d3nRD/fSkwxYadg==","signatures":[{"sig":"MEQCIGNL2awcz6/Z/6/N1hoFEhGgAUplMl8D8gvjxaAwZWJuAiAhnUApXXNPzmuKmK4SCWqH56N/PeLkxLXU/tNjvlVh7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86628},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"d4700ee4b54e1d248aa01cd73d98d61ab8a33e38","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_0.0.1_1753197793927_0.29535538849485365","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"1.0.0":{"name":"@breezebaby/breeze-sdk","version":"1.0.0","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@1.0.0","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"aff9a1b2cb1b225b2c50de670903fb88426cf49d","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-1.0.0.tgz","fileCount":32,"integrity":"sha512-QMQtmX5j4rMcUVnz4OQllutB94Vc926ARjZQdapQcvtkHMZZZfJlnerJbjxlamwzmmbsi8ICHn7sgWxSKClhjg==","signatures":[{"sig":"MEUCIQCokZN5X3iNCvWlzaQbJOZiNxlBfHDIQpTTQ3qdssDyCAIgEzED9W+Q8m5ZRbtIGXn50g1kCObzAU8v4N/4H5ih4QY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85555},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"d4700ee4b54e1d248aa01cd73d98d61ab8a33e38","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_1.0.0_1753202176220_0.18682332957124292","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"1.5.0":{"name":"@breezebaby/breeze-sdk","version":"1.5.0","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@1.5.0","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"43bddb9d79e2210fa9ad0699045a5383cd5e0db3","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-1.5.0.tgz","fileCount":32,"integrity":"sha512-pddOgFcbNquDjQafEDBoc1l4jlcPHWX03GN04zZ7k8ja9tLh7s1/aH+PB7cvKLBqIXFI/AnK0f84z7yfeVkXMg==","signatures":[{"sig":"MEUCIEqihBnUdui97be1dcFy995qpgRDFpZ9PcQpfEXWyQ4gAiEAwwLEWCJNJrMcxZ+Lxszz6wNd3JYET+nbsEhXpuPak6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85405},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"0f39bdfe65a1dc6c8fc2088377182505614709e9","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:ixs":"jest tests-integration/instructionMethods.test.ts","test:txs":"jest tests-integration/transactionMethods.test.ts","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:balances":"jest tests-integration/getUserYieldAndBalances.test.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_1.5.0_1754415418931_0.9499465350253886","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"2.0.0":{"name":"@breezebaby/breeze-sdk","version":"2.0.0","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@2.0.0","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"cd73073cbf54f66229b34a45e9cbef1c6f26b342","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-2.0.0.tgz","fileCount":30,"integrity":"sha512-kFi5qotjZxDh1FsQXxP+NuqN4sQwSYn09Uc3lx3M+wNPWZloezHkFlLE6oQFuJgqo+EOP1JaqwzMd8kmrMSl5A==","signatures":[{"sig":"MEQCIC6e+oAqMptB9DF6PY5Geh4eIT7Ul/7+tneU84JdWjFSAiBzU61gTMjoeYuBaSKUmni5lXmY/izPpx0Z+8rq/I5Gyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78557},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"ddb5f81ac91b7f4b8dc8b473d72812d74cbba99d","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:ixs":"jest tests-integration/instructionMethods.test.ts","test:txs":"jest tests-integration/transactionMethods.test.ts","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:balances":"jest tests-integration/getUserYieldAndBalances.test.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_2.0.0_1767456551788_0.990729561998954","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"2.0.1":{"name":"@breezebaby/breeze-sdk","version":"2.0.1","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@2.0.1","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"ff8d3dbdc91397fb8957cca5173166ed8e16b960","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-2.0.1.tgz","fileCount":38,"integrity":"sha512-sSs6QO5WDDztl2aqp+sOI/Vqu5Qgwg9gYftwQGC26Dv4kRhc5YVnmI9uzFbGE8z0OV/qZ5BVRyOcm6iEjukDrA==","signatures":[{"sig":"MEUCIE7iJM+UnTKiebfCaGf+uLqhQQ2V6d8hIpx/QsKGIGiTAiEAitK7RC/MWRTkbjVuCUbF/RQBHVgmbhpgyaIjfzsIhUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116066},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"3e17c5a64dd171607a9e09e8f44378b7dffe3ac4","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:ixs":"jest tests-integration/instructionMethods.test.ts","test:txs":"jest tests-integration/transactionMethods.test.ts","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:balances":"jest tests-integration/getUserYieldAndBalances.test.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_2.0.1_1767811635903_0.10272880028700193","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"2.0.2":{"name":"@breezebaby/breeze-sdk","version":"2.0.2","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@2.0.2","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"03d2c937dd160aec496558fe0d4a723e55b482a7","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-2.0.2.tgz","fileCount":46,"integrity":"sha512-AzNoQ3G5NOGKslapB40ou85aV4sRBnKHJqm/O0Eloxz4eAvK5NXtpoUJJ0xY5zB98JMiLh+QMdEto7yl6xqUNA==","signatures":[{"sig":"MEQCIE10FKhT+qWXyKJdGu62sLL+CzuQlFD2b5tjoUVye0hpAiB7P6KlDy71QCf7mvEehzd1wSp955LhiFvI3Rotd3SBsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133916},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"f6fb110395a041d296e9dd405951bdc96ec776c1","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:ixs":"jest tests-integration/instructionMethods.test.ts","test:txs":"jest tests-integration/transactionMethods.test.ts","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:balances":"jest tests-integration/getUserYieldAndBalances.test.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_2.0.2_1770739859480_0.7768548890408524","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"2.0.3":{"name":"@breezebaby/breeze-sdk","version":"2.0.3","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@2.0.3","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"dist":{"shasum":"bacbf47c1111559b0b85ffbf2492f464470d8c33","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-2.0.3.tgz","fileCount":46,"integrity":"sha512-q+ZF73TOWHElABq4c6G2IZWhlkO8HsdSLeWNNtvsehps2991et2ICzesq0MgnNPGoRfsSOWAZ6bvPe0F7vDPFA==","signatures":[{"sig":"MEQCIGQvSgQ+43FtIJJoN+ftN3hTqIiJhFNfz6BjK+2AxgPxAiAKgb4YCbpMGqEAja+jdOFZn4OmypK4H+1ztv+RK+2rUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135754},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"fc260c2b8a01138193b597eb3bca18aa8f04c29f","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:ixs":"jest tests-integration/instructionMethods.test.ts","test:txs":"jest tests-integration/transactionMethods.test.ts","test:unit":"jest --testPathIgnorePatterns=integration","example:basic":"tsx examples/basic-usage.ts","test:balances":"jest tests-integration/getUserYieldAndBalances.test.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"nicknutdotsol","email":"playl2573@gmail.com"},"_npmVersion":"10.9.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.9.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_2.0.3_1770743967915_0.6842441398506258","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"},"2.0.4":{"name":"@breezebaby/breeze-sdk","version":"2.0.4","author":"","license":"MIT","_id":"@breezebaby/breeze-sdk@2.0.4","maintainers":[{"name":"tracycodes","email":"tracy@tracycodes.com"},{"name":"_austbot","email":"me@austbot.com"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"}],"homepage":"https://github.com/anagrambuild/breeze-sdk#readme","bugs":{"url":"https://github.com/anagrambuild/breeze-sdk/issues"},"dist":{"shasum":"1f9a0bcf53fbb3685d2febb5d47de6944596145d","tarball":"https://registry.npmjs.org/@breezebaby/breeze-sdk/-/breeze-sdk-2.0.4.tgz","fileCount":46,"integrity":"sha512-yw+O+uuOZTrFyFV/0u/jGP2JiBSbVZIp/sXAEeveGTaZ6/g+XyCm1krXNewnjMc+MtR3qOcVWwF2FNFeO9HS6g==","signatures":[{"sig":"MEUCIQDf3QxHzPzNwQMHqWQD8Uzi/H4wqz3VPk0ZVDeqDyQEwgIgXqNgdv+1R8rEnrKa7kK/1yfAH7gN0QFPuGOv7/jGI7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@breezebaby%2fbreeze-sdk@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135984},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","module":"./dist/index.mjs","default":"./dist/index.mjs"}},"gitHead":"2f41b8dca9f1db3c010f64ef3b318d948b62ef07","scripts":{"test":"jest","build":"tsup","test:all":"jest","test:ixs":"jest tests-integration/instructionMethods.test.ts","test:txs":"jest tests-integration/transactionMethods.test.ts","test:unit":"jest --testPathIgnorePatterns=integration --passWithNoTests","example:basic":"tsx examples/basic-usage.ts","test:balances":"jest tests-integration/getUserYieldAndBalances.test.ts","test:integration":"jest tests/integration.test.ts","example:integration":"tsx examples/integration-flow.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:027da7ec-464d-4027-a635-719b2a3de6c2"}},"repository":{"url":"git+https://github.com/anagrambuild/breeze-sdk.git","type":"git","directory":"packages/sdk"},"_npmVersion":"11.11.0","description":"Breeze SDK","directories":{"test":"tests"},"_nodeVersion":"22.22.0","dependencies":{"bs58":"^5.0.0","ts-jest":"^29.3.4","@types/node":"^22.15.29","@types/express":"^5.0.2","@solana/web3.js":"^1.98.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","jest":"^29.7.0","tsup":"^8.0.1","typescript":"^5.8.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/breeze-sdk_2.0.4_1772762547180_0.3648978203139883","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved to @solana/breeze-sdk. Install that instead: https://www.npmjs.com/package/@solana/breeze-sdk"}},"time":{"created":"2025-07-22T15:23:13.817Z","modified":"2026-08-05T23:34:40.170Z","0.0.1":"2025-07-22T15:23:14.130Z","1.0.0":"2025-07-22T16:36:16.432Z","1.5.0":"2025-08-05T17:36:59.103Z","2.0.0":"2026-01-03T16:09:11.937Z","2.0.1":"2026-01-07T18:47:16.072Z","2.0.2":"2026-02-10T16:10:59.626Z","2.0.3":"2026-02-10T17:19:28.061Z","2.0.4":"2026-03-06T02:02:27.359Z"},"bugs":{"url":"https://github.com/anagrambuild/breeze-sdk/issues"},"license":"MIT","homepage":"https://github.com/anagrambuild/breeze-sdk#readme","repository":{"url":"git+https://github.com/anagrambuild/breeze-sdk.git","type":"git","directory":"packages/sdk"},"description":"Breeze SDK","maintainers":[{"name":"_austbot","email":"me@austbot.com"},{"name":"keeganthomp","email":"keegan.thompson@solana.org"},{"name":"nicknutdotsol","email":"playl2573@gmail.com"},{"name":"tracycodes","email":"tracy@tracycodes.com"}],"readme":"# Breeze SDK\n\nA comprehensive TypeScript SDK for interacting with the Breeze API, providing a clean interface for user yield tracking, balance management, and transaction handling.\n\n## Installation\n\n```bash\nnpm install @breezebaby/breeze-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { BreezeSDK } from '@breezebaby/breeze-sdk';\n\n// Initialize the SDK\nconst sdk = new BreezeSDK({\n  baseUrl: 'https://api.breeze.baby/', // Your API base URL\n  apiKey: 'your-api-key-here',\n  timeout: 30000 // Optional: request timeout in milliseconds (default: 30000)\n});\n\n// Get user yield data\nconst userYield = await sdk.getUserYield({\n  userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY'\n});\nconsole.log('Total yield earned:', userYield.total_yield_earned);\n```\n\n## API Reference\n\n### BreezeSDK Class\n\nThe main SDK class that provides a convenient interface to all API endpoints.\n\n#### Constructor\n\n```typescript\nnew BreezeSDK(config: BreezeSDKConfig)\n```\n\n**BreezeSDKConfig:**\n- `apiKey: string` - Your API authentication key (required)\n- `baseUrl?: string` - Base URL for the API (default: 'https://api.breeze.baby/')\n- `timeout?: number` - Request timeout in milliseconds (default: 30000)\n\n#### Methods\n\n##### User Operations\n\n**`getUserYield(options)`**\nGet user yield data with pagination.\n\n```typescript\n// Basic usage\nconst userYield = await sdk.getUserYield({\n  userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY'\n});\n\n// With optional parameters\nconst userYield = await sdk.getUserYield({\n  userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY',\n  page: 1,      // Optional pagination\n  limit: 10     // Optional pagination\n});\n\n// Returns:\n// {\n// \t\"data\": [\n// \t\t{\n// \t\t\t\"fund_id\": \"8pfa41TvGWyttSViHRaNwFwbjhDEgmf3tHj81XR3Cysk\",\n// \t\t\t\"fund_name\": \"Fund 8pfa41TvGWyttSViHRaNwFwbjhDEgmf3tHj81XR3Cysk\",\n// \t\t\t\"base_asset\": \"USDC\",\n// \t\t\t\"position_value\": 1000005,\n// \t\t\t\"yield_earned\": 5,\n// \t\t\t\"apy\": 6.614188643106429,\n// \t\t\t\"entry_date\": \"2025-08-05T13:28:21+00:00\",\n// \t\t\t\"last_updated\": \"2025-08-05T13:28:21+00:00\"\n// \t\t}\n// \t],\n// \t\"meta\": {\n// \t\t\"page\": 1,\n// \t\t\"per_page\": 10,\n// \t\t\"total\": 1,\n// \t\t\"total_pages\": 1,\n// \t\t\"has_more\": false\n// \t}\n// }\n```\n\n**`getUserBalances(options)`**\nGet user balance information with asset filtering and sorting.\n\n```typescript\n// Basic usage\nconst userBalances = await sdk.getUserBalances({\n  userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY'\n});\n\n// With optional parameters\nconst userBalances = await sdk.getUserBalances({\n  userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY',\n  asset: 'USDC',        // Optional filter\n  sortBy: 'balance',    // Optional sorting\n  sortOrder: 'desc',    // Optional sort order\n  page: 1,              // Optional pagination\n  limit: 10             // Optional pagination\n});\n\n// Returns:\n// {\n// \t\"data\": [\n// \t\t{\n// \t\t\t\"token_address\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n// \t\t\t\"token_symbol\": \"USDC\",\n// \t\t\t\"token_name\": \"USD Coin\",\n// \t\t\t\"decimals\": 6,\n// \t\t\t\"total_balance\": 10470880,\n// \t\t\t\"yield_balance\": {\n// \t\t\t\t\"fund_id\": \"8pfa41TvGWyttSViHRaNwFwbjhDEgmf3tHj81XR3CwWV\",\n// \t\t\t\t\"funds\": \"1000000\",\n// \t\t\t\t\"amount_of_yield\": \"5\",\n// \t\t\t\t\"fund_apy\": 4.999999993617795\n// \t\t\t}\n// \t\t},\n// \t\t{\n// \t\t\t\"token_address\": \"So11111111111111111111111111111111111111112\",\n// \t\t\t\"token_symbol\": \"SOL\",\n// \t\t\t\"token_name\": \"Wrapped SOL\",\n// \t\t\t\"decimals\": 9,\n// \t\t\t\"total_balance\": 97959415,\n// \t\t\t\"yield_balance\": null\n// \t\t},\n// \t\t{\n// \t\t\t\"token_address\": \"11111111111111111111111111111112\",\n// \t\t\t\"token_symbol\": \"SOL\",\n// \t\t\t\"token_name\": \"Solana\",\n// \t\t\t\"decimals\": 9,\n// \t\t\t\"total_balance\": 3207138599,\n// \t\t\t\"yield_balance\": null\n// \t\t}\n// \t],\n// \t\"meta\": {\n// \t\t\"page\": 1,\n// \t\t\"per_page\": 10,\n// \t\t\"total\": 3,\n// \t\t\"total_pages\": 1,\n// \t\t\"has_more\": false\n// \t}\n// }\n```\n\n**`getBreezeBalances(options)`**\nGet breeze-specific balance information with strategy details, including position values, yields, and APY data.\n\n```typescript\n// Basic usage - strategyId is required\nconst breezeBalances = await sdk.getBreezeBalances({\n  userId: 'your-user-id',\n  strategyId: 'your-strategy-id'\n});\n\n// With optional parameters\nconst breezeBalances = await sdk.getBreezeBalances({\n  userId: 'your-user-id',\n  strategyId: 'your-strategy-id', // Required\n  asset: 'USDC',        // Optional filter by asset symbol or mint address\n  sortBy: 'balance',    // Optional sorting field\n  sortOrder: 'desc',    // Optional sort order (asc/desc)\n  page: 1,              // Optional pagination\n  limit: 10             // Optional pagination\n});\n\n// Returns:\n// {\n//   \"data\": [\n//     {\n//       \"strategy_name\": \"try-breeze-all-assets\",\n//       \"strategy_id\": \"your-strategy-id\",\n//       \"fund_id\": \"6ZBKy52sqCN8UuCFkCbqTRUtYgMTvrqds1MqTXdrYRxt\",\n//       \"token_address\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n//       \"token_symbol\": \"USDC\",\n//       \"token_name\": \"USD Coin\",\n//       \"decimals\": 6,\n//       \"total_position_value\": 2003215,\n//       \"total_deposited_value\": 2003213,\n//       \"yield_earned\": 2,\n//       \"apy\": 4.999327213904799,\n//       \"last_updated\": \"2026-01-07T18:32:05+00:00\"\n//     }\n//   ],\n//   \"meta\": {\n//     \"page\": 1,\n//     \"per_page\": 1000,\n//     \"total\": 2,\n//     \"total_pages\": 1,\n//     \"has_more\": false\n//   }\n// }\n```\n\n##### Strategy Operations\n\n**`getStrategyInfo(strategyId)`**\nGet detailed information about a specific strategy, including supported assets and APY data per asset.\n\n```typescript\nconst strategyInfo = await sdk.getStrategyInfo('your-strategy-id');\n\n// Returns:\n// {\n//   \"strategy_id\": \"your-strategy-id\",\n//   \"strategy_name\": \"try-breeze-all-assets\",\n//   \"assets\": [\n//     \"So11111111111111111111111111111111111111112\",\n//     \"jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v\",\n//     \"USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA\",\n//     \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n//     ...\n//   ],\n//   \"apy\": 4.297586617097455,\n//   \"apy_per_asset\": {\n//     \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\": 5.660193556175348,\n//     \"USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA\": 3.9268279189073074,\n//     \"So11111111111111111111111111111111111111112\": 2.7887160175531163,\n//     ...\n//   }\n// }\n```\n\n##### Transaction Operations\n\n**`createDepositTransaction(options)`**\nCreate a deposit transaction. **Required parameters**: `strategyId`, `baseAsset` (mint address), `amount`, `userKey`.\n\n```typescript\nconst depositTx = await sdk.createDepositTransaction({\n  strategyId: 'your-strategy-id', // Required\n  baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // Required - token mint address (e.g., USDC)\n  amount: 100, // Required\n  userKey: '4Z9byLWE4DhH3KM84mjrkggkCxPuU8eBFgM44Enj41bh', // Required\n  payerKey: '4Z9byLWE4DhH3KM84mjrkggkCxPuU8eBFgM44Enj41bh', // Optional\n  all: false // Optional: whether to deposit all available funds\n});\n// Returns base64 encoded transaction ready for signing\n```\n\n**`createWithdrawTransaction(options)`**\nCreate a withdraw transaction. **Required parameters**: `strategyId`, `baseAsset` (mint address), `amount`, `userKey`.\n\n```typescript\nconst withdrawTx = await sdk.createWithdrawTransaction({\n  strategyId: 'your-strategy-id', // Required\n  baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // Required - token mint address (e.g., USDC)\n  amount: 50, // Required\n  userKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY', // Required\n  payerKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY', // Optional\n  all: false // Optional: whether to withdraw all amount\n});\n// Returns: { success: true, result: \"base64-encoded-transaction\" }\n```\n\n**`getDepositInstructions(options)`**\nGet Solana transaction instructions for deposits. **Required parameters**: `strategyId`, `baseAsset` (mint address), `amount`, `userKey`.\n\n```typescript\nconst depositIx = await sdk.getDepositInstructions({\n  strategyId: 'your-strategy-id', // Required\n  baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // Required - token mint address (e.g., USDC)\n  amount: 100, // Required\n  userKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY', // Required\n  payerKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY', // Optional\n  all: false // Optional\n});\n// Returns: { deposit_instructions: [instruction_objects] }\n```\n\n**`getWithdrawInstruction(options)`**\nGet Solana transaction instruction for withdrawals. **Required parameters**: `strategyId`, `baseAsset` (mint address), `amount`, `userKey`.\n\n```typescript\nconst withdrawIx = await sdk.getWithdrawInstruction({\n  strategyId: 'your-strategy-id', // Required\n  baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // Required - token mint address (e.g., USDC)\n  amount: 50, // Required\n  userKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY', // Required\n  payerKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY', // Optional\n  all: false // Optional\n});\n// Returns: { lut_address: \"...\", withdraw_instructions: instruction_object }\n```\n\n##### Close User Account Operations\n\n**`createCloseUserAccountTransaction(options)`**\nClose a user account and return a serialized transaction. You can identify the account by `userPubkey` + `strategyId` + `mint`.\n\n```typescript\nconst closeTx = await sdk.createCloseUserAccountTransaction({\n  userPubkey: 'your-user-pubkey', // Required\n  strategyId: 'your-strategy-id', // Required with userPubkey\n  mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // Required with userPubkey\n  payer: 'payer-pubkey', // Optional\n  fundsRecipient: 'funds-recipient-pubkey', // Optional\n  userTokenAccount: 'token-account-address' // Optional\n});\n// Returns base64 encoded transaction string\n```\n\n**`getCloseUserAccountInstructions(options)`**\nGet Solana instructions for closing a user account. Same parameters as above.\n\n```typescript\nconst closeIx = await sdk.getCloseUserAccountInstructions({\n  userPubkey: 'your-user-pubkey',\n  strategyId: 'your-strategy-id',\n  mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n});\n// Returns: { close_user_fund_instructions: [instruction_objects] }\n```\n\n##### Health Check\n\n**`getHealth()`**\nCheck if the API server is healthy.\n\n```typescript\nconst health = await sdk.getHealth();\n// Returns: \"OK\"\n```\n\n##### Utility Methods\n\n**`updateApiKey(newApiKey: string)`**\nUpdate the API key used for authentication.\n\n```typescript\nsdk.updateApiKey('new-api-key');\n```\n\n**`getApiClient()`**\nGet the underlying ApiClient instance for advanced usage.\n\n```typescript\nconst apiClient = sdk.getApiClient();\n```\n\n## Complete Example\n\n```typescript\nimport { BreezeSDK } from '@breezebaby/breeze-sdk';\n\nasync function example() {\n  const sdk = new BreezeSDK({\n    baseUrl: 'https://api.breeze.baby/',\n    apiKey: 'your-api-key-here'\n  });\n\n  try {\n    // 1. Get strategy information\n    const strategyInfo = await sdk.getStrategyInfo('your-strategy-id');\n    console.log('Strategy:', strategyInfo.strategy_name);\n    console.log('Overall APY:', strategyInfo.apy);\n    console.log('Supported assets:', strategyInfo.assets.length);\n\n    // 2. Get user yield data\n    const userYield = await sdk.getUserYield({\n      userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY',\n      page: 1,\n      limit: 10\n    });\n    console.log('Yield records:', userYield.data.length);\n\n    // 3. Get breeze balances with strategy details\n    const breezeBalances = await sdk.getBreezeBalances({\n      userId: 'your-user-id',\n      strategyId: 'your-strategy-id',\n      asset: 'USDC'\n    });\n    console.log('Breeze balances:', breezeBalances.data.length);\n    breezeBalances.data.forEach(balance => {\n      console.log(`${balance.token_symbol}: ${balance.total_position_value} (APY: ${balance.apy}%)`);\n    });\n\n    // 4. Get user balances\n    const userBalances = await sdk.getUserBalances({\n      userId: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY',\n      asset: 'USDC',\n      sortBy: 'balance',\n      sortOrder: 'desc'\n    });\n    console.log('Balance records:', userBalances.data.length);\n\n    // 5. Create deposit transaction using strategyId + baseAsset (mint)\n    const deposit = await sdk.createDepositTransaction({\n      strategyId: 'your-strategy-id',\n      baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC mint address\n      amount: 100,\n      userKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY'\n    });\n    console.log('Deposit transaction created:', deposit.success);\n\n    // 6. Get deposit instructions (for manual transaction building)\n    const instructions = await sdk.getDepositInstructions({\n      strategyId: 'your-strategy-id',\n      baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC mint address\n      amount: 100,\n      userKey: '7EcSQsLNbkorQr3igFzfEwFJoPEUgB3NfmDTAigEcoSY'\n    });\n    console.log('Has instructions:', !!instructions.deposit_instructions);\n\n  } catch (error) {\n    console.error('Error:', error.message);\n  }\n}\n```\n\n## Transaction Signing and Execution\n\nFor executing transactions on Solana, you'll need to sign and send them:\n\n```typescript\nimport { Connection, Keypair, VersionedTransaction } from '@solana/web3.js';\nimport bs58 from 'bs58';\n\n// Create connection and keypair\nconst connection = new Connection('https://api.mainnet-beta.solana.com');\nconst userKeypair = Keypair.fromSecretKey(bs58.decode('your-private-key'));\n\n// Create transaction using strategyId + baseAsset (mint address)\nconst depositTx = await sdk.createDepositTransaction({\n  strategyId: 'your-strategy-id',\n  baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC mint address\n  amount: 100,\n  userKey: userKeypair.publicKey.toString()\n});\n\n// Sign and send transaction\nconst txBuffer = Buffer.from(depositTx.result, 'base64');\nconst transaction = VersionedTransaction.deserialize(txBuffer);\ntransaction.sign([userKeypair]);\n\nconst signature = await connection.sendTransaction(transaction);\nconsole.log('Transaction signature:', signature);\n```\n\n## Low-Level API\n\nFor advanced use cases, you can use the individual functions and ApiClient directly:\n\n```typescript\nimport {\n  ApiClient,\n  getUserYield,\n  getUserBalances,\n  getBreezeBalances,\n  getStrategyInfo,\n  getInstructionsForDeposit,\n  getTransactionForDeposit\n} from '@breezebaby/breeze-sdk';\n\nconst apiClient = new ApiClient('https://api.breeze.baby/');\nconst apiKey = 'your-api-key';\n\n// Get strategy info\nconst strategyInfo = await getStrategyInfo(apiClient, apiKey, 'strategy_id');\n\n// Get user data\nconst userYield = await getUserYield(apiClient, apiKey, 'user_id');\nconst userBalances = await getUserBalances(apiClient, apiKey, 'user_id');\n\n// Get breeze balances with strategy details\nconst breezeBalances = await getBreezeBalances(\n  apiClient,\n  apiKey,\n  'user_id',\n  undefined, // asset\n  undefined, // sort_by\n  undefined, // sort_order\n  undefined, // page\n  undefined, // limit\n  'strategy_id'\n);\n```\n\n## Required API Endpoint\n\nThe SDK requires access to the Breeze API at:\n**Base URL:** `https://api.breeze.baby/`\n\nMake sure your API key has access to the following endpoints:\n- `GET /user-yield/{user_id}` - User yield data retrieval\n- `GET /user-balances/{user_id}` - User balance information\n- `GET /breeze-balances/{user_id}` - Breeze-specific balance information with strategy details\n- `GET /strategy-info/{strategy_id}` - Strategy information and APY data\n- `POST /deposit/tx` - Deposit transaction creation\n- `POST /withdraw/tx` - Withdraw transaction creation\n- `POST /deposit/ix` - Deposit instruction generation\n- `POST /withdraw/ix` - Withdraw instruction generation\n- `POST /close-user-account/tx` - Close user account transaction creation\n- `POST /close-user-account/ix` - Close user account instruction generation\n- `GET /health` - Health check\n\n\n### Error Types\n\n- **BreezeApiError**: Thrown for API-related errors\n  - `message: string` - Error message\n  - `status?: number` - HTTP status code  \n  - `code?: string` - Error code ('TIMEOUT', 'NETWORK_ERROR', etc.)\n  - `response?: any` - Full error response from the API\n\n## TypeScript Support\n\nThe SDK is written in TypeScript and provides full type definitions:\n\n```typescript\nimport {\n  UserYield,\n  UserBalances,\n  BreezeBalancesResponse,\n  BreezeBalance,\n  StrategyInfo,\n  TransactionForDeposit,\n  InstructionsForDeposit\n} from '@breezebaby/breeze-sdk';\n\n// All API responses are properly typed\nconst userYield: UserYield = await sdk.getUserYield({\n  userId: 'user_123'\n});\n\nconst userBalances: UserBalances = await sdk.getUserBalances({\n  userId: 'user_123'\n});\n\nconst breezeBalances: BreezeBalancesResponse = await sdk.getBreezeBalances({\n  userId: 'user_123',\n  strategyId: 'strategy_123'\n});\n\nconst strategyInfo: StrategyInfo = await sdk.getStrategyInfo('strategy_123');\n\nconst instructions: InstructionsForDeposit = await sdk.getDepositInstructions({\n  strategyId: 'strategy_123',\n  baseAsset: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // mint address\n  amount: 100,\n  userKey: 'user_key'\n});\n```\n\n## Testing\n\n### Integration Tests\nRun integration tests against real API server:\n\n```bash\nnpm run test:all\n```\n\n### Example Scripts\nTest the SDK with example scripts:\n\nCheck the examples out, in the packages/sdk/examples\n\n## API Endpoints\n\nThe SDK interacts with these API endpoints:\n\n### GET Endpoints\n- `GET /user-yield/{user_id}` - Get user yield data (supports pagination)\n- `GET /user-balances/{user_id}` - Get user balance information (supports asset filtering and sorting)\n- `GET /breeze-balances/{user_id}` - Get breeze balances with strategy details (requires strategyId, supports asset filtering, sorting, and pagination)\n- `GET /strategy-info/{strategy_id}` - Get strategy information including assets and APY data\n\n### POST Endpoints\n- `POST /deposit/tx` - Create deposit transaction (requires strategyId, baseAsset, amount, userKey)\n- `POST /withdraw/tx` - Create withdraw transaction (requires strategyId, baseAsset, amount, userKey)\n- `POST /deposit/ix` - Get deposit instructions (requires strategyId, baseAsset, amount, userKey)\n- `POST /withdraw/ix` - Get withdraw instruction (requires strategyId, baseAsset, amount, userKey)\n- `POST /close-user-account/tx` - Close user account transaction (requires userPubkey+strategyId+mint)\n- `POST /close-user-account/ix` - Close user account instructions (requires userPubkey+strategyId+mint)\n- `GET /health` - Health check\n\n## Development\n\n### Building\n\n```bash\nnpm run build\n```\n\n### Example Usage\n\nThe SDK includes comprehensive examples in the `examples/` directory:\n\n1. **`basic-usage.ts`** - Simple SDK initialization and basic method calls\n2. **`integration-flow.ts`** - Complete transaction flow with Solana execution\n3. **`integration-flow-simple.ts`** - API demonstration without transaction execution\n\n### Project Structure\n\n```\nsrc/\n├── breeze-sdk.ts              # Main SDK class\n├── builder.ts                 # ApiClient and error handling\n├── index.ts                   # Main exports\n├── getUserYield/              # User yield operations\n├── getUserBalances/           # User balance operations\n├── getBreezeBalances/         # Breeze balance operations with strategy details\n├── getStrategyInfo/           # Strategy information operations\n├── transactionForDeposit/     # Deposit transactions\n├── transactionForWithdraw/    # Withdraw transactions\n├── instructionsForDeposit/    # Deposit instructions\n├── instructionsForWithdraw/   # Withdraw instructions\n├── transactionForCloseUserAccount/  # Close user account transactions\n├── instructionsForCloseUserAccount/ # Close user account instructions\n└── health/                    # Health check\n```","readmeFilename":"README.md"}