{"_id":"@limitless-exchange/sdk","_rev":"18-0d802d50a126815ad9307f993f39650f","name":"@limitless-exchange/sdk","dist-tags":{"latest":"1.1.0"},"versions":{"0.0.1":{"name":"@limitless-exchange/sdk","version":"0.0.1","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@0.0.1","maintainers":[{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"fdbae1bb9d327390666f4fdc24e4dfced736812c","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-0.0.1.tgz","fileCount":9,"integrity":"sha512-yDfX5tTJ/3oBALC9zxHtUwbS0h68Gu/cpSZiaERDuH88DTVfKSaQmNz7m40r6LONhPdCbJ9NN14M/8Uc10P3pw==","signatures":[{"sig":"MEUCIQClP4qwaObci7daQERpmPPfpYcKFpiDd1L7L+j5mjhS4AIgYWnLwybC85ma8aTkDz7cL3KxFC7jXi9uuQ78R+HPSpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648261},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"9dc5de2f2720125b9bedb9a93023222df4b9b7eb","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"10.9.2","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"22.16.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.0.1_1765133028095_0.3077518175029774","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@limitless-exchange/sdk","version":"0.0.2","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@0.0.2","maintainers":[{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"4e2cf403d91c10643baf40de18f3e8aa9d2fb3b0","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-0.0.2.tgz","fileCount":9,"integrity":"sha512-wfWyolcIQeg3yIRnvcE4mvwD0hGrIzBNuHslKfkTEfPyxefO8HVvoXwv1N9wKCl7jCXc1EzBkKgxYlSen/t2pA==","signatures":[{"sig":"MEQCIGnf6sXhewHWa6GlEQyWc2OzOqI392RMTprrcJqfEspIAiBqs3cEZcu1A+qjxoe/XbinlIFj7mxBwS+la4l1QwUSKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686925},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"4a7e806d9f790d1733c403c7fa0ab57845b513eb","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"10.9.2","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"22.16.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.0.2_1765361793758_0.932964682228373","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@limitless-exchange/sdk","version":"0.0.3","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@0.0.3","maintainers":[{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"5fcdd8f3484bc0f0d7cc25141688998566fdc9d9","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-0.0.3.tgz","fileCount":9,"integrity":"sha512-H0EXuNFlaJ0saC/jXhIS27ARGJIzZQVgpMdXF7K3vJTXslFrCOlvsCg5zOCQfVyF9q5XEgCE7ghHHXknr9Je7Q==","signatures":[{"sig":"MEUCIQCcOlAHg7mZ1Wh2NjYWw542s0WtZZT8uP0n1nEFfgQSSQIgAd2Mqb5g8T+XkZiUDXbTJ2GbMJIzs/w0J6GYnl43M4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709767},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"4a7e806d9f790d1733c403c7fa0ab57845b513eb","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.0.3_1767703040803_0.7878727952146423","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@limitless-exchange/sdk","version":"1.0.1","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.1","maintainers":[{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"108fa4156bcd819566339c48f061c78004df7bef","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.1.tgz","fileCount":9,"integrity":"sha512-5hYlRe++ViedtCzsrCPY+1Esm85Ak9QmV9Hgdvl7HJsRd0/mJdleDzz1LS1+RSh/EpkBzJS9gxCkWNB0etJhcQ==","signatures":[{"sig":"MEUCIC76gh7SU8XQkr327sLKxi4T7ezeEV0bBhpmMXLUj0IgAiEA+rlrwblX96i/LLz74xXtICSPiurLjLotUO/70TEc50I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654465},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"3a855a77d17ffcf063528461389f53d2e60e5134","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.1_1770126312526_0.16831760118167116","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@limitless-exchange/sdk","version":"1.0.2","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.2","maintainers":[{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"7c0528e2fd1238b8ec02b69dcc4cc743f08aad78","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.2.tgz","fileCount":9,"integrity":"sha512-nlBRictXqaqoK+UdBc2oeD8JZHJBBkKWSicORpxw75VGgxkoncVPORmuO7Py6ejBeOVy2Ag467iApt62KnQPTw==","signatures":[{"sig":"MEQCICbJfRYeOb13iroywQwMOewHL/GjJHzt9ecTzbNYo3UMAiBc4zPN2I/s3PyLfN1btiTkpMXrKV2u+/A13m2GC6jDGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654488},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"3a855a77d17ffcf063528461389f53d2e60e5134","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.2_1770127535933_0.1690178807236027","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@limitless-exchange/sdk","version":"1.0.3","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.3","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"324a380176289d1e042ba215bffdb62df3aa5f59","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.3.tgz","fileCount":9,"integrity":"sha512-uWmxNJWqefCAjUYY9mSnMxJ9pogZ60zy+gVEkkNfLmFc3f2SDAhcC8ZDx+jur6ASVQ732gbzCxqv5zj57mfrLw==","signatures":[{"sig":"MEUCIQDpsBupcxF4LwHzD9ZT9u7KYOGMWK4doUM0Au4B3IoeCAIgeKJ3n0DR1rAjA3v5tE+5V2CWux01ujGBCe9Rxk9F1m0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":716681},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"ce7fad9ee4170ad218cb096cb11bdb4a32d87b86","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.3_1772804631832_0.6303385522646641","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@limitless-exchange/sdk","version":"1.0.4","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.4","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"5ff0064f205ea72e0f17cc228f02878088b21861","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.4.tgz","fileCount":9,"integrity":"sha512-vbKcqJqPmgjiI25DSf82f2D8tu/nRnVe8dwsuT88GQWR6biYKpuupe5csnsasYVHef/B6LTnipD9KWnTKgH3Fg==","signatures":[{"sig":"MEYCIQCi3IzUaXkfrc+0qGY8vL45mOmhEEeFQ0cGUmE1+1wXhwIhAJaaiU3vkF31OCBsk34GfsEWHyrTtVn5ooqCH6e0bQyH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848090},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"63fb3864ee0e7a03623015937268d6c592d281d1","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.4_1775137383203_0.6604918434346001","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@limitless-exchange/sdk","version":"1.0.5","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.5","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"a51bc5c3673eea1c8c9fdaec0db0548b82c5d2c5","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.5.tgz","fileCount":9,"integrity":"sha512-nrqHc9ehpJTv0TZm7xsCINHzSTeCaS7Ms3fiNawPJxEa9EvhjSysd6JAdEERRGyQBO2B/M6bFP8kiRLoacJ/yA==","signatures":[{"sig":"MEUCIFoniPBWux4i2i+lP8cY0MI0Ol/W1fp0pE40+jCtlgjfAiEAsKmeWagz9i+Qk3wzkBnK4WumWypl7XreLRXCCtSaQ04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":856676},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d8646944fc2c8d3c86781991f8006479092b8a83","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.5_1775833098368_0.05106606219603815","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@limitless-exchange/sdk","version":"1.0.6","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.6","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"09ca561d7c962c35c4af3dea2a832d43567cbb3b","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.6.tgz","fileCount":9,"integrity":"sha512-kwCBZFUNFcdePdnuAibWbZfoaHadZp8jR5Yj6W84wl03bzTlm4WPkpv6Gl9Wunx5ergXAkfmGU0zFHGJOYy8pg==","signatures":[{"sig":"MEYCIQCtPyzZh6yr83sWr9wiAzleoT5+TY68dCOIrvMtPmAVYwIhAO/Qg9ti8iC9WhGonrHR8gQqSXNi8U0VnWMqIlTiUIpB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":880459},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"28cea889b78f27d582611b7fdb2dd7112871d183","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.6_1776172379510_0.5926909184209825","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@limitless-exchange/sdk","version":"1.0.7","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.7","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"47a35779cdbc3d2acf943fe736f511854b4b69b9","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.7.tgz","fileCount":9,"integrity":"sha512-0sHKWso9ttMlkxfY78F9KsML2T4+jKNr9jA+rTXwyCMFzhD/v3qF2yCTvsj4Odj4K1rKhxLKTyKsUS8+zFokJA==","signatures":[{"sig":"MEQCIBLcjaALVNU9hht6q96SYtJSAGV1QG2JA1BugMk7FaMyAiAyvajJkzOpYSn99iEB8yWAP9kkHIPVxURnd6spS2yRXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":884057},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"18cd96d52eb89da59ed9727d4db643bfdd3ef888","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.7_1776781245446_0.6883035891845952","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@limitless-exchange/sdk","version":"1.0.8","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.8","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"dfaa7fe43ed45b659299373d186870c0016af138","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.8.tgz","fileCount":9,"integrity":"sha512-ibqKpjlwtD9WRMm2CrlfXI5nDneulzG3RVTzNFRx/ROBTTppsHU37PoOXbPAQVPJjqGRID07zy7NmrkPW2HsqA==","signatures":[{"sig":"MEUCIAlVXQYSaXHkNMR2JG+JRMLrKHScbvKJ/9Q3/fZ5TrZFAiEAzj5iDSWMKpgSocRrQNeoRffb05QoBtdHIq6OnMPhMac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":918528},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0e7ba9d3b81cf90f4bb1da959fb36f4c6b8ffbb5","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.8_1777557531503_0.9439826540947223","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@limitless-exchange/sdk","version":"1.0.9","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.9","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"b3b0e893373c0d7b0ec35e8ba38f56ffb85f750e","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.9.tgz","fileCount":9,"integrity":"sha512-h4vugHqlxI7rAXom+NbL42drjlpUOc1jL7FWC7hcyzUFzH/qjjBlJvjMANJXi3FbshyjK/deO3TsSRslaubcXA==","signatures":[{"sig":"MEQCIAvCDZAaSb9/L+9IMbdZYR/okzLIAOu5tzUAFwi61rLXAiBkBLw6ltlJmAdga1J28WDwszK7ivKN6JiFLOg8QQZ1Rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":950085},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"bc240d3398d8caa7169adfa3f8347623e664adad","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.9_1778172115487_0.07494342051899139","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@limitless-exchange/sdk","version":"1.0.10","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.10","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"7a7c2739e108296cc22b58a9f8909ec889e705e6","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.10.tgz","fileCount":9,"integrity":"sha512-v6WeLCWIo8YSNVVHQcEnrA13Asop4yGkFS/dOA1+C/14TNre8+LJ+9ZVz+J5Rc04yvUI9G2urXKEAKlH2gOYfQ==","signatures":[{"sig":"MEYCIQC0T7NlDq+bpElHdZyfA5O9NRsaoYqmO0gvP+hNwOxtdAIhALx5LTwm5LgDZzCGB1f8fAG16C/Afz3qcDtpGTdgSVoL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":977906},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0dd809eeaeca31e95c6a3e7ccb41f191c0486a49","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.10_1779904506633_0.2775551086425663","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@limitless-exchange/sdk","version":"1.0.11","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","_id":"@limitless-exchange/sdk@1.0.11","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"dist":{"shasum":"e36e8f582472004641a32e9367b2ff52f549ae3c","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.0.11.tgz","fileCount":9,"integrity":"sha512-VdIYsoOx3vJdK8YZEjEO4o4e1TFztSjtWz3mdAX6T6+pZIOgtzGL6fk/lpxnPWTbKqHcbaMaafFnAGTiX5ulxg==","signatures":[{"sig":"MEUCIQCNL0XKIMrTZOC5ZkHqSfJqMJC8KB1uV4ooFtnVEiIoIAIgeb2hCaRdq+wcOVtBXYWwgERNDCwi4Ky7eLIUPwA9ois=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":992261},"main":"./dist/index.js","pnpm":{"overrides":{"esbuild":">=0.25.0"}},"types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"35ee905cc58004941b2ea5d4ca144d178e3b00d2","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"_npmVersion":"11.6.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","directories":{},"_nodeVersion":"20.18.0","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.57.0","vitest":"^1.6.1","esbuild":"^0.27.1","prettier":"^3.2.0","typescript":"^5.4.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.11_1779910976205_0.30549252498719826","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@limitless-exchange/sdk","version":"1.1.0","description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest","test:coverage":"vitest --coverage","lint":"eslint src --ext .ts","format":"prettier --write \"src/**/*.ts\"","typecheck":"tsc --noEmit"},"keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"author":"","license":"MIT","dependencies":{"axios":"^1.7.0","ethers":"^6.16.0","eventemitter3":"^5.0.0","socket.io-client":"^4.7.0"},"devDependencies":{"@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","@vitest/coverage-v8":"^1.6.1","esbuild":"^0.27.1","eslint":"^8.57.0","prettier":"^3.2.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^1.6.1"},"pnpm":{"overrides":{"esbuild":">=0.25.0"}},"_id":"@limitless-exchange/sdk@1.1.0","gitHead":"1d5b3a7c44af1bfba97ce7b5bd8c2f859cdfeeba","_nodeVersion":"20.18.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-aMPrrRfO5CRrc6JXJy+miJtp/tU6QJDMFvgmJbSaVpU7EQj4+jX+Od9kbhgoqs2S0/tXTiqFVVLgagDURgAJXA==","shasum":"56a43b6f769dc93288db6fc38f04c12121d40011","tarball":"https://registry.npmjs.org/@limitless-exchange/sdk/-/sdk-1.1.0.tgz","fileCount":9,"unpackedSize":1280970,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCTLRC1wx8D2dZ1LwXk1pnLgdIkr6ITbWPegiiI4s0D2QIgB1/EzF3gc1LOUURNqfZ07HEGM6uu2YiLUiDCDqmLpcA="}]},"_npmUser":{"name":"kuchro","email":"kuchniokarol@gmail.com"},"directories":{},"maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.1.0_1786455308449_0.4355724884174621"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-07T18:43:47.985Z","modified":"2026-08-11T13:35:08.849Z","1.0.0":"2025-12-05T16:50:17.681Z","0.0.1":"2025-12-07T18:43:48.298Z","0.0.2":"2025-12-10T10:16:33.919Z","0.0.3":"2026-01-06T12:37:20.983Z","1.0.1":"2026-02-03T13:45:12.706Z","1.0.2":"2026-02-03T14:05:36.121Z","1.0.3":"2026-03-06T13:43:52.072Z","1.0.4":"2026-04-02T13:43:03.386Z","1.0.5":"2026-04-10T14:58:18.571Z","1.0.6":"2026-04-14T13:12:59.726Z","1.0.7":"2026-04-21T14:20:45.601Z","1.0.8":"2026-04-30T13:58:51.682Z","1.0.9":"2026-05-07T16:41:55.716Z","1.0.10":"2026-05-27T17:55:06.880Z","1.0.11":"2026-05-27T19:42:56.415Z","1.1.0":"2026-08-11T13:35:08.623Z"},"license":"MIT","keywords":["limitless","exchange","prediction-markets","clob","negrisk","trading","blockchain"],"description":"TypeScript SDK for Limitless Exchange CLOB and NegRisk trading","maintainers":[{"name":"vinterman","email":"serge@limitless.network"},{"name":"skylightxo","email":"krtdaniil@gmail.com"},{"name":"kuchro","email":"kuchniokarol@gmail.com"}],"readme":"# Limitless Exchange TypeScript SDK\n\n**v1.0.10** | Production-Ready | Type-Safe | Fully Documented\n\nA TypeScript SDK for interacting with the Limitless Exchange platform, providing type-safe access to CLOB and NegRisk prediction markets.\n\n> **v1.0.10 Release**: Adds authenticated profile reads via `/profiles/me` and partner sub-account listing/recovery, alongside partner wallet, withdrawal, and WebSocket updates. See [Changelog](#changelog) for details.\n\n## ⚠️ Disclaimer\n\n**USE AT YOUR OWN RISK**\n\nThis SDK is provided \"as-is\" without any warranties or guarantees. Trading on prediction markets involves financial risk. By using this SDK, you acknowledge that:\n\n- You are responsible for testing the SDK thoroughly before using it in production\n- The SDK authors are not liable for any financial losses or damages\n- You should review and understand the code before executing any trades\n- It is recommended to test all functionality on testnet or with small amounts first\n- The SDK may contain bugs or unexpected behavior despite best efforts\n\n**ALWAYS TEST BEFORE USING IN PRODUCTION WITH REAL FUNDS**\n\nFor production use, we strongly recommend:\n\n1. Running comprehensive tests with your specific use case\n2. Starting with small transaction amounts\n3. Monitoring all transactions carefully\n4. Having proper error handling and recovery mechanisms\n\n**Feedback Welcome**: We encourage you to report any bugs, suggest improvements, or contribute to the project. Please submit issues or pull requests on our GitHub repository.\n\n## 🌍 Geographic Restrictions\n\n**Important**: Limitless restricts order placement from US locations due to regulatory requirements and compliance with international sanctions. Before placing orders, builders should verify their location complies with applicable regulations.\n\n## Features\n\n- ✅ **Authentication**: API key auth and partner HMAC-scoped API-token auth\n- ✅ **Order Management**: Create, cancel, and manage orders on CLOB and NegRisk markets\n- ✅ **Partner Server Wallets**: Delegated child-account flows, server-wallet redeem, and HMAC-only withdraw to account, smart wallet, or whitelisted treasury destinations\n- ✅ **Market Data**: Access real-time market data and orderbooks\n- ✅ **NegRisk Markets**: Full support for group markets with multiple outcomes\n- ✅ **Error Handling & Retry**: Automatic retry logic for rate limits and transient failures\n- ✅ **Raw Response Access**: Opt-in access to HTTP status, headers, and original response bodies across all API methods\n- ✅ **Type Safety**: Full TypeScript support with comprehensive type definitions\n- ✅ **IEEE-Safe Order Payload Parsing**: `createOrder()` handles `makerAmount`, `takerAmount`, `price`, and `salt` returned as JSON strings\n- ✅ **TSDoc Documentation**: Complete API documentation with examples\n- ✅ **WebSocket**: Real-time price and position updates with API key auth\n\n## Installation\n\n```bash\nnpm install @limitless-exchange/sdk\n# or\nyarn add @limitless-exchange/sdk\n# or\npnpm add @limitless-exchange/sdk\n```\n\n## Quick Start\n\n### Fetching Active Markets (No Authentication Required)\n\n```typescript\nimport { HttpClient, MarketFetcher } from '@limitless-exchange/sdk';\n\n// Create HTTP client (no authentication needed)\nconst httpClient = new HttpClient({\n  baseURL: 'https://api.limitless.exchange',\n\n  // Optional: Add custom headers to all requests\n  additionalHeaders: {\n    'X-Custom-Header': 'my-value',\n  },\n});\n\nconst marketFetcher = new MarketFetcher(httpClient);\n\n// Get markets sorted by LP rewards\nconst markets = await marketFetcher.getActiveMarkets({\n  limit: 8,\n  sortBy: 'lp_rewards', // 'lp_rewards' | 'ending_soon' | 'newest' | 'high_value'\n});\n\nconsole.log(`Found ${markets.data.length} of ${markets.totalMarketsCount} markets`);\n\n// Pagination (page-based)\nconst page2 = await marketFetcher.getActiveMarkets({\n  limit: 8,\n  page: 2,\n  sortBy: 'ending_soon',\n});\n```\n\nSee [examples/project-integration/src/active-markets.ts](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/examples/project-integration/src/active-markets.ts) for more examples.\n\n### Market Pages & Navigation (No Authentication Required)\n\n```typescript\nimport { HttpClient, MarketPageFetcher } from '@limitless-exchange/sdk';\n\nconst httpClient = new HttpClient({\n  baseURL: 'https://api.limitless.exchange',\n});\n\nconst pageFetcher = new MarketPageFetcher(httpClient);\n\n// Resolve a page from URL path\nconst page = await pageFetcher.getMarketPageByPath('/crypto');\n\n// Fetch page markets with dynamic filters\nconst markets = await pageFetcher.getMarkets(page.id, {\n  limit: 20,\n  sort: '-updatedAt',\n  filters: {\n    duration: 'hourly',\n    ticker: ['btc', 'eth'],\n  },\n});\n\nif ('pagination' in markets) {\n  console.log(`Total markets: ${markets.pagination.total}`);\n}\n```\n\nDetailed guide: [docs/market-pages/README.md](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/market-pages/README.md)\n\n### Authentication\n\nThe SDK uses API keys for authentication. API keys can be obtained from your Limitless Exchange account settings(Click on User Profile).\n\n```typescript\nimport { HttpClient } from '@limitless-exchange/sdk';\n\n// Option 1: Automatic from environment variable (recommended)\n// Set LIMITLESS_API_KEY in your .env file\nconst httpClient = new HttpClient({\n  baseURL: 'https://api.limitless.exchange',\n});\n\n// Option 2: Explicit API key\nconst httpClient = new HttpClient({\n  baseURL: 'https://api.limitless.exchange',\n  apiKey: process.env.LIMITLESS_API_KEY,\n});\n\n// All requests automatically include X-API-Key header\n// For authenticated endpoints like portfolio, orders, etc.\n```\n\n**Environment Variables:**\n\nCreate a local `.env` file that is not committed to source control:\n\n```bash\n# Required for authenticated endpoints\nLIMITLESS_API_KEY=sk_live_your_api_key_here\n\n# REQUIRED for server-side or local scripts that sign orders (EIP-712)\n# Never commit a real private key to the repository.\nPRIVATE_KEY=your_private_key_here\n```\n\nDo not ship a raw `PRIVATE_KEY` in browser bundles, checked-in `.env` files, or frontend environment variables. For browser apps, use an injected wallet or move signing behind your own backend/BFF.\n\n### Authenticated Profile Reads\n\nUse `client.portfolio.getProfile()` without an address to fetch the authenticated caller's private profile via `GET /profiles/me`. Passing an address keeps the existing address-based lookup via `GET /profiles/:account`.\n\n```typescript\nimport { Client } from '@limitless-exchange/sdk';\n\nconst client = new Client({\n  baseURL: 'https://api.limitless.exchange',\n  apiKey: process.env.LIMITLESS_API_KEY,\n});\n\nconst currentProfile = await client.portfolio.getProfile();\nconst profileByAddress = await client.portfolio.getProfile(\n  '0x1676716Ef7F19B5C5d690631CB57cf0bFD900A3d'\n);\n```\n\n### Partner API Token v3 / HMAC Usage\n\nThe SDK also supports partner-scoped HMAC credentials for api-token v3 workflows such as token self-service, partner-account creation, delegated trading, and server-wallet redeem/withdraw.\n\nUse HMAC credentials only in a backend or BFF service. Do not expose partner HMAC secrets in browser bundles, frontend environment variables, or client-side storage.\n\nRecommended setup:\n\n- Keep public market and market-page reads in the browser.\n- Store the real HMAC `tokenId` / `secret` on your backend.\n- Keep any raw order-signing `PRIVATE_KEY` on your backend or in local development only.\n- Use this SDK server-side to sign partner-authenticated requests.\n- Expose only your own app-specific endpoints to the frontend.\n\nSee [`docs/code-samples/api-key-v3/`](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/tree/main/limitless-exchange-sdk/docs/code-samples/api-key-v3) for the partner HMAC examples.\n\n#### Partner Account Listing\n\nUse `client.partnerAccounts.listAccounts()` from a backend or BFF with HMAC-scoped API-token credentials that include `account_creation`. This endpoint lists or recovers partner-owned child accounts created under the authenticated partner profile.\n\n- `listAccounts()` calls `GET /profiles/partner-accounts`\n- optional `account` filters by exact account address\n- optional `limit` and `page` are positive integers; `limit` is capped to 25 before sending\n- the SDK requires HMAC credentials and does not send `x-on-behalf-of`\n\n```typescript\nconst accounts = await client.partnerAccounts.listAccounts({\n  account: '0x1676716Ef7F19B5C5d690631CB57cf0bFD900A3d',\n  limit: 100,\n  page: 1,\n});\n\nconsole.log(accounts.limit); // 25\nconsole.log(accounts.data[0]?.profileId);\n```\n\n#### Partner Server-Wallet Allowances\n\nUse `client.partnerAccounts.checkAllowances(profileId)` and `client.partnerAccounts.retryAllowances(profileId)` only for partner child profiles created with `createServerWallet: true`.\n\n- `checkAllowances()` calls `GET /profiles/partner-accounts/:profileId/allowances`\n- `retryAllowances()` calls `POST /profiles/partner-accounts/:profileId/allowances/retry`\n- both operations require HMAC-scoped API-token auth with `account_creation` and `delegated_signing` scopes\n- `profileId` should be the delegated child-profile id\n\n```typescript\nimport { Client } from '@limitless-exchange/sdk';\n\nconst client = new Client({\n  baseURL: 'https://api.limitless.exchange',\n  hmacCredentials: {\n    tokenId: process.env.LIMITLESS_API_TOKEN_ID!,\n    secret: process.env.LIMITLESS_API_TOKEN_SECRET!,\n  },\n});\n\nlet allowances = await client.partnerAccounts.checkAllowances(352);\nif (!allowances.ready) {\n  // Retry re-checks live chain state and submits only targets still missing.\n  // A returned \"submitted\" status means this request submitted a sponsored tx/user operation.\n  allowances = await client.partnerAccounts.retryAllowances(352);\n}\n```\n\nPoll `checkAllowances()` first. If `ready` is false and one or more targets are `missing` or `failed` with `retryable: true`, call `retryAllowances()`, then poll `checkAllowances()` again after a short delay. Retry `429` responses throw `RateLimitError` and include `retryAfterSeconds` in `error.data`; retry `409` responses throw `APIError` with `status === 409`, which means another retry is already running.\n\nFor a complete runnable flow, see [`docs/code-samples/api-key-v3/partner-account-allowances.ts`](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/code-samples/api-key-v3/partner-account-allowances.ts).\n\n#### Server Wallet Redeem & Withdraw\n\nUse `client.serverWallets` only for server-managed wallets created in delegated-signing partner flows with `createServerWallet: true`.\n\n- `redeemPositions()` calls `POST /portfolio/redeem`\n- `withdraw()` calls `POST /portfolio/withdraw`\n- both operations require HMAC-scoped API-token auth\n- `withdraw()` also requires the `withdrawal` scope\n- set `onBehalfOf` to the delegated child-profile id when withdrawing child server-wallet funds\n- omit `onBehalfOf` only when withdrawing the authenticated caller's own server wallet to an explicit `destination`\n- `amount` for withdraw must be provided in the token smallest unit\n- omit `destination` to use the API default: authenticated partner smart wallet when present, otherwise authenticated partner account\n- pass `destination` to withdraw directly to the authenticated partner account, authenticated partner smart wallet, or an active withdrawal address allowlisted on the authenticated partner profile\n- `partnerAccounts.addWithdrawalAddress()` and `partnerAccounts.deleteWithdrawalAddress()` manage the allowlist with Privy identity-token auth; API-token auth is not used for those allowlist endpoints\n\n```typescript\nimport { Client } from '@limitless-exchange/sdk';\n\nconst client = new Client({\n  baseURL: 'https://api.limitless.exchange',\n  hmacCredentials: {\n    tokenId: process.env.LIMITLESS_API_TOKEN_ID!,\n    secret: process.env.LIMITLESS_API_TOKEN_SECRET!,\n  },\n});\n\nconst redeem = await client.serverWallets.redeemPositions({\n  conditionId: '0x...',\n  onBehalfOf: 352,\n});\n\nconst withdraw = await client.serverWallets.withdraw({\n  amount: '5000000',\n  onBehalfOf: 352,\n});\n```\n\nTo withdraw a partner child server wallet directly to a treasury address, allowlist the destination on the authenticated partner profile first. Use the same partner identity for the allowlist call and the same partner HMAC token for the withdraw call.\n\n```typescript\nconst identityToken = process.env.LIMITLESS_IDENTITY_TOKEN!;\nconst treasuryAddress = '0x...';\n\nawait client.partnerAccounts.addWithdrawalAddress(identityToken, {\n  address: treasuryAddress,\n  label: 'treasury',\n});\n\nconst treasuryWithdraw = await client.serverWallets.withdraw({\n  amount: '5000000',\n  onBehalfOf: 352,\n  destination: treasuryAddress,\n});\n\nconst ownWalletTreasuryWithdraw = await client.serverWallets.withdraw({\n  amount: '5000000',\n  destination: treasuryAddress,\n});\n\n// Optional cleanup when the destination should no longer be active.\nawait client.partnerAccounts.deleteWithdrawalAddress(identityToken, treasuryAddress);\n```\n\n`redeem.hash` or `withdraw.hash` may be an empty string for user-operation submissions. Track those calls using `userOperationHash` or `transactionId`.\n\nFor a complete runnable flow, see [`docs/code-samples/api-key-v3/server-wallet-redeem-withdraw.ts`](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/code-samples/api-key-v3/server-wallet-redeem-withdraw.ts).\n\n### Token Approvals\n\n**Important**: Before placing orders, you must approve tokens for the exchange contracts. This is a **one-time setup** per wallet.\n\n#### Required Approvals\n\n**CLOB Markets:**\n\n- **BUY orders**: Approve USDC → `market.venue.exchange`\n- **SELL orders**: Approve Conditional Tokens → `market.venue.exchange`\n\n**NegRisk Markets:**\n\n- **BUY orders**: Approve USDC → `market.venue.exchange`\n- **SELL orders**: Approve Conditional Tokens → **both** `market.venue.exchange` AND `market.venue.adapter`\n\n#### Quick Setup\n\nRun the approval setup script:\n\n```bash\n# Copy .env.example and configure your wallet\ncp docs/code-samples/.env.example docs/code-samples/.env\n\n# Edit .env and set your PRIVATE_KEY and market slug\n# Then run the approval script\nnpx tsx docs/code-samples/setup-approvals.ts\n```\n\n#### Manual Approval Example\n\n```typescript\nimport { ethers } from 'ethers';\nimport { MarketFetcher, getContractAddress } from '@limitless-exchange/sdk';\n\n// 1. Fetch market to get venue addresses\nconst market = await marketFetcher.getMarket('market-slug');\n\n// 2. Create contract instances\nconst usdc = new ethers.Contract(\n  getContractAddress('USDC'),\n  ['function approve(address spender, uint256 amount) returns (bool)'],\n  wallet\n);\n\nconst ctf = new ethers.Contract(\n  getContractAddress('CTF'),\n  ['function setApprovalForAll(address operator, bool approved)'],\n  wallet\n);\n\n// 3. Approve USDC for BUY orders\nawait usdc.approve(market.venue.exchange, ethers.MaxUint256);\n\n// 4. Approve CT for SELL orders\nawait ctf.setApprovalForAll(market.venue.exchange, true);\n\n// 5. For NegRisk SELL orders, also approve adapter\nif (market.negRiskRequestId) {\n  await ctf.setApprovalForAll(market.venue.adapter, true);\n}\n```\n\nFor complete examples, see [docs/code-samples/setup-approvals.ts](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/code-samples/setup-approvals.ts).\n\n### Trading on NegRisk Markets\n\nNegRisk markets are group markets with multiple related outcomes. Here's a quick example:\n\n```typescript\nimport { OrderClient, MarketFetcher, Side, OrderType } from '@limitless-exchange/sdk';\n\n// 1. Fetch NegRisk group market\nconst marketFetcher = new MarketFetcher(httpClient);\nconst groupMarket = await marketFetcher.getMarket('largest-company-end-of-2025-1746118069282');\n\n// 2. Select a submarket (e.g., Apple)\nconst appleMarket = groupMarket.markets[0];\nconst marketDetails = await marketFetcher.getMarket(appleMarket.slug);\n\n// 3. Create order client (userData fetched automatically from profile)\nconst orderClient = new OrderClient({\n  httpClient,\n  wallet,\n});\n\n// 4. Place order on submarket (not group!)\nconst order = await orderClient.createOrder({\n  tokenId: marketDetails.tokens.yes,\n  price: 0.5,\n  size: 10,\n  side: Side.BUY,\n  orderType: OrderType.GTC,\n  marketSlug: appleMarket.slug, // Use submarket slug\n});\n```\n\n**Important**: Always use the **submarket slug** for NegRisk orders, not the group market slug!\n\nFor more details, see the [NegRisk Trading Guide](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/orders/README.md#negrisk-markets).\n\n### GTC Orders (Limit Orders)\n\nGTC orders use `price` + `size` and can optionally set `postOnly` to reject an order that would immediately match.\n\n```typescript\nimport { OrderClient, Side, OrderType } from '@limitless-exchange/sdk';\n\nconst gtcOrder = await orderClient.createOrder({\n  tokenId: marketDetails.tokens.yes,\n  price: 0.42,\n  size: 10,\n  side: Side.BUY,\n  orderType: OrderType.GTC,\n  marketSlug: 'market-slug',\n  postOnly: true, // Supported only for GTC\n});\n\nconsole.log(gtcOrder.order.id);\n```\n\nFor complete examples, see [docs/code-samples/clob-gtc-order.ts](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/code-samples/clob-gtc-order.ts).\n\n### FAK Orders (Fill-and-Kill Limit Orders)\n\nFAK orders use the same `price` + `size` construction as `GTC`, but they only consume immediately available liquidity and cancel any remainder.\n\n```typescript\nimport { OrderClient, Side, OrderType } from '@limitless-exchange/sdk';\n\nconst fakOrder = await orderClient.createOrder({\n  tokenId: marketDetails.tokens.yes,\n  price: 0.45,\n  size: 10,\n  side: Side.BUY,\n  orderType: OrderType.FAK,\n  marketSlug: 'market-slug',\n});\n\nif (fakOrder.makerMatches && fakOrder.makerMatches.length > 0) {\n  console.log(`FAK matched immediately with ${fakOrder.makerMatches.length} fill(s)`);\n} else {\n  console.log('FAK remainder was cancelled.');\n}\n```\n\n**Key Differences from GTC**:\n\n- FAK uses `price` + `size` like GTC\n- Executes immediately up to the available size\n- Any unfilled remainder is cancelled\n- `postOnly` is not supported for FAK\n\nFor complete examples, see [docs/code-samples/clob-fak-order.ts](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/code-samples/clob-fak-order.ts).\n\n### FOK Orders (Fill-or-Kill Market Orders)\n\nFOK orders execute immediately at the best available price or cancel entirely. Unlike GTC orders that use `price` + `size`, FOK orders use `makerAmount`.\n\n**Parameter Semantics**:\n\n- **BUY**: `makerAmount` = total USDC to spend\n- **SELL**: `makerAmount` = number of shares to sell\n\n```typescript\nimport { OrderClient, Side, OrderType } from '@limitless-exchange/sdk';\n\n// BUY FOK - spend 50 USDC at market price\nconst buyOrder = await orderClient.createOrder({\n  tokenId: marketDetails.tokens.yes,\n  makerAmount: 50, // 50 USDC to spend\n  side: Side.BUY,\n  orderType: OrderType.FOK,\n  marketSlug: 'market-slug',\n});\n\n// SELL FOK - sell 120 shares at market price\nconst sellOrder = await orderClient.createOrder({\n  tokenId: marketDetails.tokens.no,\n  makerAmount: 120, // 120 shares to sell\n  side: Side.SELL,\n  orderType: OrderType.FOK,\n  marketSlug: 'market-slug',\n});\n\n// Check execution\nif (buyOrder.makerMatches && buyOrder.makerMatches.length > 0) {\n  console.log(`Order filled: ${buyOrder.makerMatches.length} matches`);\n} else {\n  console.log('Order cancelled (no liquidity)');\n}\n```\n\n**Key Differences from GTC**:\n\n- FOK uses `makerAmount` (not `price` + `size`)\n- Executes immediately or cancels (no orderbook placement)\n- All-or-nothing execution (no partial fills)\n- Best for immediate execution at market price\n\nFor complete examples, see [docs/code-samples/clob-fok-order.ts](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/code-samples/clob-fok-order.ts).\n\n### Cancel-Replace Orders\n\nAtomically cancel a resting order and submit its replacement in a single request via `POST /orders/cancel-replace`. Identify the order to cancel by `orderId` or `clientOrderId`, and set `mode` to `CancelReplaceMode.STOP_ON_FAILURE` (skip the replacement if the cancel fails) or `CancelReplaceMode.ALLOW_FAILURE`.\n\n```ts\nimport { CancelReplaceMode, OrderType, Side } from '@limitless-exchange/sdk';\n\nconst result = await orderClient.cancelReplace({\n  cancel: { orderId: 'old-order-id' }, // or { clientOrderId: '...' }\n  mode: CancelReplaceMode.STOP_ON_FAILURE,\n  replacement: {\n    tokenId: '123',\n    side: Side.BUY,\n    price: 0.5,\n    size: 2,\n    orderType: OrderType.GTC,\n    marketSlug: 'market-slug',\n  },\n});\n// result.cancel and result.replacement each carry a per-leg status.\n```\n\nReplace many orders at once with `orderClient.cancelReplaceBatch({ operations: [...] })`; the response `results` are index-aligned to the input. Partner integrations use `client.delegatedOrders.cancelReplace` / `cancelReplaceBatch` (which accept `onBehalfOf`). The single-order variant maps a `409` conflict onto its typed result rather than throwing.\n\n### Partner AMM Trading\n\n`client.amm` trades binary AMM (FPMM) markets on behalf of a server wallet. Approvals are set up **once** per wallet/market pair; buy and sell never preflight allowances. All amounts are positive integer strings in the collateral token's base units (never floats). Authentication uses an HMAC API token (scopes `trading` + `delegated_signing`) or a per-call Privy `identityToken`; legacy API keys are rejected.\n\n```typescript\nimport { Client } from '@limitless-exchange/sdk';\n\nconst client = new Client({\n  hmacCredentials: { tokenId: process.env.LMTS_TOKEN_ID!, secret: process.env.LMTS_SECRET! },\n});\n\n// 1. One-time approval setup for a wallet/market pair (BUY and SELL are independent).\n//    ensureAllowance checks, approves at most once, then polls check until confirmed.\nawait client.amm.ensureAllowance({ market: 'market-slug', side: 'BUY', onBehalfOf: 12345 });\nawait client.amm.ensureAllowance({ market: 'market-slug', side: 'SELL', onBehalfOf: 12345 });\n\n// 2. Buy: spend an exact collateral amount on outcome 0 (YES).\nconst buy = await client.amm.buy({\n  market: 'market-slug',\n  outcomeIndex: 0, // 0 = YES, 1 = NO\n  collateralAmount: '1000000', // base units, positive integer string\n  slippageBps: 100, // optional, 0..1000, defaults to 100\n  idempotencyKey: 'buy-unique-key-001', // required; reuse the exact key + body to retry safely\n  onBehalfOf: 12345, // omit for a direct profile\n});\nconsole.log(buy.status, buy.expectedShares, buy.minShares);\n\n// 3. Sell: request an exact collateral return.\nconst sell = await client.amm.sell({\n  market: 'market-slug',\n  outcomeIndex: 0,\n  collateralReturnAmount: '992015',\n  idempotencyKey: 'sell-unique-key-001',\n  onBehalfOf: 12345,\n});\nconsole.log(sell.status, sell.expectedShares, sell.maxShares);\n```\n\n**Notes**:\n\n- `ensureAllowance` polls `checkAllowance` (default every 2s, up to 30 attempts); tune with `{ intervalMs, maxAttempts, signal }`. A `202 submitted` approve response is not confirmation.\n- Reuse the same params on a timeout retry — the serialized body and `idempotencyKey` stay byte-identical, so the server replays the original submission. Reusing a key with different params raises `ConflictError` (409).\n- Errors map to typed classes: `ValidationError` (400), `AuthenticationError` (401/403), `ConflictError` (409), `UnprocessableEntityError` (422, e.g. insufficient balance/invalid quote), `TooEarlyError` (425, maintenance), `RateLimitError` (429), and `UpstreamUnavailableError` (502/503). The four AMM routes share a limit of 10 requests / 10s per actor.\n- Pass `{ withRawResponse: true }` to any AMM method to get an `SdkResponse` exposing the HTTP status/headers via `getRaw()`.\n\n### Error Handling & Retry\n\nThe SDK provides automatic retry logic for handling transient failures like rate limits and server errors:\n\n```typescript\nimport { withRetry, retryOnErrors } from '@limitless-exchange/sdk';\n\n// Option 1: Wrapper function approach\nconst result = await withRetry(async () => await orderClient.createOrder(orderData), {\n  statusCodes: [429, 500, 503], // Retry on rate limits and server errors\n  maxRetries: 3,\n  delays: [2, 5, 10], // Wait 2s, then 5s, then 10s\n  onRetry: (attempt, error, delay) => {\n    console.log(`Retry ${attempt + 1} after ${delay}s: ${error.message}`);\n  },\n});\n\n// Option 2: Decorator approach (requires experimentalDecorators: true)\nclass TradingService {\n  @retryOnErrors({\n    statusCodes: [429, 500, 503],\n    maxRetries: 3,\n    exponentialBase: 2, // Exponential backoff: 1s, 2s, 4s\n    maxDelay: 30,\n  })\n  async placeOrder(orderData: any) {\n    return await this.orderClient.createOrder(orderData);\n  }\n}\n```\n\n**Key Features**:\n\n- Automatic retry on configurable status codes (429, 500, 502, 503, 504)\n- Fixed delays or exponential backoff strategies\n- Callback hooks for monitoring retry attempts\n- Three approaches: decorator, wrapper function, or global client wrapper\n\nFor detailed documentation, see the [Error Handling & Retry Guide](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/api/README.md).\n\n## API Documentation\n\n### Authentication\n\n#### `HttpClient`\n\nHTTP client with API key authentication.\n\n```typescript\nconst httpClient = new HttpClient({\n  baseURL: 'https://api.limitless.exchange',\n  apiKey: process.env.LIMITLESS_API_KEY, // optional: can also be auto-loaded from LIMITLESS_API_KEY\n  timeout: 30000,\n});\n\n// Set or update API key\nhttpClient.setApiKey('sk_live_...');\n\n// Make requests - X-API-Key header automatically included\nconst data = await httpClient.get('/endpoint');\nawait httpClient.post('/endpoint', { data });\n```\n\n### Raw HTTP Responses\n\nEvery API-backed domain method supports an optional `{ withRawResponse: true }` argument. The returned `SdkResponse` keeps the normal SDK value in `data` and exposes the underlying status, headers, and original API body through `getRaw()`.\n\n```typescript\nconst response = await client.markets.getMarket('bitcoin-price-market', { withRawResponse: true });\n\nresponse.data; // Normal Market instance, including SDK transformations\n\nconst raw = response.getRaw();\nconsole.log(raw.status);\nconsole.log(raw.headers);\nconsole.log(raw.data); // Original API response body\n```\n\nExisting calls are unchanged and continue to return their original values directly:\n\n```typescript\nconst market = await client.markets.getMarket('bitcoin-price-market');\n```\n\nThe low-level `HttpClient` supports the same option for GET, POST, PATCH, DELETE, identity-authenticated, custom-header, and retryable requests. Low-level calls return `HttpRawResponse` directly:\n\n```typescript\nconst raw = await client.http.post('/endpoint', { value: 1 }, { withRawResponse: true });\n\nconsole.log(raw.status, raw.headers, raw.data);\n```\n\n## Documentation\n\nFor detailed documentation, see the [docs](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/tree/main/limitless-exchange-sdk/docs) directory:\n\n- **[Complete Documentation](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/README.md)** - Full SDK documentation\n- **[Authentication Guide](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/api/README.md)** - API key authentication and HTTP client\n- **[Trading & Orders](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/orders/README.md)** - Order creation, management, and NegRisk markets\n- **[Market Data](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/markets/README.md)** - Market discovery and orderbook access\n- **[Portfolio & Positions](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/portfolio/README.md)** - Position tracking and user history\n- **[WebSocket Streaming](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/websocket/README.md)** - Real-time data updates\n- **[Error Handling & Retry](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/api/README.md)** - API error handling and retry mechanisms\n- **[Logging](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/docs/logging/LOGGING.md)** - Logging configuration\n\n## Code Examples\n\nProduction-ready code samples are available in [docs/code-samples](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/tree/main/limitless-exchange-sdk/docs/code-samples):\n\n### Authentication Examples\n\n- `basic-auth.ts` - API key authentication setup\n- `with-logging.ts` - Authentication with custom logging\n- `auth-retry.ts` - Authentication with retry logic\n- `error-handling.ts` - Comprehensive error handling\n\n### Trading Examples\n\n**CLOB Markets:**\n\n- `clob-fok-order.ts` - Fill-or-Kill market orders\n- `clob-gtc-order.ts` - Good-Til-Cancelled limit orders with `postOnly`\n- `clob-fak-order.ts` - Fill-And-Kill limit orders\n\n**NegRisk Markets:**\n\n- `negrisk-fok-order.ts` - FOK orders on group markets\n- `negrisk-gtc-order.ts` - GTC orders on NegRisk submarkets\n\n### Market Data Examples\n\n- `get-active-markets.ts` - Fetching active markets with sorting and pagination\n- `orderbook.ts` - Fetching and analyzing orderbooks\n- `positions.ts` - Portfolio and position tracking\n- `fluent-api-trading-workflow.ts` - Complete trading workflow\n\n### Real-Time Examples\n\n- `websocket-events.ts` - Real-time trading events and subscriptions\n\n### Partner HMAC Examples\n\n- `api-key-v3/partner-account-allowances.ts` - Check and retry server-wallet allowance recovery with partner HMAC auth only\n- `api-key-v3/server-wallet-redeem-withdraw.ts` - Redeem resolved positions and optionally withdraw from a server wallet\n\n## Development\n\n### Build\n\n```bash\npnpm install\npnpm build\n```\n\n### Test\n\n```bash\npnpm test\npnpm test:coverage\n```\n\n### Lint\n\n```bash\npnpm lint\npnpm format\n```\n\n## Project Structure\n\n```\nsrc/\n├── types/          # TypeScript type definitions\n│   ├── markets.ts  # Market and active markets types\n│   ├── orders.ts   # Order types\n│   ├── auth.ts     # User profile types\n│   └── ...\n├── api/            # HTTP client and API utilities\n│   ├── http.ts     # HTTP client with API key auth\n│   ├── errors.ts   # Error handling\n│   └── retry.ts    # Retry logic\n├── markets/        # Market data modules\n│   ├── fetcher.ts  # Market and orderbook fetching\n│   └── index.ts\n├── orders/         # Order management\n│   └── client.ts   # Order creation and management\n├── portfolio/      # Portfolio and positions\n│   └── fetcher.ts\n├── websocket/      # Real-time data streaming\n│   └── client.ts\n├── api/            # HTTP client and API utilities\n│   ├── http.ts     # HTTP client\n│   └── errors.ts   # API error handling\n└── utils/          # Shared utilities and constants\n\ntests/\n├── auth/           # Authentication tests\n└── markets/        # Market fetcher tests\n    └── fetcher.test.ts //etc.\n\ndocs/\n├── code-samples/   # Production-ready examples\n│   ├── get-active-markets.ts\n│   ├── clob-fok-order.ts\n│   └── ...\n└── */              # Documentation guides\n\n```\n\n## Changelog\n\n### v1.0.10\n\n**Release Date**: May 27, 2026\n\nLatest release with authenticated profile reads and partner sub-account listing/recovery.\n\n#### Highlights\n\n- ✅ **Production-Ready**: Thoroughly tested and validated against Base mainnet\n- 🔒 **Type-Safe**: Full TypeScript support with comprehensive type definitions\n- 📚 **Well-Documented**: 18 production-ready code samples + comprehensive guides\n- ⚡ **Performance Optimized**: Venue caching system and connection pooling\n- 🔄 **Robust Error Handling**: Automatic retry logic with multiple strategies\n- 🌐 **Real-Time Updates**: WebSocket support for CLOB orderbook, AMM/oracle price, position, transaction, order-event, and market lifecycle streaming\n- 🎯 **NegRisk Support**: Full support for group markets with multiple outcomes\n- 🧭 **Market Pages API**: Navigation tree, by-path resolver with 301 handling, page-scoped markets, property keys\n- 🧾 **More Trading Semantics**: `FAK` limit orders plus `postOnly` on `GTC`\n- 🪪 **Authenticated Profiles**: Fetch the current authenticated profile with `GET /profiles/me`\n- 🏦 **Partner Account Listing**: List and recover partner-owned child accounts with HMAC-scoped API-token auth\n- 🏦 **Partner Server Wallets**: Delegated child-account redeem and HMAC-only withdraw flows\n- 🔁 **Partner Allowance Recovery**: Check and retry delegated allowance targets for server-wallet child profiles\n\n#### Core Features\n\n- **Authentication**: API key authentication, EIP-712 signing, EOA support\n- **Partner Flows**: API-token v3 services, partner account listing/recovery, delegated orders, server-wallet redeem/withdraw, withdrawal-address allowlists, and allowance recovery\n- **Market Data**: Active markets with sorting, orderbook access, venue caching\n- **Market Pages & Navigation**: `/navigation`, `/market-pages/by-path`, `/market-pages/:id/markets`, `/property-keys`\n- **Order Management**: GTC, FAK, and FOK orders, GTC `postOnly`, tick alignment, automatic signing, IEEE-safe create-order payload parsing\n- **Portfolio**: Authenticated profile reads, position tracking, user history\n- **WebSocket**: Real-time CLOB orderbook, AMM/oracle price, order-event, and market lifecycle streaming\n- **Error Handling**: Decorator and wrapper retry patterns, configurable strategies\n- **Token Approvals**: Complete setup script, CLOB and NegRisk workflows\n\n#### Documentation Enhancements (v1.0.10)\n\n- Added authenticated profile read docs for `client.portfolio.getProfile()` without an address\n- Added partner sub-account listing/recovery docs and API key v3 example coverage\n\n### v1.0.9\n\n**Release Date**: May 4, 2026\n\nRelease with partner withdrawal-address allowlist helpers, server-wallet withdrawals to explicit whitelisted treasury destinations, and expanded WebSocket event coverage.\n\n#### Highlights\n\n- 🏛️ **Treasury Withdrawals**: Allowlist external withdrawal destinations and withdraw child server-wallet funds directly to them\n- 🌐 **Expanded WebSocket Surface**: Added typed subscription/event coverage for order events, live sports/esports, market lifecycle, oracle price data, and system messages\n- 🧹 **WebSocket Validation**: Unsupported legacy short channel literals now fail fast\n\n#### Documentation Enhancements (v1.0.9)\n\n- Added partner withdrawal-address allowlist docs for server-wallet treasury withdrawals\n- Updated server-wallet withdraw docs for omitted-destination smart-wallet fallback and explicit whitelisted destinations\n- Added partner allowance check/retry docs and API key v3 example for delegated server-wallet child accounts\n- Updated allowance retry guidance for live chain reads, submitted-target semantics, `429`, and `409`\n- Created comprehensive CHANGELOG.md following Keep a Changelog format\n- All production code samples include step-by-step comments and error handling\n- Detailed guides for authentication, trading, markets, portfolio, and WebSocket\n- Added market-pages guide and README quick-start for navigation-driven discovery\n\nFor complete release notes, see [CHANGELOG.md](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/CHANGELOG.md).\n\n---\n\n### Pre-Release Versions\n\n- **v0.0.3** - WebSocket streaming, enhanced code samples, NegRisk examples\n- **v0.0.2** - Venue caching, retry mechanisms, portfolio fetcher\n- **v0.0.1** - Initial release with core functionality\n\n---\n\n## License\n\nMIT - See [LICENSE](https://github.com/limitless-labs-group/limitless-exchange-ts-sdk/blob/main/limitless-exchange-sdk/LICENSE) file for details\n","readmeFilename":"README.md"}