{"_id":"1inch-limit-order-sdk","name":"1inch-limit-order-sdk","dist-tags":{"latest":"4.9.3-rc.1"},"versions":{"4.9.3-rc.1":{"name":"1inch-limit-order-sdk","version":"4.9.3-rc.1","description":"SDK for 1inch Limit Order Protocol","author":{"name":"@1inch"},"license":"MIT","private":false,"type":"module","exports":{".":{"types":"./dist/types/src/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js","node":"./dist/cjs/index.js","default":"./dist/cjs/index.js"},"./axios":{"types":"./dist/types/src/axios-ext.d.ts","import":"./dist/esm/axios-ext.js","require":"./dist/cjs/axios-ext.js","node":"./dist/cjs/axios-ext.js","default":"./dist/cjs/axios-ext.js"}},"module":"dist/esm/index.js","main":"dist/cjs/index.js","types":"dist/types/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/1inch/limit-order-sdk.git"},"dependencies":{"@1inch/byte-utils":"2.2.1","ethers":"6.13.1"},"devDependencies":{"@1inch/eslint-config":"1.4.3","@1inch/tsconfig":"1.0.7","@swc/core":"1.3.66","@swc/jest":"0.2.26","@types/jest":"29.5.2","@types/node":"^18.19.36","@typescript-eslint/eslint-plugin":"~5.59.11","@typescript-eslint/parser":"~5.51.0","axios":"^1.7.2","eslint":"8.41.0","eslint-config-prettier":"~8.3.0","eslint-config-standard":"^17.1.0","eslint-import-resolver-typescript":"3.5.5","eslint-plugin-import":"~2.26.0","eslint-plugin-n":"^16.6.2","eslint-plugin-prettier":"^4.2.1","eslint-plugin-promise":"^6.2.0","eslint-plugin-unused-imports":"^2.0.0","generate-changelog":"^1.8.0","jest":"29.5.0","prettier":"^2.8.8","tsdoc-markdown":"0.3.0","tslib":"2.6.3","typescript":"4.9.4"},"peerDependencies":{"assert":"^2.0.0","axios":">=1 <2"},"peerDependenciesMeta":{"axios":{"optional":true},"assert":{"optional":true}},"engines":{"node":">=18.16.0"},"volta":{"node":"18.16.0"},"scripts":{"build":"npm run build:esm && npm run build:cjs && npm run build:types","build:esm":"tsc --project tsconfig.esm.json","build:cjs":"tsc --project tsconfig.cjs.json","build:types":"tsc --project tsconfig.types.json","docs:generate":"tsdoc --src=src/limit-order/* --dest=src/limit-order/README.md && tsdoc --src=src/limit-order-contract/* --dest=src/limit-order-contract/README.md","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","lint:ci":"eslint \"{src,apps,libs,test}/**/*.ts\"","lint":"eslint  \"{src,apps,libs,test}/**/*.ts\" --ignore-path .eslintignore --fix","lint:types":"tsc --noEmit","test":"jest","test:watch":"jest --watch","changelog:generate":"changelog generate -a"},"_id":"1inch-limit-order-sdk@4.9.3-rc.1","bugs":{"url":"https://github.com/1inch/limit-order-sdk/issues"},"homepage":"https://github.com/1inch/limit-order-sdk#readme","_integrity":"sha512-A4hOhyrQjeEuyIxpXCw4Mj6hdxTyP1ECIEkGVFk5j/N1VBpNvGYzs20LzFLqB192q2VOxsuTFuirzzDBWqHjug==","_resolved":"/tmp/a8111650b517938bafdf4f1d6170adfd/1inch-limit-order-sdk-4.9.3-rc.1.tgz","_from":"file:1inch-limit-order-sdk-4.9.3-rc.1.tgz","_nodeVersion":"18.20.4","_npmVersion":"10.7.0","dist":{"integrity":"sha512-A4hOhyrQjeEuyIxpXCw4Mj6hdxTyP1ECIEkGVFk5j/N1VBpNvGYzs20LzFLqB192q2VOxsuTFuirzzDBWqHjug==","shasum":"bed6932f26fce3faf18adb815289e467021c8338","tarball":"https://registry.npmjs.org/1inch-limit-order-sdk/-/1inch-limit-order-sdk-4.9.3-rc.1.tgz","fileCount":177,"unpackedSize":424568,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5dXBczPBHOdD/6DKqgErbPmUhmH2os477jslX0sGBCAiBXhaXziadCHONs0vx80GlzDR2BjR61nr6Dhk1pM0gzsA=="}]},"_npmUser":{"name":"xinxingliu","email":"xinxingliu86@gmail.com"},"directories":{},"maintainers":[{"name":"xinxingliu","email":"xinxingliu86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/1inch-limit-order-sdk_4.9.3-rc.1_1726031920354_0.34642428736625197"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-11T05:18:40.216Z","4.9.3-rc.1":"2024-09-11T05:18:40.542Z","modified":"2024-09-11T05:18:40.875Z"},"maintainers":[{"name":"xinxingliu","email":"xinxingliu86@gmail.com"}],"description":"SDK for 1inch Limit Order Protocol","homepage":"https://github.com/1inch/limit-order-sdk#readme","repository":{"type":"git","url":"git+ssh://git@github.com/1inch/limit-order-sdk.git"},"author":{"name":"@1inch"},"bugs":{"url":"https://github.com/1inch/limit-order-sdk/issues"},"license":"MIT","readme":"# 1inch Limit Order Protocol v4 SDK\n\n## Installation\n\n```shell\nnpm install '@1inch/limit-order-sdk'\n```\n\n## Docs\n- [Limit Order](./src/limit-order/README.md)\n- [Limit Order Contract](./src/limit-order-contract/README.md)\n\n## Usage examples\n\n### Order creation\n```typescript\nimport {LimitOrder, MakerTraits, Address} from \"@1inch/limit-order-sdk\"\nimport {Wallet} from 'ethers'\n\n// it is a well-known test private key, do not use it in production\nconst privKey =\n    '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'\n\nconst maker = new Wallet(privKey)\nconst expiresIn = 120n // 2m\nconst expiration = BigInt(Math.floor(Date.now() / 1000)) + expiresIn\n\n// see MakerTraits.ts\nconst makerTraits = MakerTraits.default().withExpiration(expiration)\n\nconst order = new LimitOrder({\n    makerAsset: new Address('0xdac17f958d2ee523a2206206994597c13d831ec7'),\n    takerAsset: new Address('0x111111111117dc0aa78b770fa6a738034120c302'),\n    makingAmount: 100_000000n, // 100 USDT\n    takingAmount: 10_00000000000000000n, // 10 1INCH\n    maker: new Address(maker.address),\n    // salt? : bigint\n    // receiver? : Address\n}, makerTraits)\n\nconst typedData = order.getTypedData()\nconst signature = await maker.signTypedData(\n    typedData.domain,\n    {Order: typedData.types.Order},\n    typedData.message\n)\n```\n\n\n### RFQ Order creation\n\n`RfqOrder` is a light, gas efficient version of LimitOrder, but it does not support multiple fills and extension\nMainly used by market makers\n\n```typescript\nimport {RfqOrder, Address, randBigInt} from \"@1inch/limit-order-sdk\"\nimport {UINT_40_MAX} from \"@1inch/byte-utils\"\nimport {Wallet} from 'ethers'\n\n// it is a well-known test private key, do not use it in production\nconst privKey =\n    '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'\n\nconst maker = new Wallet(privKey)\nconst expiresIn = 120n // 2m\nconst expiration = BigInt(Math.floor(Date.now() / 1000)) + expiresIn\n\nconst order = new RfqOrder({\n    makerAsset: new Address('0xdac17f958d2ee523a2206206994597c13d831ec7'),\n    takerAsset: new Address('0x111111111117dc0aa78b770fa6a738034120c302'),\n    makingAmount: 100_000000n, // 100 USDT\n    takingAmount: 10_00000000000000000n, // 10 1INCH\n    maker: new Address(maker.address)\n}, {\n    allowedSender: new Address('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'),\n    expiration,\n    nonce: randBigInt(UINT_40_MAX),\n})\n\nconst typedData = order.getTypedData()\nconst signature = await maker.signTypedData(\n    typedData.domain,\n    {Order: typedData.types.Order},\n    typedData.message\n)\n```\n\n\n### API\n\n```typescript\nimport {Api, FetchProviderConnector, LimitOrder, HttpProviderConnector} from '@1inch/limit-order-sdk'\n\nconst networkId = 1 // ethereum\nconst api = new Api({\n    networkId,\n    authKey: 'key', // get it at https://portal.1inch.dev/\n    httpConnector: new FetchProviderConnector() // or use any connector which implements `HttpProviderConnector`\n})\n\n// submit order \nconst order = new LimitOrder(...) /// see `Order creation` section\nconst signature = '0x'\nawait api.submitOrder(order, signature)\n\n// get order by hash\nconst orderHash = order.getOrderHash(networkId)\nconst orderInfo = await api.getOrderByHash(orderHash)\n\n// get orders by maker\nconst orders = await api.getOrdersByMaker(order.maker)\n```\n\n#### With `axios` as http provider\n\n`axios` package should be installed\n\n```typescript\nimport {Api, LimitOrder} from \"@1inch/limit-order-sdk\"\nimport {AxiosProviderConnector} from '@1inch/limit-order-sdk/axios'\n\nconst api = new Api({\n    networkId: 1, // ethereum\n    authKey: 'key', // get it at https://portal.1inch.dev/\n    httpConnector: new AxiosProviderConnector()\n})\n```\n","readmeFilename":"README.md"}