{"_id":"@1delta/irm-sdk","_rev":"19-ad3ffb75d36f5f0fc38c74808bf829fc","name":"@1delta/irm-sdk","dist-tags":{"latest":"0.0.23"},"versions":{"0.0.1":{"name":"@1delta/irm-sdk","version":"0.0.1","_id":"@1delta/irm-sdk@0.0.1","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"e46c960f0b9940ecdd016559a833d583e0906198","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.1.tgz","fileCount":6,"integrity":"sha512-j5qPWj8fvq9IR/rH6NAIU7EBV0LQcVVPP9+v4QnQWuGre8dvBCpkpVp/S/qDnlxVsOxkUrjfPTDsdhMUefr1yg==","signatures":[{"sig":"MEQCIBY22/xL16Inev2sngahvoWq/bTt8d2w/wTzm841be6LAiAl7i4W/tw3/uVTvR1PyJ/LOo8akWejuc2O0/9WTd5Mqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183290},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.1.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/23d58faeb254a83271da8f7709349ae1/1delta-irm-sdk-0.0.1.tgz","_integrity":"sha512-j5qPWj8fvq9IR/rH6NAIU7EBV0LQcVVPP9+v4QnQWuGre8dvBCpkpVp/S/qDnlxVsOxkUrjfPTDsdhMUefr1yg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.47","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.1_1773058321450_0.08632112245818657","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@1delta/irm-sdk","version":"0.0.2","_id":"@1delta/irm-sdk@0.0.2","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"003cde267f0101cd705ac016a9a62ade48e30e56","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.2.tgz","fileCount":14,"integrity":"sha512-HXv9R6r4H2QsIs2yo07xNo9wezbK+5r30N5GM5bFC1MB/3cabUw8JEwMHuKqYLFGhoxCY8pC0XYcpSfDm6Adtg==","signatures":[{"sig":"MEUCIF6F+0s4wmXG7vPAzDThVEJVEp8jWCgglbY0ymnWZ3V0AiEAp51wKldvsbwHinb5Bs6S/b7prMiE7UuCIjzQcg4bOHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214708},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.2.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/2602e8adbb44534147e79008383166e8/1delta-irm-sdk-0.0.2.tgz","_integrity":"sha512-HXv9R6r4H2QsIs2yo07xNo9wezbK+5r30N5GM5bFC1MB/3cabUw8JEwMHuKqYLFGhoxCY8pC0XYcpSfDm6Adtg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.47","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.2_1773068535163_0.18857794686078044","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@1delta/irm-sdk","version":"0.0.3","_id":"@1delta/irm-sdk@0.0.3","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"c5598d9c37b15fd3e17f4e1f0c747d0081f1f91c","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.3.tgz","fileCount":18,"integrity":"sha512-/VXamN3DNAnBujLMCcM2P1KRqxXz1hXjO2HjmlzUKsY/akuFGHMoa9qRmrmqXtY26gZM/pkU2rpRpmqHA0zERA==","signatures":[{"sig":"MEYCIQDq20vZA4rJXBDlil7+6dzALfr8QEnrZ/tLMilwabHu2QIhAOZtgTG3/WxiaQgkdzJiS0MKQFxTFWCIFfOE7+6Up050","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":258016},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.3.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/1fef2b61cb6b691a428aabf58570499c/1delta-irm-sdk-0.0.3.tgz","_integrity":"sha512-/VXamN3DNAnBujLMCcM2P1KRqxXz1hXjO2HjmlzUKsY/akuFGHMoa9qRmrmqXtY26gZM/pkU2rpRpmqHA0zERA==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.47","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.3_1773092534286_0.3624377993320378","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@1delta/irm-sdk","version":"0.0.4","_id":"@1delta/irm-sdk@0.0.4","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"5cfc6a88fdacc277ee621265427ebbe5104e3730","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.4.tgz","fileCount":18,"integrity":"sha512-es7GAc+/eQ+AfO/uDB0KRYEjC92UDifc/k4mQSnkIeTZ1POUvN8shnfRhcX+ph2CQRWCXXMnBybwXZPKVrz2xg==","signatures":[{"sig":"MEQCIDY7lyc8vpsH6jhKEyUXEh6bNvgkTldo4bFET+hkjx/dAiBQ0uixFkH152ML5JpVG/nbI5n3dQyrdSEPZbse5PuoSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":259900},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.4.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/40be5006dcbe38f78dd7dbc0ab01dec8/1delta-irm-sdk-0.0.4.tgz","_integrity":"sha512-es7GAc+/eQ+AfO/uDB0KRYEjC92UDifc/k4mQSnkIeTZ1POUvN8shnfRhcX+ph2CQRWCXXMnBybwXZPKVrz2xg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.47","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.4_1773099314712_0.6979257750499908","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@1delta/irm-sdk","version":"0.0.5","_id":"@1delta/irm-sdk@0.0.5","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"01aad7339fa5e4581c21096a6c0b130e1749d0cc","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.5.tgz","fileCount":18,"integrity":"sha512-vcNwqX9Y2JPHva4ORx+HGczF9iyaEZXVzOnV9QYr+4vkBEMrWzrSRWjFeoc0RwbOT4CKd6QHnRtqUu3HpkL+xQ==","signatures":[{"sig":"MEUCIEeszkcifhS2NKPtmDnc5dZkqPKkKC0e8y186ITGwiUbAiEA4FrqHL1CpN7P0UIIyhLuv47GHAcPtGG0ahEmagrsDeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268345},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.5.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/9d61556cd9e4dcf091911d56efcec1f1/1delta-irm-sdk-0.0.5.tgz","_integrity":"sha512-vcNwqX9Y2JPHva4ORx+HGczF9iyaEZXVzOnV9QYr+4vkBEMrWzrSRWjFeoc0RwbOT4CKd6QHnRtqUu3HpkL+xQ==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.47","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.5_1773103129472_0.287568916370073","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@1delta/irm-sdk","version":"0.0.6","_id":"@1delta/irm-sdk@0.0.6","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"ce1619a4d0f44f659b0cb994a97d5ab8750b0b81","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.6.tgz","fileCount":18,"integrity":"sha512-CckCW77XHgxVGcyrZ4+RFWwP40Dp6yaT7QqQLxwyEfnxQyfmztKoYpacAzvXPIbfjM4PxH8kAOHGWIJV2MTTDg==","signatures":[{"sig":"MEUCIQDA8TPsOBeqvuqySLZjFGiQ7iHUwXFv5W6O2AzbwonjHQIgD7y3lBBPPOuMwXhbmZWV6h4jo9J5vA4i0tfiA1x35iA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261902},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.6.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/42794b267f71237364e0402de4afc9f2/1delta-irm-sdk-0.0.6.tgz","_integrity":"sha512-CckCW77XHgxVGcyrZ4+RFWwP40Dp6yaT7QqQLxwyEfnxQyfmztKoYpacAzvXPIbfjM4PxH8kAOHGWIJV2MTTDg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.47","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.6_1773139645417_0.6664395091178161","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@1delta/irm-sdk","version":"0.0.8","_id":"@1delta/irm-sdk@0.0.8","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"1744fb00374043d20dc6da8ca03e818a3deeee32","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.8.tgz","fileCount":20,"integrity":"sha512-OxkqZe40eVLKju7CRUlM2ruNNZxXctCEQ83GtKPlpqH2xRlYJlQy/8ZREzxer236Y5MW2hK8wpXMzlScHXViVg==","signatures":[{"sig":"MEYCIQCnPhoYmMWcuA1m+V41p8eZjNSwt+AxBObbw/p1EsSHvwIhAOQcyrZwob9Qv7lcn2NMHxEOSrua4kBmA0Q6TiEFxdkh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296082},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.8.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/70cc6fdaa33bfe8b02eef5fd58c43fa6/1delta-irm-sdk-0.0.8.tgz","_integrity":"sha512-OxkqZe40eVLKju7CRUlM2ruNNZxXctCEQ83GtKPlpqH2xRlYJlQy/8ZREzxer236Y5MW2hK8wpXMzlScHXViVg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.17","@1delta/providers":"0.0.50","@1delta/chain-registry":"0.0.4","@1delta/lender-registry":"0.0.18"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.8_1773188578122_0.7707391047324215","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@1delta/irm-sdk","version":"0.0.10","_id":"@1delta/irm-sdk@0.0.10","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"cb65250e39c5a02c0786c5137b149e5153f52716","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.10.tgz","fileCount":22,"integrity":"sha512-JuSXbNIThnMZJKzNsTFxJmsuD5jzRGCB7NCkFlrCFy7MG4+Hf2Ll9klPb1xLSmAYQfGCb/miCziOni08iw6+GA==","signatures":[{"sig":"MEUCIQDoZjv/w6wGwjs2c21Wk/EkaYAFCWlN5chRCl9kawf9MgIgZPv4aSInejyDZ5unFP7ILIR85iWMGeZ8JVTSGLE4xhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527329},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.10.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/19a38772c60982b1234422170aa7c3c8/1delta-irm-sdk-0.0.10.tgz","_integrity":"sha512-JuSXbNIThnMZJKzNsTFxJmsuD5jzRGCB7NCkFlrCFy7MG4+Hf2Ll9klPb1xLSmAYQfGCb/miCziOni08iw6+GA==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.26","@1delta/providers":"0.0.59","@1delta/chain-registry":"0.0.5","@1delta/lender-registry":"0.0.26"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.10_1777895539729_0.9959321404152583","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@1delta/irm-sdk","version":"0.0.11","_id":"@1delta/irm-sdk@0.0.11","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"fcae5b6e06f7608b63185101a0ecc464d3ef9311","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.11.tgz","fileCount":39,"integrity":"sha512-0q/ZjqP4RyB+cWafHUHLTLJcRe0h+H+rwYdiacyF2uBAchn7RCcsK5W4ck7HRHehQbz0KhD5ORLN9KURBxBflQ==","signatures":[{"sig":"MEUCIGCIK8uTXfJt/RzztGAjokRUrWVq9Ptt4L0eI9tRbwI1AiEArp0U28s8k6u4POf84DI4BGsYggpf7/juTpcwj2GFeaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686352},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"cd76b1aeb672a8a2301dc085cad5667c36f5f68e","scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"deprecated":"Broken publish (literal workspace:* deps, uninstallable). Use 0.0.12+.","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"workspace:*","@1delta/providers":"workspace:*","@1delta/chain-registry":"workspace:*","@1delta/lender-registry":"workspace:*"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.11_1784915903965_0.5623986288810086","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@1delta/irm-sdk","version":"0.0.12","_id":"@1delta/irm-sdk@0.0.12","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"98f0630f9cd5429f43e3ef8eb52411b4af30a121","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.12.tgz","fileCount":39,"integrity":"sha512-gVtXw9uPUtywA+cVcQiSWefSus3qBR4QaNyB0vYKxxWFPrB8YlFZc7O0C8AadFzL1D7ZipsCKfRY4ysPbekl8w==","signatures":[{"sig":"MEQCIFYNqg3PwZolc08pC7wc+pE8OLvUHs4tHtOTLwuMSW7dAiA8aM58ZH2jRtLkNCLan9Os1LeyhRzW6Kz4lNnM+qYx9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686330},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.12.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/0d2304ae5dc3008d5cd547318df0c192/1delta-irm-sdk-0.0.12.tgz","_integrity":"sha512-gVtXw9uPUtywA+cVcQiSWefSus3qBR4QaNyB0vYKxxWFPrB8YlFZc7O0C8AadFzL1D7ZipsCKfRY4ysPbekl8w==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.34","@1delta/providers":"0.0.62","@1delta/chain-registry":"0.0.6","@1delta/lender-registry":"0.0.36"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.12_1784916151480_0.7226228805084853","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@1delta/irm-sdk","version":"0.0.13","_id":"@1delta/irm-sdk@0.0.13","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"d2e5f2e7f182cfc4f184138185ae4273d035d962","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.13.tgz","fileCount":24,"integrity":"sha512-39mHdjRTgPGUgjdTXte1wsa2zb7LtV6Ud7+yNijxXPqD7o0pHzkkOGK4TNvS9Vp2ISSSOp/1qhYfOGg0s03dFA==","signatures":[{"sig":"MEYCIQCQjqv5c9YF3vGunVIiNSfWdq3NyRQvGuM3NvWQ/HTgjQIhANqSRuZOSz+nk5rGVfvq8kpfM+aykOrat03naZNWRQ21","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614483},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.13.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/a528966dd83c0c972ff1be758f1a0971/1delta-irm-sdk-0.0.13.tgz","_integrity":"sha512-39mHdjRTgPGUgjdTXte1wsa2zb7LtV6Ud7+yNijxXPqD7o0pHzkkOGK4TNvS9Vp2ISSSOp/1qhYfOGg0s03dFA==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.34","@1delta/providers":"0.0.62","@1delta/chain-registry":"0.0.6","@1delta/lender-registry":"0.0.36"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.13_1784923722815_0.19516680905564465","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@1delta/irm-sdk","version":"0.0.14","_id":"@1delta/irm-sdk@0.0.14","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"0f7e6f3a0f529b52eb637b2defe7f37e7ec26bf6","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.14.tgz","fileCount":24,"integrity":"sha512-lN4s2palLxcF1bubCRUgouW3oQTUXl8pfC9m9LLrShI3ljo4L0H70XsilNs3ZT45P+1ks/mTH6VrzRRdK86c/A==","signatures":[{"sig":"MEYCIQCGTqVlgKZnNgae4bWc86HmAOllga3/24iGD6VBEwMZ5wIhAO6Ce5g7TsBqZfVuzjLPSWrGXb5yGu1cxrxUPFhTsxU1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619857},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.14.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/edb9c22cc8b30f192c0c06a6692679eb/1delta-irm-sdk-0.0.14.tgz","_integrity":"sha512-lN4s2palLxcF1bubCRUgouW3oQTUXl8pfC9m9LLrShI3ljo4L0H70XsilNs3ZT45P+1ks/mTH6VrzRRdK86c/A==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.34","@1delta/providers":"0.0.62","@1delta/chain-registry":"0.0.6","@1delta/lender-registry":"0.0.36"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.14_1785144970498_0.45036671768913394","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@1delta/irm-sdk","version":"0.0.16","_id":"@1delta/irm-sdk@0.0.16","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"cf13c4c2280dd9919fda21068f367d84a853977c","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.16.tgz","fileCount":24,"integrity":"sha512-ffwA9DxobTm0J6KKfvzrKTlf5cKhZuUbP91l3jWdfGuJtpspTA67U0sn+I6S45PlqPC24oN4pMr2sko1Bq13kg==","signatures":[{"sig":"MEUCIQCwbV6bib0V8ZDCSLGGo8LjYM5+jrWuGMC8D2/HVvBqRAIgD8qZWGvhd55pMWXXFMc1gDdUr+qucjDzisL5CiyQr3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":629035},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.16.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/f4f5ce13466d7aa09401190b9aaf9755/1delta-irm-sdk-0.0.16.tgz","_integrity":"sha512-ffwA9DxobTm0J6KKfvzrKTlf5cKhZuUbP91l3jWdfGuJtpspTA67U0sn+I6S45PlqPC24oN4pMr2sko1Bq13kg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.38","@1delta/providers":"0.0.63","@1delta/chain-registry":"0.0.6","@1delta/lender-registry":"0.0.41"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.16_1785924119186_0.6458505796568466","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@1delta/irm-sdk","version":"0.0.18","_id":"@1delta/irm-sdk@0.0.18","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"5140e7df94a957564414afa4b61bd4de575ae1d0","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.18.tgz","fileCount":24,"integrity":"sha512-tRe+feGtylSxh+0FJl/YJMJnTGbXQfvOjNKJUAauvAan9seIfm5Loqh0QiTzXlXhYp7ew0n4N9pigcQgzjRINw==","signatures":[{"sig":"MEYCIQDKrcKoUpxczcM+Yjdy7FNhCuinjqHvCb+4+77zTWmLWgIhAIaAZu7OtkPOmpiHvAUwqQC3/i6dJP5N/fKieuElsP1l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":653471},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.18.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/a16adc6df38c630762e6b4f42063c509/1delta-irm-sdk-0.0.18.tgz","_integrity":"sha512-tRe+feGtylSxh+0FJl/YJMJnTGbXQfvOjNKJUAauvAan9seIfm5Loqh0QiTzXlXhYp7ew0n4N9pigcQgzjRINw==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.38","@1delta/providers":"0.0.63","@1delta/chain-registry":"0.0.6","@1delta/lender-registry":"0.0.42"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.18_1786084413965_0.41764362692165213","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@1delta/irm-sdk","version":"0.0.20","_id":"@1delta/irm-sdk@0.0.20","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"68093d84afc5cc15d4d9bcfcdac97af062e402a0","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.20.tgz","fileCount":24,"integrity":"sha512-3V3qyz1XxshWf2Dy2sbruIaZdBmkQ5X/ecJSAl9QwYW31cQ9TTMLEKRSoF9yr61Xquo+pVFmCUaGWoxPkGc+tg==","signatures":[{"sig":"MEUCIQCJkVP1+mpkEz2QDKKj4Xqw8qUow2U+HYxn6eQv075+fQIgMZrYhSgTG93LlZc2KgJ7Nit4XtEY5pU8mOpIo0Vnl+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":699839},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.20.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/b4599ac37e6086bf6d3320afafc5d1e8/1delta-irm-sdk-0.0.20.tgz","_integrity":"sha512-3V3qyz1XxshWf2Dy2sbruIaZdBmkQ5X/ecJSAl9QwYW31cQ9TTMLEKRSoF9yr61Xquo+pVFmCUaGWoxPkGc+tg==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.43","@1delta/providers":"0.0.63","@1delta/chain-registry":"0.0.6","@1delta/lender-registry":"0.0.45"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.20_1786610949609_0.332604416830671","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@1delta/irm-sdk","version":"0.0.21","_id":"@1delta/irm-sdk@0.0.21","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"d6a6053e58d85ebce19d4e31d34a43deca2d375a","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.21.tgz","fileCount":24,"integrity":"sha512-Oxp3rwEA6ooq5A7+ZAk2AF/9kFZ0i8jkOGja5vmxq2hkMBE2U5qbEkXkbcrUkFkH5JjOeCtQCUzaMhqpQbhdow==","signatures":[{"sig":"MEUCIQDNwnYoQ90DPR/awM0yBntdF3hPIgjCT2BcJ/O0NyrYAAIgT3Hh2+OLY1WbpYnZPg+k43AQbYOsKXDisKdP88KT/D4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":703269},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.21.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/9fc437dac6afff4fe2d0175878edb448/1delta-irm-sdk-0.0.21.tgz","_integrity":"sha512-Oxp3rwEA6ooq5A7+ZAk2AF/9kFZ0i8jkOGja5vmxq2hkMBE2U5qbEkXkbcrUkFkH5JjOeCtQCUzaMhqpQbhdow==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.48","@1delta/providers":"0.0.65","@1delta/chain-registry":"0.0.7","@1delta/lender-registry":"0.0.46"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.21_1787047608081_0.2522022609823442","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@1delta/irm-sdk","version":"0.0.22","_id":"@1delta/irm-sdk@0.0.22","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"dist":{"shasum":"f72d473cc3e860a3b3a178f132d9038ad1c07ea3","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.22.tgz","fileCount":24,"integrity":"sha512-TT+NtzaYfmffDMWoQL8OvFkxbozAu2Xmlt197t2VRSeFSZW6wqhx+x164fQPmRrLyli2f7oppGAgUPe67RUCGA==","signatures":[{"sig":"MEUCIARDQ9tyKldpkzcqBZ11kl0kQnpDjDrOTZjLeLKsXCloAiEAxXuuB0+LnVcVKUd/lRTxKu7lzoj7dvTiRbknjx9MZQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":729605},"main":"dist/index.js","_from":"file:1delta-irm-sdk-0.0.22.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"test":"vitest --run","build":"tsup src/index.ts --format esm,cjs --dts"},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"_resolved":"/tmp/d5d8729bbbebf603a4073551b82bad3f/1delta-irm-sdk-0.0.22.tgz","_integrity":"sha512-TT+NtzaYfmffDMWoQL8OvFkxbozAu2Xmlt197t2VRSeFSZW6wqhx+x164fQPmRrLyli2f7oppGAgUPe67RUCGA==","_npmVersion":"10.9.3","description":"Unified interest rate model SDK for all lending protocols","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@1delta/data-sdk":"0.0.48","@1delta/providers":"0.0.65","@1delta/chain-registry":"0.0.7","@1delta/lender-registry":"0.0.46"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/irm-sdk_0.0.22_1787055257077_0.7207993400398618","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@1delta/irm-sdk","version":"0.0.23","description":"Unified interest rate model SDK for all lending protocols","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"dependencies":{"@1delta/chain-registry":"0.0.7","@1delta/data-sdk":"0.0.51","@1delta/lender-registry":"0.0.49","@1delta/providers":"0.0.67"},"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.0.18"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts","test":"vitest --run"},"_id":"@1delta/irm-sdk@0.0.23","_integrity":"sha512-+yWXvaUxs2DIflNxc5gjJkq57xLeJq4EWFpTSR03Cbth0d1eIPlEUBySkS2jdb9vZOZb2gB9wey4t3OMVxLkTg==","_resolved":"/tmp/2b9998a20ab70179989c27c98fc3c075/1delta-irm-sdk-0.0.23.tgz","_from":"file:1delta-irm-sdk-0.0.23.tgz","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-+yWXvaUxs2DIflNxc5gjJkq57xLeJq4EWFpTSR03Cbth0d1eIPlEUBySkS2jdb9vZOZb2gB9wey4t3OMVxLkTg==","shasum":"15fb61a91499a6a1dd2bc0c982f104d00ec9c150","tarball":"https://registry.npmjs.org/@1delta/irm-sdk/-/irm-sdk-0.0.23.tgz","fileCount":24,"unpackedSize":729605,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID8XW8vsVXysCYLWgp65pJjqy++foFpeu0cLKuMVTcSrAiEAi3j11nSzFXziqhpce2pA/Kihsepdq5pVebCt/+SsM0o="}]},"_npmUser":{"name":"delta-achthar","email":"achim@1delta.io"},"directories":{},"maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/irm-sdk_0.0.23_1787748176549_0.15999060660586117"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T12:12:01.377Z","modified":"2026-08-26T12:42:56.886Z","0.0.1":"2026-03-09T12:12:01.591Z","0.0.2":"2026-03-09T15:02:15.353Z","0.0.3":"2026-03-09T21:42:14.454Z","0.0.4":"2026-03-09T23:35:14.864Z","0.0.5":"2026-03-10T00:38:49.651Z","0.0.6":"2026-03-10T10:47:25.562Z","0.0.8":"2026-03-11T00:22:58.273Z","0.0.10":"2026-05-04T11:52:19.900Z","0.0.11":"2026-07-24T17:58:24.114Z","0.0.12":"2026-07-24T18:02:31.614Z","0.0.13":"2026-07-24T20:08:42.961Z","0.0.14":"2026-07-27T09:36:10.650Z","0.0.16":"2026-08-05T10:01:59.319Z","0.0.18":"2026-08-07T06:33:34.122Z","0.0.20":"2026-08-13T08:49:09.767Z","0.0.21":"2026-08-18T10:06:48.231Z","0.0.22":"2026-08-18T12:14:17.270Z","0.0.23":"2026-08-26T12:42:56.673Z"},"description":"Unified interest rate model SDK for all lending protocols","maintainers":[{"name":"delta-achthar","email":"achim@1delta.io"}],"readme":"# @1delta/irm-sdk\n\nUnified interest rate model SDK for DeFi lending protocols. Supports Aave,\nCompound V2, Compound V3, Morpho, and Euler.\n\n## Installation\n\n```bash\npnpm add @1delta/irm-sdk\n```\n\n## Architecture\n\nThe SDK separates concerns into three layers:\n\n```\nFetchers (on-chain data)  →  Models (pure math)  →  Impact (rate simulations)\n```\n\n- **Fetchers** read raw on-chain state via multicall — current rates, totals,\n  and optionally static IRM parameters (slopes, kinks, reserve factors).\n- **Models** compute rates from parameters as pure functions — no RPC, no side\n  effects.\n- **Impact** simulates how user actions (deposit, borrow, withdraw, repay,\n  leverage) shift rates.\n\nIRM parameters fall into two categories:\n\n| Category    | Examples                                                  | Update frequency          |\n| ----------- | --------------------------------------------------------- | ------------------------- |\n| **Static**  | Slopes, kinks, reserve factors, strategy addresses        | Rarely (governance votes) |\n| **Dynamic** | Total deposits, total borrows, utilization, current rates | Every block               |\n\nStatic data can be fetched once, stored (JSON file, database, git repo), and\nreused across many dynamic fetches to reduce RPC calls.\n\n---\n\n## 1. Fetching On-Chain Data\n\n### Quick start: single lender\n\n```ts\nimport { fetchIRM } from '@1delta/irm-sdk'\n\nconst result = await fetchIRM({ chainId: '1', lender: 'AAVE_V3' })\n\nfor (const [asset, data] of Object.entries(result.assets)) {\n  console.log(asset, data.currentState)\n  // { totalDeposits, totalDebt, utilization, borrowRate, depositRate }\n}\n```\n\n### Per-protocol fetchers\n\n```ts\nimport {\n  fetchAaveIRM,\n  fetchCompoundV3IRM,\n  fetchMorphoIRM,\n  fetchEulerIRM,\n} from '@1delta/irm-sdk'\nimport { multicallRetryUniversal } from '@1delta/providers'\n\nconst result = await fetchAaveIRM('1', 'AAVE_V3', multicallRetryUniversal)\n```\n\n### Custom multicall / RPC overrides\n\n```ts\nconst result = await fetchIRM({\n  chainId: '1',\n  lender: 'AAVE_V3',\n  multicall: myCustomMulticall,\n  rpcOverrides: { '1': ['https://my-rpc.example.com'] },\n})\n```\n\n### Batching multiple lenders\n\nUse the prepare/parse pattern to combine multiple lenders into a single\nmulticall:\n\n```ts\nimport { prepareFetch, batchPrepared } from '@1delta/irm-sdk'\nimport { multicallRetryUniversal } from '@1delta/providers'\n\nconst lenders = ['AAVE_V3', 'COMPOUND_V3', 'MORPHO_BLUE']\n\nconst prepared = lenders\n  .map((lender) => prepareFetch({ chainId: '1', lender }))\n  .filter(Boolean)\n\nconst results = await batchPrepared('1', prepared, multicallRetryUniversal)\n// results[i] corresponds to prepared[i]\n```\n\n---\n\n## 2. Static vs Dynamic Data\n\n### Overview\n\n| Protocol | Phases | Static fetcher | Phase functions | Output type |\n|----------|--------|----------------|-----------------|-------------|\n| **Aave** (all forks) | 2 | `fetchAaveStatic` | `fetchAaveStaticPhase1`, `fetchAaveStaticPhase2` | `AaveStaticData` |\n| **Compound V2** (all forks) | 2 | `fetchCompoundV2Static` | `fetchCompoundV2StaticPhase1`, `fetchCompoundV2StaticPhase2` | `CompoundV2StaticData` |\n| **Compound V3** | 1 | `fetchCompoundV3Static` | — | `CompoundV3StaticData` |\n| **Euler** | 1 | `fetchEulerStatic` | — | `EulerStaticData` |\n| **Morpho** | 1 | `fetchMorphoStatic` | — | `MorphoStaticData` |\n\nAll functions share the same base signature:\n\n```ts\n(chainId: string, lender: string, multicall: MulticallFn, rpcOverrides?: Record<string, string[]>) => Promise<T | null>\n```\n\n### Phase reference\n\n#### Aave — 2 phases (phase 2 depends on phase 1)\n\n**Phase 1** — discover strategy addresses + reserve factors\n\n```ts\nfetchAaveStaticPhase1(\n  chainId: string,\n  lender: string,\n  multicall: MulticallFn,\n  rpcOverrides?: Record<string, string[]>,\n): Promise<AaveStaticPhase1Result | null>\n```\n\nReads from the **ProtocolDataProvider** contract per reserve asset:\n- `getReserveConfigurationData` → `reserveFactor` (basis points → 0-1 fraction)\n- `getInterestRateStrategyAddress` → `strategyAddress`\n\nReturns:\n```ts\ninterface AaveStaticPhase1Result {\n  /** Per-asset config, keyed by asset address */\n  assets: Record<string, AaveAssetConfig>\n  /** Unique strategy address → first reserve address using it (input for phase 2) */\n  strategyToAsset: Record<string, string>\n}\n\ninterface AaveAssetConfig {\n  strategyAddress: string  // InterestRateStrategy contract address\n  reserveFactor: number    // 0-1 fraction (e.g. 0.1 = 10%)\n}\n```\n\n**Phase 2** — fetch IRM params from strategy contracts\n\n```ts\nfetchAaveStaticPhase2(\n  chainId: string,\n  strategyToAsset: Record<string, string>,  // ← from phase 1\n  multicall: MulticallFn,\n  rpcOverrides?: Record<string, string[]>,\n): Promise<AaveStaticPhase2Result>\n```\n\nReads from each unique **InterestRateStrategy** contract:\n- `getBaseVariableBorrowRate`, `getVariableRateSlope1`, `getVariableRateSlope2`\n- `getMaxVariableBorrowRate`, `OPTIMAL_USAGE_RATIO`\n\nReturns:\n```ts\ninterface AaveStaticPhase2Result {\n  /** IRM params per unique strategy contract address */\n  strategies: Record<string, AaveIRMParams>\n}\n\ninterface AaveIRMParams {\n  baseVariableBorrowRate: number  // APR %\n  variableRateSlope1: number     // APR % below optimal\n  variableRateSlope2: number     // APR % above optimal\n  optimalUsageRatio: number      // 0-1 fraction (e.g. 0.8 = 80%)\n  maxRate?: number               // APR % maximum rate cap\n  reserveFactor?: number         // populated when combined with asset config\n}\n```\n\n**Combined** (`fetchAaveStatic` runs both phases sequentially):\n```ts\ninterface AaveStaticData {\n  assets: Record<string, AaveAssetConfig>       // from phase 1\n  strategies: Record<string, AaveIRMParams>     // from phase 2\n}\n```\n\n---\n\n#### Compound V2 — 2 phases (phase 2 depends on phase 1)\n\n**Phase 1** — discover IRM addresses + reserve factors\n\n```ts\nfetchCompoundV2StaticPhase1(\n  chainId: string,\n  lender: string,\n  multicall: MulticallFn,\n  rpcOverrides?: Record<string, string[]>,\n): Promise<CompoundV2StaticPhase1Result | null>\n```\n\nReads from each **cToken** contract:\n- `interestRateModel` → IRM contract address\n- `reserveFactorMantissa` → reserve factor (WAD → 0-1 fraction)\n\nReturns:\n```ts\ninterface CompoundV2StaticPhase1Result {\n  /** Per-cToken config, keyed by cToken address */\n  tokens: Record<string, CompoundV2TokenConfig>\n  /** Unique IRM contract addresses (input for phase 2) */\n  uniqueIRMs: string[]\n}\n\ninterface CompoundV2TokenConfig {\n  irmAddress: string     // JumpRateModel contract address\n  reserveFactor: number  // 0-1 fraction (e.g. 0.2 = 20%)\n}\n```\n\n**Phase 2** — fetch JumpRate params from IRM contracts\n\n```ts\nfetchCompoundV2StaticPhase2(\n  chainId: string,\n  irmAddresses: string[],  // ← uniqueIRMs from phase 1\n  multicall: MulticallFn,\n  rpcOverrides?: Record<string, string[]>,\n): Promise<CompoundV2StaticPhase2Result>\n```\n\nReads from each unique **JumpRateModel** contract:\n- `baseRatePerBlock`, `multiplierPerBlock`, `jumpMultiplierPerBlock`, `kink`\n- `blocksPerYear` or `blocksOrSecondsPerYear` (to derive `blockTimeSeconds`)\n\nThe fetcher auto-detects the correct annualization factor by reading the\ncontract's own blocks-per-year value and deriving `blockTimeSeconds` from it\n(`31536000 / blocksPerYear`). This handles forks that hardcode a\n`blocksPerYear` different from the chain's actual block time (e.g. TENDER on\nArbitrum uses `blocksPerYear=2628000` despite 1-second blocks). Venus forks\nexpose `blocksOrSecondsPerYear` (from `TimeManagerV8`) and are handled the\nsame way. If neither getter is available, the chain's native block time is\nused as a fallback.\n\nReturns:\n```ts\ninterface CompoundV2StaticPhase2Result {\n  /** JumpRate params per unique IRM contract address */\n  irmParams: Record<string, CompoundV2JumpRateParams>\n}\n\ninterface CompoundV2JumpRateParams {\n  baseRatePerBlock: bigint          // 18-decimal\n  multiplierPerBlock: bigint        // 18-decimal slope below kink\n  jumpMultiplierPerBlock: bigint    // 18-decimal slope above kink\n  kink: bigint                      // 18-decimal (e.g. 0.8e18 = 80%)\n  blockTimeSeconds: number          // derived from contract's blocksPerYear\n}\n```\n\n**Combined** (`fetchCompoundV2Static` runs both phases sequentially):\n```ts\ninterface CompoundV2StaticData {\n  tokens: Record<string, CompoundV2TokenConfig>          // from phase 1\n  irmParams: Record<string, CompoundV2JumpRateParams>    // from phase 2\n}\n```\n\n---\n\n#### Compound V3 — 1 phase\n\n```ts\nfetchCompoundV3Static(chainId, lender, multicall, rpcOverrides?)\n  → CompoundV3StaticData | null\n```\n\nReads 8 parameters directly from the **Comet** contract in a single multicall.\n\n```ts\ninterface CompoundV3StaticData {\n  curveParams: CompoundV3CurveParams\n}\n\ninterface CompoundV3CurveParams {\n  borrowKink: bigint                            // 18-decimal\n  borrowPerSecondInterestRateBase: bigint\n  borrowPerSecondInterestRateSlopeLow: bigint\n  borrowPerSecondInterestRateSlopeHigh: bigint\n  supplyKink: bigint                            // 18-decimal\n  supplyPerSecondInterestRateBase: bigint\n  supplyPerSecondInterestRateSlopeLow: bigint\n  supplyPerSecondInterestRateSlopeHigh: bigint\n}\n```\n\n---\n\n#### Euler — 1 phase\n\n```ts\nfetchEulerStatic(chainId, lender, multicall, rpcOverrides?)\n  → EulerStaticData | null\n```\n\nCalls **VaultLens.getVaultInfoFull** per vault and extracts only the static IRM\nfields. Only LinearKink (type 2) vaults are included; other IRM types are omitted.\n\n```ts\ninterface EulerStaticData {\n  /** Per-vault IRM config, keyed by vault address */\n  vaults: Record<string, EulerVaultConfig>\n}\n\ninterface EulerVaultConfig {\n  underlying: string     // underlying asset address\n  interestFee: number    // 0-1 fraction (protocol fee on borrow interest)\n  modelType: number      // IRM type (2 = LinearKink)\n  params: EulerLinearKinkParams\n}\n\ninterface EulerLinearKinkParams {\n  baseRate: bigint   // per-second, scaled by 1e27\n  slope1: bigint     // per-second, scaled by 1e27\n  slope2: bigint     // per-second, scaled by 1e27\n  kink: bigint       // scaled by uint32.max (4294967295)\n}\n```\n\n---\n\n#### Morpho — 1 phase\n\n```ts\nfetchMorphoStatic(chainId, lender, multicall, rpcOverrides?)\n  → MorphoStaticData | null\n```\n\nCalls the **Morpho lens** contract and extracts only the governance-set `fee`\nper market.\n\n> **Note:** `rateAtTarget` is **NOT** static — it adapts dynamically based on\n> utilization history. Only `fee` is a true static parameter.\n\n```ts\ninterface MorphoStaticData {\n  /** Per-market fee config, keyed by market ID (bytes32) */\n  markets: Record<string, MorphoMarketConfig>\n}\n\ninterface MorphoMarketConfig {\n  loanToken: string  // loan token address\n  fee: bigint        // WAD-scaled (e.g. 0.1e18 = 10% protocol fee)\n}\n```\n\n### Fetching static data — combined (all phases)\n\n```ts\nimport {\n  fetchAaveStatic,\n  fetchCompoundV2Static,\n  fetchCompoundV3Static,\n  fetchEulerStatic,\n  fetchMorphoStatic,\n} from '@1delta/irm-sdk'\nimport { multicallRetryUniversal } from '@1delta/providers'\n\nconst aaveStatic    = await fetchAaveStatic('1', 'AAVE_V3', multicallRetryUniversal)\nconst compV2Static  = await fetchCompoundV2Static('56', 'VENUS', multicallRetryUniversal)\nconst compV3Static  = await fetchCompoundV3Static('1', 'COMPOUND_V3_USDC', multicallRetryUniversal)\nconst eulerStatic   = await fetchEulerStatic('1', 'EULER_V2', multicallRetryUniversal)\nconst morphoStatic  = await fetchMorphoStatic('1', 'MORPHO_BLUE', multicallRetryUniversal)\n```\n\n### Fetching static data — individual phases\n\nFor RPC environments with rate limits, run each phase separately with delays\nor different providers between phases:\n\n```ts\nimport {\n  fetchAaveStaticPhase1,\n  fetchAaveStaticPhase2,\n  fetchCompoundV2StaticPhase1,\n  fetchCompoundV2StaticPhase2,\n  fetchCompoundV3Static,\n  fetchEulerStatic,\n  fetchMorphoStatic,\n} from '@1delta/irm-sdk'\n\n// --- Aave (2 phases) ---\n\n// Phase 1: ProtocolDataProvider → strategy addresses + reserve factors\nconst aaveP1 = await fetchAaveStaticPhase1('1', 'AAVE_V3', multicall)\n// => { assets: Record<address, { strategyAddress, reserveFactor }>,\n//      strategyToAsset: Record<strategyAddr, firstReserveAddr> }\n\nawait delay(2000) // rate-limit pause, switch RPC, etc.\n\n// Phase 2: InterestRateStrategy contracts → IRM params\n//   Input: aaveP1.strategyToAsset (from phase 1)\nconst aaveP2 = await fetchAaveStaticPhase2('1', aaveP1.strategyToAsset, multicall)\n// => { strategies: Record<strategyAddr, AaveIRMParams> }\n\n// Combine → AaveStaticData\nconst aaveStatic = { assets: aaveP1.assets, strategies: aaveP2.strategies }\n\n// --- Compound V2 (2 phases) ---\n\n// Phase 1: cTokens → IRM addresses + reserve factors\nconst cv2P1 = await fetchCompoundV2StaticPhase1('56', 'VENUS', multicall)\n// => { tokens: Record<cTokenAddr, { irmAddress, reserveFactor }>,\n//      uniqueIRMs: string[] }\n\nawait delay(2000)\n\n// Phase 2: JumpRateModel contracts → rate params\n//   Input: cv2P1.uniqueIRMs (from phase 1)\nconst cv2P2 = await fetchCompoundV2StaticPhase2('56', cv2P1.uniqueIRMs, multicall)\n// => { irmParams: Record<irmAddr, CompoundV2JumpRateParams> }\n\n// Combine → CompoundV2StaticData\nconst compV2Static = { tokens: cv2P1.tokens, irmParams: cv2P2.irmParams }\n\n// --- Single-phase protocols (no phase split needed) ---\n\nconst compV3Static = await fetchCompoundV3Static('1', 'COMPOUND_V3_USDC', multicall)\nconst eulerStatic  = await fetchEulerStatic('1', 'EULER_V2', multicall)\nconst morphoStatic = await fetchMorphoStatic('1', 'MORPHO_BLUE', multicall)\n```\n\n### GitHub Actions integration\n\nThe phase separation is designed for a periodic GitHub Action that fetches and\nstores static IRM parameters:\n\n```\n┌─ GitHub Action (cron) ────────────────────────────────────────────┐\n│                                                                   │\n│  for each (lender, chainId):                                      │\n│    if aave-type:                                                  │\n│      p1 = fetchAaveStaticPhase1(chainId, lender, multicall)       │\n│      delay(...)                                                   │\n│      p2 = fetchAaveStaticPhase2(chainId, p1.strategyToAsset, mc)  │\n│      store { assets: p1.assets, strategies: p2.strategies }       │\n│    if compound-v2-type:                                           │\n│      p1 = fetchCompoundV2StaticPhase1(chainId, lender, mc)        │\n│      delay(...)                                                   │\n│      p2 = fetchCompoundV2StaticPhase2(chainId, p1.uniqueIRMs, mc) │\n│      store { tokens: p1.tokens, irmParams: p2.irmParams }        │\n│    if compound-v3-type:                                           │\n│      store fetchCompoundV3Static(chainId, lender, multicall)      │\n│    if euler-type:                                                 │\n│      store fetchEulerStatic(chainId, lender, multicall)           │\n│    if morpho-type:                                                │\n│      store fetchMorphoStatic(chainId, lender, multicall)          │\n│                                                                   │\n│  git commit + push JSON files                                     │\n└───────────────────────────────────────────────────────────────────┘\n```\n\nPhase dependency graph:\n```\nAave:         Phase1 ──► strategyToAsset ──► Phase2 ──► AaveStaticData\nCompound V2:  Phase1 ──► uniqueIRMs ──────► Phase2 ──► CompoundV2StaticData\nCompound V3:  (single call) ──────────────────────────► CompoundV3StaticData\nEuler:        (single call) ──────────────────────────► EulerStaticData\nMorpho:       (single call) ──────────────────────────► MorphoStaticData\n```\n\n> **BigInt serialization:** `CompoundV2JumpRateParams`, `CompoundV3CurveParams`,\n> `EulerLinearKinkParams`, and `MorphoMarketConfig` contain `bigint` fields.\n> Use a custom JSON replacer/reviver (e.g. `bigint → string`) when storing to files.\n\n### Unified static fetcher\n\n```ts\nimport { fetchStatic } from '@1delta/irm-sdk'\n\n// Dispatch by protocol type — runs all phases combined\nconst data   = await fetchStatic('1', 'AAVE_V3', 'aave', multicallRetryUniversal)\nconst euler  = await fetchStatic('1', 'EULER_V2', 'euler', multicallRetryUniversal)\nconst morpho = await fetchStatic('1', 'MORPHO_BLUE', 'morpho', multicallRetryUniversal)\n```\n\n### Using pre-fetched static data\n\nPass static data to fetchers to skip redundant on-chain reads:\n\n```ts\nimport { prepareFetch, batchPrepared } from '@1delta/irm-sdk'\nimport type { AaveStaticData } from '@1delta/irm-sdk'\nimport fs from 'fs'\n\n// Load static data from file (fetched by a GitHub Action, cron job, etc.)\nconst aaveStatic: AaveStaticData = JSON.parse(\n  fs.readFileSync('data/aave-v3-mainnet.json', 'utf8'),\n)\n\n// Now only dynamic calls (current rates, totals) are made\nconst prepared = prepareFetch({\n  chainId: '1',\n  lender: 'AAVE_V3',\n  staticData: { aave: aaveStatic },\n})\n\nconst [result] = await batchPrepared('1', [prepared!], multicall)\n```\n\n### Recommended storage workflow\n\n```\nGitHub Action (periodic) ──► fetch static IRM params ──► commit to data repo (JSON)\n                                                              │\nConsumer service ──► read static JSON ──► pass to fetchers ──► fetch dynamic state ──► store in DB\n```\n\n1. **Static params repo**: a GitHub Action periodically reads on-chain static\n   IRM params and commits them as JSON files.\n2. **Consumer service**: imports `@1delta/irm-sdk`, loads static JSON, calls\n   fetchers with `staticData` to get only dynamic state, then writes results to\n   a database.\n\n---\n\n## 3. Parsing Fetch Results\n\nEvery fetcher returns a `FetchIRMResult`:\n\n```ts\ninterface FetchIRMResult {\n  chainId: string\n  lender: string\n  poolAddress?: string\n  assets: Record<string, AssetIRMResult>\n}\n\ninterface AssetIRMResult {\n  asset: string // asset address\n  currentState: {\n    totalDeposits: number // normalized (not raw decimals)\n    totalDebt: number\n    utilization: number // 0 to 1\n    borrowRate: number // APR %\n    depositRate: number // APR %\n  }\n  modelParams?: IRMParams // protocol-specific IRM parameters\n  curve?: RateCurve // piecewise-linear borrow rate curve\n  timestamp: number // fetch time (ms)\n}\n```\n\nExample: extract and store data from results:\n\n```ts\nconst result = await fetchIRM({ chainId: '1', lender: 'AAVE_V3' })\n\nconst rows = Object.entries(result.assets).map(([asset, data]) => ({\n  chainId: result.chainId,\n  lender: result.lender,\n  asset,\n  ...data.currentState,\n  timestamp: data.timestamp,\n  // Optional: serialize model params for later rate simulation\n  modelParams: data.modelParams ? JSON.stringify(data.modelParams) : null,\n}))\n\n// Insert rows into your database\nawait db.insertMany('irm_snapshots', rows)\n```\n\n---\n\n## 4. Rate Calculation (Models)\n\nCompute rates from parameters — pure math, no RPC:\n\n```ts\nimport { calculateRates, buildCurve } from '@1delta/irm-sdk'\n\n// Calculate rates at a given utilization\nconst { borrowRate, depositRate } = calculateRates(0.8, {\n  model: 'aave',\n  baseVariableBorrowRate: 0,\n  variableRateSlope1: 4,\n  variableRateSlope2: 60,\n  optimalUsageRatio: 0.8,\n})\n\n// Build a full rate curve (array of utilization/rate points)\nconst curve = buildCurve({\n  model: 'aave',\n  baseVariableBorrowRate: 0,\n  variableRateSlope1: 4,\n  variableRateSlope2: 60,\n  optimalUsageRatio: 0.8,\n})\n// curve.kinks = [{ utilization: 0, rate: 0 }, ..., { utilization: 1, rate: 64 }]\n```\n\n### Per-model namespaces\n\n```ts\nimport { aave, compoundV2, compoundV3, euler } from '@1delta/irm-sdk'\n\naave.buildKinks(params)\naave.calculateRates(utilization, params)\ncompoundV3.calculateCurveRates(utilization, params)\neuler.calculateLinearKinkRates(utilization, params)\n```\n\n### Using fetched modelParams directly\n\n```ts\nconst result = await fetchIRM({ chainId: '1', lender: 'AAVE_V3' })\n\nfor (const [asset, data] of Object.entries(result.assets)) {\n  if (data.modelParams) {\n    // Calculate what the rate would be at 90% utilization\n    const rates = calculateRates(0.9, { model: 'aave', ...data.modelParams })\n    console.log(`${asset} at 90% util: borrow=${rates.borrowRate}%`)\n  }\n}\n```\n\n---\n\n## 5. Rate Impact / Shift Simulation\n\nSimulate how user actions affect pool rates:\n\n```ts\nimport {\n  computeRateShift,\n  computeDepositShift,\n  computeBorrowShift,\n  computeWithdrawShift,\n  computeRepayShift,\n} from '@1delta/irm-sdk'\nimport type { PoolState, RateFn } from '@1delta/irm-sdk'\n\n// Pool state from a fetch result\nconst pool: PoolState = {\n  totalDeposits: 1_000_000,\n  totalDebt: 500_000,\n}\n\n// Rate function from model params\nconst rateFn: RateFn = (u) => calculateRates(u, { model: 'aave', ...params })\n\n// Simulate specific actions\nconst depositShift = computeDepositShift(pool, rateFn, 100_000)\nconst borrowShift = computeBorrowShift(pool, rateFn, 50_000)\nconst withdrawShift = computeWithdrawShift(pool, rateFn, 100_000)\nconst repayShift = computeRepayShift(pool, rateFn, 50_000)\n\n// General shift with arbitrary deltas\nconst shift = computeRateShift(pool, rateFn, {\n  depositDelta: 100_000,\n  debtDelta: -50_000,\n})\n// => { oldUtilization, newUtilization, oldBorrowRate, newBorrowRate, oldDepositRate, newDepositRate }\n```\n\n### Batch impact scenarios\n\n```ts\nimport {\n  computeImpact,\n  DEFAULT_DEPOSIT_AMOUNTS,\n  DEFAULT_BORROW_AMOUNTS,\n} from '@1delta/irm-sdk'\n\nconst impacts = computeImpact(pool, rateFn, {\n  depositAmounts: DEFAULT_DEPOSIT_AMOUNTS,\n  borrowAmounts: DEFAULT_BORROW_AMOUNTS,\n})\n// impacts.deposit  => RateImpact[] (one per deposit amount)\n// impacts.borrow   => RateImpact[]\n// impacts.withdraw => RateImpact[]\n// impacts.repay    => RateImpact[]\n```\n\n### Leverage scenarios\n\n```ts\nimport {\n  computeLeverageOpenShift,\n  computeLeverageCloseShift,\n} from '@1delta/irm-sdk'\n\n// Open leverage: deposit collateral + borrow simultaneously\nconst openShift = computeLeverageOpenShift(pool, rateFn, {\n  depositAmount: 100_000,\n  borrowAmount: 80_000,\n})\n\n// Close leverage: withdraw collateral + repay simultaneously\nconst closeShift = computeLeverageCloseShift(pool, rateFn, {\n  withdrawAmount: 100_000,\n  repayAmount: 80_000,\n})\n```\n\n---\n\n## 6. Conversion Utilities\n\n```ts\nimport {\n  aprToApy,\n  apyToApr, // APR <-> APY (per-second compounding)\n  aprPercentToApyPercent, // percentage variants\n  rayToAprPercent,\n  aaveRayApyToAprPercent, // Aave RAY-scaled values\n  perBlockRateToAprPercent, // Compound V2 per-block rates\n  perSecondRateToAprPercent, // Compound V3 per-second rates\n  continuousRateToAprPercent, // Morpho continuous rates\n  depositRateFromBorrowRate, // derive deposit rate\n  getBlockTime,\n  setBlockTime, // chain block times\n} from '@1delta/irm-sdk'\n```\n\n---\n\n## Supported Protocols\n\n| Protocol              | Fetcher              | Model         | Static Data            | Static Fetcher          |\n| --------------------- | -------------------- | ------------- | ---------------------- | ----------------------- |\n| Aave V2/V3            | `fetchAaveIRM`       | `aave`        | `AaveStaticData`       | `fetchAaveStatic`       |\n| Compound V2 (+ forks) | `fetchCompoundV2IRM` | `compound-v2` | `CompoundV2StaticData` | `fetchCompoundV2Static` |\n| Compound V3 (Comet)   | `fetchCompoundV3IRM` | `compound-v3` | `CompoundV3StaticData` | `fetchCompoundV3Static` |\n| Morpho Blue           | `fetchMorphoIRM`     | `morpho`      | `MorphoStaticData`     | `fetchMorphoStatic`     |\n| Euler V2              | `fetchEulerIRM`      | `euler`       | `EulerStaticData`      | `fetchEulerStatic`      |\n","readmeFilename":"README.md"}