{"_id":"@0xsoulful/sdk","_rev":"9-f93322e41a83e9af20f4423bdb49d22b","name":"@0xsoulful/sdk","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.0":{"name":"@0xsoulful/sdk","version":"0.1.0","_id":"@0xsoulful/sdk@0.1.0","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"5a7688a6be522ac394cd182bbf0661b8e4d5ff3f","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.0.tgz","fileCount":16,"integrity":"sha512-MI47kEsCQfOqSRexjxwKR2HciDxPj29q7Cud16Bt5kG9Dzd7o/RLBaYKTbs8IbfknWrW745swfqTWQOUe5d7iQ==","signatures":[{"sig":"MEQCIGSn7Kf3XXdtm5ZUBESgj9fXn1dN1Wo2gMazTfEin94nAiB5F0qr50fKaKVNxVETZ9RL+nsYNFiUahEphnI7TiySxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1342065},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"f82a9eb9e42107488fc98d838aa1ea414fbbcdb4","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1757861475901_0.29572018372686437","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0xsoulful/sdk","version":"0.1.1","_id":"@0xsoulful/sdk@0.1.1","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"327255821a1ebd9c4a62ad5d12cb14accce1c902","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.1.tgz","fileCount":16,"integrity":"sha512-l+yw8uqGun/jtMVe1kYVyW1vORwmpUG+O/ISo9VwMsrKJwCoRjwIvrMV+bE09JcAkd9vpm66b9RFEenVApoupA==","signatures":[{"sig":"MEYCIQDk69b2AF44XYyjBPhWMXTS/PAsTV3d6s9XmiEUwur8DgIhAJ6fSaBXPRihoLikGkA6kiyC5OqeKm1iBwYItlM6Mqua","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1342813},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"08779bfe29f62eb6ea7140049d81045efd919101","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1757861920023_0.1717009896767172","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@0xsoulful/sdk","version":"0.1.2","_id":"@0xsoulful/sdk@0.1.2","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"a2268476679f68b144ffc7dbf8c56aeaa5ac8372","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.2.tgz","fileCount":16,"integrity":"sha512-5K6vKEgRMC/ztgp4DAjZUgB95hohCxJ9rKN/sthCRtwdrSTYVZCva6FL+9jgP2Py4q4H5NNJoAso2Y35sRiGwg==","signatures":[{"sig":"MEUCIQD3FIt/s3oKdO9q+6bOyXtHpMNSyBbMiqEGv4s6qmq8qgIgOwC1Zl3MRZ5B5A72GIyu6ZI8zU+FiDneaWNQCOOkDmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1342811},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1732c1b7bb7d1202efa083960107466f533728ca","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1758101078715_0.28317605034320215","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@0xsoulful/sdk","version":"0.1.3","_id":"@0xsoulful/sdk@0.1.3","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"d119b0021d6e6f1035f9307cf567d1ddfff5764e","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.3.tgz","fileCount":16,"integrity":"sha512-dVlqFbdfxViy6DtXQsur5x4J3gI6QgOZ13ulbe2kLlpMciAkDdoec77/XUuAxsPQTXQ4zEwWq3djJtKRDmLFbg==","signatures":[{"sig":"MEYCIQD7B9c+WCLbI25VquvMRA4f9LRELeQ8/pjIw/uHF6clKwIhALmGCrgPeCtMuqUC0IATguEiudBwgPhSBwbnFZ4fKUpp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1342811},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f2128a4b979f787c9d657277eb12a6865e4ef42b","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.3_1758105907280_0.19052657263018347","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@0xsoulful/sdk","version":"0.1.4","_id":"@0xsoulful/sdk@0.1.4","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"2ad0b0574e67459e341c72b9321115689792ce55","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.4.tgz","fileCount":16,"integrity":"sha512-c0RQAfbgZ6UYOKgqTB9LOWo8qfQBhjmItLwGCvoZ3igIJPh+l4Q2gZhf96RDSqlhylBcDoVDaFnSOJ3tokTr5Q==","signatures":[{"sig":"MEUCIDnRkIUQssdfd0XiB9xDF9WpSiMu3r4dXOyayAogDKbaAiEAuU28MJSWA66iRofrLRt3OT2ayKumwAURWNR8YqxOjUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1342811},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4368dd57ad6f6114bc3beaa35d2dfb200742bc96","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.4_1758121561350_0.7263729942504067","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@0xsoulful/sdk","version":"0.1.5","_id":"@0xsoulful/sdk@0.1.5","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"afb84717be6684fac3d73cb994be98a52125c27b","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.5.tgz","fileCount":16,"integrity":"sha512-d3FQLsQEW306o3jVBXyoBk0IWDsxP6zTfIq9YAz2Y1nCJduwG6pBgfkZQLWO0VwQyAJU1JWWqmj0Hly2FF2/ZQ==","signatures":[{"sig":"MEYCIQDzN7lheuvPdSHSNBDFdS9Xq8Prwu7oAUzo+Ra0uNqqhgIhAI7CwOc08/OmGa82viGB0zyLujh0XY5ZiRgf7SsPda1x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1345006},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2a35d928da6cd2bd38e3ddd7e9ace73daf75d5e2","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.5_1758127188387_0.48586473125345964","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@0xsoulful/sdk","version":"0.1.6","_id":"@0xsoulful/sdk@0.1.6","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"5d4b6a4f634d2d4ae8568375c8f6b29e7fba85be","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.6.tgz","fileCount":16,"integrity":"sha512-tWtPYpTXXFJGM/yWJdIb+asQYBkGrBfF/mGUfuEF20umUAAk6ZrkQ92bfzDdZHVfxy381gho/P7N0rVBPOlG2g==","signatures":[{"sig":"MEUCIQDVBclFt+uQZLfibyTM6SWFwa4MGL41+OGdSH4mLqxr8QIgTnQK59TT32ve4eJCn9r6r/2FTPaI1fL2HVJanmvwM5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1363850},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ac4dcbdd540835459ee7e644e131106541a89d9c","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.6_1758173555077_0.3250035613574336","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@0xsoulful/sdk","version":"0.1.7","_id":"@0xsoulful/sdk@0.1.7","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"dist":{"shasum":"2ca084c1437a848a6bb9937d13512f461cc4a1d7","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.7.tgz","fileCount":16,"integrity":"sha512-TtwbNpJ0Q5+SJAPXf0q37/93tm3I60zOjjO22rkDaPegsM6JaJgTxmnc85XPl+2d66pCcduSb9KxaPB4iDZcUA==","signatures":[{"sig":"MEUCIDVrGj4PIhkvoj5d9ijhVSz12dsn7bmMIWFbO7nvZQbXAiEAq0pxnVt5FhGKa9ofA7oFUNQmyrIOofxg8CXL0CxjAEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1370135},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ac4dcbdd540835459ee7e644e131106541a89d9c","private":false,"scripts":{"test":"vitest run","build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"_npmVersion":"10.8.2","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"^2","vitest":"^2.1.1","get-port":"^7.1.0","@types/node":"^20.11.30"},"peerDependencies":{"viem":"^2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.7_1758178656237_0.600217062994115","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@0xsoulful/sdk","version":"0.1.8","private":false,"type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"publishConfig":{"access":"public"},"sideEffects":false,"peerDependencies":{"viem":"^2"},"devDependencies":{"viem":"^2","vitest":"^2.1.1","@types/node":"^20.11.30","get-port":"^7.1.0"},"scripts":{"build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","codegen":"wagmi generate --config wagmi.config.ts","prepublishOnly":"npm run build","test":"vitest run","test:watch":"vitest"},"_id":"@0xsoulful/sdk@0.1.8","gitHead":"fd3e44aafed29b8a29bc016dceb0778fbc109957","description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","_nodeVersion":"20.18.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-T+gRHTstVsKh7KPco3hD4LuOp4Yhtird7dI7pToolVf9JAB+sOCW7XZb+HasavVgkGmR0Zz1An06++VsYCfZXQ==","shasum":"6d41d44c157b639c2e6f7c8fdf99a3f062028dce","tarball":"https://registry.npmjs.org/@0xsoulful/sdk/-/sdk-0.1.8.tgz","fileCount":16,"unpackedSize":1370135,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE4jBcjNAKDn5tTq/irvon9v+1rQUm/JTBGAHtIPIMG1AiEAl4unFGkXu4pI7J15BlOIR4gqzY40lFil3WAnGC66a5M="}]},"_npmUser":{"name":"ajand","email":"aj.mardalizad@gmail.com"},"directories":{},"maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.8_1758192364682_0.6024518190982726"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-14T14:51:15.800Z","modified":"2025-09-18T10:46:05.383Z","0.1.0":"2025-09-14T14:51:16.111Z","0.1.1":"2025-09-14T14:58:40.205Z","0.1.2":"2025-09-17T09:24:38.919Z","0.1.3":"2025-09-17T10:45:07.494Z","0.1.4":"2025-09-17T15:06:01.561Z","0.1.5":"2025-09-17T16:39:48.611Z","0.1.6":"2025-09-18T05:32:35.353Z","0.1.7":"2025-09-18T06:57:36.440Z","0.1.8":"2025-09-18T10:46:04.845Z"},"description":"Typed client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.","maintainers":[{"name":"ajand","email":"aj.mardalizad@gmail.com"}],"readme":"# @0xsoulful/sdk\n\nTyped client SDK for Soul contracts, generated from Foundry artifacts using viem + wagmi.\n\n## Install\n\n```bash\nnpm i @0xsoulful/sdk viem\n```\n\n## Quickstart (env-aware SDK)\n\n```ts\nimport { createWalletClient, createPublicClient, http } from \"viem\";\nimport { createSdk } from \"@0xsoulful/sdk\";\n\nconst RPC_URL = process.env.RPC_URL!;\nconst publicClient = createPublicClient({ transport: http(RPC_URL) });\nconst walletClient = createWalletClient({ transport: http(RPC_URL), account: /* your account */ });\n\n// SOUL_ENV selects addresses from packages/sdk/src/addresses.ts for chain\n// export SOUL_ENV=dev | main  (defaults to main)\nconst sdk = createSdk({ client: publicClient });\n\n// Use OfferManager module\nconst offer = sdk.offer();\nawait offer.depositLyx(walletClient, 1n * 10n ** 18n);\n```\n\n## SoulToken usage\n\nHigh-level helpers for the SOUL host and its auction/burn extensions.\n\n```ts\nimport { createWalletClient, createPublicClient, http } from \"viem\";\nimport { createSdk } from \"@0xsoulful/sdk\";\n\nconst client = createPublicClient({ transport: http(process.env.RPC_URL!) });\nconst wallet = createWalletClient({ transport: http(process.env.RPC_URL!), account: /* your account */ });\n\nconst sdk = createSdk({ client });\nconst soul = sdk.soul();\n\n// Read current auction type (\"native\" | \"stable\" | \"none\")\nconst kind = await soul.getAuctionType();\n\nif (kind === \"native\") {\n  // Quote current price in wei and extension address\n  const { priceWei, extension, round } = await soul.quotePurchaseWithLyx();\n\n  // Purchase with native LYX at the current price (optional slippage guard)\n  await soul.purchaseWithLyx({ walletClient: wallet, maxPriceWei: priceWei });\n}\n\n// Request burn of N SOUL via burn extension wired on host\nawait soul.requestBurn({ walletClient: wallet, amount: 1n });\n\n// Native auction helpers\nconst { priceWei } = await soul.quotePurchaseWithLyx();\n// Watch for USD crossing and trigger callback slightly before\nconst unwatchUsd = await soul.watchUsdCrossing({\n  targetUsd1e18: 30n * 10n ** 18n,\n  preflightSeconds: 5,\n  onTrigger: async ({ currentUsd, currentWei }) => {\n    // e.g., place buy or alert\n  },\n});\n\n// Stop watching\nunwatchUsd();\n```\n\nNotes:\n- Address selection is environment-aware. Set `SOUL_ENV=dev` to use dev deployments on chain 42.\n- You can override addresses or merge extension ABIs when creating the SDK if needed.\n\n## Development\n\n- Build contracts: `npm run contracts:build`\n- Generate SDK: `npm run sdk:prepare`\n- Only codegen (viem): `npm run sdk:codegen`\n\n## Versioning & Releases\n\nThis repo uses Changesets. To release:\n\n1. Create a changeset: `npx changeset`\n2. Commit and merge to main.\n3. Run `npm run release` to version and publish `@0xsoulful/sdk`.\n\n## Address management\n\nAddresses are auto-extracted from Foundry `broadcast/**/run-latest.json` into `src/addresses.ts`.\n\n### Environments on the same chain (main vs dev)\n\n- The SDK supports two environments on the same chain id (e.g., LUKSO mainnet `42`): `main` and `dev`.\n- Environment is inferred from the Foundry script folder name:\n  - If the broadcast path contains a script directory with `Dev` in its name (case-insensitive), those deployments go under `dev`.\n  - Otherwise, deployments go under `main`.\n\nYou can select the environment in-app by setting `process.env.SOUL_ENV = \"dev\" | \"main\"` (or `globalThis.SOUL_ENV` in the browser), or by passing the `env` parameter to helpers like `getAddress`.\n\nThe generated shape is:\n\n```ts\nexport const deployments: {\n  [chainId: number]: {\n    main: Record<string, string>;\n    dev: Record<string, string>;\n  };\n}\n```\n\nFor legacy flat outputs, the SDK will mirror the single map to both `main` and `dev` for backward compatibility.\n\n## Offer SDK (OfferManager + Extensions)\n\nHigh-level API for creating and executing SOUL auction offers through the LSP17-extendable `OfferManager` host. Works for both user-side (signing + deposits) and keeper-side (execution).\n\n### Quickstart\n\n```ts\nimport { createPublicClient, createWalletClient, http } from \"viem\";\nimport { createSdk } from \"@0xsoulful/sdk\";\n\nconst publicClient = createPublicClient({ transport: http(process.env.RPC_URL!) });\nconst walletClient = createWalletClient({ transport: http(process.env.RPC_URL!), account: /* your account */ });\n\nconst sdk = createSdk({ client: publicClient });\n\n// 1) User deposits LYX\nawait sdk.offer().depositLyx(walletClient, 5n * 10n ** 18n);\n\n// 2) User signs a Limit offer\nconst signedLimit = await sdk.offer().signLimitOffer(walletClient, {\n  maker: /* user */, recipient: /* 0x0 => defaults to maker */, maxPriceWei: 3_400_000_000_000_000_000n,\n  validAfter: 0n, validBefore: 0n, salt: BigInt(Date.now())\n});\n\n// 3) Keeper executes when eligible\nawait sdk.offer().executeLimit(walletClient, signedLimit);\n```\n\n### API\n\n- Balances\n  - `depositLyx(wallet, amountWei)`\n  - `withdrawLyx(wallet, amountWei)`\n  - `getBalance(user)`\n- Signing\n  - `signLimitOffer(wallet, offer)` → `{ offer, signature }`\n  - `signDcaOffer(wallet, offer)` → `{ offer, signature }`\n- Execution (keeper or user)\n  - `executeLimit(walletOrKeeper, signedOffer)`\n  - `executeDca(walletOrKeeper, signedOffer)`\n- Introspection\n  - `getExtensionForSelector(selector)`\n\n### Offchain storage\n\nStore the object returned by `signLimitOffer` / `signDcaOffer` along with metadata:\n\n```json\n{\n  \"kind\": \"limit\",                    \n  \"offer\": { /* typed offer */ },     \n  \"signature\": \"0x...\",              \n  \"maker\": \"0x...\",                  \n  \"salt\": \"...\",                     \n  \"createdAt\": 1710000000000\n}\n```\n\nThe keeper fetches these, pre-filters by validity window, user balance, price cap (and DCA cadence via `progress`), then calls `executeLimit` / `executeDca`. See `documents/technical/Keeper-Execution-Guide.md`.\n","readmeFilename":"README.md"}