{"_id":"@bitomni_tyche/lasereyes-core","_rev":"7-b0df3501d2780c661107e476ad9c5561","name":"@bitomni_tyche/lasereyes-core","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.1":{"name":"@bitomni_tyche/lasereyes-core","version":"0.0.1","_id":"@bitomni_tyche/lasereyes-core@0.0.1","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"dist":{"shasum":"5bf6e66888e9c8181683d5d414526db435eb6597","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.1.tgz","fileCount":126,"integrity":"sha512-AKP3+Qer9BZy90L771RhIosT9lOv5viZhQFMQrsd5rxqFaDnJBQtguTbCZTXsG6CiBHy+1B2CiIJj8Xr/k5p1w==","signatures":[{"sig":"MEQCIHgrrGJw7p16h+H5geczX1XrPfzCcDDPsiJm39Mf+QK7AiBSXzdg86YtvQEDS/4D/4bZpUTl/YtxNMd2iOUTJOuP7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4364772},"main":"./dist/index.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"gitHead":"81fa18d5e044fb21cf84e899f3a6d944d9e9a0bb","private":false,"scripts":{"dev":"vite","build":"tsc && vite build","prepare":"npm run build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"tyche_package","actor":{"name":"tyche_package","type":"user","email":"zzq729h@gmail.com"},"email":"zzq729h@gmail.com"},"_npmVersion":"10.8.2","description":"## Overview","directories":{},"_nodeVersion":"20.12.0","dependencies":{"axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","buffer":"^6.0.3","lodash":"^4.17.21","ordapi":"^0.0.7","alkanes":"git+https://github.com/kungfuflex/alkanes.git","@oyl/sdk":"^1.16.0","nanostores":"^0.11.3","sats-connect":"^3.3.0","bitcoinjs-lib":"^7.0.0-rc.0","tiny-async-pool":"^2.1.0","crypto-browserify":"^3.12.1","@cmdcode/tapscript":"^1.4.6","@cmdcode/crypto-utils":"^2.4.6","@nanostores/persistent":"^0.10.2","@bitcoinerlab/secp256k1":"^1.1.1","@magiceden-oss/runestone-lib":"^1.0.2","@orangecrypto/orange-connect":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.1","typescript":"^5.5.3","@types/node":"^22.7.7","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.2.1","@types/tiny-async-pool":"^2.0.3","vite-plugin-node-polyfills":"^0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/lasereyes-core_0.0.1_1750649231344_0.9097305364890482","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@bitomni_tyche/lasereyes-core","version":"0.0.2","_id":"@bitomni_tyche/lasereyes-core@0.0.2","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"dist":{"shasum":"aadb1dbc550b996a0636e99d72451bb03cb1be39","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.2.tgz","fileCount":126,"integrity":"sha512-rhONe+dp0gpP6z6cIVo1Yt5jyqkrop49MA15EeMzXrgj7ONiipxdUDmtASCs0PwVqUyh11kFmYneAduG19nnwA==","signatures":[{"sig":"MEUCIHaVT3XqEYFNKkC0BaHAwdbe1kewCfFl2j2gJDrQao5vAiEAoJ7HsA6pZCHct7FNQXYKY4PSM1qGhs8WZJBxEqOHnPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4388875},"main":"./dist/index.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"gitHead":"81fa18d5e044fb21cf84e899f3a6d944d9e9a0bb","private":false,"scripts":{"dev":"vite","build":"tsc && vite build","prepare":"npm run build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"tyche_package","actor":{"name":"tyche_package","type":"user","email":"zzq729h@gmail.com"},"email":"zzq729h@gmail.com"},"_npmVersion":"10.8.2","description":"## Overview","directories":{},"_nodeVersion":"20.12.0","dependencies":{"axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","buffer":"^6.0.3","lodash":"^4.17.21","ordapi":"^0.0.7","alkanes":"git+https://github.com/kungfuflex/alkanes.git","@oyl/sdk":"^1.16.0","nanostores":"^0.11.3","sats-connect":"^3.3.0","bitcoinjs-lib":"^7.0.0-rc.0","tiny-async-pool":"^2.1.0","crypto-browserify":"^3.12.1","@cmdcode/tapscript":"^1.4.6","@cmdcode/crypto-utils":"^2.4.6","@nanostores/persistent":"^0.10.2","@bitcoinerlab/secp256k1":"^1.1.1","@magiceden-oss/runestone-lib":"^1.0.2","@orangecrypto/orange-connect":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.1","typescript":"^5.5.3","@types/node":"^22.7.7","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.2.1","@types/tiny-async-pool":"^2.0.3","vite-plugin-node-polyfills":"^0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/lasereyes-core_0.0.2_1752125274699_0.8774998591726293","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@bitomni_tyche/lasereyes-core","version":"0.0.3","_id":"@bitomni_tyche/lasereyes-core@0.0.3","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"dist":{"shasum":"40797eb998659422ee515bc035db7be456cddd5d","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.3.tgz","fileCount":126,"integrity":"sha512-cn4rK2MrWGBR7xbSMuAvnIlRTHjYcwV6Mgzo3lnCScMqyzJud+ITrts5VY2x/V+G+fakCq5acgoFuY0tKJjsGQ==","signatures":[{"sig":"MEQCIHTIN5IwGWMYf034T4+aPiRTmmVh9h1X/8mXxahquWjOAiBKfaJeExmgUZ10HIsw3ih4YhL/hCWNICDL0XuaHtAqpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4390161},"main":"./dist/index.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"gitHead":"151f9e8415ea5a882edfd488321b949644f99f29","private":false,"scripts":{"dev":"vite","build":"tsc && vite build","prepare":"npm run build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"tyche_package","email":"zzq729h@gmail.com"},"_npmVersion":"10.9.3","description":"`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seam","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","buffer":"^6.0.3","lodash":"^4.17.21","ordapi":"^0.0.7","alkanes":"git+https://github.com/kungfuflex/alkanes.git","@oyl/sdk":"^1.16.0","nanostores":"^0.11.3","sats-connect":"^3.3.0","bitcoinjs-lib":"^7.0.0-rc.0","tiny-async-pool":"^2.1.0","crypto-browserify":"^3.12.1","@cmdcode/tapscript":"^1.4.6","@cmdcode/crypto-utils":"^2.4.6","@nanostores/persistent":"^0.10.2","@bitcoinerlab/secp256k1":"^1.1.1","@magiceden-oss/runestone-lib":"^1.0.2","@orangecrypto/orange-connect":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.1","typescript":"^5.5.3","@types/node":"^22.7.7","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.2.1","@types/tiny-async-pool":"^2.0.3","vite-plugin-node-polyfills":"^0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/lasereyes-core_0.0.3_1761631769769_0.6812516901241392","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@bitomni_tyche/lasereyes-core","version":"0.0.4","_id":"@bitomni_tyche/lasereyes-core@0.0.4","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"dist":{"shasum":"346dd82903f6869dfdc64b9bf6349f1182082f2f","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.4.tgz","fileCount":126,"integrity":"sha512-HSdy6fKJkAnO7JnvD+X5TCKIxpzU+XhA2idd+Zioy8Kdb6+FmnNHRdxr10rTaHdJXTdCUAgszMGrnXG42AVnjg==","signatures":[{"sig":"MEUCIQDegTv3JAHpYfr/CC3liSpAoSk+Fp4/ogJBgF1zmU0prgIgfPUsIxaceijjWpW6S8BszUcbYIRNeLULafrLXBpyZ7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4390159},"main":"./dist/index.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"gitHead":"151f9e8415ea5a882edfd488321b949644f99f29","private":false,"scripts":{"dev":"vite","build":"tsc && vite build","prepare":"npm run build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"tyche_package","email":"zzq729h@gmail.com"},"_npmVersion":"10.9.3","description":"`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seam","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","buffer":"^6.0.3","lodash":"^4.17.21","ordapi":"^0.0.7","alkanes":"git+https://github.com/kungfuflex/alkanes.git","@oyl/sdk":"^1.16.0","nanostores":"^0.11.3","sats-connect":"^3.3.0","bitcoinjs-lib":"^7.0.0-rc.0","tiny-async-pool":"^2.1.0","crypto-browserify":"^3.12.1","@cmdcode/tapscript":"^1.4.6","@cmdcode/crypto-utils":"^2.4.6","@nanostores/persistent":"^0.10.2","@bitcoinerlab/secp256k1":"^1.1.1","@magiceden-oss/runestone-lib":"^1.0.2","@orangecrypto/orange-connect":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.1","typescript":"^5.5.3","@types/node":"^22.7.7","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.2.1","@types/tiny-async-pool":"^2.0.3","vite-plugin-node-polyfills":"^0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/lasereyes-core_0.0.4_1761638670834_0.10510929469384478","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@bitomni_tyche/lasereyes-core","version":"0.0.5","_id":"@bitomni_tyche/lasereyes-core@0.0.5","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"dist":{"shasum":"e2bf8b7b8bee6bdcbe8e56649af2198248851c2b","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.5.tgz","fileCount":126,"integrity":"sha512-KGl4/hq0uefHdUelJKi93bY5pdV54s8bLUnOsID4PDZ1fliHGpmhrtHti78JQTykvZwxOevWwccYaMZCIkVetw==","signatures":[{"sig":"MEUCIQDgqfKMsHdups2nMmP5W6kkROil0+8ZBt+VmUAJIkwD9AIgU8JENDSHeKolXGhIVFddOs1IO3Ydo48rWq4p/qM8qqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4389947},"main":"./dist/index.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"gitHead":"151f9e8415ea5a882edfd488321b949644f99f29","private":false,"scripts":{"dev":"vite","build":"tsc && vite build","prepare":"npm run build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"tyche_package","email":"zzq729h@gmail.com"},"_npmVersion":"10.9.3","description":"`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seam","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","buffer":"^6.0.3","lodash":"^4.17.21","ordapi":"^0.0.7","alkanes":"git+https://github.com/kungfuflex/alkanes.git","@oyl/sdk":"^1.16.0","nanostores":"^0.11.3","sats-connect":"^3.3.0","bitcoinjs-lib":"^7.0.0-rc.0","tiny-async-pool":"^2.1.0","crypto-browserify":"^3.12.1","@cmdcode/tapscript":"^1.4.6","@cmdcode/crypto-utils":"^2.4.6","@nanostores/persistent":"^0.10.2","@bitcoinerlab/secp256k1":"^1.1.1","@magiceden-oss/runestone-lib":"^1.0.2","@orangecrypto/orange-connect":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.1","typescript":"^5.5.3","@types/node":"^22.7.7","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.2.1","@types/tiny-async-pool":"^2.0.3","vite-plugin-node-polyfills":"^0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/lasereyes-core_0.0.5_1761644198264_0.4682441657392804","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@bitomni_tyche/lasereyes-core","version":"0.0.6","_id":"@bitomni_tyche/lasereyes-core@0.0.6","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"dist":{"shasum":"933db732ac753c7e9c995e93b070a79eef8a032f","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.6.tgz","fileCount":126,"integrity":"sha512-VIhqkjtO/MnY+KtphfdZYcTz7BCfCXjKtB9kwQ/kfE3u8upNXtwwra7d2Mi1N/vmyk7/X6lNuIYaa6lnb3sxaA==","signatures":[{"sig":"MEUCID+lShA504iq5i55Pka+N/S1EwH1ZvAnFMttaADgkUfKAiEAu68GvlZaPu0k97WXSYNxix+jVhRjA6u9+DxNTcXpopg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4390023},"main":"./dist/index.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"gitHead":"151f9e8415ea5a882edfd488321b949644f99f29","private":false,"scripts":{"dev":"vite","build":"tsc && vite build","prepare":"npm run build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"tyche_package","email":"zzq729h@gmail.com"},"_npmVersion":"10.9.3","description":"`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seam","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","buffer":"^6.0.3","lodash":"^4.17.21","ordapi":"^0.0.7","alkanes":"git+https://github.com/kungfuflex/alkanes.git","@oyl/sdk":"^1.16.0","nanostores":"^0.11.3","sats-connect":"^3.3.0","bitcoinjs-lib":"^7.0.0-rc.0","tiny-async-pool":"^2.1.0","crypto-browserify":"^3.12.1","@cmdcode/tapscript":"^1.4.6","@cmdcode/crypto-utils":"^2.4.6","@nanostores/persistent":"^0.10.2","@bitcoinerlab/secp256k1":"^1.1.1","@magiceden-oss/runestone-lib":"^1.0.2","@orangecrypto/orange-connect":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.1","typescript":"^5.5.3","@types/node":"^22.7.7","@types/lodash":"^4.17.16","vite-plugin-dts":"^4.2.1","@types/tiny-async-pool":"^2.0.3","vite-plugin-node-polyfills":"^0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/lasereyes-core_0.0.6_1761647247628_0.5066723783884519","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@bitomni_tyche/lasereyes-core","private":false,"version":"0.0.7","type":"module","main":"./dist/index.umd.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.umd.cjs"}},"scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","prepublishOnly":"npm run build","prepare":"npm run build"},"devDependencies":{"@types/lodash":"^4.17.16","@types/node":"^22.7.7","@types/tiny-async-pool":"^2.0.3","typescript":"^5.5.3","vite":"^5.4.1","vite-plugin-dts":"^4.2.1","vite-plugin-node-polyfills":"^0.22.0"},"dependencies":{"@bitcoinerlab/secp256k1":"^1.1.1","@cmdcode/crypto-utils":"^2.4.6","@cmdcode/tapscript":"^1.4.6","@magiceden-oss/runestone-lib":"^1.0.2","@nanostores/persistent":"^0.10.2","@orangecrypto/orange-connect":"^1.2.2","@oyl/sdk":"^1.16.0","alkanes":"git+https://github.com/kungfuflex/alkanes.git","axios":"^1.7.7","bip32":"5.0.0-rc.0","bip39":"^3.1.0","bitcoinjs-lib":"^7.0.0-rc.0","buffer":"^6.0.3","crypto-browserify":"^3.12.1","lodash":"^4.17.21","nanostores":"^0.11.3","ordapi":"^0.0.7","sats-connect":"^3.3.0","tiny-async-pool":"^2.1.0"},"publishConfig":{"access":"public"},"_id":"@bitomni_tyche/lasereyes-core@0.0.7","gitHead":"151f9e8415ea5a882edfd488321b949644f99f29","description":"`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seam","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-0f5kNodD28nbJfkS4cTSZ4gJdP8fAlnuW5CKuKM3Bgq10CKf/VQO2rA9k4FuZDW2tgRfWUX9S+Osdlqzq7976Q==","shasum":"24d0c762fc5b2329b07a03cb174e7d22f82141e2","tarball":"https://registry.npmjs.org/@bitomni_tyche/lasereyes-core/-/lasereyes-core-0.0.7.tgz","fileCount":126,"unpackedSize":4390159,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDteNI5ssYdtF6U+ZHywxU1dnbnXO3gX8KF6zbYMhx0YAiEA+JKtNiUWUAjSPeZt9XPp/lODLIpkFsaM9Escugjan+U="}]},"_npmUser":{"name":"tyche_package","email":"zzq729h@gmail.com"},"directories":{},"maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lasereyes-core_0.0.7_1761706069290_0.773231135372481"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-23T03:27:11.213Z","modified":"2025-10-29T02:47:49.844Z","0.0.1":"2025-06-23T03:27:11.564Z","0.0.2":"2025-07-10T05:27:55.002Z","0.0.3":"2025-10-28T06:09:30.071Z","0.0.4":"2025-10-28T08:04:31.117Z","0.0.5":"2025-10-28T09:36:38.516Z","0.0.6":"2025-10-28T10:27:27.869Z","0.0.7":"2025-10-29T02:47:49.611Z"},"description":"`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seam","maintainers":[{"name":"tyche_package","email":"zzq729h@gmail.com"}],"readme":"# LaserEyes Core Documentation\r\n\r\n## Overview\r\n\r\n`@omnisat/lasereyes-core` is a framework-agnostic library designed to provide Bitcoin wallet integration for dApps. It abstracts wallet-specific interactions and offers a unified interface, enabling developers to interact with various Bitcoin wallets seamlessly.\r\n\r\nThis package is not tied to any specific framework and can be used in any TypeScript or JavaScript environment.\r\n\r\n## Installation\r\n\r\n```bash\r\n# NPM\r\nnpm install @omnisat/lasereyes-core\r\n\r\n# Yarn\r\nyarn add @omnisat/lasereyes-core\r\n\r\n# PNPM\r\npnpm install @omnisat/lasereyes-core\r\n\r\n# Bun\r\nbun install @omnisat/lasereyes-core\r\n```\r\n\r\n## Key Concepts\r\n\r\n### Client\r\n\r\nThe `LaserEyesClient` is the main entry point for the library. It manages wallet connections, handles user authentication, and facilitates interactions with Bitcoin wallets.\r\n\r\n### Provider\r\n\r\nEach supported Bitcoin wallet is implemented through a `WalletProvider` class. These providers handle the communication between your application and the specific wallet's API.\r\n\r\n## Supported Wallets\r\n\r\nLaserEyes Core supports the following Bitcoin wallets:\r\n\r\n- **Leather**\r\n- **Magic Eden**\r\n- **OKX**\r\n- **OP_NET**\r\n- **Orange**\r\n- **Oyl**\r\n- **Phantom**\r\n- **Sparrow**\r\n- **UniSat**\r\n- **Wizz**\r\n- **Xverse**\r\n\r\n## Supported Networks\r\n\r\nLaserEyes Core supports multiple Bitcoin networks:\r\n\r\n- **mainnet**\r\n- **testnet3**\r\n- **testnet4**\r\n- **fractal**\r\n- **fractal testnet**\r\n- **signet**\r\n\r\n## Quick Start\r\n\r\n### Initializing the Client\r\n\r\n```typescript\r\nimport {\r\n  LaserEyesClient,\r\n  createStores,\r\n  createConfig,\r\n  XVERSE,\r\n} from '@omnisat/lasereyes-core'\r\n\r\n// Create stores for state management\r\nconst stores = createStores()\r\n\r\n// Optional: Create configuration with network setting\r\nconst config = createConfig({ network: 'mainnet' })\r\n\r\n// Initialize the client\r\nconst client = new LaserEyesClient(stores, config)\r\nclient.initialize()\r\n\r\n// Connect to a wallet (e.g., Xverse)\r\nclient.connect(XVERSE).then(() => {\r\n  console.log('Connected to Xverse wallet')\r\n})\r\n```\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\n// Connect to a wallet\r\nawait client.connect(XVERSE)\r\n\r\n// Request wallet accounts\r\nconst accounts = await client.requestAccounts()\r\nconsole.log('Accounts:', accounts)\r\n\r\n// Get wallet balance\r\nconst balance = await client.getBalance()\r\nconsole.log('Balance:', balance.toString())\r\n\r\n// Send Bitcoin\r\nconst txId = await client.sendBTC('recipient-address', 10000) // 10,000 satoshis\r\nconsole.log('Transaction ID:', txId)\r\n\r\n// Sign a message\r\nconst signature = await client.signMessage('Hello, LaserEyes!')\r\nconsole.log('Signature:', signature)\r\n\r\n// Disconnect\r\nclient.disconnect()\r\n```\r\n\r\n## API Reference\r\n\r\n### LaserEyesClient\r\n\r\n#### Constructor\r\n\r\n```typescript\r\nconstructor(\r\n  stores: {\r\n    readonly $store: MapStore<LaserEyesStoreType>\r\n    readonly $network: WritableAtom<NetworkType>\r\n  },\r\n  readonly config?: Config\r\n)\r\n```\r\n\r\n#### Properties\r\n\r\n- `$store`: A MapStore that tracks the application state\r\n- `$network`: A WritableAtom that tracks the current network type\r\n\r\n#### Methods\r\n\r\n##### `initialize()`\r\n\r\nInitializes the client and checks for wallet providers.\r\n\r\n```typescript\r\nclient.initialize()\r\n```\r\n\r\n##### `connect(defaultWallet: ProviderType)`\r\n\r\nConnects to the specified wallet provider.\r\n\r\n```typescript\r\nawait client.connect(XVERSE)\r\n```\r\n\r\n##### `disconnect()`\r\n\r\nDisconnects from the currently connected wallet provider.\r\n\r\n```typescript\r\nclient.disconnect()\r\n```\r\n\r\n##### `requestAccounts()`\r\n\r\nRequests accounts from the connected wallet provider.\r\n\r\n```typescript\r\nconst accounts = await client.requestAccounts()\r\n```\r\n\r\n##### `getNetwork()`\r\n\r\nGets the current network for the connected wallet provider.\r\n\r\n```typescript\r\nconst network = await client.getNetwork()\r\n```\r\n\r\n##### `switchNetwork(network: NetworkType)`\r\n\r\nSwitches the network for the connected wallet provider.\r\n\r\n```typescript\r\nawait client.switchNetwork('testnet')\r\n```\r\n\r\n##### `getBalance()`\r\n\r\nGets the balance of the connected wallet.\r\n\r\n```typescript\r\nconst balance = await client.getBalance()\r\n```\r\n\r\n##### `sendBTC(to: string, amount: number)`\r\n\r\nSends Bitcoin to the specified address.\r\n\r\n```typescript\r\nconst txId = await client.sendBTC('recipientAddress', 10000) // 10,000 satoshis\r\n```\r\n\r\n##### `signMessage(message: string, toSignAddressOrOptions?: string | SignMessageOptions)`\r\n\r\nSigns a message with the connected wallet.\r\n\r\n```typescript\r\nconst signature = await client.signMessage('Hello, LaserEyes!')\r\n```\r\n\r\n##### `signPsbt(tx: string, finalize?: boolean, broadcast?: boolean)`\r\n\r\nSigns a Partially Signed Bitcoin Transaction (PSBT).\r\n\r\n```typescript\r\nconst result = await client.signPsbt(psbtHex, true, false)\r\n```\r\n\r\n##### `pushPsbt(tx: string)`\r\n\r\nPushes a PSBT to the network.\r\n\r\n```typescript\r\nconst txId = await client.pushPsbt(psbtHex)\r\n```\r\n\r\n##### `getPublicKey()`\r\n\r\nGets the public key from the connected wallet.\r\n\r\n```typescript\r\nconst publicKey = await client.getPublicKey()\r\n```\r\n\r\n##### `getInscriptions(offset?: number, limit?: number)`\r\n\r\nGets inscriptions (NFTs) associated with the connected wallet.\r\n\r\n```typescript\r\nconst inscriptions = await client.getInscriptions()\r\n```\r\n\r\n##### `inscribe(content: string, mimeType: ContentType)`\r\n\r\nInscribes content onto the blockchain.\r\n\r\n```typescript\r\nimport { TEXT_PLAIN } from '@omnisat/lasereyes-core'\r\n\r\nconst contentBase64 = Buffer.from('Hello, LaserEyes!').toString('base64')\r\nconst txId = await client.inscribe(contentBase64, TEXT_PLAIN)\r\n```\r\n\r\n##### `send(protocol: Protocol, sendArgs: BTCSendArgs | RuneSendArgs)`\r\n\r\nSends assets using the specified protocol.\r\n\r\n```typescript\r\nimport { BTC } from '@omnisat/lasereyes-core'\r\n\r\nconst txId = await client.send(BTC, {\r\n  fromAddress: 'senderAddress',\r\n  toAddress: 'recipientAddress',\r\n  amount: 10000,\r\n  network: 'mainnet',\r\n})\r\n```\r\n\r\n##### `dispose()`\r\n\r\nDisposes of all wallet providers.\r\n\r\n```typescript\r\nclient.dispose()\r\n```\r\n\r\n### Constants\r\n\r\n#### Wallet Providers\r\n\r\n```typescript\r\nimport {\r\n  LEATHER,\r\n  MAGIC_EDEN,\r\n  OKX,\r\n  OP_NET,\r\n  ORANGE,\r\n  OYL,\r\n  PHANTOM,\r\n  SPARROW,\r\n  UNISAT,\r\n  WIZZ,\r\n  XVERSE,\r\n} from '@omnisat/lasereyes-core'\r\n```\r\n\r\n#### Networks\r\n\r\n```typescript\r\nimport {\r\n  MAINNET,\r\n  TESTNET,\r\n  TESTNET4,\r\n  SIGNET,\r\n  FRACTAL_MAINNET,\r\n  FRACTAL_TESTNET,\r\n} from '@omnisat/lasereyes-core'\r\n```\r\n\r\n#### Content Types\r\n\r\n```typescript\r\nimport {\r\n  TEXT_HTML,\r\n  TEXT_PLAIN,\r\n  APPLICATION_JSON,\r\n  IMAGE_JPEG,\r\n  IMAGE_PNG,\r\n  // ... many more available\r\n} from '@omnisat/lasereyes-core'\r\n```\r\n\r\n#### Protocols\r\n\r\n```typescript\r\nimport { BTC, BRC20, RUNES, ALKANES } from '@omnisat/lasereyes-core'\r\n```\r\n\r\n## Error Handling\r\n\r\nLaserEyes Core throws appropriate errors when operations fail. Always wrap your wallet interactions in try-catch blocks:\r\n\r\n```typescript\r\ntry {\r\n  await client.connect(XVERSE)\r\n  const balance = await client.getBalance()\r\n  console.log('Balance:', balance.toString())\r\n} catch (error) {\r\n  console.error('Wallet error:', error)\r\n}\r\n```\r\n\r\n## Advanced Usage\r\n\r\n### Working with PSBTs\r\n\r\n```typescript\r\n// Sign a PSBT\r\nconst { signedPsbtHex, signedPsbtBase64, txId } = await client.signPsbt(\r\n  psbtHex, // PSBT in hex format\r\n  true, // finalize\r\n  true // broadcast\r\n)\r\n\r\n// If not broadcasting immediately, push the PSBT later\r\nif (!txId) {\r\n  const broadcastTxId = await client.pushPsbt(signedPsbtHex)\r\n  console.log('Broadcast transaction ID:', broadcastTxId)\r\n}\r\n```\r\n\r\n### Working with Inscriptions\r\n\r\n```typescript\r\n// Create an inscription\r\nconst content = Buffer.from('Hello, Ordinals!').toString('base64')\r\nconst txId = await client.inscribe(content, TEXT_PLAIN)\r\nconsole.log('Inscription transaction ID:', txId)\r\n\r\n// Get all inscriptions for the connected wallet\r\nconst inscriptions = await client.getInscriptions()\r\nconsole.log('Inscriptions:', inscriptions)\r\n```\r\n\r\n### Working with Runes\r\n\r\n```typescript\r\nimport { RUNES } from '@omnisat/lasereyes-core'\r\n\r\n// Send runes\r\nconst txId = await client.send(RUNES, {\r\n  runeId: '123456:78',\r\n  fromAddress: 'senderAddress',\r\n  toAddress: 'recipientAddress',\r\n  amount: 100,\r\n  network: 'mainnet',\r\n})\r\n\r\n// Get rune balances\r\nconst runeBalances = await client.getMetaBalances(RUNES)\r\n```\r\n\r\n## Best Practices\r\n\r\n1. **Initialize once**: Create a single instance of `LaserEyesClient` and reuse it.\r\n2. **Handle errors**: Wrap all wallet interactions in try-catch blocks.\r\n3. **Clean up**: Call `dispose()` when you're done with the client to free resources.\r\n4. **Network awareness**: Check the current network before performing transactions.\r\n5. **User confirmation**: Always get user confirmation before signing transactions.\r\n\r\n## Troubleshooting\r\n\r\n### Wallet Not Connecting\r\n\r\n- Check if the wallet extension is installed\r\n- Verify the wallet is unlocked\r\n- Check the console for specific error messages\r\n\r\n### Transaction Failures\r\n\r\n- Confirm sufficient balance\r\n- Check network configuration\r\n- Verify recipient address format\r\n\r\n### Signing Issues\r\n\r\n- Ensure the wallet has the appropriate permissions\r\n- Check if the message format is correct\r\n\r\n## Examples\r\n\r\n### Basic Wallet Connection\r\n\r\n```typescript\r\nimport { LaserEyesClient, createStores, UNISAT } from '@omnisat/lasereyes-core'\r\n\r\nconst client = new LaserEyesClient(createStores())\r\nclient.initialize()\r\n\r\ndocument\r\n  .getElementById('connect-button')\r\n  .addEventListener('click', async () => {\r\n    try {\r\n      await client.connect(UNISAT)\r\n      const address = client.$store.get().address\r\n      document.getElementById('address-display').textContent = address\r\n    } catch (error) {\r\n      console.error('Connection error:', error)\r\n    }\r\n  })\r\n```\r\n\r\n### Sending Bitcoin\r\n\r\n```typescript\r\ndocument.getElementById('send-button').addEventListener('click', async () => {\r\n  const recipient = document.getElementById('recipient').value\r\n  const amountSats = parseInt(document.getElementById('amount').value)\r\n\r\n  try {\r\n    const txId = await client.sendBTC(recipient, amountSats)\r\n    document.getElementById('tx-display').textContent =\r\n      `Transaction sent: ${txId}`\r\n  } catch (error) {\r\n    console.error('Send error:', error)\r\n  }\r\n})\r\n```\r\n\r\n### Creating an Inscription\r\n\r\n```typescript\r\ndocument\r\n  .getElementById('inscribe-button')\r\n  .addEventListener('click', async () => {\r\n    const text = document.getElementById('inscription-text').value\r\n    const contentBase64 = Buffer.from(text).toString('base64')\r\n\r\n    try {\r\n      const txId = await client.inscribe(contentBase64, TEXT_PLAIN)\r\n      document.getElementById('inscription-display').textContent =\r\n        `Inscription created: ${txId}`\r\n    } catch (error) {\r\n      console.error('Inscription error:', error)\r\n    }\r\n  })\r\n```\r\n\r\n## Contributing\r\n\r\nContributions to LaserEyes Core are welcome! Please follow these steps:\r\n\r\n1. Fork the repository\r\n2. Create a feature branch\r\n3. Make your changes\r\n4. Submit a pull request\r\n\r\n## License\r\n\r\nLaserEyes Core is MIT licensed.\r\n\r\nwooooo\r\n","readmeFilename":"README.md"}