{"_id":"@dojoswap/limit-orders-lib","_rev":"3-0d4a26f9f4f06858ac86d188774d0995","name":"@dojoswap/limit-orders-lib","dist-tags":{"latest":"2.0.7"},"versions":{"2.0.6":{"name":"@dojoswap/limit-orders-lib","version":"2.0.6","description":"Library for creating limit orders via Gelato","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"yarn generate-contracts-typings && tsc --project tsconfig.prod.json && yarn copy-contracts-types","copy-contracts-types":"cp ./src/contracts/types/*.d.ts ./dist/contracts/types","format":"prettier --write .","generate-contracts-typings":"typechain --target=ethers-v5 --out-dir src/contracts/types './src/**/abis/*.json'","lint":"eslint --cache ."},"repository":{"type":"git","url":"git+https://github.com/gelatodigital/limit-orders-lib.git"},"keywords":["ethereum","uniswap","limit orders","solidity","web3","smart contracts","gelato"],"author":{"name":"Gelato Network"},"license":"GPL-3.0-only","bugs":{"url":"https://github.com/gelatodigital/limit-orders-lib/issues"},"homepage":"https://github.com/gelatodigital/limit-orders-lib#readme","dependencies":{"ethers":"5.2.0","graphql":"15.5.0","graphql-request":"3.4.0","tslib":"^2.3.1"},"devDependencies":{"@nomiclabs/hardhat-ethers":"2.0.2","@tsconfig/recommended":"1.0.1","@typechain/ethers-v5":"7.0.0","@types/node":"15.6.1","@typescript-eslint/eslint-plugin":"4.25.0","@typescript-eslint/parser":"4.25.0","dotenv":"10.0.0","eslint":"7.27.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"3.4.0","husky":"6.0.0","lint-staged":"11.0.0","prettier":"2.3.0","ts-generator":"0.1.1","ts-node":"10.0.0","typechain":"5.0.0","typescript":"4.3.2"},"lint-staged":{"*.{js,json,md,ts,yaml,yml}":"prettier --write","*.{ts,js}":"eslint -c .eslintrc.json"},"_id":"@dojoswap/limit-orders-lib@2.0.6","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-5TMNdFs4otfXZCy5+qBq1zQs8hzlRWUdrvEvQ1yB7z/oQR1TSz9Isto44eNwiy9dmx8FlpW0foMh3NhV6/erTQ==","shasum":"29a61e15f770c0aa0f6a66fe26076e0740ba9753","tarball":"https://registry.npmjs.org/@dojoswap/limit-orders-lib/-/limit-orders-lib-2.0.6.tgz","fileCount":2,"unpackedSize":9822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMLuICRA9TVsSAnZWagAAPEEP/1q3C9uhxFIHusuDHOz5\nwVYRTbpelA/lWKmiAQQqmxr/+8LkNljcFrPCBaoTY/GXUYGPT5HaZeEZyYKh\ndq30abUpySLXBx5nAAwqhiu3xcJ5jEHTPnKnbxPb1oauUZF7Xty4vqfGB0a2\n8NvVAm30WDiCrsA9uAey6rcpOzPiyTgVuR3I3dXLogvGaKYkbrNJ3NyS/0fZ\nrCSLBRo3/SzmiOUE+5s95d44/c9FOyOVmbWwjffNDHBJxBKWPbFmtE26Fr3u\n3WdSrRtrd+dBX9+/ghWI9kaLDTTN91P3p0BNuudU4wjo8LDEsx54k5H3EaPk\nPsf/8xZ4CnKsj5uF2SZBVQwguy2+8xxxFJ/Q/jehFnQk0bmnZaaFdYMij+jN\nqxSgOTRNc6kE3yhvkFQxQ0TkrjriDp8ogXLq3Lv0dWBrg70khGlQJcbqIMr1\nfPs+tUz5sTV1VPbdEJ8kluX5UTGjFyEoY8EpbVhuOIBrqwIuqBa7OHTQmMq2\nq9lCzwIFJjtcprCvSlfNUP2S+AUT7Xcg8Ua9a5kvqAneS7eHbajA6VtEFC/e\n0h45UWLUk8uC4EK50TbE5lYLAWhGNPSHP+2vLUdWH/WWtsFCuoa9TmSHCrgP\n9HqMTmrMmytC96O5kMDudQHpwRxEKnR17iihIbeUwpS1xdk5pBSJNqInsCUB\n9d7s\r\n=ye0I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEn+p9NEZ24AMbFJYfwiRNfgGq9FSacIA9Qnmr/66pPaAiEAmpj2vqpf4JEYBFAX0UXjFb0Zw5QZ6oljqhfiC3n3k80="}]},"_npmUser":{"name":"pawelkedzia","email":"pawel.kedzia95@gmail.com"},"directories":{},"maintainers":[{"name":"pawelkedzia","email":"pawel.kedzia95@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/limit-orders-lib_2.0.6_1630583687908_0.716984830049858"},"_hasShrinkwrap":false},"2.0.7":{"name":"@dojoswap/limit-orders-lib","version":"2.0.7","description":"Library for creating limit orders via Gelato","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"yarn generate-contracts-typings && tsc --project tsconfig.prod.json && yarn copy-contracts-types","copy-contracts-types":"cp ./src/contracts/types/*.d.ts ./dist/contracts/types","format":"prettier --write .","generate-contracts-typings":"typechain --target=ethers-v5 --out-dir src/contracts/types './src/**/abis/*.json'","lint":"eslint --cache .","prepublishOnly":"yarn build"},"repository":{"type":"git","url":"git+https://github.com/gelatodigital/limit-orders-lib.git"},"keywords":["ethereum","uniswap","limit orders","solidity","web3","smart contracts","gelato"],"author":{"name":"Gelato Network"},"license":"GPL-3.0-only","bugs":{"url":"https://github.com/gelatodigital/limit-orders-lib/issues"},"homepage":"https://github.com/gelatodigital/limit-orders-lib#readme","dependencies":{"ethers":"5.2.0","graphql":"15.5.0","graphql-request":"3.4.0","tslib":"^2.3.1"},"devDependencies":{"@nomiclabs/hardhat-ethers":"2.0.2","@tsconfig/recommended":"1.0.1","@typechain/ethers-v5":"7.0.0","@types/node":"15.6.1","@typescript-eslint/eslint-plugin":"4.25.0","@typescript-eslint/parser":"4.25.0","dotenv":"10.0.0","eslint":"7.27.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"3.4.0","husky":"6.0.0","lint-staged":"11.0.0","prettier":"2.3.0","ts-generator":"0.1.1","ts-node":"10.0.0","typechain":"5.0.0","typescript":"4.3.2"},"lint-staged":{"*.{js,json,md,ts,yaml,yml}":"prettier --write","*.{ts,js}":"eslint -c .eslintrc.json"},"_id":"@dojoswap/limit-orders-lib@2.0.7","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-FZS+S6VvlMrosNYM4FkX/cSFl0FnNNgNFRyu+0fCY7p9RnkqZiZqDhZbsxvJlQpc79/iOZmq3QxDL+YmwEYIEw==","shasum":"d32ea213636b8d828a647997aeaa0a0a9f9f7d5e","tarball":"https://registry.npmjs.org/@dojoswap/limit-orders-lib/-/limit-orders-lib-2.0.7.tgz","fileCount":32,"unpackedSize":157956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhML73CRA9TVsSAnZWagAAJpwP/j9yfOIB1OMBEyIcQkl9\nnkIvGzTOni1PXABFiyBjVDUriMpLnaGJGowBbvW0PdQuCw4OccYSw1gHaqj9\nbHXxXqcrXt+m7TlbM7DwE3MCXvJpp8qaRu91q3FPSBJ1qbYPjZYvhP7+bm8x\nBchQiJuxiUJne2kunmRdHXKUFB5+Ng4Y6/MMb86EiARiuvxirhumidUnAqXQ\noieYIWHma28M1strHKD/9K8kWHTprtQgMIF9mvpnCE7ni6gg5FMye/qZwqAC\nvoeqMkkWdvDcmD357SgnUrSt7/7rE+PbIwCfF89jplvYH597J+e7yQSLhiMR\nToBuJbJUYsYRRzz5VXFdVEF1Dnod0MlxPYiTrDbMnwg7zEkF6ZPGHyHJI8Zw\nvUUMBsQ3k+zNBbD0R7GghVLmPgDqA7oI5m72+FOzhyf7y4732wa1IzFWTfIB\nkl3CUp01qN/aei14Umz/cl8yKZeUdI0JgjWiBuvQnpBMDpS6AZ5jay4wOu9G\nKKpPy9qtYAVto5JV0XlLO5yPz8kq910DdfavV89fTMURz4Sma5jfSrxTEcUt\n2QCKve7fSMmCkTcVDh6+n3Xf0tPNLIvzYa4ai08KVJonYRJvx9M6sUfpvE3G\nCYz2OaKv5Gwuv7DcxBneR/rXVhdyYzakkFMLfKK3yjrkHRxBr0qEWznbSlJU\ntnnL\r\n=AAAr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCELLouQDRQ/6q5+S6ozxcgx+AA0r3kh99986nPjXdQSgIhAPOOpV63rHpvNmnolE5w0dCTUFkrcSQU6fWQznIm7m90"}]},"_npmUser":{"name":"pawelkedzia","email":"pawel.kedzia95@gmail.com"},"directories":{},"maintainers":[{"name":"pawelkedzia","email":"pawel.kedzia95@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/limit-orders-lib_2.0.7_1630584567863_0.40467825399750135"},"_hasShrinkwrap":false}},"time":{"created":"2021-09-02T11:54:47.860Z","2.0.6":"2021-09-02T11:54:48.017Z","modified":"2022-04-05T05:07:24.170Z","2.0.7":"2021-09-02T12:09:27.990Z"},"maintainers":[{"email":"dudkopiotr@gmail.com","name":"piotrdudko"},{"email":"pawel.kedzia95@gmail.com","name":"pawelkedzia"}],"description":"Library for creating limit orders via Gelato","homepage":"https://github.com/gelatodigital/limit-orders-lib#readme","keywords":["ethereum","uniswap","limit orders","solidity","web3","smart contracts","gelato"],"repository":{"type":"git","url":"git+https://github.com/gelatodigital/limit-orders-lib.git"},"author":{"name":"Gelato Network"},"bugs":{"url":"https://github.com/gelatodigital/limit-orders-lib/issues"},"license":"GPL-3.0-only","readme":"[![npm version](https://badge.fury.io/js/%40gelatonetwork%2Flimit-orders-lib.svg)](https://badge.fury.io/js/%40gelatonetwork%2Flimit-orders-lib)\n\n# Gelato Limit Order SDK\n\nPlace limit buy and sell orders on Ethereum, Polygon and Fantom using Gelato Network.\n\n> :warning: :warning: :warning: **Warning** :warning: :warning: :warning: :\n> Version 2.0.0 introduced new features and our system changed to an approval/transferFrom flow. You should use the latest version available (>= 2.0.0). If you are using an old version you should update to the latest version immediately. Versions below 2.0.0 are being deprecated.\n\n## [Demo - Sorbet Finance](https://www.sorbet.finance)\n\n## Installation\n\n`yarn add -D @dojoswap/limit-orders-lib`\n\nor\n\n`npm install --save-dev @dojoswap/limit-orders-lib`\n\n## Getting Started\n\nInstantiate GelatoLimitOrders\n\n```typescript\nimport { GelatoLimitOrders, utils } from \"@dojoswap/limit-orders-lib\";\n\n// Supported networks: Mainnet = 1; Ropsten = 3; Polygon = 137; Fantom = 250\nconst chainId = 1;\nconst signerOrProvider = await provider.getSigner();\nconst handler = \"uniswap\"; // \"spookyswap\" | \"uniswap\" | \"quickswap\" | \"spiritswap\" | \"bombswap\";\n\nconst gelatoLimitOrders = new GelatoLimitOrders(\n  chainId as ChainId,\n  signerOrProvider, // optional\n  handler // optional\n);\n```\n\nNote: Use `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE` when referring to native blockchain asset (i.e MATIC, FTM or ETH)\n\n### Examples\n\n1. Submit a limit order\n\nNote: To submit a order with an ERC20 as input you must first approve the `erc20OrderRouter`. You can get its address via `gelatoLimitOrders.erc20OrderRouter.address` or call `gelatoLimitOrders.approveTokenAmount(inputToken, inputAmount)`.\n\n```typescript\n// Token to sell\nconst inputToken = \"0x6b175474e89094c44da98b954eedeac495271d0f\"; // DAI\n\n// Token to buy\nconst outputToken = \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\"; // ETH\n\n// Amount to sell\nconst inputAmount = ethers.utils.parseUnits(\"2000\", \"18\");\n\n// Minimum amount of outTOken which the users wants to receive back\nconst minReturn = ethers.utils.parseEther(\"1\");\n\n// Address of user who places the order (must be same as signer address)\nconst userAddress = \"0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B\";\n\nawait gelatoLimitOrders.approveTokenAmount(inputToken, inputAmount);\n\nconst tx = await gelatoLimitOrders.submitLimitOrder(\n  inputToken,\n  outputToken,\n  inputAmount,\n  minReturn\n);\n```\n\n2. Cancel an order\n\n```typescript\nconst tx = await gelatoLimitOrders.cancelLimitOrder(\n  order,\n  true // Optional: checkIsActiveOrder = true, to check if order to be cancelled actually exists. It is recommended to use this check before trying to cancel an order to avoid faulty cancellations and gas waste.\n```\n\n3. Fetch orders\n\nNote: to display the minimum amount returned (i.e the output amount of the order) you should always use the `adjustedMinReturn` field of the order.\n\nNote 2: If you instantiated the library by passing an `handler`, all orders fetched will be filtered accordingly. Otherwise, orders will not be filtered.\n\n```javascript\nconst allOrders = await gelatoLimitOrders.getOrders(userAddress);\n```\n\n## Types\n\n```typescript\nexport class GelatoLimitOrders {\n  static slippageBPS: number;\n  static gelatoFeeBPS: number;\n\n  get chainId(): ChainId;\n  get signer(): Signer | undefined;\n  get provider(): Provider | undefined;\n  get subgraphUrl(): string;\n  get handler(): Handler | undefined;\n  get handlerAddress(): string | undefined;\n  get moduleAddress(): string;\n  get contract(): GelatoLimitOrdersContract;\n  get erc20OrderRouter(): ERC20OrderRouter;\n  constructor(chainId: ChainId, signerOrProvider?: Signer, handler?: Handler);\n  encodeLimitOrderSubmission(\n    inputToken: string,\n    outputToken: string,\n    inputAmount: BigNumberish,\n    minReturn: BigNumberish,\n    owner: string,\n    // If inputToken is an ERC20, compare allowance with inputAmount. defaults to `true`\n    checkAllowance?: boolean\n  ): Promise<TransactionData>;\n  encodeLimitOrderSubmissionWithSecret(\n    inputToken: string,\n    outputToken: string,\n    inputAmount: BigNumberish,\n    minReturn: BigNumberish,\n    owner: string,\n    // If inputToken is an ERC20, compare allowance with inputAmount. defaults to `true`\n    checkAllowance?: boolean\n  ): Promise<TransactionDataWithSecret>;\n  submitLimitOrder(\n    inputToken: string,\n    outputToken: string,\n    inputAmount: BigNumberish,\n    minReturn: BigNumberish,\n    // If inputToken is an ERC20, compare allowance with inputAmount. defaults to `true`\n    checkAllowance?: boolean,\n    overrides?: Overrides\n  ): Promise<ContractTransaction>;\n  encodeLimitOrderCancellation(\n    order: Order,\n    checkIsActiveOrder?: boolean\n  ): Promise<TransactionData>;\n  cancelLimitOrder(\n    order: Order,\n    checkIsActiveOrder?: boolean,\n    overrides?: Overrides\n  ): Promise<ContractTransaction>;\n  approveTokenAmount(\n    inputToken: string,\n    amount: BigNumberish,\n    overrides?: Overrides\n  ): Promise<ContractTransaction>;\n  isActiveOrder(order: Order): Promise<boolean>;\n  getExchangeRate(\n    inputValue: BigNumberish,\n    inputDecimals: number,\n    outputValue: BigNumberish,\n    outputDecimals: number,\n    invert?: boolean\n  ): string;\n  getFeeAndSlippageAdjustedMinReturn(\n    outputAmount: BigNumberish,\n    extraSlippageBPS?: number\n  ): {\n    minReturn: string;\n    slippage: string;\n    gelatoFee: string;\n  };\n  getAdjustedMinReturn(\n    minReturn: BigNumberish,\n    extraSlippageBPS?: number\n  ): string;\n  getExecutionPrice(\n    inputAmount: BigNumberish,\n    inputDecimals: number,\n    outputAmount: BigNumberish,\n    outputDecimals: number,\n    isInverted?: boolean\n  ): string;\n  getOrders(\n    owner: string,\n    // includeOrdersWithNullHandler defaults to `false`\n    includeOrdersWithNullHandler?: boolean\n  ): Promise<Order[]>;\n  getOpenOrders(\n    owner: string,\n    // includeOrdersWithNullHandler defaults to `false`\n    includeOrdersWithNullHandler?: boolean\n  ): Promise<Order[]>;\n  getPastOrders(\n    owner: string,\n    // includeOrdersWithNullHandler defaults to `false`\n    includeOrdersWithNullHandler?: boolean\n  ): Promise<Order[]>;\n  getExecutedOrders(\n    owner: string,\n    // includeOrdersWithNullHandler defaults to `false`\n    includeOrdersWithNullHandler?: boolean\n  ): Promise<Order[]>;\n  getCancelledOrders(\n    owner: string,\n    // includeOrdersWithNullHandler defaults to `false`\n    includeOrdersWithNullHandler?: boolean\n  ): Promise<Order[]>;\n}\nexport declare type ChainId = 1 | 3 | 137 | 250;\n\nexport declare type Handler =\n  | \"spookyswap\"\n  | \"uniswap\"\n  | \"quickswap\"\n  | \"spiritswap\";\n\nexport interface TransactionData {\n  to: string;\n  data: BytesLike;\n  value: BigNumberish;\n}\n\nexport interface TransactionDataWithSecret {\n  payload: TransactionData;\n  secret: string;\n  witness: string;\n  order: PartialOrder;\n}\n\nexport interface Order {\n  id: string;\n  owner: string;\n  inputToken: string;\n  outputToken: string;\n  minReturn: string;\n  adjustedMinReturn: string;\n  module: string;\n  witness: string;\n  secret: string;\n  inputAmount: string;\n  vault: string;\n  bought: string | null;\n  auxData: string | null;\n  status: string;\n  createdTxHash: string;\n  executedTxHash: string | null;\n  cancelledTxHash: string | null;\n  blockNumber: string;\n  createdAt: string;\n  updatedAt: string;\n  updatedAtBlock: string;\n  updatedAtBlockHash: string;\n  data: string;\n  inputData: string;\n  handler: string | null;\n}\n\nexport interface PartialOrder {\n  owner: string;\n  inputToken: string;\n  outputToken: string;\n  minReturn: string;\n  adjustedMinReturn: string;\n  module: string;\n  witness: string;\n  secret: string;\n  inputAmount: string;\n  data: string;\n  inputData: string;\n  handler?: string;\n}\n```\n\n### Need help?\n\nReach out to us on [Telegram](https://t.me/therealgelatonetwork), [Discord](https://discord.gg/ApbA39BKyJ) or [Twitter](https://twitter.com/gelatonetwork)\n","readmeFilename":"README.md"}