{"_id":"@0gfoundation/0g-pay-sdk","_rev":"23-737b45ea8feb3d527ed1d32197847ef6","name":"@0gfoundation/0g-pay-sdk","dist-tags":{"latest":"0.4.0","beta":"0.3.1-beta.12"},"versions":{"0.1.0":{"name":"@0gfoundation/0g-pay-sdk","version":"0.1.0","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.1.0","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"f28abe497cb14cc3f851359229e60911a7e4a376","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.1.0.tgz","fileCount":8,"integrity":"sha512-rmq9kEEprH1WtoEQARIRUj4kocxPc8tK4qhcOaIqNxl6EnUlTXzXyLNI6kJeCaRb/b9gfrZBdwfxojioK1ZXyg==","signatures":[{"sig":"MEQCIDilY0xGPAVWQSrHVeKGz3+fAeo7TZ1R5Gv7KM7e6TEQAiARFHsoL9V9kGYwhnTJTxYF05NdvfF2/TVo3QQ8ErMNUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78020},"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":"5331c2a22fcafef48f7f9b6cb814e4d9e8b1d896","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@tokenflight/swap":"0.2.3","@tokenflight/adapter-ethers":"0.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.1.0_1777267358357_0.3624140135753595","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0gfoundation/0g-pay-sdk","version":"0.1.1","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.1.1","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"b74f79eed10e6e8976d558509b5878cd2a0a0ea5","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.1.1.tgz","fileCount":8,"integrity":"sha512-IGpwqPEqaV/J3QTursfTWo8lEhOFL3jvWxtNbkx6YI4olgIlfBCRGVbPjvzx7PCjMxpph1OhdIue6orhRqQ2dA==","signatures":[{"sig":"MEUCIQCqsjTBGnj8r/r5rvXsnwUMZ7vdWFr8h+Gg6c786ooP5wIgKWrRwUvb5DcaMD2txPOKD7Onatd4eNfQWGjLq7OXvyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78315},"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":"5331c2a22fcafef48f7f9b6cb814e4d9e8b1d896","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@tokenflight/swap":"0.2.3","@tokenflight/adapter-ethers":"0.2.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.1.1_1777269296644_0.6428347116966311","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@0gfoundation/0g-pay-sdk","version":"0.1.2","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.1.2","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"7cfe2e276458271c9d77e4545c367b9e2fd80a19","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.1.2.tgz","fileCount":8,"integrity":"sha512-RfNfsACfzWKdZ1Q7Gj4ppi8rk/J6w2KoF1EjarX5o+BUpt9i0Bi7hOSqgCgODsgCP0zmy2IfVU3Rk9KNK43Gjg==","signatures":[{"sig":"MEQCIGck5gFy3LDHuQb0cblGGZCEqet937lEzMyNb8pu6BnFAiBJ1fusZf0j6FVDdYtpQMqqYEmlo4yeESLuRlcxCzuJ0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78315},"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":"d1f035f360c1aaf34c9b97a545a1e7400d77423a","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@tokenflight/swap":"0.3.1","@tokenflight/adapter-ethers":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.1.2_1777427720930_0.07863703948405498","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@0gfoundation/0g-pay-sdk","version":"0.1.3","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.1.3","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"8795d5b79838bd1e96cf4b6d0085730e37515b9e","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.1.3.tgz","fileCount":8,"integrity":"sha512-nF62EaBtAQaPyZvb8/mz/YEV16q1jn7wOByglmbvD7RrMsJlzSkQlcGBF583j+hmtCkZ0c5I3dLujxf4/TW0Dw==","signatures":[{"sig":"MEUCICudqZ3lLnQTbCvdWeAB8e4dex+gNtvV/ciBuEeVFh9LAiEAzX3FYR4TPMol4ZgBYD82yyDsvv2GqvAOnDmAJXaos8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85503},"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":"6b2bc67641bde048183a17a8bc7cd95f8fd6d580","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.3.1","@tokenflight/adapter-ethers":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.1.3_1780925129717_0.21586118083182892","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@0gfoundation/0g-pay-sdk","version":"0.2.0","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.2.0","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"a6d3fa4e24c2c7fc82bacf2590a2d925e642d812","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.2.0.tgz","fileCount":8,"integrity":"sha512-ItOHbKIikw2tYhzuoy1TnUfxTnQlKqcKQA1j84cCOJqTGrD8HnZZ9e3ANxbyWOD5VkLO18ztzPIXn2nKlBuXRg==","signatures":[{"sig":"MEQCIB4ciIqjSuLHQ5NiWVtVlHbtddyyYlNxjMFy1rro23L1AiA2Rz0aAyhOk/uDuPlSdS4yhQmSmGT/qeazl8vTafa20w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89491},"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":"fafb515d37d719dfc0c450d7e9426ab5b8e97857","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.0","@tokenflight/adapter-ethers":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.2.0_1781758955269_0.9042453369371786","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@0gfoundation/0g-pay-sdk","version":"0.2.1","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.2.1","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"21ad3ffa01c5c1ac13a27e41e042a398d48d97f6","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.2.1.tgz","fileCount":8,"integrity":"sha512-qXqIKYUwHXLN0YLbCyt1PlA/eqi7XVpNGjC9OPwRitMn69lUuaAP35poG3vqxq681zUm6DlmTMo5Ux2NUVc7yw==","signatures":[{"sig":"MEUCIFBxk3XBDIk723TcfsipYp9ZtQRG8s89oNfqceRo39TPAiEAprD4ECVYfW2WFY4cr13eqbYUVgzK7P0S8tbb9LrxbFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90051},"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":"1a367cc67930218c93ca76a91289c6864cdc1dc4","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.2","@tokenflight/adapter-ethers":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.2.1_1782973662232_0.16160506637352134","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.0":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.0","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.0","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"be439d7085f005007f14a9c703a4fc5d60fc817e","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.0.tgz","fileCount":8,"integrity":"sha512-C9OrWaQKc7uofVpznIGIAF2/FhnVHXHsHd49F5Bu9hHYblvQ6idiTrG/76BG+ecKjzdAGnwRPLVYNZ7GBZa8qA==","signatures":[{"sig":"MEUCIDHh394/wDvr/Rk1a4EgKypnVIA+gw3dfo5BYNneavRxAiEAiXFhiEHDh9orZe2JhhowbT2DPrMgyuUT5AytZM8wINU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197609},"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":"714f33691f13a1c7898cf50619af38d19e9be812","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.0_1788860920863_0.09130830299924053","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.1":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.1","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.1","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"db059214a38f9b7ea1defe1b03d5e75d74a09558","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.1.tgz","fileCount":18,"integrity":"sha512-mOHOkfdhxvPZ+V5bw2hGGspKAcmf2+MtfzRyOLa5FLy/Z8esZGKYAjfnwx87EIIPsaHAnuVIvQWJwzMENt71Hw==","signatures":[{"sig":"MEUCIACiC4IJDjGsYYJrEgpr1MOnqvhWwjjlYUlIAHpdRdjcAiEAvYfXHaz4+qKdZy/bic438w72IiNfu1Xb+Nhb+hSq340=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269768},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"8c67b3ce187aaf3a65cbcf811b4f83bfb6eaf898","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.1_1788870607701_0.6144517588018925","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.2":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.2","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.2","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"1def25b50a3fe9dd08b8c1f7d07e83abc92142a9","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.2.tgz","fileCount":18,"integrity":"sha512-LTx9Gq753bGufeXdK3ng6dcVRzu5B2hUy4mvahKh9jHSeFeHY3bfOCHOQTIQXWc/GeCwlTJT2I9cf55bmMWrtA==","signatures":[{"sig":"MEUCIEugkQtao82lITf0pzQS65LyITNIN7d14c+ycVhMB2HQAiEAjkxFhIQkuKPnqULKzCRRmYE+yH+3M98cPB0Bvm1mRGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281469},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"b1f2cd946e925fe9ebb0bc52e62dd788b6610de8","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.2_1788923148204_0.5401421515900213","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.3":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.3","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.3","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"af2da0f8374bca62b6e3a31fd827edc48c7124aa","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.3.tgz","fileCount":18,"integrity":"sha512-wE1ZDpZAEcHzgiiuwJhTQ+XlOrp5kEm82qotkn2vsDTw+zc5g8esLS31WSXFTDVdfVtfkLJP4QCP4IJ3mYOgBg==","signatures":[{"sig":"MEUCIFFRYMNO5yWVdO0/O1wK2LkhigV8IsER+qMEzcE/h21PAiEAs5Qg/su1uBn7KwGBOARu92hwP+AHSBcb3AwKA5eVpQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292896},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"1c236464d6bb18e88655876bf83c735d0f981a6a","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.3_1788963242397_0.5948591033612576","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.4":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.4","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.4","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"35555711aef2d1f3f20a052cb4d201c93557ec07","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.4.tgz","fileCount":18,"integrity":"sha512-oM8jATyN22awYg9nGcEuQ9uco77mUB96fMJniT5zPlpt8WrFgiUlBhzAeYvtF/hpTxhFnwPIh7/+4VhmEfHISA==","signatures":[{"sig":"MEQCIFsEMNj6eTxQ4aU90fk6di3taFrFE5abWFmwb7+mJt7WAiAs22SyLjRWbAO2zdm1KvmqXPTgEM8hxxZYrzB6dHcx6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIATATJFd0j3PPBaUh/L0IFFRCBVIAE65wtW4a2rSMh7rAiB876yJ5zvINp9+N1T6DSWNGQRB/S+xwtmX73cvLhbxmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":298511},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"5dcfec4534107fb913bdab2d0f4fbf630b38973b","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.4_1789100735714_0.7497487878032942","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.5":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.5","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.5","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"fb3832abe98b68f37f363d3ade0aab0a2125f0e4","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.5.tgz","fileCount":18,"integrity":"sha512-OwPRnODTSkibcVt18n/6t1kgLQ/EjDHTbsRlX2n4+ClDpTFFCDlnpN+ImSLXtSZbSLjpXIp8XNYi7NAj/OqVXA==","signatures":[{"sig":"MEQCIAIKctoi7ptcRbfBe/HTSi4K4uUleDwbGPeojMBlwAhyAiB4vCanc3IsdNWjVkcHDMqdmT9ABbA+ZUd+Ta/0GFSKww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDQF7SmgTYl+xZc14iODvCjUCs+JGw06FuBTFpSfCp4nAIhAKhiPV5QNwNi1EKoQC18+hMwCgbtiitVE5ymk0WlH9zN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304489},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"4763cc584c8bcf1674b8c4a7281a244c3855ceea","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.5_1789107280389_0.8567870781362563","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.6":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.6","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.6","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"2d589e6c309bf52af527f6221830f0ee17080dbd","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.6.tgz","fileCount":18,"integrity":"sha512-gOGowzRv2sJXsX721at7iwvJHmTEdwhJ5sNM5xS67hlhUV/BhF6Q9YX6doQwHmoMCfdKzaksyypCtRuPVeFV7A==","signatures":[{"sig":"MEUCICaF7s9jSsCdBPVmdD6cQMpWQ+EC+nqzevAoHNCVNtUMAiEAtVKAMvuTwUQF2ptn4pFxgSWM1klKC353f22U3YWhrOA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD6gFzhl2KHYcI4eB2L/0P38lg0QhfMTzfKEeOulcdeWgIgLqW4HFGTfv4XrlkrFNUiXi9OJCwO4qC6tmVinEXIL6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":304038},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"35be6e9b46c4a95d9b3cf443a14e7943e73b766c","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.6_1789131189908_0.1545958255616131","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.7":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.7","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.7","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"16c5d2ef45d9dab5631d8b4ee4569c37702ee9e6","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.7.tgz","fileCount":18,"integrity":"sha512-hB54ylSLTxYu1ZE3YtoyJYHjR7k1fwdz6Wrfg6uAxALLSAJcHgB3/HrGPTr3r9dra6KCccHd0+HqkLMRRd46pA==","signatures":[{"sig":"MEYCIQCll/Fojk1NAVeE5hhD2tS0TTA8owjnD0rgKXgp4iFJpwIhALEjxxCKzlgiri9Rkdqv+ixgoHQvQicJLGAe4MbScPmj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICU4FSVd0qLBDqCVhQZR20ALCypmmKeKWYpgExUiwbeAAiEA+Gr9rzWNtZl6YAiKlR1XOAHYI1b/K/I7V6r6G+TyXXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305138},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"14b0c71c3a502804fe09dc6b0dec2feb0e3bab66","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.7_1789138242495_0.8600684777208822","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.8":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.8","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.8","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"9aff2e2e1562096148475fe7542f5fea55fda9e6","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.8.tgz","fileCount":18,"integrity":"sha512-f351dHc2IGQortfJxa/2H26qwhCJYqInAtJrviIKtsGIDe/8Tu50s+HmDV5T5JMAvXg1UPZvItN1cdB1Mi0QjA==","signatures":[{"sig":"MEQCIHAgEO8K7QhKSR9vODbAy0XhPqTNDx6jOth8MQWASKUZAiALkpNXH3auuOwN6eTahmd7a2f1zyDhExfUiGF/ENwScg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDU+IO2hM6sVlmSbinfqfhVGXtlYciCo4mGTiTH7pnS+QIgf+csCKD1hbQQHZYWgGt7Lywa5fGVzc7Nkj30BswPxN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335571},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"9ce2695eead213db0d1afd170939bda863bc22f0","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.4","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.8_1790000047130_0.708337169288314","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.9":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.9","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.9","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"bbb9aeb8a94dcb5b4c403639060346d0adb76586","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.9.tgz","fileCount":18,"integrity":"sha512-EFuA4LNEfRx33L+0qqrm81fKqjqZ86F+1fxTpKisH177FQ0RWmEehJ+/5enhu6Mn6Qne+ohSaXqViLe/ED2DRA==","signatures":[{"sig":"MEYCIQDoIW9OoXfRQY4SgOAchRtGt8MZyseNB5ymqJF5DGk2rAIhAOlH+YCW9YNqu0FpLe5tYjcWe26Q12yDnW4KVZI3jfv1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICLA1bL4NbrqiatPfuFo4c8WdRbxJUYBXrRTGgrq1ss4AiA3KV5/d8chf1783+uRiRUE4LaNuRpR3xTHtYDNZGtVIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334557},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"765900c7fadc527f49f925a1f129dcfb03f9571e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.4","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.9_1790179543905_0.1172309620015679","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.10":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.10","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.10","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"9d091108eaf302710f7a4c27facf674606693a0a","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.10.tgz","fileCount":18,"integrity":"sha512-wrwCs3nfaF9HxN+XS+KlVJuep0VmS02xN8Yv8DqVHpUyzyNLJ6xJXFJ2pTV4b2YTrNi5MTa0ScFAaV36+rZCaA==","signatures":[{"sig":"MEUCIQCxyKtahAWbpIRrDKBCXzwP/MuYk8gw4kYi6tjEvNNStgIgV6N6m0/inuhcb59JphpXbmKnGIDXvTV0kcLntsIug3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGUVpeU0hlw26VhBtpAr3ENY/hBAAgltvhaWxIga+HzWAiB0Ce4sROiKzjyCBquv1svmfi98vrC6Yd3lKi0OJ/OSjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361142},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"62d63accfedc78f5634d8f952e3f988e8ffb112e","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.4","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.10_1790231849686_0.18521602756353284","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.11":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.11","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.11","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"02bf5b544cdb9ae81cc813a23732d15cce75e1d2","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.11.tgz","fileCount":18,"integrity":"sha512-2XPbmZyQoqqS+3LpOLRFYCMDunR3PYE9y5vhpW/ToXPR+dWta11A2AZSjWkrvmwoIq2pGc7CHI6yv3p2XsqWEA==","signatures":[{"sig":"MEUCIDzuePJctkHwTBOFwf6LSRPAElcUbzg+gmVP4B6Hn2XRAiEAnhuxbRfB7DUww/biYREyNJOy3TXzTkb+8KVEdJVTyGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC4HBMaNxbjHDdmnmTB+FiQ12rayt9T3CqppeRE7APhlgIgY7FqDqhhdu6NmgVh4Sp0fJ4pYcU0DVsXoHHyf4mm75g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391006},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"206cad07f874891e3436b1b44c832c4751514a77","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.4","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.11_1790245820073_0.7634214186437083","host":"s3://npm-registry-packages-npm-production"}},"0.3.1-beta.12":{"name":"@0gfoundation/0g-pay-sdk","version":"0.3.1-beta.12","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"author":{"name":"0G Labs"},"license":"MIT","_id":"@0gfoundation/0g-pay-sdk@0.3.1-beta.12","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"8c80419b44c01faadef26aa5556defb30a0c960c","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.3.1-beta.12.tgz","fileCount":18,"integrity":"sha512-nsnXuL4RSEJBJmJdfvSlFkrShg38UcbposBhjvm9IDAF0wgGOEB70lsAGcNIQSqPl3cageTqM8unNQXU9fRuQw==","signatures":[{"sig":"MEUCIBmK1Oqxh+iJtEWO7Nbzfe5jASFNjIYNoJbr4iAMqWBFAiEAt1kzrzE0ppofLqqQJPhU3+XHxQSGbSj6YzjbTqLX37s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAZlKl9ujUT/O3p+AfpqqXNprBH3jv6R31Ls7YL9JONBAiBNjLYgzEJei3lQS8g3NtuxLtgWi3xXdhsCdoPVzw16JA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":438440},"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"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"5fe7524d126344865d51979d8236b3e4e937066f","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.4","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/0g-pay-sdk_0.3.1-beta.12_1790316592005_0.34740386856638783","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@0gfoundation/0g-pay-sdk@0.4.0","bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"dist":{"shasum":"3c5ec8aea972eccb4fcc7eda958a25d4a009da6c","tarball":"https://registry.npmjs.org/@0gfoundation/0g-pay-sdk/-/0g-pay-sdk-0.4.0.tgz","fileCount":18,"integrity":"sha512-ic6JeXKWdLbTMuR7MgWhHifdefcSbw+LIr9XoH4YsPLSUeqfNAJk+09H0+9Q1GyHrrKdR5VTJe8DjxF9AG5eVQ==","signatures":[{"sig":"MEYCIQC8kiRw1+5GVMNkrHcPllwEXK9uR+z1gRG4rL5+CjKbIQIhAK1ylXqXBLt2zIDFztHFnk8ybjYU4uD6je5y510RjfMB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCUSaQjMRGYk/XR00Bo5DqpmQNIlnh29T2jl7bGeUMnMAIgXnCxa2yv17BMsHurcUSXTY0TZ4fiJVaC5oiGf3dgBoM="}],"unpackedSize":438432},"main":"./dist/index.js","name":"@0gfoundation/0g-pay-sdk","types":"./dist/index.d.ts","author":{"name":"0G Labs"},"module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"}},"gitHead":"85f6517b50a8938b3b833169d63dbc3ee4a1360c","license":"MIT","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup","type-check":"tsc --noEmit","prepublishOnly":"npm run build"},"version":"0.4.0","_npmUser":{"name":"0g-xie","email":"xie@0g.ai"},"homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"_npmVersion":"10.9.4","description":"0G Pay SDK - TypeScript/React library for 0G payment integration","directories":{},"maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"_nodeVersion":"22.22.0","dependencies":{"@tokenflight/swap":"0.4.10","@tokenflight/adapter-ethers":"0.4.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","react":"^18.3.0","eslint":"^8.57.0","react-dom":"^18.3.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^7.0.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/0g-pay-sdk_0.4.0_1790741281166_0.3618270172497273"}}},"time":{"created":"2026-04-27T05:22:38.228Z","modified":"2026-09-30T04:08:01.544Z","0.1.0":"2026-04-27T05:22:38.562Z","0.1.1":"2026-04-27T05:54:56.771Z","0.1.2":"2026-04-29T01:55:21.074Z","0.1.3":"2026-06-08T13:25:29.843Z","0.2.0":"2026-06-18T05:02:35.411Z","0.2.1":"2026-07-02T06:27:42.369Z","0.3.1-beta.0":"2026-09-08T09:48:41.026Z","0.3.1-beta.1":"2026-09-08T12:30:07.837Z","0.3.1-beta.2":"2026-09-09T03:05:48.336Z","0.3.1-beta.3":"2026-09-09T14:14:02.541Z","0.3.1-beta.4":"2026-09-11T04:25:35.801Z","0.3.1-beta.5":"2026-09-11T06:14:40.491Z","0.3.1-beta.6":"2026-09-11T12:53:10.009Z","0.3.1-beta.7":"2026-09-11T14:50:42.589Z","0.3.1-beta.8":"2026-09-21T14:14:07.242Z","0.3.1-beta.9":"2026-09-23T16:05:43.999Z","0.3.1-beta.10":"2026-09-24T06:37:29.780Z","0.3.1-beta.11":"2026-09-24T10:30:20.180Z","0.3.1-beta.12":"2026-09-25T06:09:52.143Z","0.4.0":"2026-09-30T04:08:01.276Z"},"bugs":{"url":"https://github.com/0gfoundation/0g-pay-sdk/issues"},"author":{"name":"0G Labs"},"license":"MIT","homepage":"https://github.com/0gfoundation/0g-pay-sdk#readme","keywords":["0g","0glabs","pay","payment","web3","sdk","react","typescript"],"repository":{"url":"git+https://github.com/0gfoundation/0g-pay-sdk.git","type":"git"},"description":"0G Pay SDK - TypeScript/React library for 0G payment integration","maintainers":[{"name":"overi","email":"ibrahim.over@0g.ai"},{"name":"0g-jiahao","email":"jiahao@0g.ai"},{"name":"0g-will","email":"will.riches@0g.ai"},{"name":"0g-xie","email":"xie@0g.ai"},{"name":"ymh357","email":"minghao.yu@0g.ai"},{"name":"wilbertwu","email":"wei@0g.ai"},{"name":"0g-peterzhang","email":"peter@0g.ai"}],"readme":"# 0G Pay SDK\r\n\r\nSDK for accepting deposits and card payments on the [0G network](https://0g.ai).\r\n\r\n- **Crypto / Card via TokenFlight** — swap any token or pay by card through the TokenFlight widget\r\n- **Stripe recharge** — top up USD balance directly via Stripe hosted checkout, using the 0G Pay backend\r\n- **`StripeClient`** — headless Node.js / server-side client: checkout, balance, usage, topup history — no React required\r\n- **`/server` subpath** — React-free bundle for pure Node.js projects (no `react`/`react-dom` peer deps needed)\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @0gfoundation/0g-pay-sdk\r\n```\r\n\r\n**Peer dependencies** (React projects only)\r\n\r\n```bash\r\nnpm install react react-dom\r\n```\r\n\r\nIf you only need the Node.js / server-side client (`StripeClient`), import from the `/server` subpath — no React peer deps required:\r\n\r\n```ts\r\nimport { StripeClient } from '@0gfoundation/0g-pay-sdk/server';\r\n```\r\n\r\n---\r\n\r\n## Quick Start\r\n\r\n### Crypto / Card deposit (TokenFlight)\r\n\r\n```tsx\r\nimport { OGPay } from '@0gfoundation/0g-pay-sdk';\r\n\r\nexport function App() {\r\n  const provider = window.ethereum; // any EIP-1193 provider\r\n\r\n  return <OGPay provider={provider} />;\r\n}\r\n```\r\n\r\nClicking the **Deposit** button opens a modal with the TokenFlight widget, letting users swap any token or pay by card.\r\n\r\n### Stripe recharge (credit card → USD balance)\r\n\r\n```tsx\r\nimport { OGPay } from '@0gfoundation/0g-pay-sdk';\r\n\r\nexport function App() {\r\n  const provider = window.ethereum;\r\n\r\n  return (\r\n    <OGPay\r\n      provider={provider}\r\n      stripe={{\r\n        network: 'testnet',\r\n        sessionToken: yourSessionToken,\r\n        successUrl: `${window.location.origin}/topup/return`,\r\n      }}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\nWhen `stripe` is provided, the modal gains a **Card (Stripe)** tab. Users pick a USD amount, click pay, and are redirected to Stripe hosted checkout. After payment, Stripe redirects back to your `successUrl`.\r\n\r\n---\r\n\r\n## Stripe Recharge — Step-by-Step Tutorial\r\n\r\nThe Stripe flow has three parts: obtaining a session token, triggering the checkout, and handling the return page.\r\n\r\n### Step 1 — Get a session token\r\n\r\nThe 0G Pay backend requires a session token for all API calls. You exchange your user's Privy access token for a Pay session token once per session.\r\n\r\n```ts\r\nimport { getSessionUrl } from '@0gfoundation/0g-pay-sdk';\r\n\r\nasync function getPaySessionToken(privyAccessToken: string): Promise<string> {\r\n  const res = await fetch(getSessionUrl('testnet'), {\r\n    method: 'POST',\r\n    headers: { 'Content-Type': 'application/json' },\r\n    body: JSON.stringify({ privy_token: privyAccessToken }),\r\n  });\r\n  if (!res.ok) throw new Error(`Session exchange failed: ${res.status}`);\r\n  const { token } = await res.json();\r\n  return token;\r\n}\r\n```\r\n\r\nStore the token in component state or your auth context — it is valid until the JWT expires.\r\n\r\n### Step 2 — Render the deposit button with Stripe config\r\n\r\nPass the session token (and optionally an email) into the `stripe` prop. The `successUrl` must point to a page in your app that renders the `StripeReturn` component (see Step 3).\r\n\r\n```tsx\r\nimport { OGPay } from '@0gfoundation/0g-pay-sdk';\r\n\r\nexport function TopupButton({ sessionToken, email }: { sessionToken: string; email?: string }) {\r\n  const provider = window.ethereum;\r\n\r\n  return (\r\n    <OGPay\r\n      provider={provider}\r\n      stripe={{\r\n        network: 'testnet',\r\n        sessionToken,\r\n        email,                                              // pre-fills Stripe checkout\r\n        successUrl: `${window.location.origin}/topup/return`, // your return page\r\n        cancelUrl: window.location.href,                    // where to go on cancel\r\n      }}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\nWhen the user opens the modal and clicks the **Card (Stripe)** tab, they see:\r\n\r\n- Amount presets: **$10 · $50 · $100 · $500**\r\n- A custom amount input\r\n- A **Pay $X with Card** button\r\n\r\nClicking the button calls `POST /v1/checkout` on the Pay backend and redirects the browser to the Stripe hosted checkout page.\r\n\r\n### Step 3 — Handle the return page\r\n\r\nAfter payment, Stripe appends `?session_id=cs_...` to your `successUrl` and redirects the user there. Render the `StripeReturn` component on that page — it polls the backend until the payment is confirmed (up to 18 seconds) and shows the result.\r\n\r\n```tsx\r\n// pages/topup/return.tsx (or your router equivalent)\r\nimport { StripeReturn } from '@0gfoundation/0g-pay-sdk';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nexport function TopupReturnPage({ sessionToken }: { sessionToken: string }) {\r\n  const navigate = useNavigate();\r\n  const sessionId = new URLSearchParams(window.location.search).get('session_id') ?? '';\r\n\r\n  if (!sessionId) return <p>Invalid return URL — missing session_id.</p>;\r\n\r\n  return (\r\n    <StripeReturn\r\n      sessionId={sessionId}\r\n      network=\"testnet\"\r\n      sessionToken={sessionToken}\r\n      onConfirmed={(creditedUsd) => {\r\n        console.log(`$${creditedUsd.toFixed(2)} added to balance`);\r\n        navigate('/dashboard');\r\n      }}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n`StripeReturn` renders three states:\r\n\r\n| State | Shown when |\r\n|---|---|\r\n| Spinner + \"Confirming your payment…\" | Polling in progress |\r\n| Green \"Payment confirmed! $X.XX added\" | Backend confirms `paid: true` |\r\n| Amber \"Balance will update shortly\" | 18-second timeout — payment likely succeeded but backend is slow |\r\n\r\n### Step 4 — (Optional) standalone hooks\r\n\r\nIf you need tighter control, use the hooks directly instead of the pre-built components.\r\n\r\n**`useStripeCheckout`** — create a session and redirect programmatically:\r\n\r\n```tsx\r\nimport { useStripeCheckout } from '@0gfoundation/0g-pay-sdk';\r\n\r\nfunction CustomTopupForm({ sessionToken }: { sessionToken: string }) {\r\n  const { createSession, loading, error } = useStripeCheckout({ network: 'testnet', sessionToken });\r\n\r\n  return (\r\n    <>\r\n      {error && <p style={{ color: 'red' }}>{error}</p>}\r\n      <button disabled={loading} onClick={() => createSession(50)}>\r\n        {loading ? 'Redirecting…' : 'Pay $50 with Card'}\r\n      </button>\r\n    </>\r\n  );\r\n}\r\n```\r\n\r\n**`useStripeReturn`** — poll payment status and render your own UI:\r\n\r\n```tsx\r\nimport { useStripeReturn } from '@0gfoundation/0g-pay-sdk';\r\n\r\nfunction MyReturnPage({ sessionId, sessionToken }) {\r\n  const { status, creditedMicros, availableMicrosAfter } = useStripeReturn(sessionId, {\r\n    network: 'testnet',\r\n    sessionToken,\r\n  });\r\n\r\n  if (status === 'loading') return <Spinner />;\r\n  if (status === 'timeout') return <p>Payment received — balance updating soon.</p>;\r\n\r\n  const creditedUsd = creditedMicros / 1_000_000;\r\n  return <p>✓ ${creditedUsd.toFixed(2)} credited to your account.</p>;\r\n}\r\n```\r\n\r\n---\r\n\r\n## Stripe Client (Node.js / server-side)\r\n\r\n`StripeClient` is a headless client with no React or browser dependencies. Use it in Node.js servers, serverless functions, scripts, or any environment where you need to drive the 0G Pay API programmatically.\r\n\r\nRequires **Node.js 18+** (native `fetch` and `AbortSignal.timeout`).\r\n\r\n### Import\r\n\r\n```ts\r\n// In a React project (react already installed):\r\nimport { StripeClient } from '@0gfoundation/0g-pay-sdk';\r\n\r\n// In a pure Node.js project (no React needed):\r\nimport { StripeClient } from '@0gfoundation/0g-pay-sdk/server';\r\n```\r\n\r\n### Setup\r\n\r\n```ts\r\nconst client = new StripeClient({\r\n  network: 'testnet',       // 'testnet' | 'mainnet' — defaults to 'testnet'\r\n  sessionToken: '...',      // session token from exchangeSession()\r\n});\r\n```\r\n\r\nUse `baseUrl` to point at your own proxy or a host other than the two network defaults:\r\n\r\n```ts\r\nconst client = new StripeClient({\r\n  baseUrl: 'https://your-pay-backend.example.com', // overrides network\r\n  sessionToken: '...',\r\n});\r\n```\r\n\r\n### Exchange session token\r\n\r\nExchange a Privy access token for a 0G Pay session token. The returned `token` is used as `sessionToken` for all other methods.\r\n\r\n```ts\r\nconst { token, account_id } = await client.exchangeSession(privyAccessToken);\r\n```\r\n\r\n### Get balance\r\n\r\n```ts\r\nconst { available_micros } = await client.getBalance();\r\nconst usd = available_micros / 1_000_000;\r\n```\r\n\r\n### Create a checkout session\r\n\r\n```ts\r\nconst { session_id, url } = await client.createCheckoutSession({\r\n  amountUsd: 50,                              // or use amountMicros: 50_000_000\r\n  successUrl: 'https://yourapp.com/return',\r\n  cancelUrl:  'https://yourapp.com/cancel',\r\n  email: 'user@example.com',                 // optional — pre-fills Stripe checkout\r\n});\r\n// url is the Stripe hosted checkout page — redirect the user there\r\n```\r\n\r\n`amountUsd` and `amountMicros` are mutually exclusive; exactly one must be provided.\r\n\r\n### Poll payment status\r\n\r\n```ts\r\nimport { StripeClient, StripeAuthError, StripePollingTimeoutError } from '@0gfoundation/0g-pay-sdk/server';\r\n\r\ntry {\r\n  const result = await client.pollCheckoutStatus(session_id, {\r\n    maxAttempts: 6,    // default 6\r\n    intervalMs: 3_000, // default 3000 ms\r\n  });\r\n  if (result.paid) {\r\n    console.log(`Credited $${result.credited_micros / 1_000_000}`);\r\n  } else {\r\n    // All attempts returned paid: false — payment not yet confirmed.\r\n    // This is a normal result for reconcile calls (e.g. page load checks).\r\n  }\r\n} catch (err) {\r\n  if (err instanceof StripeAuthError) {\r\n    // 401 or 403 — session token is invalid or expired. Refresh and retry.\r\n    console.error(`Auth failed (${err.status}): ${err.message}`);\r\n  } else if (err instanceof StripePollingTimeoutError) {\r\n    // Never received a clean response in maxAttempts tries (network/server error).\r\n    // err.cause holds the underlying error.\r\n    console.warn(`No response after ${err.attempts} attempts`, err.cause);\r\n  } else {\r\n    throw err;\r\n  }\r\n}\r\n```\r\n\r\n**Polling behaviour:**\r\n- Returns immediately when `paid: true`.\r\n- If all attempts return `paid: false`, resolves with the last status — not an error. This makes single-attempt reconcile calls (`maxAttempts: 1`) work naturally.\r\n- Throws `StripeAuthError` immediately on 401/403 — no retries.\r\n- Throws `StripePollingTimeoutError` (with `.cause`) only when no clean HTTP response was received at all.\r\n\r\n### List topup history\r\n\r\n```ts\r\nconst { topups, next_before } = await client.listTopups({ limit: 20 });\r\n// paginate: pass next_before as `before` on the next call\r\nconst page2 = await client.listTopups({ limit: 20, before: next_before });\r\n```\r\n\r\nPass `source` to filter by payment origin. This is important when checking whether a topup is a user's first real deposit — the backend may return credit-type rows before any Stripe or on-chain topup, causing a naïve \"first row\" check to misfire:\r\n\r\n```ts\r\n// Only stripe and on-chain topups — correct for \"is first topup\" checks\r\nconst { topups } = await client.listTopups({ limit: 1, source: 'stripe,chain' });\r\nconst isFirstTopup = topups.length === 0;\r\n```\r\n\r\n### Get usage\r\n\r\n```ts\r\nconst { items, cursor } = await client.getUsage({ limit: 50 });\r\nconst page2 = await client.getUsage({ limit: 50, cursor });\r\n```\r\n\r\n### Get credits\r\n\r\nLists the account's credit lots — promotional bonuses, staking rewards and team grants — in spend order (soonest expiry first).\r\n\r\nA page at a time, so walk it to the end before deriving any money figure from it:\r\n\r\n```ts\r\nconst LIMIT = 500; // the backend's ceiling\r\n\r\nconst MAX_PAGES = 20; // a bound, not an expectation\r\n\r\n// `extra` picks WHICH lots — leave it off to walk every lot, pass\r\n// { state: 'granted' } for only the spendable ones. It deliberately cannot\r\n// carry `limit` or `cursor`: the walk owns those, and a caller who lowered\r\n// `limit` would make the completeness test below read a full page as short.\r\nasync function walkCreditLots(\r\n  extra: Pick<GetCreditsParams, 'state'> = {},\r\n): Promise<{ lots: CreditLot[]; complete: boolean }> {\r\n  const lots: CreditLot[] = [];\r\n  let cursor: string | undefined;\r\n\r\n  for (let i = 0; i < MAX_PAGES; i++) {\r\n    const page = await client\r\n      .getCredits({ ...extra, limit: LIMIT, cursor })\r\n      .catch(() => null);\r\n    // Keep what arrived and call it partial. A 429 here is routine — this\r\n    // endpoint allows 20 requests a minute across every reader of it — and\r\n    // throwing would discard pages already in hand.\r\n    if (!page) return { lots, complete: false };\r\n\r\n    lots.push(...page.lots);\r\n\r\n    // The server's cursor is the only way on. Where none comes back, a short\r\n    // page is the end of the list and a full one is a list this deployment\r\n    // cannot let you finish.\r\n    if (!page.next_cursor) return { lots, complete: page.lots.length < LIMIT };\r\n    cursor = page.next_cursor;\r\n  }\r\n  return { lots, complete: false };\r\n}\r\n\r\nconst { lots, complete } = await walkCreditLots();\r\nif (!complete) {\r\n  // Do not derive a money figure from this. Show what you have and say it is partial.\r\n}\r\nfor (const lot of lots) {\r\n  // `source` is the category to branch on, `display` is the label to render.\r\n  console.log(lot.source, lot.display, lot.state, lot.remaining_micros);\r\n}\r\n```\r\n\r\n> **Never build a cursor yourself.** It is tempting — pay-v2's cursor is `` `${lot.expires_at}|${lot.lot_id}` ``, it calls the format \"opaque by convention\", and the `cursor` request parameter has always been forwarded. The reason not to is that you cannot tell which kind of deployment answered you, and one of them does not terminate.\r\n>\r\n> Reading `?cursor` and reporting `next_cursor` shipped in **one** pay-v2 commit, so a pay-v2 old enough to report no cursor also ignores the one you send — and hands back the *same first page*. A walk that synthesizes a cursor there appends that page forever. (The proxy in front can also report no cursor while passing `?cursor` through to a backend that does honour it, in which case a built cursor would have worked. Nothing in the response distinguishes the two, so guessing buys a working walk on one host and an infinite loop on the other.)\r\n>\r\n> That is what `complete` is for. Where no cursor comes back, treat the list as unfinishable and say so — a partial list that admits it beats a figure that is quietly wrong.\r\n\r\nShow `state`, never derive liveness yourself — it is computed against the request's own clock, so an expired-but-unswept lot reports `'expired'` rather than looking spendable:\r\n\r\n```ts\r\n// Credit this account can actually spend right now.\r\n// `state: 'granted'` makes this one request on any real account; the filter stays\r\n// regardless — see below.\r\nconst walked = await walkCreditLots({ state: 'granted' });\r\nconst spendable = walked.complete\r\n  ? walked.lots\r\n      .filter(lot => lot.state === 'granted' && lot.remaining_micros > 0)\r\n      .reduce((sum, lot) => sum + lot.remaining_micros, 0)\r\n  : null; // an incomplete list cannot produce this figure — say so, do not guess\r\n```\r\n\r\n> **`state: 'granted'` does not replace that filter.** The backend's predicate for the parameter is `status = 'active' AND expires_at > now`, which — unlike the authoritative spendable sum — does not include `remaining_micros > 0`. A drained-but-unswept lot therefore still comes back as `'granted'` with nothing left. Keeping the filter is also what makes the parameter safe to pass: a deployment that predates it ignores it silently, and with the filter in place that costs extra rows rather than a wrong figure.\r\n>\r\n> **Pass it only where you want spendable lots.** It is a filter on the list, so any figure that needs the dead lots must be walked without it — `available_micros`, for instance, counts unswept expired credit, and a display that shows a user their clawed-back bonus needs the revoked lot to still arrive.\r\n>\r\n> **Testing whether a deployment honours it can only ever come back \"no\".** Ask for `'granted'`: if a lot arrives in another state, the parameter was ignored. If every lot is `'granted'`, you have learnt nothing — an account whose lots happen to all be live looks identical either way. So never conclude \"honoured, one request is enough\" from a clean result; keep the walk.\r\n\r\n> **Why the walk is not optional.** Lots come back `expires_at ASC`, and an `'expired'` lot's expiry is in the past by definition — so expired lots sort ahead of every live one and hold the page open. `'spent'` lots tend to sort early too, having drained in that order. `'revoked'` does **not**: a revocation is a refunded topup or a funder pulling credit back, and it leaves `expires_at` alone, so a lot granted today for twelve months and revoked an hour later sorts at the *end*. The dead lots are therefore not a prefix you may stop scanning at, and a dead lot in the last row says nothing about whether the list is complete.\r\n>\r\n> Once an account holds more lots than `limit`, the rows that fall off the end are the **live** credit. A credit sum from that page under-reports credit, and the usual deposit split — `spendable_micros − Σ(credit)`, needed because Pay does not expose funds lots — over-reports deposit by exactly the same amount. That shows granted credit as the user's own money. pay-v2 hit this on staging on 2026-09-22 ([#23](https://github.com/0gfoundation/0g-pay-sdk/issues/23)).\r\n>\r\n> Once the walk is complete, that subtraction is exact and is the way to get a deposit figure. `Balance.spendable_micros` on its own cannot give you one — it is deposit *plus* credit, which is why the split exists.\r\n>\r\n> **Which hosts honour what is a deployment question, not an SDK one.** At the time of writing the testnet host reports `next_cursor` and honours `state`; the mainnet host does neither. That will change without this README changing, so do not code against the sentence you just read — code against `complete` and against the `state` check above, and the walk stays correct on either.\r\n\r\n> **Breaking change (backend, 2026-09-20).** `CreditLot.status` is gone; use `state`. The old field was the expiry sweep's bookkeeping column — it read `\"active\"` for up to an hour after credit had expired, and it could not tell an expiry from a revocation. `state` answers both, correctly.\r\n\r\n### Full server-side flow\r\n\r\n```ts\r\nimport { StripeClient, StripeAuthError, StripePollingTimeoutError } from '@0gfoundation/0g-pay-sdk/server';\r\n\r\nconst PAY_URL = 'https://your-pay-backend.example.com';\r\n\r\n// 1. Exchange Privy token once per user session\r\nasync function getClient(privyToken: string) {\r\n  const client = new StripeClient({ baseUrl: PAY_URL, sessionToken: '' });\r\n  const { token, account_id } = await client.exchangeSession(privyToken);\r\n  return new StripeClient({ baseUrl: PAY_URL, sessionToken: token, accountId: account_id });\r\n}\r\n\r\n// 2. Create a checkout session and return the Stripe URL to the frontend\r\nasync function createTopup(privyToken: string, amountUsd: number, returnUrl: string) {\r\n  const client = await getClient(privyToken);\r\n  const { session_id, url } = await client.createCheckoutSession({\r\n    amountUsd,\r\n    successUrl: `${returnUrl}?session_id={CHECKOUT_SESSION_ID}`,\r\n    cancelUrl: returnUrl,\r\n  });\r\n  return { session_id, url };\r\n}\r\n\r\n// 3. After Stripe redirects back, confirm payment and read updated balance\r\nasync function confirmTopup(privyToken: string, sessionId: string) {\r\n  const client = await getClient(privyToken);\r\n  try {\r\n    const status = await client.pollCheckoutStatus(sessionId);\r\n    const balance = await client.getBalance();\r\n    return { status, balance };\r\n  } catch (err) {\r\n    if (err instanceof StripeAuthError) throw new Error('Session expired');\r\n    if (err instanceof StripePollingTimeoutError) return { timedOut: true };\r\n    throw err;\r\n  }\r\n}\r\n```\r\n\r\n---\r\n\r\n## Partner API\r\n\r\nThe Partner API is a set of **public, read-only HTTP endpoints** exposed by the 0G Pay portal. No authentication is required — call them directly with plain `fetch`.\r\n\r\nUse `getApiUrl()` to resolve the correct base URL for each network:\r\n\r\n```ts\r\nimport { getApiUrl } from '@0gfoundation/0g-pay-sdk';\r\n\r\nconst BASE = getApiUrl('testnet'); // 'https://0g-pay-scan.vercel.app'\r\n```\r\n\r\n---\r\n\r\n### Campaigns\r\n\r\nA campaign is a funded reward pool. Partners query campaigns to display reward availability to users.\r\n\r\n#### List campaigns\r\n\r\n```\r\nGET /api/partner/campaigns\r\n```\r\n\r\n```ts\r\nconst res = await fetch(`${BASE}/api/partner/campaigns`);\r\nconst data = await res.json(); // { campaigns: Campaign[] }\r\n```\r\n\r\n| Query param | Type | Description |\r\n|---|---|---|\r\n| `status` | `string` | Filter by status: `active` \\| `closed` \\| `expired` \\| `pending_approval` \\| `withdrawn` |\r\n| `limit` | `number` | Max records to return |\r\n\r\n#### Get campaign detail\r\n\r\n```\r\nGET /api/partner/campaigns/:id\r\n```\r\n\r\n```ts\r\nconst res = await fetch(`${BASE}/api/partner/campaigns/${campaignId}`);\r\nconst campaign = await res.json();\r\n```\r\n\r\nReturns the full campaign object including its associated `lots` (credit allocations).\r\n\r\nEach lot reports `state` (`granted` | `spent` | `expired` | `revoked`), the same computed field as [`CreditLot.state`](#creditlot). As of the 2026-09-20 backend release it no longer carries the raw `status` column, which lagged behind reality by up to an hour and showed expired credit as active.\r\n\r\n#### Get campaign rollup stats\r\n\r\n```\r\nGET /api/partner/campaigns/:id/rollup\r\n```\r\n\r\n```ts\r\nconst res = await fetch(`${BASE}/api/partner/campaigns/${campaignId}/rollup`);\r\nconst stats = await res.json();\r\n```\r\n\r\nReturns aggregated stats for the campaign — total granted, total remaining, user counts, etc.\r\n\r\n---\r\n\r\n### Programs\r\n\r\nA program defines the **reward rules** that govern how credits are calculated and distributed within a campaign. Programs expose their schedule, credit validity period, and two-tier rate configuration.\r\n\r\n#### List programs\r\n\r\n```\r\nGET /api/partner/programs\r\n```\r\n\r\n```ts\r\nconst res = await fetch(`${BASE}/api/partner/programs`);\r\nconst data = await res.json(); // { programs: Program[] }\r\n```\r\n\r\nA sample response — two built-in programs, `topup-promo` (which carries `terms`) and `staking` (which does not):\r\n\r\n```json\r\n{\r\n  \"programs\": [\r\n    {\r\n      \"program\": \"topup-promo\",\r\n      \"running\": true,\r\n      \"starts_at\": \"2026-09-11T00:00:00Z\",\r\n      \"expires_at\": \"2026-09-26T23:59:59Z\",\r\n      \"credit_duration_secs\": 300000000,\r\n      \"live\": true,\r\n      \"terms\": {\r\n        \"first_topup\": { \"bonus_pct\": 100, \"cap_micros\": 10000000000,\r\n                         \"definition\": \"bonus = the amount paid, capped at cap_micros\" },\r\n        \"later_topups\": { \"bonus_pct\": 33.333333333333336, \"divisor\": 3,\r\n                          \"definition\": \"bonus = the amount paid / divisor, rounded down\" }\r\n      }\r\n    },\r\n    { \"program\": \"staking\", \"running\": true, \"starts_at\": null, \"expires_at\": null,\r\n      \"credit_duration_secs\": null, \"live\": true }\r\n  ]\r\n}\r\n```\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `program` | `string` | Program identifier — `'topup-promo'` or `'staking'` |\r\n| `running` | `boolean` | Whether the program is switched on in the portal |\r\n| `starts_at` | `string \\| null` | ISO 8601 — when the program window opens |\r\n| `expires_at` | `string \\| null` | ISO 8601 — when the program window closes |\r\n| `credit_duration_secs` | `number \\| null` | How long each issued credit lot stays valid, in seconds |\r\n| `live` | `boolean` | **Whether the offer is issuing credit right now** — `running` *and* inside the window |\r\n| `terms` | `object \\| undefined` | The promotion's tier arithmetic. Present on `topup-promo` only |\r\n\r\nUse `live` rather than comparing `starts_at` / `expires_at` yourself — the server folds its own clock into that field precisely so no caller has to, and `running` alone is not enough (a switched-on program outside its window issues nothing).\r\n\r\nEach entry under `terms` carries:\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `bonus_pct` | `number` | The percentage to **display**. Derived server-side from the same rule the deposit path pays from, so no surface advertises a rate the ledger disagrees with. It is unrounded — `100` for the first tier, but `33.333333333333336` for a divisor of 3 — so round it for display |\r\n| `cap_micros` | `number \\| undefined` | First tier only — the ceiling on the bonus, in micro-USD |\r\n| `divisor` | `number \\| undefined` | Later tiers only — the topup is divided by this, floored |\r\n| `definition` | `string` | The rule in words, server-authored |\r\n\r\n#### Ask what a specific account's next topup would earn\r\n\r\nPass `account_id` and the response gains `your_next_topup` — the authoritative answer to \"is this user's next topup their first?\". Prefer it over deriving first-ness from the topup list:\r\n\r\n```\r\nGET /api/partner/programs?account_id=<32-hex account id>\r\n```\r\n\r\n```ts\r\nconst res = await fetch(`${BASE}/api/partner/programs?account_id=${accountId}`);\r\nconst { programs, your_next_topup } = await res.json();\r\n\r\n// your_next_topup: { tier: 'first' | 'later' | '', terms?: Tier, as_of: string }\r\n// `terms` is absent whenever `tier` is '' — nothing is on offer, so there is nothing to describe.\r\nif (your_next_topup.tier === 'first' && your_next_topup.terms) {\r\n  console.log(`First topup — ${Math.round(your_next_topup.terms.bonus_pct)}% back`);\r\n}\r\n```\r\n\r\n`tier` is `''` when nothing is on offer (the promotion is not live). `as_of` is the server timestamp the answer was computed at.\r\n\r\n#### Compute expected credit for a topup\r\n\r\n```ts\r\ntype Tier = { bonus_pct: number; cap_micros?: number; divisor?: number };\r\ntype Terms = { first_topup: Tier; later_topups: Tier };\r\n\r\n// Dispatch on WHICH tier you are pricing, never on which fields happen to be present:\r\n// `cap_micros` belongs to the first tier and `divisor` to later ones today, but a tier\r\n// carrying both would silently take the wrong branch.\r\nfunction computeBonus(amountMicros: number, terms: Terms, tier: 'first' | 'later'): number {\r\n  if (tier === 'first') {\r\n    // 100% of what was paid, capped. Deliberately not derived from bonus_pct: the backend\r\n    // pins the first tier to the constant `ops.FirstTopupBonusPct` (0g-pay-v2,\r\n    // internal/ops/promo.go) and writes the payout as \"the whole paid amount\" rather than\r\n    // amount*pct/100, because at 100% the multiply is a no-op that risks overflow. The\r\n    // percentage is published FROM that constant, so it is what you SAY, never what you\r\n    // recompute from.\r\n    return Math.min(amountMicros, terms.first_topup.cap_micros ?? amountMicros);\r\n  }\r\n  // Later tiers: integer division IS the rounding rule — floor, never round.\r\n  const { divisor } = terms.later_topups;\r\n  return divisor ? Math.floor(amountMicros / divisor) : 0;\r\n}\r\n\r\nconst promo = programs.find(p => p.program === 'topup-promo');\r\n// `terms` rides on topup-promo, but guard it: a program row with no configured\r\n// arithmetic comes back without the key.\r\nconst bonus = promo?.live && promo.terms && your_next_topup?.tier\r\n  ? computeBonus(50_000_000, promo.terms, your_next_topup.tier)\r\n  : 0;\r\n```\r\n\r\n`your_next_topup` comes from the `?account_id=` request form above — a call without it returns `programs` alone.\r\n\r\nShow `bonus_pct` in copy, but compute the figure from `cap_micros` / `divisor` — the percentage is what you *say*, not what the deposit path pays from. Round it before displaying: the later tier's is a true division, so `33.333333333333336` is what arrives on the wire.\r\n\r\n#### Determine if a user has had their first topup\r\n\r\n`your_next_topup.tier` above is the direct answer and needs no derivation. If you do want to inspect the history, call `StripeClient.listTopups` with `source: 'stripe,chain'` to exclude service-recorded rows that would otherwise produce a false \"no topups yet\":\r\n\r\n```ts\r\nconst { topups } = await client.listTopups({ limit: 1, source: 'stripe,chain' });\r\nconst isFirstTopup = topups.length === 0;\r\n```\r\n\r\nEach row also carries `bonus_micros` and `tier`, so a past topup can report what it actually earned without re-deriving it.\r\n\r\n---\r\n\r\n## API Reference\r\n\r\n### `getApiUrl(network?)`\r\n\r\nReturns the base URL for the given network. Use this as the prefix for Partner API calls.\r\n\r\n```ts\r\nimport { getApiUrl } from '@0gfoundation/0g-pay-sdk';\r\n\r\ngetApiUrl('testnet') // 'https://0g-pay-scan.vercel.app'\r\ngetApiUrl('mainnet') // 'https://pay.0g.ai'\r\n```\r\n\r\nBoth are returned without a trailing slash — append paths as `/api/v2/...`.\r\n\r\n### `getSessionUrl(network?)`\r\n\r\nReturns the session exchange endpoint for the given network.\r\n\r\n```ts\r\ngetSessionUrl('testnet') // 'https://0g-pay-scan.vercel.app/api/v2/session'\r\ngetSessionUrl('mainnet') // 'https://pay.0g.ai/api/v2/session'\r\n```\r\n\r\n---\r\n\r\n### `<OGPay>`\r\n\r\n| Prop | Type | Default | Description |\r\n|---|---|---|---|\r\n| `provider` | `EIP1193Provider` | — | **Required.** EIP-1193 wallet provider (`window.ethereum`, wagmi, viem, …) |\r\n| `children` | `ReactNode` | `<button>Deposit</button>` | Custom trigger element |\r\n| `methods` | `string[]` | `['crypto', 'card']` | Payment methods shown in the TokenFlight widget |\r\n| `outputAmount` | `string` | — | Pre-fill the output amount in the widget |\r\n| `lockFromToken` | `boolean` | `false` | Lock the source token to the native token |\r\n| `tradeType` | `string` | `'EXACT_INPUT'` | Trade type passed to the TokenFlight widget |\r\n| `logo` | `ReactNode` | 0G logo | Custom logo in the modal header |\r\n| `onSuccess` | `(data) => void` | — | Called when a TokenFlight swap completes successfully |\r\n| `onError` | `(data) => void` | — | Called when a TokenFlight swap fails |\r\n| `mode` | `'user' \\| 'developer'` | `'user'` | `'user'`: fixed 0G recipient. `'developer'`: use `recipientAddress` |\r\n| `recipientAddress` | `string` | — | Required when `mode=\"developer\"`. Must be a valid `0x…` Ethereum address |\r\n| `stripe` | `StripeConfig` | — | When provided, adds a **Card (Stripe)** tab for USD top-up via Stripe |\r\n\r\n### `<StripeCheckoutForm>`\r\n\r\nRenders the amount picker UI standalone — useful if you want it outside the modal.\r\n\r\n```tsx\r\nimport { StripeCheckoutForm } from '@0gfoundation/0g-pay-sdk';\r\n\r\n<StripeCheckoutForm\r\n  config={{ network: 'testnet', sessionToken, email, successUrl, cancelUrl }}\r\n/>\r\n```\r\n\r\n| Prop | Type | Description |\r\n|---|---|---|\r\n| `config` | `StripeConfig` | **Required.** Stripe configuration object |\r\n\r\n### `<StripeReturn>`\r\n\r\nPolls the backend and renders the payment confirmation UI.\r\n\r\n```tsx\r\nimport { StripeReturn } from '@0gfoundation/0g-pay-sdk';\r\n\r\n<StripeReturn\r\n  sessionId={sessionId}\r\n  network=\"testnet\"\r\n  sessionToken={sessionToken}\r\n  onConfirmed={(creditedUsd) => { /* navigate away */ }}\r\n/>\r\n```\r\n\r\n| Prop | Type | Description |\r\n|---|---|---|\r\n| `sessionId` | `string` | **Required.** The `session_id` query param from Stripe's redirect |\r\n| `network` | `Network` | `'testnet'` \\| `'mainnet'` — defaults to `'testnet'` |\r\n| `sessionToken` | `string` | **Required.** Session token from the Pay backend |\r\n| `onConfirmed` | `(creditedUsd: number) => void` | Called once when the backend confirms payment. Receives the credited amount in USD |\r\n\r\n### `useStripeCheckout(config)`\r\n\r\n```ts\r\nconst { createSession, loading, error } = useStripeCheckout(config: StripeConfig);\r\n```\r\n\r\n| Return | Type | Description |\r\n|---|---|---|\r\n| `createSession` | `(amountUsd: number) => Promise<void>` | Creates a Stripe checkout session and redirects `window.location.href` to the Stripe URL |\r\n| `loading` | `boolean` | `true` while the API call is in flight |\r\n| `error` | `string \\| null` | Error message if the API call failed, `null` otherwise |\r\n\r\n### `useStripeReturn(sessionId, config)`\r\n\r\n```ts\r\nconst { status, creditedMicros, availableMicrosAfter } = useStripeReturn(sessionId, {\r\n  network: 'testnet',\r\n  sessionToken,\r\n});\r\n```\r\n\r\n| Return | Type | Description |\r\n|---|---|---|\r\n| `status` | `'loading' \\| 'confirmed' \\| 'timeout'` | Current polling state |\r\n| `creditedMicros` | `number` | Amount credited, in micro-USD (divide by 1,000,000 for USD). Non-zero when `status === 'confirmed'` |\r\n| `availableMicrosAfter` | `number` | Account balance after crediting, in micro-USD |\r\n\r\nPolls `GET /api/v2/topup/checkout/{sessionId}` up to **6 times** with **3-second intervals** (18-second ceiling). Stops immediately on `paid: true`.\r\n\r\n### `StripeClient`\r\n\r\n```ts\r\nconst client = new StripeClient(config: StripeClientConfig);\r\n```\r\n\r\n| Method | Signature | Description |\r\n|---|---|---|\r\n| `exchangeSession` | `(privyToken: string) => Promise<SessionInfo>` | Exchange a Privy access token for a 0G Pay session token. |\r\n| `getBalance` | `() => Promise<Balance>` | Fetch the current account balance. |\r\n| `createCheckoutSession` | `(params: CreateCheckoutSessionParams) => Promise<CheckoutSession>` | Create a Stripe Checkout session. Returns `{ session_id, url }` — does **not** redirect. |\r\n| `pollCheckoutStatus` | `(sessionId: string, options?: PollCheckoutStatusOptions) => Promise<CheckoutStatus>` | Poll for payment confirmation. See polling behaviour below. |\r\n| `listTopups` | `(params?: ListTopupsParams) => Promise<ListTopupsResult>` | List topup history, newest first. |\r\n| `getUsage` | `(params?: GetUsageParams) => Promise<GetUsageResult>` | Fetch usage history. |\r\n| `getCredits` | `(params?: GetCreditsParams) => Promise<GetCreditsResult>` | List one page of the account's credit lots. Page with `cursor` — see [Get credits](#get-credits). |\r\n\r\n**`CreateCheckoutSessionParams`**\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `amountUsd` | `number` | Amount in USD (e.g. `50` for $50). Mutually exclusive with `amountMicros`. |\r\n| `amountMicros` | `number` | Amount in micro-USD (e.g. `50_000_000` for $50). Mutually exclusive with `amountUsd`. |\r\n| `successUrl` | `string` | Stripe redirects here after payment. Do **not** URL-encode `{CHECKOUT_SESSION_ID}`. |\r\n| `cancelUrl` | `string` | Stripe redirects here on cancel. |\r\n| `email` | `string` | Pre-fill the email field in Stripe checkout. |\r\n\r\n**`PollCheckoutStatusOptions`**\r\n\r\n| Field | Type | Default | Description |\r\n|---|---|---|---|\r\n| `maxAttempts` | `number` | `6` | Maximum poll attempts. |\r\n| `intervalMs` | `number` | `3000` | Milliseconds between attempts. |\r\n\r\n**`ListTopupsParams`**\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `limit` | `number` | Max number of records to return. |\r\n| `before` | `number` | Pagination cursor — use `next_before` from the previous page. |\r\n| `source` | `string` | Filter by topup source. Use `'stripe,chain'` to exclude credit-type rows when checking first-topup status. |\r\n\r\n**`GetUsageParams`**\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `limit` | `number` | Max number of records to return. |\r\n| `cursor` | `string` | Pagination cursor — use `cursor` from the previous page. |\r\n\r\n**`GetCreditsParams`**\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `limit` | `number` | Lots per page. Backend default `100`, **ceiling `500`**; a value outside `1..500` is ignored and you get `100`. |\r\n| `cursor` | `string` | Where to resume — pass back the previous page's `next_cursor`, and nothing else. A cursor you build yourself is ignored by exactly the deployments that need it. |\r\n| `state` | `'granted'` | Ask the backend for only the lots spendable right now. A deployment that predates it ignores it silently — see [Get credits](#get-credits). |\r\n\r\n**`GetCreditsResult`**\r\n\r\n| Field | Type | Description |\r\n|---|---|---|\r\n| `lots` | `CreditLot[]` | One page, in spend order (`expires_at ASC`). |\r\n| `next_cursor` | `string \\| null \\| undefined` | A string means more may follow — set on any **full** page, so not proof. `null` or absent means no further page is reachable: with a short page that is the end of the list, with a **full** page it means this deployment cannot page and your list is partial. Never build a cursor yourself — see [Get credits](#get-credits). |\r\n\r\n> The list is paged, and a full page is never proof of the end. Never derive a money figure from a single call — [Get credits](#get-credits) has the walk.\r\n\r\n### `StripeAuthError`\r\n\r\nThrown immediately on `401`/`403` responses — no retries are made.\r\n\r\n```ts\r\nclass StripeAuthError extends Error {\r\n  status: number;  // 401 or 403\r\n}\r\n```\r\n\r\nThrown by: `exchangeSession`, `getBalance`, `createCheckoutSession`, `pollCheckoutStatus`, `listTopups`, `getUsage`, `getCredits`.\r\n\r\n### `StripePollingTimeoutError`\r\n\r\nThrown by `pollCheckoutStatus` when `maxAttempts` is exhausted and no clean HTTP response was ever received (i.e. all attempts failed due to network or server errors).\r\n\r\n> **Note:** If the backend responded with `paid: false` on every attempt, `pollCheckoutStatus` resolves (returns the last status) instead of throwing. This lets single-attempt reconcile calls work naturally.\r\n\r\n```ts\r\nclass StripePollingTimeoutError extends Error {\r\n  sessionId: string;  // the session ID being polled\r\n  attempts: number;   // how many attempts were made\r\n  cause?: unknown;    // the underlying fetch/HTTP error from the last attempt\r\n}\r\n```\r\n\r\n---\r\n\r\n## Types\r\n\r\n```ts\r\nimport type {\r\n  // React components & hooks\r\n  StripeConfig,\r\n  OGPayProps,\r\n  EIP1193Provider,\r\n  // StripeClient\r\n  StripeClientConfig,\r\n  CreateCheckoutSessionParams,\r\n  PollCheckoutStatusOptions,\r\n  ListTopupsParams,\r\n  ListTopupsResult,\r\n  GetUsageParams,\r\n  GetUsageResult,\r\n  GetCreditsParams,\r\n  GetCreditsResult,\r\n  SessionInfo,\r\n  Balance,\r\n  Topup,\r\n  UsageItem,\r\n  CreditLot,\r\n  // Shared\r\n  CheckoutSession,\r\n  CheckoutStatus,\r\n  Network,\r\n} from '@0gfoundation/0g-pay-sdk';\r\n// or from '@0gfoundation/0g-pay-sdk/server' for Node.js-only projects\r\n```\r\n\r\n### `StripeConfig`\r\n\r\nUsed by the React components (`OGPay`, `StripeCheckoutForm`) and hooks.\r\n\r\n```ts\r\ninterface StripeConfig {\r\n  /** 'testnet' | 'mainnet' — defaults to 'testnet'. */\r\n  network?: Network;\r\n  /** Session token from POST getSessionUrl(network) */\r\n  sessionToken: string;\r\n  /** Optional email pre-filled in Stripe checkout */\r\n  email?: string;\r\n  /** URL Stripe redirects to after payment. Defaults to {origin}/topup/return */\r\n  successUrl?: string;\r\n  /** URL Stripe redirects to on cancel. Defaults to the current page */\r\n  cancelUrl?: string;\r\n}\r\n```\r\n\r\n### `StripeClientConfig`\r\n\r\nUsed by `StripeClient` (Node.js / server-side).\r\n\r\n```ts\r\ninterface StripeClientConfig {\r\n  /** 'testnet' | 'mainnet' — defaults to 'testnet'. */\r\n  network?: Network;\r\n  /**\r\n   * Explicit backend URL — takes precedence over `network`.\r\n   * Use for self-hosted proxies or direct pay-backend access.\r\n   */\r\n  baseUrl?: string;\r\n  /** Session token from exchangeSession() */\r\n  sessionToken: string;\r\n}\r\n```\r\n\r\n### `SessionInfo`\r\n\r\n```ts\r\ninterface SessionInfo {\r\n  token: string;       // 0G Pay session token — use as sessionToken\r\n  account_id: string;\r\n}\r\n```\r\n\r\n### `Balance`\r\n\r\n```ts\r\ninterface Balance {\r\n  available_micros: number;        // the account's TOTAL, every lot, whatever service it was granted for\r\n  spendable_micros?: number | null; // what the CALLER may actually draw — gate on this one\r\n  debt_micros: number;\r\n  net_micros: number;\r\n  serve: string | null;    // \"allow\" = good standing; other values = service paused\r\n  display: { message?: string; [key: string]: unknown } | null;\r\n  as_of: string | null;    // ISO 8601 timestamp of the balance snapshot\r\n  stop_reason: string | null;\r\n}\r\n```\r\n\r\n`serve` and `stop_reason` are derived from `spendable_micros`, not from `available_micros`. A `null` `spendable_micros` means the field was absent from the response — treat that as untrustworthy, not as zero.\r\n\r\n### `Topup`\r\n\r\n```ts\r\ninterface Topup {\r\n  id: number;               // pass as `before` to page past this row\r\n  source: string;           // e.g. \"stripe\" | \"chain\"\r\n  amount_micros: number;\r\n  reversed_micros: number;\r\n  status: 'credited' | 'partially_reversed' | 'reversed';\r\n  created_at: string;       // ISO 8601\r\n  reference: string;        // Stripe checkout session ID when source === \"stripe\"\r\n  bonus_micros: number;             // what the promotion granted for this topup; 0 when nothing\r\n  tier: 'first' | 'later' | null;   // null = the promotion had no view on it, NOT \"later\"\r\n}\r\n```\r\n\r\n### `UsageItem`\r\n\r\n```ts\r\ninterface UsageItem {\r\n  service: string;\r\n  event_id: string;\r\n  charge_batch_id: string;\r\n  sku: string;\r\n  unit: string;\r\n  quantity_micros: number;\r\n  rate_micros: number;\r\n  amount_micros: number;\r\n  occurred_at: string;      // ISO 8601\r\n}\r\n```\r\n\r\n### `CreditLot`\r\n\r\n```ts\r\ninterface CreditLot {\r\n  lot_id: string;\r\n  remaining_micros: number;\r\n  granted_micros: number;\r\n  expires_at: string;                   // ISO 8601; never null\r\n  service?: string | null;              // null = account-wide; otherwise the service it is scoped to\r\n  source: 'promotion' | 'staking' | 'team';                // the category to branch on\r\n  state: 'granted' | 'spent' | 'expired' | 'revoked';      // what became of it — the field to show\r\n  display?: string | null;              // the label to render\r\n  depth?: number;\r\n  parent_lot_id?: string | null;\r\n}\r\n```\r\n\r\n| `source` | Means |\r\n|---|---|\r\n| `promotion` | The top-up bonus |\r\n| `staking` | The $iAI staking reward |\r\n| `team` | A campaign grant |\r\n\r\n| `state` | Means |\r\n|---|---|\r\n| `granted` | Active and spendable |\r\n| `spent` | Drained to zero |\r\n| `expired` | Past its expiry — including active-but-unswept, which the user cannot spend either way |\r\n| `revoked` | Cancelled: a refunded topup, or a funder pulling the credit back |\r\n\r\n`display` is the label: the campaign's own name for team credit, and the product's words for the two built-in programs (`\"Top-up bonus\"`, `\"Staking reward\"`). Branch on `source`, render `display` — do not derive one from the other. A revoked reward stays in the list rather than disappearing, so a user whose refund clawed back a bonus can see that happen — which is why that view must be walked **without** `state: 'granted'`, since the parameter filters exactly those lots out.\r\n\r\n### `CheckoutSession`\r\n\r\n```ts\r\ninterface CheckoutSession {\r\n  session_id: string; // Stripe checkout session ID (cs_...)\r\n  url: string;        // Stripe hosted checkout URL\r\n}\r\n```\r\n\r\n### `CheckoutStatus`\r\n\r\n```ts\r\ninterface CheckoutStatus {\r\n  paid: boolean;\r\n  credited_micros: number;       // Amount credited in micro-USD\r\n  available_micros_after: number; // Balance after credit in micro-USD\r\n  replayed: boolean;\r\n}\r\n```\r\n\r\n### `EIP1193Provider`\r\n\r\n```ts\r\ninterface EIP1193Provider {\r\n  request: (args: { method: string; params?: unknown[] }) => Promise<unknown>;\r\n}\r\n```\r\n\r\nCompatible with `window.ethereum`, wagmi's `useWalletClient`, viem's wallet client, and any EIP-1193 provider.\r\n\r\n---\r\n\r\n## Currency\r\n\r\nAll internal amounts use **micro-USD**: `1 USD = 1,000,000 micros`.\r\n\r\n```ts\r\nconst usd    = micros / 1_000_000;\r\nconst micros = Math.round(usd * 1_000_000);\r\n```\r\n\r\n`StripeClient.createCheckoutSession` accepts either `amountUsd` (float dollars) or `amountMicros` (integer micros). Use `amountMicros` when your system already works in integer cents or micros to avoid floating-point conversion.\r\n\r\n---\r\n\r\n## Wallet Integration Examples\r\n\r\n**wagmi v2**\r\n\r\n```tsx\r\nimport { useWalletClient } from 'wagmi';\r\nimport { OGPay } from '@0gfoundation/0g-pay-sdk';\r\n\r\nexport function DepositButton() {\r\n  const { data: walletClient } = useWalletClient();\r\n\r\n  if (!walletClient) return null;\r\n\r\n  return <OGPay provider={walletClient} />;\r\n}\r\n```\r\n\r\n**viem**\r\n\r\n```tsx\r\nimport { createWalletClient, custom } from 'viem';\r\nimport { OGPay } from '@0gfoundation/0g-pay-sdk';\r\n\r\nconst walletClient = createWalletClient({ transport: custom(window.ethereum) });\r\n\r\n<OGPay provider={walletClient} />;\r\n```\r\n\r\n**window.ethereum (MetaMask)**\r\n\r\n```tsx\r\n<OGPay provider={window.ethereum} />\r\n```\r\n\r\n---\r\n\r\n## Developer Mode\r\n\r\nSet `mode=\"developer\"` and supply `recipientAddress` to route TokenFlight deposits to your own address instead of the 0G recipient.\r\n\r\n```tsx\r\n<OGPay\r\n  provider={provider}\r\n  mode=\"developer\"\r\n  recipientAddress=\"0xYourAddress\"\r\n/>\r\n```\r\n\r\nThe SDK throws on render if `mode=\"developer\"` is set without a valid `0x`-prefixed 40-character hex address.\r\n\r\n---\r\n\r\n## Custom Trigger\r\n\r\nPass any element as `children` to use it as the trigger instead of the default **Deposit** button.\r\n\r\n```tsx\r\n<OGPay provider={provider}>\r\n  <button className=\"my-custom-btn\">Top Up</button>\r\n</OGPay>\r\n\r\n<OGPay provider={provider}>\r\n  <img src=\"/pay-icon.svg\" alt=\"Pay\" style={{ cursor: 'pointer' }} />\r\n</OGPay>\r\n```\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT © [0G Labs](https://0g.ai)\r\n","readmeFilename":"README.md"}