{"_id":"@arkade-os/solver-discovery","_rev":"16-fe7470a38575fdde282744b258b42471","name":"@arkade-os/solver-discovery","dist-tags":{"latest":"0.2.7"},"versions":{"0.1.0":{"name":"@arkade-os/solver-discovery","version":"0.1.0","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.1.0","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"13b922843b228f01b85c98b9532e32ca7dbfb356","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.1.0.tgz","fileCount":34,"integrity":"sha512-kSSZrL7zQCa0jQlCtZSQ0EmjQcHudv0xUBIu1bJX4h0tXd8Ptl6WyvJR+j8En48TT81lNv9k2/wsWjzMSICHSg==","signatures":[{"sig":"MEQCIE0pqyT0sia5Uh17rp08FdBlnJ/PzJG6fE0NF/709b6NAiBfcRBf3i61UgvYjaLi1P4YMNBkoSrpEmFklBppsRjiKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97350},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"670196df41337929f76f7e70e3458e71d5d88a92","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.1.0_1784030873704_0.589254330320129","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@arkade-os/solver-discovery","version":"0.1.1","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.1.1","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"d8b5ba855b3e5b427ca3abc0aa784bd211fa8c2e","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.1.1.tgz","fileCount":38,"integrity":"sha512-qDV1ticulRQl/C1264HvMfr7JVtRji8stSpi8xn6W2S/F6P0TtvZF+6LAkXUcO4U4bi8XEzZOeywoG7Kpl7hmQ==","signatures":[{"sig":"MEUCIQDLSkMFThbtR89QLfDAhCrToLnhvOjyV943TsMOgS7CFAIgGpsZe6IL9lQWElehRA0yQNvQxp8tsgOpA+P8K3ch/04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121506},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"gitHead":"d8d76ce52dd90cef46cb38a58fff6053dadbba9a","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.1.1_1784050151899_0.934614355528876","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@arkade-os/solver-discovery","version":"0.1.2","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.1.2","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"2e0e38762d612f417b68c3655713280e5cedc42b","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.1.2.tgz","fileCount":38,"integrity":"sha512-RAHt5YO5X47JcwAxBPTgTTzrNWrrdbQr730eCQab/IIrXznnDQLZzx4B6x4m055GzfMGdc2ipFVd9x45s6ePtQ==","signatures":[{"sig":"MEUCIHE9ASOgwZKrILVFNsuwY2TPQLqm88REXqMYr9XkWd15AiEAuZFy1IOxMfWyEixJAFrG2Gy0L9HynsJgTqiIwAC+R+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126688},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"gitHead":"b797d8434e01f738d43c2aa291f0b0d328a388d1","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.1.2_1784065907848_0.23773907691784713","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@arkade-os/solver-discovery","version":"0.1.3","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.1.3","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"2edae0341e544edb48095fc77445c63f71a59297","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.1.3.tgz","fileCount":38,"integrity":"sha512-4fpiqjFnoEWOWOD99c7v10mhj4DId/sTESzY71JG17lwoiTOkWTpBD+/KWKfAFqG+E+agL+oDizmkK6TOmmTHw==","signatures":[{"sig":"MEUCIGRR9BSZKrZvUoQHg5zXzV3Qg3G6tkYxUs6hmweCc7+mAiEA4oregDoJ3luCom+oxTE346bZXXN+CxrqWrLRezvqgxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150365},"main":"./dist/index.js","type":"module","_from":"file:arkade-os-solver-discovery-0.1.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"_resolved":"/private/var/folders/98/zgs49t8s2w3gv4vm0j5hr0mw0000gn/T/c21681fb4c7b21fcf82c82cd21e0e61f/arkade-os-solver-discovery-0.1.3.tgz","_integrity":"sha512-4fpiqjFnoEWOWOD99c7v10mhj4DId/sTESzY71JG17lwoiTOkWTpBD+/KWKfAFqG+E+agL+oDizmkK6TOmmTHw==","repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.1.3_1784234226852_0.05186480276633931","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@arkade-os/solver-discovery","version":"0.1.4","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.1.4","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"53ebaa839f5872a07b175814eaf602de292c5826","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.1.4.tgz","fileCount":38,"integrity":"sha512-xksH+DerDgmsLhXtWka6j9/Y3Giy/70THEPkRaVOhrHxSHg2OjutzcLFHHTuqKFZvVsOVIDqU6eQKk9ZMrebPg==","signatures":[{"sig":"MEQCIH0r0VjoJzr43Of6I1Ko/tEYxPgDumVE6T+84QEMaqI5AiBzMsprBuEih9FxDGW/h29X2zheiMqIOFA/pDq5TccY0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150387},"main":"./dist/index.js","type":"module","_from":"file:arkade-os-solver-discovery-0.1.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"_resolved":"/private/var/folders/98/zgs49t8s2w3gv4vm0j5hr0mw0000gn/T/d5fe451f99b32cdc5d00f548b73c03a8/arkade-os-solver-discovery-0.1.4.tgz","_integrity":"sha512-xksH+DerDgmsLhXtWka6j9/Y3Giy/70THEPkRaVOhrHxSHg2OjutzcLFHHTuqKFZvVsOVIDqU6eQKk9ZMrebPg==","repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.1.4_1784640548573_0.3928065962751168","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@arkade-os/solver-discovery","version":"0.1.5","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.1.5","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"bdd7a9925549bdc610dff1bcbafb8894b30bb323","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.1.5.tgz","fileCount":38,"integrity":"sha512-GMcwsuzSPXXAfhThRVe/ab/iKS2DTIVjpMtnrrGGvp0kS98Unkr8C+EVSjjBLv8zcTIsKvh8huhT7oGTSjh8Ig==","signatures":[{"sig":"MEQCIHetfYvQ26dQ6W8MmvRuEOkmpVBaBpPgxkAQq8rZ4auJAiBI+h7T6b9zFnEgsGTn3tpdKJ9odBwq709C8Va+Wdn+Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138251},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"gitHead":"12d118896aba7a5686b5dc0e7fef53f990e63b79","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"louisark","email":"louis@arklabs.to"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"11.12.1","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.1.5_1785244502461_0.9581130037714018","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@arkade-os/solver-discovery","version":"0.2.0","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.0","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"72bcf39aca06a8adf8174c62595e3ece2b4c3fc6","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.0.tgz","fileCount":38,"integrity":"sha512-vNi207O0oGICGVgndlpatCWeZ+T8gcNWlk6JI3Aka6Fz7s3Is5CU2ZYTJGaUBbH//rkxKI4bU5mbo6jOL+FnIg==","signatures":[{"sig":"MEUCIQC6FkHM8c13s/eKq4nvfG8e9120SpOgKwlnlH4usglY7wIgP/E9GJAaDAaijbYhs0UNZXun6JGDKCeA/QCqJWppPTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168549},"main":"./dist/index.js","type":"module","_from":"file:arkade-os-solver-discovery-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"_resolved":"/private/var/folders/98/zgs49t8s2w3gv4vm0j5hr0mw0000gn/T/f5273ccdcdb76fde7a4eef823d936c15/arkade-os-solver-discovery-0.2.0.tgz","_integrity":"sha512-vNi207O0oGICGVgndlpatCWeZ+T8gcNWlk6JI3Aka6Fz7s3Is5CU2ZYTJGaUBbH//rkxKI4bU5mbo6jOL+FnIg==","repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.0_1785974638427_0.04622607625333708","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@arkade-os/solver-discovery","version":"0.2.1","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.1","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"db28b3159be7f8ce8674528d7390e2d92dd86935","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.1.tgz","fileCount":38,"integrity":"sha512-OKZI4X063bDxBKQ0pN4lFJFVufZ4JIXcdt2TWIlUQhg9C7AzuZxr2AGcUSg41EYzOS0P6OL+uOoiurvx2LYs5w==","signatures":[{"sig":"MEQCIDapygzkQLL6JnzfCivenJlGmNrwnU7KAX85GanxZAo5AiBtqPPdUmWIMIpKQgy04SMxFkncYaTfpYHWnjijaQGAgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170004},"main":"./dist/index.js","type":"module","_from":"file:arkade-os-solver-discovery-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"_resolved":"/private/var/folders/98/zgs49t8s2w3gv4vm0j5hr0mw0000gn/T/90bae2693a1dbf62b0ebe9c6e74d1171/arkade-os-solver-discovery-0.2.1.tgz","_integrity":"sha512-OKZI4X063bDxBKQ0pN4lFJFVufZ4JIXcdt2TWIlUQhg9C7AzuZxr2AGcUSg41EYzOS0P6OL+uOoiurvx2LYs5w==","repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.1_1785976108754_0.9350027053241001","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@arkade-os/solver-discovery","version":"0.2.2","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.2","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"8ef6eaf24b634d280e575a3f6239f0c54488fbdc","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.2.tgz","fileCount":38,"integrity":"sha512-E6Eg0ltswFHTbT0egooTwQhYpRDO69RDHTNI9ehldBgjUhyPMD8pbwNNcW2EBLmj162p7fP2REo9BvpVzrfXQA==","signatures":[{"sig":"MEYCIQCnI75zWK7sWNFohEkZl54tIl2OmVYcwBwEz2vl7DqtvgIhAOoB2qoK71JS+v/pVYIq4scdOqV8+Bde0lmxCLIprPuh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172838},"main":"./dist/index.js","type":"module","_from":"file:arkade-os-solver-discovery-0.2.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs"},"_npmUser":{"name":"tiero","email":"marco@vulpem.com"},"_resolved":"/private/var/folders/98/zgs49t8s2w3gv4vm0j5hr0mw0000gn/T/2979d652bcdcb7dc07c2d7936a44cc68/arkade-os-solver-discovery-0.2.2.tgz","_integrity":"sha512-E6Eg0ltswFHTbT0egooTwQhYpRDO69RDHTNI9ehldBgjUhyPMD8pbwNNcW2EBLmj162p7fP2REo9BvpVzrfXQA==","repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"10.9.2","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.2_1786058451557_0.4819382634927667","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@arkade-os/solver-discovery","version":"0.2.3","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.3","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"5dcbd4082cc914ec8a6da30ef1da462fb7d1f414","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.3.tgz","fileCount":38,"integrity":"sha512-i77/BCAmHY4fec41HfYb5osu+QkCEOf2jLha1HX5pkp6bHGrm10WG8eOGREKqPCC4bOI3E8cKwEVGxP0qlNt5g==","signatures":[{"sig":"MEUCIAww6gWDpw6FazITDm3rB/UFyGuEDTgZPKEFLA+h6dj+AiEAx4YNAkCImUa3EmjUXEcK4Vku4o/NYCxpm0EYlA3K5iY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179974},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"gitHead":"58059f359230032de31d8de83594f7249b502011","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"louisark","email":"louis@arklabs.to"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"11.12.1","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.3_1786528348578_0.14714293672881507","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@arkade-os/solver-discovery","version":"0.2.4","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.4","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"gringokiwi","email":"gringokiwi@icloud.com"},{"name":"kukks","email":"evilkukka@gmail.com"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"6edc5e733067c38d7dd2ba0b9717f5c7a2522ff6","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.4.tgz","fileCount":38,"integrity":"sha512-iLjcZhnNmzndD6KLbgmMbyYL/JqmMYA2gSOn6MrESAMHWuF68CRtqn9ijvnDJDz8BzYXuFMZ/ghZfLjIvrdAdA==","signatures":[{"sig":"MEYCIQCUFPl+SbVNYzGmow3HQJu20GsL9AqzaguZFl6rsb58jgIhAPj3KJOvxj2oXH6zNwsEBTh5mP/V+acXjJxtFUNjr1Tx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211117},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"kukks","email":"evilkukka@gmail.com"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"11.13.0","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.4_1789039029796_0.4274499576746069","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@arkade-os/solver-discovery","version":"0.2.5","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.5","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"gringokiwi","email":"gringokiwi@icloud.com"},{"name":"kukks","email":"evilkukka@gmail.com"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"4aee0a3540aabd54101014297ab8f16cdca2d21e","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.5.tgz","fileCount":42,"integrity":"sha512-eCJESOApkm78OWLPSRSi7RajysHPAkRozD2Um+IimRbbgSK7e+/1Ufw4hrOR8LuPKwMRvDQx7nUbcl1CL8HsDg==","signatures":[{"sig":"MEUCIQCrS/ItXbPbs+9xUk/SXJXoVcxydD8zJXiJDF2sHmmbVwIgaEMMHMTlo9SIQKUs2h/p2gocmFvx796XqUQwWwj2tHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDsmGWFeECeWTe6PPHVkDhaVuvNWQX1m6VuPI1xgfQIoAIhAK6ZMBuMt0ooeEcy9Q6hsvUfKu/kBvDI/trxw0UVW/nQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215030},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"gitHead":"b576a2041923838c5ba13d2adcfc092b5f536771","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"rm -rf dist && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"kukks","email":"evilkukka@gmail.com"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"11.13.0","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.5_1789389376630_0.7618279596457167","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@arkade-os/solver-discovery","version":"0.2.6","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"license":"MIT","_id":"@arkade-os/solver-discovery@0.2.6","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"gringokiwi","email":"gringokiwi@icloud.com"},{"name":"kukks","email":"evilkukka@gmail.com"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"cf1902fb0279d8153b021b3f9fa67df92752573b","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.6.tgz","fileCount":42,"integrity":"sha512-v2QwaIiAH3t4ywfwHvd7UM7aNAec9U9fqmoFb8CAzJbf22AHU3zYP68IMjaDwWJs1/i/HUmc4DTqtpXl3sW46w==","signatures":[{"sig":"MEYCIQDxgmAAp2z8Bi/zeFaDhXmcH5qLqM/PRy3kk+TG6iWALAIhAMJS9lKbZTPkiEVcnl9ymSW/VSTc/kGfVDdXEXzDr83w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAgmIpeh1sAJ97310YI+jdKFTCRa1wQ8bMMZCNFJpxVxAiBysYqn+Jl1tHUCKEx5ev62FvCrKWGlvG3Bh9HbaT/J8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226643},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"kukks","email":"evilkukka@gmail.com"},"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"11.13.0","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/solver-discovery_0.2.6_1789652631460_0.7299231092850578","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"_id":"@arkade-os/solver-discovery@0.2.7","bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"dist":{"shasum":"9af51584ae9194faad283d25d08dffb18a01d5f7","tarball":"https://registry.npmjs.org/@arkade-os/solver-discovery/-/solver-discovery-0.2.7.tgz","fileCount":42,"integrity":"sha512-T5dfiezUG5YKtzOmX1Z2E0LePF3bx6unsqq7UPgha0Zp9PQFcodYMYl6T1i0AbruaGup5XWq8Die5wusiA5qUA==","signatures":[{"sig":"MEQCIHr7t7jHq96+5EQysLwQdZpi7/IKkaUeNizDRpITVgYyAiBV1k/HTzPUn1ae+ykzBGX8PAtw/kHfBt1qpfOpeYxOsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD55J6D+cAttguGtOD2n8bf2EPg++Kl59PE1YrkTsw4wwIgDYBtTLZUsxuzPcy8MIvazr+tVxX2+rtqZrYC+fPsxq8="}],"unpackedSize":227465},"main":"./dist/index.js","name":"@arkade-os/solver-discovery","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"license":"MIT","scripts":{"test":"node --experimental-strip-types --test test/*.test.ts","build":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json","release":"node ../../scripts/release-discovery-client.mjs","prepublishOnly":"npm run build"},"version":"0.2.7","_npmUser":{"name":"kukks","email":"evilkukka@gmail.com"},"homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"_npmVersion":"11.13.0","description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","directories":{},"maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"gringokiwi","email":"gringokiwi@icloud.com"},{"name":"kukks","email":"evilkukka@gmail.com"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/solver-discovery_0.2.7_1789672646751_0.011734010907749282"}}},"time":{"created":"2026-07-14T12:07:53.585Z","modified":"2026-09-17T19:17:27.092Z","0.1.0":"2026-07-14T12:07:53.830Z","0.1.1":"2026-07-14T17:29:12.031Z","0.1.2":"2026-07-14T21:51:47.981Z","0.1.3":"2026-07-16T20:37:06.977Z","0.1.4":"2026-07-21T13:29:08.730Z","0.1.5":"2026-07-28T13:15:02.634Z","0.2.0":"2026-08-06T00:03:58.567Z","0.2.1":"2026-08-06T00:28:28.914Z","0.2.2":"2026-08-06T23:20:51.715Z","0.2.3":"2026-08-12T09:52:28.725Z","0.2.4":"2026-09-10T11:17:09.941Z","0.2.5":"2026-09-14T12:36:16.724Z","0.2.6":"2026-09-17T13:43:51.606Z","0.2.7":"2026-09-17T19:17:26.854Z"},"bugs":{"url":"https://github.com/arkade-os/solver-registry/issues"},"license":"MIT","homepage":"https://github.com/arkade-os/solver-registry/tree/master/packages/discovery-client#readme","keywords":["arkade","ark","solver","price-feed","discovery","bitcoin","expo"],"repository":{"url":"git+https://github.com/arkade-os/solver-registry.git","type":"git","directory":"packages/discovery-client"},"description":"Portable ESM client for discovering solver price feeds from Arkade solver registries (browser / Node / Expo).","maintainers":[{"name":"pietro909","email":"dev@pietro.uno"},{"name":"gringokiwi","email":"gringokiwi@icloud.com"},{"name":"kukks","email":"evilkukka@gmail.com"},{"name":"tiero","email":"marco@vulpem.com"},{"name":"louisark","email":"louis@arklabs.to"},{"name":"altafan","email":"pietro@vulpem.com"},{"name":"bordalix","email":"joao.bordalo@gmail.com"}],"readme":"# @arkade-os/solver-discovery\r\n\r\nA tiny, portable **ESM** client for the consumer (maker) side of the\r\n[Arkade Market Discovery Protocol](../../docs/arkade-discovery-spec.md): discover\r\nthe price feeds solvers advertise, rank markets, convert amounts, and compute the\r\n`wantAmount` for an offer.\r\n\r\n- **Runs everywhere** — browser, Node, and Expo / React Native. The root\r\n  entrypoint has zero runtime dependencies; only global `fetch` is used (and\r\n  it's injectable).\r\n- **No `eval` / `new Function`** — validation is hand-rolled, so it works under a\r\n  strict CSP and on Hermes (React Native), where JSON-Schema engines like Ajv\r\n  fail.\r\n- **Exact math** — prices are `BigInt` rationals and amounts are `BigInt`, so no\r\n  float error ever touches an amount.\r\n\r\n## Install\r\n\r\n```sh\r\nnpm install @arkade-os/solver-discovery\r\n```\r\n\r\n## Quick start\r\n\r\n```ts\r\nimport { discover, listMarkets, bestMarket, quoteOffer } from \"@arkade-os/solver-discovery\";\r\n\r\n// 1. Fetch + merge the registries you follow (plus any pinned local cards).\r\n//    With no `registries`, discover() follows the published index for `network`\r\n//    (default \"bitcoin\") — the default lives in this library, so its URLs can\r\n//    change in a release without you shipping a client-side table. Pass `[]` to\r\n//    opt out, or your own URLs to override the default rather than merge it.\r\nconst { markets, warnings } = await discover({});\r\nif (warnings.length) console.warn(warnings);\r\n\r\n// 2. List pairs for UI selection, then pick the best market for one pair.\r\n//    `solvable` counts how many markets can pay out each side — don't offer a\r\n//    direction whose receive side is at 0.\r\nconsole.log(listMarkets(markets).map((p) => `${p.base_asset.ticker}/${p.quote_asset.ticker} base:${p.solvable.base} quote:${p.solvable.quote}`));\r\nconst market = bestMarket(markets, {\r\n  baseId: \"arkade:bitcoin/slip44:0\",\r\n  quoteId: \"arkade:bitcoin/asset:47004bf4a5fbdb2221f708030528de68ea28f5980044e546b7bb5a352457d1f30000\",\r\n  wantSide: \"quote\", // we give base and receive quote; skips markets that can't pay out quote\r\n});\r\nif (!market) throw new Error(\"no market solves this side of the pair\");\r\n\r\n// 3. Quote an offer — fetches the advertised feed and returns a ready plan.\r\nconst plan = await quoteOffer(market, { give: \"base\", giveAmount: \"0.01\" }); // 0.01 BTC\r\nconsole.log(`${plan.deposit.display} ${plan.deposit.asset.ticker}`\r\n  + ` -> ${plan.receive.display} ${plan.receive.asset.ticker}`);\r\n// plan.receive.atomic is the wantAmount to request; then createOffer(...) as usual.\r\nif (!plan.limits.withinLimits) console.warn(\"amount is outside the market's size limits\");\r\n```\r\n\r\n## Corridor markets\r\n\r\nA market side may settle on another rail — Lightning (`bolt11`) or an L1\r\noutput (`bitcoin`), besides the `arkade` default — and that corridor is named\r\nas part of the side's `id`, a CAIP-19-shaped asset id (`arkade:bitcoin/\r\nslip44:0`, `bolt11:bitcoin/slip44:0`, …), not a separate field. Market\r\nidentity is simply `base_asset.id` + `quote_asset.id`, so a Lightning BTC\r\nmarket and an onchain BTC market never collapse into one group. Selection\r\ntakes the whole id, corridor included:\r\n\r\n> **Upgrading from 0.1.x:** corridor entries have no feed fields, and 0.1.x\r\n> `quoteOffer` throws on them (`price_feed` was assumed present; its type is\r\n> now `string | undefined`). Upgrade before following any registry that lists\r\n> corridor markets — a registry should not merge its first corridor card until\r\n> its clients have.\r\n>\r\n> **Upgrading from a pre-bundling client (before this rewrite):** `pair`,\r\n> `base_corridor`, and `quote_corridor` are gone from **solver cards**, and\r\n> `SelectOptions.baseCorridor`/`quoteCorridor` are removed along with them.\r\n> Pass the fully-qualified id (e.g. `\"bolt11:bitcoin/slip44:0\"`, not\r\n> `\"btc\"` + `quoteCorridor: \"lightning\"`) to `baseId`/`quoteId` instead.\r\n>\r\n> **Published indexes still carry all three for one release**, so a v0 client\r\n> keeps working across the cutover. For the same reason an index's `id` is\r\n> down-projected to the v0 grammar (`\"btc\"` or a 68-hex AssetId) and the\r\n> CAIP-19 identity travels in `caip19_id` beside it — read it via `assetIdOf`,\r\n> and pass CAIP-19 to `baseId`/`quoteId` as above, which matches either\r\n> spelling. Every one of these fields disappears when the window closes; none\r\n> of them exists on a card.\r\n\r\n```ts\r\nconst lnMarket = bestMarket(markets, {\r\n  baseId: \"arkade:bitcoin/slip44:0\",\r\n  quoteId: \"bolt11:bitcoin/slip44:0\", // the corridor is part of the id; omit it and you select the arkade leg\r\n  wantSide: \"quote\",\r\n});\r\n```\r\n\r\nA same-asset corridor market carries no feed — its price is identically 1 and\r\n`fee_bps` plus `fee_flat` are the whole price. `quoteOffer` / `planOffer` handle\r\nthat transparently (nothing is fetched), but the plan is a pre-quote estimate: the\r\nbinding amounts come from the solver's RFQ quote, requested via the market's\r\n`discovery_pubkey` over its `transports` (both present on every corridor entry).\r\nThe RFQ exchange itself is out of this package's scope.\r\n\r\n## Amount conversion (Arkade Assets)\r\n\r\nEach asset carries a `decimals` field (8 for BTC and most Arkade assets).\r\nConversion between human and atomic units is exact:\r\n\r\n```ts\r\nimport { toAtomic, fromAtomic } from \"@arkade-os/solver-discovery\";\r\n\r\ntoAtomic(\"1.5\", 8);          // => 150000000n\r\nfromAtomic(150000000n, 8);   // => \"1.5\"\r\ntoAtomic(\"1.123456789\", 8);  // throws: more precision than 8 decimals allow\r\n```\r\n\r\nPricing math always stays in atomic units; `quoteOffer()` does the human⇄atomic\r\nconversion for you using each side's `decimals`.\r\n\r\n## Price feed responses\r\n\r\nEvery market declares both the feed URL and how to read its response:\r\n\r\n```json\r\n{\r\n  \"price_feed\": \"https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd\",\r\n  \"price_feed_schema\": { \"type\": \"json\", \"price_path\": \"/bitcoin/usd\" }\r\n}\r\n```\r\n\r\n`price_path` is an RFC 6901 JSON Pointer to a JSON number or numeric string.\r\nCommon examples: Binance ticker price uses `/price`; a bare JSON number uses the\r\nempty pointer `\"\"`. The client does not scan unknown response shapes.\r\n\r\n## Pin a local card\r\n\r\nUsers can pin a solver card directly (a raw card, validated against the card\r\nschema), participating in the merge like any registry entry. Omit `registries`\r\nto also get the published index for the network, or pass `registries: []` to\r\npin only and follow no registry at all:\r\n\r\n```ts\r\nconst { markets } = await discover({\r\n  localCards: [{ card: pastedCardJson }],\r\n});\r\n\r\nconst pinnedOnly = await discover({\r\n  registries: [],\r\n  localCards: [{ card: pastedCardJson }],\r\n});\r\n```\r\n\r\n## Expo / React Native\r\n\r\nWorks out of the box — Hermes ships `fetch`, `AbortController`, and `BigInt`. If\r\nyou target an older runtime without global `fetch`, inject one:\r\n\r\n```ts\r\nimport { discover } from \"@arkade-os/solver-discovery\";\r\nawait discover({ registries, fetchImpl: myFetch });\r\n```\r\n\r\n## React\r\n\r\nThe optional React entrypoint keeps a two-input quote form synchronized. It\r\nfetches the market feed and recalculates the other field whenever the user edits\r\nthe given or wanted amount:\r\n\r\n```tsx\r\nimport { useOfferQuote } from \"@arkade-os/solver-discovery/react\";\r\n\r\nfunction QuoteForm({ market }) {\r\n  const quote = useOfferQuote(market, { give: \"base\" });\r\n\r\n  if (quote.solvable === false) return <p>This market cannot pay out the side you want.</p>;\r\n  return (\r\n    <>\r\n      <input value={quote.giveAmount} onChange={(e) => quote.setGiveAmount(e.target.value)} />\r\n      <input value={quote.wantAmount} onChange={(e) => quote.setWantAmount(e.target.value)} />\r\n      <button disabled={!quote.plan?.limits.withinLimits}>Create offer</button>\r\n    </>\r\n  );\r\n}\r\n```\r\n\r\n`useOfferQuote(market, opts)` returns the active input, both display amounts,\r\nthe latest `OfferPlan`, loading/error state, and the give/want setters. With\r\n`give: \"base\"` the give field is the base amount and the want field the quote\r\namount; swap them for `give: \"quote\"`. `quote.solvable` says whether the market\r\ndeclares limits for — can pay out — the side received under `give` (null while\r\nno market is selected), and `quote.plan?.receive.atomic` is the `wantAmount` to\r\nrequest.\r\n\r\nThe package does not install React for you: importing\r\n`@arkade-os/solver-discovery/react` requires React in the app, while the root\r\npackage entrypoint does not import React.\r\n\r\n## Core API\r\n\r\n| Export | Purpose |\r\n|---|---|\r\n| `discover(opts)` | Fetch + merge + dedupe + rank markets across registries and local cards. Defaults to `network: \"bitcoin\"`. With no `registries`, follows that network's published index (an internal default); `registries: []` follows none; a non-empty list overrides the default. Registry failures are isolated. |\r\n| `defaultRegistryUrls(network)` / `registryIndexUrl(network)` / `REGISTRY_INDEX_URLS` | The published index URL(s) for a network — the default `discover()` reads, exported so callers can surface or override it instead of hand-copying it. |\r\n| `fetchIndex(url, opts)` | Fetch + validate a single per-network index (never throws). Defaults to `network: \"bitcoin\"`. |\r\n| `listMarkets(markets)` | List available id pairs, how many solver candidates each pair has, and how many can pay out each side (`solvable.base` / `solvable.quote`). |\r\n| `selectMarkets(markets, {baseId, quoteId, wantSide?, wantAmount?})` / `bestMarket(..., {cursor?})` | Filter to one id pair — and optionally to markets that can pay out `wantSide`, sized by `wantAmount` on that side — keeping the ranking. `cursor: 1` selects the second-ranked market. |\r\n| `sideLimits(market, side)` | The side's `{ min, max }` bounds as exact bigints, or `null` when the solver cannot pay that side out — disabled (`max = \"0\"`) or carrying malformed/validation-rejected bounds. The single per-side solvability + size-bound primitive. |\r\n| `quoteOffer(market, {give, giveAmount \\| wantAmount, safetyBps?})` | Fetch the feed and build a full `OfferPlan` (human in/out). |\r\n| `planOffer({market, give, giveAmount \\| wantAmount, feedValue, safetyBps?})` | Same, from an already-fetched feed value (pure/sync). |\r\n| `fetchFeedValue(url, schema, opts?)` | Fetch a raw feed and extract the numeric price using the market's `price_feed_schema`. |\r\n| `deriveAtomicPrice` / `computeWantAmount` | Pure pricing primitives (exact rationals / BigInt). |\r\n| `toAtomic` / `fromAtomic` / `displayPriceString` | Decimals-aware conversion. |\r\n| `validateCard` / `validateIndex` | Dependency-free, `eval`-free schema validation. |\r\n\r\n`give: \"base\"` deposits the base asset and receives the quote; `give: \"quote\"`\r\nis the reverse (priced with `1/P`). Pass exactly one of `giveAmount` or\r\n`wantAmount`: `giveAmount` fixes the deposit and computes the requested\r\nreceive amount, while `wantAmount` fixes the requested receive amount and\r\ncomputes the minimum deposit. Either takes a display string/number, or a\r\n`bigint` to stay in atomic units. `safetyBps` defaults to `50` — the cushion\r\nthat absorbs feed movement between funding and fill.\r\n\r\nMarkets carry size limits for both sides (`min|max_base_amount`,\r\n`min|max_quote_amount`) as decimal strings of atomic units — exact past 2^53,\r\nwhere JSON numbers silently round — and `max = \"0\"` disables a side: the solver\r\ncannot pay it out, so a market with zeroed base bounds only serves\r\n`give: \"base\"`. Plans check the received side: `plan.limits.min === null` means\r\nthe market cannot pay that side at all, and `plan.limits.withinLimits` says\r\nwhether the received amount sits inside `[min, max]`.\r\n\r\n## Roadmap\r\n\r\n**Chained (multi-hop) offers** — not yet supported: `bestMarket`/`quoteOffer` match\r\ndirect `(baseId, quoteId)` pairs only. Planned: treat markets as directed edges\r\nover canonical asset ids and route through intermediates (BTC → USDT → USDC)\r\nvia `findRoutes` / `planRoute` / `quoteRoute`, ranking routes by the compounded\r\nnet multiplier `∏(1 − (fee_bps + safety_bps)/10000)` and checking size limits\r\nper hop at plan time. Note the protocol caveat: each hop executes as a separate\r\nArkade offer, so a chained route is **not atomic** — plans are indicative and\r\nrouting will be opt-in, never a silent fallback inside `quoteOffer()`. Full spec and\r\nAPI design: [#1](https://github.com/arkade-os/solver-registry/issues/1).\r\n\r\n## Develop\r\n\r\n```sh\r\npnpm install\r\npnpm test        # node --test, dependency-free, runs the .ts directly\r\npnpm typecheck\r\npnpm build       # emits dist/*.js + *.d.ts\r\n```\r\n\r\n## Release\r\n\r\nFrom the repo root, publish a patch, minor, or major release:\r\n\r\n```sh\r\nnpm run release:client -- patch\r\n```\r\n\r\nThe last argument must be `patch`, `minor`, or `major`. The script must be run\r\nfrom `master` with a clean git tree, runs the package tests/typecheck/build, bumps\r\n`packages/discovery-client/package.json` with `npm version <level>\r\n--no-git-tag-version`, publishes to npm, then creates a release commit and a\r\n`solver-discovery-vX.Y.Z` tag, and pushes both `master` and the tag to `origin`.\r\n\r\nYou can also run the same workflow from this package directory:\r\n\r\n```sh\r\nnpm run release -- minor\r\n```\r\n\r\nBefore running it, make sure you are logged in to npm with publish rights for\r\nthe `@arkade-os` scope.\r\n","readmeFilename":"README.md"}