[
  {
    "path": ".eslintrc.json",
    "content": "{\n  \"parser\": \"@typescript-eslint/parser\",\n  \"parserOptions\": {\n    \"ecmaVersion\": 2020,\n    \"sourceType\": \"module\",\n    \"ecmaFeatures\": {\n      // Allows for the parsing of JSX\n      \"jsx\": true\n    }\n  },\n  \"ignorePatterns\": [\"node_modules/**/*\"],\n  \"settings\": {\n    \"react\": {\n      \"version\": \"detect\"\n    }\n  },\n  \"extends\": [\n    \"plugin:react/recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:react-hooks/recommended\",\n    \"plugin:prettier/recommended\"\n  ],\n  \"rules\": {\n    \"@typescript-eslint/explicit-function-return-type\": \"off\",\n    \"prettier/prettier\": \"error\",\n    \"@typescript-eslint/no-explicit-any\": \"off\",\n    \"@typescript-eslint/ban-ts-comment\": \"off\",\n    \"@typescript-eslint/ban-ts-ignore\": \"off\"\n  }\n}\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "content": "---\nname: Bug Report\nabout: Describe an issue in the Uniswap Interface\ntitle: ''\nlabels: bug\nassignees: ''\n---\n\n**Bug Description**\nA clear and concise description of the bug.\n\n**Steps to Reproduce**\n\n1. Go to ...\n2. Click on ...\n   ...\n\n**Expected Behavior**\nA clear and concise description of what you expected to happen.\n\n**Additional Context**\nAdd any other context about the problem here (screenshots, whether the bug only occurs only in certain mobile/desktop/browser environments, etc.)\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Support\n    url: https://discord.gg/FCfyBSbCU5\n    about: Please ask and answer questions here\n  - name: List a token\n    url: https://github.com/Uniswap/default-token-list#adding-a-token\n    about: Any requests to add a token to Uniswap should go here\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "content": "---\nname: Feature Request\nabout: Suggest an idea for improving the UX of the Uniswap Interface\ntitle: ''\nlabels: 'improvement'\nassignees: ''\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/workflows/semgrep.yml",
    "content": "name: Semgrep\non:\n  workflow_dispatch: {}\n  pull_request: {}\n  push:\n    branches:\n      - main\n      - master\n  schedule:\n    # random HH:MM to avoid a load spike on GitHub Actions at 00:00\n    - cron: '35 11 * * *'\njobs:\n  semgrep:\n    name: semgrep/ci\n    runs-on: ubuntu-20.04\n    env:\n      SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}\n    container:\n      image: returntocorp/semgrep\n    if: (github.actor != 'dependabot[bot]')\n    steps:\n      - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744\n      - run: semgrep ci\n"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n.DS_Store\nbuild\n.vscode/\n"
  },
  {
    "path": ".nvmrc",
    "content": "v18\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"semi\": false,\n  \"singleQuote\": true,\n  \"printWidth\": 120,\n  \"endOfLine\": \"auto\"\n}\n"
  },
  {
    "path": ".yarnrc",
    "content": "ignore-scripts true\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "README.md",
    "content": "## Uniswap Info V3\n\nAn open sourced interface for Uniswap V3 analytics. \n\nInfo URL: https://info.uniswap.org/#/\n\n## Development\n\n### Install Dependencies\n\n```bash\nyarn\n```\n\n### Run\n\n```bash\nyarn start\n```\n\n## Contributions\n\n**Please open all pull requests against the `master` branch.**\nCI checks will run against all PRs.\n"
  },
  {
    "path": "cypress.json",
    "content": "{\n  \"baseUrl\": \"http://localhost:3000\",\n  \"pluginsFile\": false,\n  \"fixturesFolder\": false,\n  \"supportFile\": \"cypress/support/index.js\",\n  \"video\": false,\n  \"defaultCommandTimeout\": 10000\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@uniswap/interface\",\n  \"description\": \"Uniswap Interface\",\n  \"homepage\": \".\",\n  \"private\": true,\n  \"devDependencies\": {\n    \"@emotion/core\": \"^11.0.0\",\n    \"@popperjs/core\": \"^2.4.4\",\n    \"@reach/dialog\": \"^0.10.3\",\n    \"@reach/portal\": \"^0.10.3\",\n    \"@reduxjs/toolkit\": \"^1.3.5\",\n    \"@styled-system/css\": \"^5.1.5\",\n    \"@types/jest\": \"^25.2.1\",\n    \"@types/lodash.flatmap\": \"^4.5.6\",\n    \"@types/lodash.keyby\": \"^4.6.6\",\n    \"@types/luxon\": \"^1.24.4\",\n    \"@types/multicodec\": \"^1.0.0\",\n    \"@types/node\": \"^20.8.7\",\n    \"@types/qs\": \"^6.9.2\",\n    \"@types/react\": \"18.2.21\",\n    \"@types/react-dom\": \"^18.2.14\",\n    \"@types/react-redux\": \"^7.1.28\",\n    \"@types/react-router-dom\": \"^5.3.3\",\n    \"@types/react-virtualized-auto-sizer\": \"^1.0.2\",\n    \"@types/react-window\": \"^1.8.7\",\n    \"@types/rebass\": \"^4.0.12\",\n    \"@types/styled-components\": \"^5.1.29\",\n    \"@types/testing-library__cypress\": \"^5.0.5\",\n    \"@types/wcag-contrast\": \"^3.0.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.8.0\",\n    \"@typescript-eslint/parser\": \"^6.8.0\",\n    \"@uniswap/governance\": \"^1.0.2\",\n    \"@uniswap/liquidity-staker\": \"^1.0.2\",\n    \"@uniswap/merkle-distributor\": \"1.0.1\",\n    \"@uniswap/sdk-core\": \"^4.0.9\",\n    \"@uniswap/token-lists\": \"^1.0.0-beta.27\",\n    \"@uniswap/v2-core\": \"^1.0.1\",\n    \"@uniswap/v2-periphery\": \"^1.1.0-beta.0\",\n    \"@uniswap/v3-sdk\": \"^3.10.0\",\n    \"@web3-react/core\": \"^8.2.3\",\n    \"ajv\": \"^6.12.3\",\n    \"cids\": \"^1.0.0\",\n    \"copy-to-clipboard\": \"^3.2.0\",\n    \"cross-env\": \"^7.0.2\",\n    \"cypress\": \"^4.11.0\",\n    \"eslint\": \"^8.51.0\",\n    \"eslint-config-prettier\": \"^9.0.0\",\n    \"eslint-plugin-prettier\": \"^5.0.1\",\n    \"eslint-plugin-react\": \"^7.33.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"ethers\": \"^6.8.0\",\n    \"i18next\": \"^15.0.9\",\n    \"i18next-browser-languagedetector\": \"^3.0.1\",\n    \"i18next-xhr-backend\": \"^2.0.1\",\n    \"inter-ui\": \"^3.13.1\",\n    \"jazzicon\": \"^1.5.0\",\n    \"lodash.flatmap\": \"^4.5.0\",\n    \"lodash.keyby\": \"^4.6.0\",\n    \"luxon\": \"^1.25.0\",\n    \"multicodec\": \"^2.0.0\",\n    \"multihashes\": \"^3.0.1\",\n    \"node-vibrant\": \"^3.1.5\",\n    \"polished\": \"^3.3.2\",\n    \"prettier\": \"^3.0.3\",\n    \"qs\": \"^6.9.4\",\n    \"react\": \"^18.2.0\",\n    \"react-confetti\": \"^6.0.0\",\n    \"react-device-detect\": \"^1.6.2\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-feather\": \"^2.0.8\",\n    \"react-i18next\": \"^10.7.0\",\n    \"react-markdown\": \"^4.3.1\",\n    \"react-popper\": \"^2.2.3\",\n    \"react-redux\": \"^8.1.3\",\n    \"react-router-dom\": \"^6.17.0\",\n    \"react-scripts\": \"^5.0.1\",\n    \"react-spring\": \"^8.0.27\",\n    \"react-use-gesture\": \"^6.0.14\",\n    \"react-virtualized-auto-sizer\": \"^1.0.20\",\n    \"react-window\": \"^1.8.9\",\n    \"rebass\": \"^4.0.7\",\n    \"redux-localstorage-simple\": \"^2.3.1\",\n    \"serve\": \"^11.3.0\",\n    \"start-server-and-test\": \"^1.11.0\",\n    \"styled-components\": \"^6.1.0\",\n    \"styled-system\": \"^5.1.5\",\n    \"typescript\": \"^5.2.2\",\n    \"use-count-up\": \"^2.2.5\",\n    \"wcag-contrast\": \"^3.0.0\"\n  },\n  \"resolutions\": {\n    \"@walletconnect/web3-provider\": \"1.1.1-alpha.0\",\n    \"**/@types/react\": \"18.2.21\",\n    \"**/@web3-react/types\": \"8.2.3\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"eject\": \"react-scripts eject\",\n    \"integration-test\": \"start-server-and-test 'serve build -l 3000' http://localhost:3000 'cypress run'\",\n    \"storybook\": \"start-storybook -p 6006\",\n    \"test\": \"react-scripts test --env=jsdom\",\n    \"lint\": \"yarn eslint --ignore-path .gitignore --cache --cache-location node_modules/.cache/eslint/ .\",\n    \"codegen:schema\": \"npx apollo client:download-schema --endpoint=https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-rinkeby\",\n    \"codegen:generate\": \"apollo codegen:generate --localSchemaFile=schema.json --target=typescript --includes=src/**/*.ts --tagName=gql --addTypename --globalTypesFile=src/types/graphql-global-types.ts types\",\n    \"deduplicate\": \"yarn-deduplicate --strategy=highest\"\n  },\n  \"eslintConfig\": {\n    \"extends\": \"react-app\",\n    \"ignorePatterns\": [\n      \"node_modules\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  },\n  \"license\": \"GPL-3.0-or-later\",\n  \"dependencies\": {\n    \"@apollo/client\": \"^3.8.6\",\n    \"@data-ui/histogram\": \"^0.0.84\",\n    \"@ethersproject/experimental\": \"^5.7.0\",\n    \"@types/ms\": \"^0.7.33\",\n    \"@types/numeral\": \"^2.0.1\",\n    \"@types/ua-parser-js\": \"^0.7.38\",\n    \"@uniswap/analytics\": \"^1.6.0\",\n    \"@uniswap/analytics-events\": \"^2.25.0\",\n    \"@uniswap/default-token-list\": \"^2.0.0\",\n    \"apollo-cache-inmemory\": \"^1.6.6\",\n    \"apollo-client\": \"^2.6.10\",\n    \"apollo-link-http\": \"^1.5.17\",\n    \"dayjs\": \"^1.10.4\",\n    \"graphql\": \"^15.5.0\",\n    \"graphql-tag\": \"^2.11.0\",\n    \"lightweight-charts\": \"^3.3.0\",\n    \"ms\": \"^2.1.3\",\n    \"numbro\": \"^2.3.2\",\n    \"numeral\": \"^2.0.6\",\n    \"react-hot-keys\": \"^2.7.2\",\n    \"react-hotkeys\": \"^2.0.0\",\n    \"recharts\": \"^2.0.9\",\n    \"ua-parser-js\": \"^1.0.36\",\n    \"uifx\": \"^2.0.7\",\n    \"yarn-deduplicate\": \"^6.0.2\"\n  }\n}\n"
  },
  {
    "path": "public/451.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>Unavailable For Legal Reasons</title>\n  </head>\n  <body>\n    <h1>Unavailable For Legal Reasons</h1>\n  </body>\n</html>\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"shortcut icon\" type=\"image/png\" href=\"%PUBLIC_URL%/favicon.png\" />\n    <link rel=\"apple-touch-icon\" sizes=\"192x192\" href=\"%PUBLIC_URL%/images/192x192_App_Icon.png\" />\n    <link rel=\"apple-touch-icon\" sizes=\"512x512\" href=\"%PUBLIC_URL%/images/512x512_App_Icon.png\" />\n\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#ff007a\" />\n    <meta name=\"fortmatic-site-verification\" content=\"j93LgcVZk79qcgyo\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n\n    <title>Uniswap Info</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "public/locales/de.json",
    "content": "{\n  \"noWallet\": \"Keine Ethereum-Wallet gefunden\",\n  \"wrongNetwork\": \"Du bist auf dem falschen Netzwerk.\",\n  \"switchNetwork\": \"Bitte wechsle zum {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Bitte besuche uns mit einem web3-fähigen mobilen Browser wie z.B. Trust Wallet oder Coinbase Wallet.\",\n  \"installMetamask\": \"Bitte besuch uns erneut, nachdem du Metamask oder Brave installiert hast.\",\n  \"disconnected\": \"Nicht verbunden\",\n  \"swap\": \"Tauschen\",\n  \"swapAnyway\": \"Trotzdem tauschen\",\n  \"send\": \"Senden\",\n  \"sendAnyway\": \"Trotzdem senden\",\n  \"pool\": \"Pool\",\n  \"betaWarning\": \"Dieses Projekt ist in beta. Nutzung auf eigenes Risiko.\",\n  \"input\": \"Input\",\n  \"output\": \"Output\",\n  \"estimated\": \"geschätzt\",\n  \"balance\": \"Guthaben: {{ balanceInput }}\",\n  \"unlock\": \"Freischalten\",\n  \"pending\": \"hängige\",\n  \"selectToken\": \"Token auswählen\",\n  \"searchOrPaste\": \"Token Name, Symbol oder Adresse suchen\",\n  \"searchOrPasteMobile\": \"Name, Symbol oder Adresse\",\n  \"noExchange\": \"Exchange nicht gefunden\",\n  \"exchangeRate\": \"Wechselkurs\",\n  \"invertedRate\": \"Invertierter Wechselkurs\",\n  \"unknownError\": \"Oops! Ein unbekannter Fehler ist aufgetreten. Bitte Seite neu laden oder uns von einem anderen Browser oder Gerät erneut besuchen.\",\n  \"enterValueCont\": \"Wert {{ missingCurrencyValue }} eingeben um fortzufahren.\",\n  \"selectTokenCont\": \"Token auswählen um fortzufahren.\",\n  \"noLiquidity\": \"Keine Liquidität.\",\n  \"insufficientLiquidity\": \"Liquidität ungenügend.\",\n  \"unlockTokenCont\": \"Token freischalten um fortzufahren.\",\n  \"transactionDetails\": \"Details der Transaktion\",\n  \"hideDetails\": \"Details ausblenden\",\n  \"slippageWarning\": \"Wechselkursrutsch\",\n  \"highSlippageWarning\": \"Hoher Wechselkursrutsch\",\n  \"youAreSelling\": \"Du verkaufst\",\n  \"orTransFail\": \"oder die Transaktion wird fehlschlagen.\",\n  \"youWillReceive\": \"Du erhältst mindestens\",\n  \"youAreBuying\": \"Du kaufst\",\n  \"itWillCost\": \"Es kostet höchstens\",\n  \"forAtMost\": \"für maximal\",\n  \"insufficientBalance\": \"Guthaben ungenügend\",\n  \"inputNotValid\": \"Eingabewert ungültig\",\n  \"differentToken\": \"Es müssen unterschiedliche Token sein.\",\n  \"noRecipient\": \"Empfängeradresse angeben.\",\n  \"invalidRecipient\": \"Bitte gib eine gültige Empfängeradresse an.\",\n  \"recipientAddress\": \"Adresse des Empfängers\",\n  \"youAreSending\": \"Du schickst\",\n  \"willReceive\": \"erhält mindestens\",\n  \"to\": \"zu\",\n  \"addLiquidity\": \"Liquidität hinzufügen\",\n  \"deposit\": \"Depot\",\n  \"currentPoolSize\": \"Aktuelle Größe des Pools\",\n  \"yourPoolShare\": \"Dein Anteil am Pool\",\n  \"noZero\": \"Wert darf nicht Null sein.\",\n  \"mustBeETH\": \"Einer der Inputs muß ETH sein.\",\n  \"enterCurrencyOrLabelCont\": \"{{ inputCurrency }} oder {{ label }} Wert eingeben um fortzufahren.\",\n  \"youAreAdding\": \"Du fügst zwischen\",\n  \"and\": \"und\",\n  \"intoPool\": \"in den Liquiditätspool.\",\n  \"outPool\": \"vom Liquiditätspool.\",\n  \"youWillMint\": \"Du prägst\",\n  \"liquidityTokens\": \"Liquiditätstokens.\",\n  \"totalSupplyIs\": \"Die gesamte Anzahl Liquiditätstokens ist aktuell\",\n  \"youAreSettingExRate\": \"Du setzt den anfänglichen Wechselkurs auf\",\n  \"totalSupplyIs0\": \"Die gesamte Anzahl Liquiditätstokens ist aktuell 0.\",\n  \"tokenWorth\": \"Zum gegenwärtigen Wechselkurs ist jeder Pool Token so viel Wert\",\n  \"firstLiquidity\": \"Du bist die erste Person die Liquidität bereitstellt!\",\n  \"initialExchangeRate\": \"Der initiale Wechselkurs wird auf deiner Überweisung basieren. Stelle sicher, dass deine ETH und {{ label }} denselben Fiatwert haben.\",\n  \"removeLiquidity\": \"Liquidität entfernen\",\n  \"poolTokens\": \"Pool Tokens\",\n  \"enterLabelCont\": \"{{ label }} Wert eingeben um fortzufahren.\",\n  \"youAreRemoving\": \"Du entfernst zwischen\",\n  \"youWillRemove\": \"Du entfernst\",\n  \"createExchange\": \"Exchange erstellen\",\n  \"invalidTokenAddress\": \"Ungültige Tokenadresse\",\n  \"exchangeExists\": \"{{ label }} Exchange existiert bereits!\",\n  \"invalidSymbol\": \"Symbol ungültig\",\n  \"invalidDecimals\": \"Dezimalstellen ungültig\",\n  \"tokenAddress\": \"Tokenadresse\",\n  \"label\": \"Label\",\n  \"name\": \"Name\",\n  \"symbol\": \"Symbol\",\n  \"decimals\": \"Dezimalstellen\",\n  \"enterTokenCont\": \"Tokenadresse eingeben um fortzufahren\",\n  \"priceChange\": \"Geschätzter Wechselkursrutsch\",\n  \"forAtLeast\": \"für mindestens \",\n  \"brokenToken\": \"Der ausgewählte Token ist nicht kompatibel mit Uniswap V1. Liquidität hinzufügen wird zu nicht mehr zugänglichen Token führen!\"\n}\n"
  },
  {
    "path": "public/locales/en.json",
    "content": "{\n  \"noWallet\": \"No Ethereum wallet found\",\n  \"wrongNetwork\": \"You are on the wrong network\",\n  \"switchNetwork\": \"Please switch to {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Please visit us from a web3-enabled mobile browser such as Trust Wallet or Coinbase Wallet.\",\n  \"installMetamask\": \"Please visit us after installing Metamask on Chrome or Brave.\",\n  \"disconnected\": \"Disconnected\",\n  \"swap\": \"Swap\",\n  \"swapAnyway\": \"Swap Anyway\",\n  \"send\": \"Send\",\n  \"sendAnyway\": \"Send Anyway\",\n  \"pool\": \"Pool\",\n  \"betaWarning\": \"This project is in beta. Use at your own risk.\",\n  \"input\": \"Input\",\n  \"output\": \"Output\",\n  \"estimated\": \"estimated\",\n  \"balance\": \"Balance: {{ balanceInput }}\",\n  \"unlock\": \"Unlock\",\n  \"pending\": \"Pending\",\n  \"selectToken\": \"Select a token\",\n  \"searchOrPaste\": \"Search Token Name, Symbol, or Address\",\n  \"searchOrPasteMobile\": \"Name, Symbol, or Address\",\n  \"noExchange\": \"No Exchange Found\",\n  \"noToken\": \"No Token Found\",\n  \"exchangeRate\": \"Exchange Rate\",\n  \"unknownError\": \"Oops! An unknown error occurred. Please refresh the page, or visit from another browser or device.\",\n  \"enterValueCont\": \"Enter a {{ missingCurrencyValue }} value to continue.\",\n  \"selectTokenCont\": \"Select a token to continue.\",\n  \"noLiquidity\": \"No liquidity.\",\n  \"insufficientLiquidity\": \"Insufficient liquidity.\",\n  \"unlockTokenCont\": \"Please unlock token to continue.\",\n  \"transactionDetails\": \"Advanced Details\",\n  \"hideDetails\": \"Hide Details\",\n  \"slippageWarning\": \"Slippage Warning\",\n  \"highSlippageWarning\": \"High Slippage Warning\",\n  \"youAreSelling\": \"You are selling\",\n  \"orTransFail\": \"or the transaction will fail.\",\n  \"youWillReceive\": \"You will receive at least\",\n  \"youAreBuying\": \"You are buying\",\n  \"itWillCost\": \"It will cost at most\",\n  \"forAtMost\": \"for at most\",\n  \"insufficientBalance\": \"Insufficient Balance\",\n  \"inputNotValid\": \"Not a valid input value\",\n  \"differentToken\": \"Must be different token.\",\n  \"noRecipient\": \"Enter a wallet address to send to.\",\n  \"invalidRecipient\": \"Please enter a valid wallet address recipient.\",\n  \"recipientAddress\": \"Recipient Address\",\n  \"youAreSending\": \"You are sending\",\n  \"willReceive\": \"will receive at least\",\n  \"to\": \"to\",\n  \"addLiquidity\": \"Add Liquidity\",\n  \"deposit\": \"Deposit\",\n  \"currentPoolSize\": \"Current Pool Size\",\n  \"yourPoolShare\": \"Your Pool Share\",\n  \"noZero\": \"Amount cannot be zero.\",\n  \"mustBeETH\": \"One of the input must be ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Enter a {{ inputCurrency }} or {{ label }} value to continue.\",\n  \"youAreAdding\": \"You are adding\",\n  \"and\": \"and\",\n  \"intoPool\": \"into the liquidity pool.\",\n  \"outPool\": \"from the liquidity pool.\",\n  \"youWillMint\": \"You will mint\",\n  \"liquidityTokens\": \"liquidity tokens.\",\n  \"totalSupplyIs\": \"Current total supply of liquidity tokens is\",\n  \"youAreSettingExRate\": \"You are setting the initial exchange rate to\",\n  \"totalSupplyIs0\": \"Current total supply of liquidity tokens is 0.\",\n  \"tokenWorth\": \"At current exchange rate, each pool token is worth\",\n  \"firstLiquidity\": \"You are the first person to add liquidity!\",\n  \"initialExchangeRate\": \"The initial exchange rate will be set based on your deposits. Please make sure that your ETH and {{ label }} deposits have the same fiat value.\",\n  \"removeLiquidity\": \"Remove Liquidity\",\n  \"poolTokens\": \"Pool Tokens\",\n  \"enterLabelCont\": \"Enter a {{ label }} value to continue.\",\n  \"youAreRemoving\": \"You are removing between\",\n  \"youWillRemove\": \"You will remove\",\n  \"createExchange\": \"Create Exchange\",\n  \"invalidTokenAddress\": \"Not a valid token address\",\n  \"exchangeExists\": \"{{ label }} Exchange already exists!\",\n  \"invalidSymbol\": \"Invalid symbol\",\n  \"invalidDecimals\": \"Invalid decimals\",\n  \"tokenAddress\": \"Token Address\",\n  \"label\": \"Label\",\n  \"name\": \"Name\",\n  \"symbol\": \"Symbol\",\n  \"decimals\": \"Decimals\",\n  \"enterTokenCont\": \"Enter a token address to continue\",\n  \"priceChange\": \"Expected price slippage\",\n  \"forAtLeast\": \"for at least \",\n  \"brokenToken\": \"The selected token is not compatible with Uniswap V1. Adding liquidity will result in locked funds.\",\n  \"toleranceExplanation\": \"Lowering this limit decreases your risk of frontrunning. However, this makes more likely that your transaction will fail due to normal price movements.\",\n  \"tokenSearchPlaceholder\": \"Search name or paste address\",\n  \"selectFee\": \"Select Fee\",\n  \"fee\": \"fee\",\n  \"setLimits\": \"Set Limits\",\n  \"percent\": \"Percent\",\n  \"rate\": \"Rate\",\n  \"currentRate\": \"Current {{label}} Rate:\",\n  \"inactiveRangeWarning\": \"Your position will not be active or earn fees until the selected rates come into range.\",\n  \"invalidRangeWarning\": \"Invalid Range\",\n  \"connectWallet\": \"Connect Wallet\",\n  \"unsupportedAsset\": \"Unsupported Asset\",\n  \"feePool\": \"Fee Pool\",\n  \"rebalanceMessage\": \"Your underlying tokens will be automatically rebalanced when the rate of the pool changes and may be different when you withdraw the position.\",\n  \"addEarnHelper\": \"You will earn fees from trades proportional to your share of the pool.\",\n  \"learnMoreAboutFess\": \" Learn more about earning fees.\"\n}\n"
  },
  {
    "path": "public/locales/es-AR.json",
    "content": "{\n  \"noWallet\": \"No se encontró billetera de Ethereum\",\n  \"wrongNetwork\": \"Te encontrás en la red equivocada\",\n  \"switchNetwork\": \"Por favor cambia a {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Por favor ingresá desde un navegador móvil con web3 habilitado como Trust Wallet o Coinbase Wallet.\",\n  \"installMetamask\": \"Por favor visítanos nuevamente luego de instalar Metamask en Chrome o Brave.\",\n  \"disconnected\": \"Desconectado\",\n  \"swap\": \"Intercambiar\",\n  \"send\": \"Enviar\",\n  \"pool\": \"Pool\",\n  \"betaWarning\": \"Este proyecto se encuentra en beta. Usalo bajo tu propio riesgo.\",\n  \"input\": \"Entrada\",\n  \"output\": \"Salida\",\n  \"estimated\": \"estimado\",\n  \"balance\": \"Saldo: {{ balanceInput }}\",\n  \"unlock\": \"Desbloquear\",\n  \"pending\": \"Pendiente\",\n  \"selectToken\": \"Seleccioná un token\",\n  \"searchOrPaste\": \"Buscar Token o Pegar Dirección\",\n  \"noExchange\": \"No se encontró la divisa\",\n  \"exchangeRate\": \"Tasa de Cambio\",\n  \"enterValueCont\": \"Ingresá un valor en {{ missingCurrencyValue }} para continuar.\",\n  \"selectTokenCont\": \"Seleccioná un token para continuar.\",\n  \"noLiquidity\": \"Sin liquidez.\",\n  \"unlockTokenCont\": \"Por favor desbloqueá un token para continuar.\",\n  \"transactionDetails\": \"Detalles de la transacción\",\n  \"hideDetails\": \"Ocultar detalles\",\n  \"youAreSelling\": \"Estás vendiendo\",\n  \"orTransFail\": \"o la transacción fallará.\",\n  \"youWillReceive\": \"Vas a recibir al menos\",\n  \"youAreBuying\": \"Estás comprando\",\n  \"itWillCost\": \"Costará a lo sumo\",\n  \"insufficientBalance\": \"Saldo insuficiente\",\n  \"inputNotValid\": \"No es un valor de entrada válido\",\n  \"differentToken\": \"Debe ser un token distinto.\",\n  \"noRecipient\": \"Ingresá una dirección de billetera para enviar.\",\n  \"invalidRecipient\": \"Por favor ingrese una billetera de destino válida.\",\n  \"recipientAddress\": \"Dirección del recipiente\",\n  \"youAreSending\": \"Estás enviando\",\n  \"willReceive\": \"recibirá al menos\",\n  \"to\": \"a\",\n  \"addLiquidity\": \"Agregar liquidez\",\n  \"deposit\": \"Depositar\",\n  \"currentPoolSize\": \"Tamaño del Pool Actual\",\n  \"yourPoolShare\": \"Tu parte del Pool\",\n  \"noZero\": \"El monto no puede ser cero.\",\n  \"mustBeETH\": \"Una de las entradas debe ser ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Ingresá un valor de {{ inputCurrency }} o de {{ label }} para continuar.\",\n  \"youAreAdding\": \"Estás agregando entre\",\n  \"and\": \"y\",\n  \"intoPool\": \"en el pool de liquidez.\",\n  \"outPool\": \"en el pool de liquidez.\",\n  \"youWillMint\": \"Vas a acuñar\",\n  \"liquidityTokens\": \"tokens de liquidez.\",\n  \"totalSupplyIs\": \"El actual suministro total de tokens de liquidez es\",\n  \"youAreSettingExRate\": \"Está configurando el tipo de cambio inicial a\",\n  \"totalSupplyIs0\": \"El actual suministro total de tokens de liquidez es 0.\",\n  \"tokenWorth\": \"Al tipo de cambio actual, cada token del pool vale\",\n  \"firstLiquidity\": \"Sos la primer persona en agregar liquidez!\",\n  \"initialExchangeRate\": \"El tipo de cambio inicial se establecerá en función de tus depósitos. Por favor, asegúrate de que tus depósitos en ETH y {{ label }} tengan el mismo valor fíat.\",\n  \"removeLiquidity\": \"Remover Liquidez\",\n  \"poolTokens\": \"Pool de Tokens\",\n  \"enterLabelCont\": \"Ingresá un valor de {{ label }} para continuar.\",\n  \"youAreRemoving\": \"Estás quitando entre\",\n  \"youWillRemove\": \"Vas a remover\",\n  \"createExchange\": \"Crear divisa\",\n  \"invalidTokenAddress\": \"No es una dirección de token válida\",\n  \"exchangeExists\": \"La divisa {{ label }} ya existe!\",\n  \"invalidSymbol\": \"Símbolo inválido\",\n  \"invalidDecimals\": \"Decimales inválidos\",\n  \"tokenAddress\": \"Dirección de Token\",\n  \"label\": \"Etiqueta\",\n  \"decimals\": \"Decimales\",\n  \"enterTokenCont\": \"Ingresá una dirección de token para continuar\"\n}\n"
  },
  {
    "path": "public/locales/es-US.json",
    "content": "{\n  \"noWallet\": \"No se ha encontrado billetera de Ethereum\",\n  \"wrongNetwork\": \"Se encuentra en la red equivocada\",\n  \"switchNetwork\": \"Por favor cambie a {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Por favor ingrese desde un navegador móvil con web3 habilitado como Trust Wallet o Coinbase Wallet.\",\n  \"installMetamask\": \"Por favor visítenos nuevamente luego de instalar Metamask en Chrome o Brave.\",\n  \"disconnected\": \"Desconectado\",\n  \"swap\": \"Intercambiar\",\n  \"send\": \"Enviar\",\n  \"pool\": \"Pool\",\n  \"betaWarning\": \"Este proyecto se encuentra en beta. Úselo bajo tu propio riesgo.\",\n  \"input\": \"Entrada\",\n  \"output\": \"Salida\",\n  \"estimated\": \"estimado\",\n  \"balance\": \"Saldo: {{ balanceInput }}\",\n  \"unlock\": \"Desbloquear\",\n  \"pending\": \"Pendiente\",\n  \"selectToken\": \"Seleccione un token\",\n  \"searchOrPaste\": \"Buscar Token o Pegar Dirección\",\n  \"noExchange\": \"No se ha encontrado la divisa\",\n  \"exchangeRate\": \"Tasa de Cambio\",\n  \"enterValueCont\": \"Ingrese un valor en {{ missingCurrencyValue }} para continuar.\",\n  \"selectTokenCont\": \"Seleccione un token para continuar.\",\n  \"noLiquidity\": \"Sin liquidez.\",\n  \"unlockTokenCont\": \"Por favor desbloquea un token para continuar.\",\n  \"transactionDetails\": \"Detalles de la transacción\",\n  \"hideDetails\": \"Ocultar detalles\",\n  \"youAreSelling\": \"Está vendiendo\",\n  \"orTransFail\": \"o la transacción fallará.\",\n  \"youWillReceive\": \"Va a recibir al menos\",\n  \"youAreBuying\": \"Está comprando\",\n  \"itWillCost\": \"Costará a lo sumo\",\n  \"insufficientBalance\": \"Saldo insuficiente\",\n  \"inputNotValid\": \"No es un valor de entrada válido\",\n  \"differentToken\": \"Debe ser un token distinto.\",\n  \"noRecipient\": \"Ingrese una dirección de billetera para enviar.\",\n  \"invalidRecipient\": \"Por favor ingrese una billetera de destino válida.\",\n  \"recipientAddress\": \"Dirección del recipiente\",\n  \"youAreSending\": \"Está enviando\",\n  \"willReceive\": \"recibirá al menos\",\n  \"to\": \"a\",\n  \"addLiquidity\": \"Agregar liquidez\",\n  \"deposit\": \"Depositar\",\n  \"currentPoolSize\": \"Tamaño del Pool Actual\",\n  \"yourPoolShare\": \"Su parte del Pool\",\n  \"noZero\": \"El monto no puede ser cero.\",\n  \"mustBeETH\": \"Una de las entradas debe ser ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Ingrese un valor de {{ inputCurrency }} o de {{ label }} para continuar.\",\n  \"youAreAdding\": \"Está agregando entre\",\n  \"and\": \"y\",\n  \"intoPool\": \"en el pool de liquidez.\",\n  \"outPool\": \"en el pool de liquidez.\",\n  \"youWillMint\": \"Va a acuñar\",\n  \"liquidityTokens\": \"tokens de liquidez.\",\n  \"totalSupplyIs\": \"El actual suministro total de tokens de liquidez es\",\n  \"youAreSettingExRate\": \"Está configurando el tipo de cambio inicial a\",\n  \"totalSupplyIs0\": \"El actual suministro total de tokens de liquidez es 0.\",\n  \"tokenWorth\": \"Al tipo de cambio actual, cada token del pool vale\",\n  \"firstLiquidity\": \"Es la primer persona en agregar liquidez!\",\n  \"initialExchangeRate\": \"El tipo de cambio inicial se establecerá en función de sus depósitos. Por favor, asegúrese de que sus depósitos en ETH y {{ label }} tengan el mismo valor fíat.\",\n  \"removeLiquidity\": \"Remover Liquidez\",\n  \"poolTokens\": \"Pool de Tokens\",\n  \"enterLabelCont\": \"Ingresa un valor de {{ label }} para continuar.\",\n  \"youAreRemoving\": \"Está quitando entre\",\n  \"youWillRemove\": \"Va a remover\",\n  \"createExchange\": \"Crear tipo de cambio\",\n  \"invalidTokenAddress\": \"No es una dirección de token válida\",\n  \"exchangeExists\": \"El tipo de cambio {{ label }} ya existe!\",\n  \"invalidSymbol\": \"Símbolo inválido\",\n  \"invalidDecimals\": \"Decimales inválidos\",\n  \"tokenAddress\": \"Dirección de Token\",\n  \"label\": \"Etiqueta\",\n  \"decimals\": \"Decimales\",\n  \"enterTokenCont\": \"Ingrese una dirección de token para continuar\"\n}\n"
  },
  {
    "path": "public/locales/it-IT.json",
    "content": "{\n  \"noWallet\": \"Wallet Ethereum non trovato\",\n  \"wrongNetwork\": \"Sei connesso alla rete sbagliata\",\n  \"switchNetwork\": \"Perfavore connettiti su {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Perfavore visita il sito da un browser abilitato web3 o da un app mobile come Trust Wallet o Coinbase Wallet.\",\n  \"installMetamask\": \"Perfavore ritorna dopo aver installato Metamask su Chrome o Brave.\",\n  \"disconnected\": \"Disconnesso\",\n  \"swap\": \"Scambia\",\n  \"swapAnyway\": \"Scambia comunque\",\n  \"send\": \"Invia\",\n  \"sendAnyway\": \"Invia comunque\",\n  \"pool\": \"Riserva\",\n  \"betaWarning\": \"Questo progetto è in beta. Usalo a tuo rischio.\",\n  \"input\": \"Input\",\n  \"output\": \"Output\",\n  \"estimated\": \"stimato\",\n  \"balance\": \"Saldo: {{ balanceInput }}\",\n  \"unlock\": \"Sblocca\",\n  \"pending\": \"In attesa\",\n  \"selectToken\": \"Seleziona un token\",\n  \"searchOrPaste\": \"Cerca Nome, Simbolo o Indirizzo Token\",\n  \"searchOrPasteMobile\": \"Nome, Simbolo, o Indirizzo\",\n  \"noExchange\": \"Nessun Exchange Trovato\",\n  \"exchangeRate\": \"Tasso di cambio\",\n  \"unknownError\": \"Oops! Si è verificato un Errore imprevisto. Aggiorna la pagina o visita da un altro browser o dispositivo.\",\n  \"enterValueCont\": \"Inserisci un valore {{ missingCurrencyValue }} per continuare.\",\n  \"selectTokenCont\": \"Seleziona un token per continuare.\",\n  \"noLiquidity\": \"Nessuna liquidità.\",\n  \"insufficientLiquidity\": \"Liquidità insufficiente.\",\n  \"unlockTokenCont\": \"Si prega di sbloccare il token per continuare.\",\n  \"transactionDetails\": \"Dettagli avanzati\",\n  \"hideDetails\": \"Nascondi dettagli\",\n  \"slippageWarning\": \"Avviso di scostamento\",\n  \"highSlippageWarning\": \"Avviso di elevato scostamento\",\n  \"youAreSelling\": \"Stai vendendo\",\n  \"orTransFail\": \"o la transazione fallità.\",\n  \"youWillReceive\": \"Riceverai almeno\",\n  \"youAreBuying\": \"Stai comprando\",\n  \"itWillCost\": \"Costerà al massimo\",\n  \"forAtMost\": \"per al massimo\",\n  \"insufficientBalance\": \"Saldo insufficente\",\n  \"inputNotValid\": \"Non è un valore di input valido\",\n  \"differentToken\": \"Deve essere un token diverso.\",\n  \"noRecipient\": \"Inserisci un indirizzo di wallet a cui inviare.\",\n  \"invalidRecipient\": \"Inserisci un destinatario valido per l'indirizzo del wallet.\",\n  \"recipientAddress\": \"Indirizzo del destinatario\",\n  \"youAreSending\": \"Stai inviando\",\n  \"willReceive\": \"riceverà almeno\",\n  \"to\": \"a\",\n  \"addLiquidity\": \"Aggiungi liquidità\",\n  \"deposit\": \"Depositare\",\n  \"currentPoolSize\": \"Dimensione attuale del pool\",\n  \"yourPoolShare\": \"La tua parte di pool condivisa\",\n  \"noZero\": \"L'importo non può essere zero.\",\n  \"mustBeETH\": \"Uno degli input deve essere ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Inserisci un valore {{ inputCurrency }} o {{ label }} per continuare.\",\n  \"youAreAdding\": \"Stai agginugendo\",\n  \"and\": \"e\",\n  \"intoPool\": \"nella riserva di liquidità.\",\n  \"outPool\": \"dalla riserva di liquidità.\",\n  \"youWillMint\": \"Tu conierai\",\n  \"liquidityTokens\": \"token di liquidità.\",\n  \"totalSupplyIs\": \"L'attuale disponibilità totale di token di liquidità è\",\n  \"youAreSettingExRate\": \"Stai impostando il tasso di cambio iniziale su\",\n  \"totalSupplyIs0\": \"L'attuale disponibilità totale di token di liquidità è 0.\",\n  \"tokenWorth\": \"Al tasso di cambio corrente, ogni token del pool vale\",\n  \"firstLiquidity\": \"Sei la prima persona ad aggiungere liquidità!\",\n  \"initialExchangeRate\": \"Il tasso di cambio iniziale verrà impostato in base ai tuoi depositi. Assicurati che i tuoi depositi ETH e {{ label }} abbiano lo stesso valore fiat.\",\n  \"removeLiquidity\": \"Rimuovi Liquidità\",\n  \"poolTokens\": \"Token Pool\",\n  \"enterLabelCont\": \"Inserisci un valore {{ label }} per continuare.\",\n  \"youAreRemoving\": \"Stai rimuovendo tra\",\n  \"youWillRemove\": \"Rimuoverai\",\n  \"createExchange\": \"Crea scambio\",\n  \"invalidTokenAddress\": \"Indirizzo token non valido\",\n  \"exchangeExists\": \"{{ label }} Exchange già esistente!\",\n  \"invalidSymbol\": \"Simbolo non valido\",\n  \"invalidDecimals\": \"Decimali non validi\",\n  \"tokenAddress\": \"Indirizzo Token\",\n  \"label\": \"Etichetta\",\n  \"name\": \"Nome\",\n  \"symbol\": \"Simbolo\",\n  \"decimals\": \"Decimali\",\n  \"enterTokenCont\": \"Inserire un indirizzo token per continuare\",\n  \"priceChange\": \"Scostamento del prezzo previsto\",\n  \"forAtLeast\": \"per almeno \"\n}\n"
  },
  {
    "path": "public/locales/iw.json",
    "content": "{\n  \"noWallet\": \"לא נמצא ארנק\",\n  \"wrongNetwork\": \"נבחרה רשת לא נכונה\",\n  \"switchNetwork\": \"{{ correctNetwork }} יש צורך לשנות את הרשת ל\",\n  \"installWeb3MobileBrowser\": \"יש צורך בארנק ווב3.0, תתקין מטאמאסק או ארנק דומה\",\n  \"installMetamask\": \" Metamask יש צורך להתקין תוסף מטאמאסק לדפדפן, חפשו בגוגל \",\n  \"disconnected\": \"מנותק\",\n  \"swap\": \"המרה\",\n  \"send\": \"שליחה\",\n  \"pool\": \"להפקיד\",\n  \"betaWarning\": \"הפרויקט נמצא בשלב בטא, השתמשו באחריות\",\n  \"input\": \"מוכר\",\n  \"output\": \"אקבל\",\n  \"estimated\": \"הערכה\",\n  \"balance\": \"בארנק שלי {{ balanceInput }}\",\n  \"unlock\": \"שחרור נעילת ארנק\",\n  \"pending\": \"ממתין לאישור\",\n  \"selectToken\": \"בחרו את הטוקן להמרה\",\n  \"searchOrPaste\": \"הכניסו שם או כתובת של טוקן לחיפוש\",\n  \"noExchange\": \"לא מתאפשרת המרה\",\n  \"exchangeRate\": \"שער המרה\",\n  \"enterValueCont\": \"כדי להמשיך {{ missingCurrencyValue }} הזינו \",\n  \"selectTokenCont\": \"בחרו טוקן כדי להמשיך\",\n  \"noLiquidity\": \"אין נזילות\",\n  \"unlockTokenCont\": \"יש צורך לאשר את הטוקן למסחר\",\n  \"transactionDetails\": \"פרטי הטרנזקציה\",\n  \"hideDetails\": \"הסתר פרטים נוספים\",\n  \"youAreSelling\": \"למכירה\",\n  \"orTransFail\": \"או שהטרנזקציה תיכשל\",\n  \"youWillReceive\": \"תוצר המרה מינימלי\",\n  \"youAreBuying\": \"קונה\",\n  \"itWillCost\": \"זה יעלה\",\n  \"insufficientBalance\": \"אין בחשבון מספיק מטבעות\",\n  \"inputNotValid\": \"קלט לא תקין\",\n  \"differentToken\": \"יש צורך בטוקנים שונים\",\n  \"noRecipient\": \"לא הוכנסה כתובת ארנק יעד\",\n  \"invalidRecipient\": \"לא הוכנסה כתובת תקינה\",\n  \"recipientAddress\": \"כתובת יעד\",\n  \"youAreSending\": \"כמות לשליחה\",\n  \"willReceive\": \"יתקבל לכל הפחות\",\n  \"to\": \"אל\",\n  \"addLiquidity\": \"להוספת נזילות למאגר\",\n  \"deposit\": \"הפקדה\",\n  \"currentPoolSize\": \"גודל מאגר הנזילות הכולל\",\n  \"yourPoolShare\": \"חלקך במאגר הנזילות\",\n  \"noZero\": \"אפס אינו ערך תקין\",\n  \"mustBeETH\": \"ETH חייב להופיע באחד מהצדדים\",\n  \"enterCurrencyOrLabelCont\": \"כדי להמשיך {{ inputCurrency }} או {{ label }} הכנס\",\n  \"youAreAdding\": \"מתווספים למאגר\",\n  \"and\": \"וגם\",\n  \"intoPool\": \"לתוך הנזילות\",\n  \"outPool\": \"מתוך\",\n  \"youWillMint\": \"יונפקו לכם\",\n  \"liquidityTokens\": \"טוקנים של נזילות\",\n  \"totalSupplyIs\": \"חלקך במאגר הנזילות\",\n  \"youAreSettingExRate\": \"שער ההמרה יקבע על ידך\",\n  \"totalSupplyIs0\": \"אין לך טוקנים של נזילות\",\n  \"tokenWorth\": \"שווי כל טוקן נזילות הינו\",\n  \"firstLiquidity\": \"אתה הראשוןה שמזרים נזילות למאגר\",\n  \"initialExchangeRate\": \"ושל האית'ר הינן בערך שווה {{ label }} תוודאו שההפקדה של הטוקן\",\n  \"removeLiquidity\": \"הוצאה של נזילות\",\n  \"poolTokens\": \"טוקנים של מאגר הנזילות\",\n  \"enterLabelCont\": \"כדי להמשיך {{ label }} הכנס \",\n  \"youAreRemoving\": \"יוסרו\",\n  \"youWillRemove\": \"יוסרו\",\n  \"createExchange\": \"ליצירת זוג מסחר\",\n  \"invalidTokenAddress\": \"כתובת טוקן לא נכונה\",\n  \"exchangeExists\": \"{{ label }} כבר קיים זוג המרה עבור\",\n  \"invalidSymbol\": \"תו שגוי\",\n  \"invalidDecimals\": \"ספרות עשרוניות שגויות\",\n  \"tokenAddress\": \"כתובת הטוקן\",\n  \"label\": \"שם\",\n  \"decimals\": \"ספרות עשרויות\",\n  \"enterTokenCont\": \"הכניסו כתובת טוקן כדי להמשיך\"\n}\n"
  },
  {
    "path": "public/locales/ro.json",
    "content": "{\n  \"noWallet\": \"Niciun portofel Ethereum găsit\",\n  \"wrongNetwork\": \"Nu ești conectat la rețeaua corectă\",\n  \"switchNetwork\": \"Conectează-te te rog la {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Incearcă să vizitezi această pagina folosind un browser precum Trust Wallet sau Coinbase Wallet.\",\n  \"installMetamask\": \"Vizitează această pagină din nou după ce instalezi MetaMask în Chrome sau Brave\",\n  \"disconnected\": \"Deconectat\",\n  \"swap\": \"Schimbă\",\n  \"swapAnyway\": \"Schimbă Oricum\",\n  \"send\": \"Trimite\",\n  \"sendAnyway\": \"Trimite Oricum\",\n  \"pool\": \"Depune Lichiditate\",\n  \"betaWarning\": \"Proiectul este încă în versiunea beta. Folosește-l cu grijă, riscul este al tău.\",\n  \"input\": \"Input\",\n  \"output\": \"Output\",\n  \"estimated\": \"estimat\",\n  \"balance\": \"Balanță: {{ balanceInput }}\",\n  \"unlock\": \"Deblochează\",\n  \"pending\": \"În Așteptare\",\n  \"selectToken\": \"Selectează un jeton\",\n  \"searchOrPaste\": \"Caută după Numele, Simbolul sau Adresa Jetonului\",\n  \"searchOrPasteMobile\": \"Nume, Simbol sau Adresă\",\n  \"noExchange\": \"Nicio Piață de Schimb Găsită\",\n  \"noToken\": \"Nicin Jeton Găsit\",\n  \"exchangeRate\": \"Curs de Schimb\",\n  \"unknownError\": \"Ups! A intervenit o eroare tehnică. Te rog reîncarcă pagina, sau acceseaz-o de pe alt navigator sau dispozitiv.\",\n  \"enterValueCont\": \"Setează o valoare pentru {{ missingCurrencyValue }} pentru a continua.\",\n  \"selectTokenCont\": \"Selectează un jeton pentru a continua.\",\n  \"noLiquidity\": \"Nu Există Lichiditate.\",\n  \"insufficientLiquidity\": \"Lichiditate Insuficientă.\",\n  \"unlockTokenCont\": \"Te rog deblochează jetonul pentru a continua.\",\n  \"transactionDetails\": \"Detalii Avansate\",\n  \"hideDetails\": \"Ascunde Detaili\",\n  \"slippageWarning\": \"Alertă Deviație de Preț\",\n  \"highSlippageWarning\": \"Alertă Deviație de Preț Mare\",\n  \"youAreSelling\": \"Tu vinzi\",\n  \"orTransFail\": \"sau tranzacția va eșua.\",\n  \"youWillReceive\": \"Vei primi cel puțin\",\n  \"youAreBuying\": \"Tu cumperi\",\n  \"itWillCost\": \"Va costa cel mult\",\n  \"forAtMost\": \"pentru maximum\",\n  \"insufficientBalance\": \"Balanță Insuficientă\",\n  \"inputNotValid\": \"Valoarea setată nu este validă\",\n  \"differentToken\": \"Trebuie să fie un jeton diferit.\",\n  \"noRecipient\": \"Setează o adresă de portofel pentru destinatar.\",\n  \"invalidRecipient\": \"Te rog setează o adresă de portofel validă pentru destinatar.\",\n  \"recipientAddress\": \"Adresa Destinatarului\",\n  \"youAreSending\": \"Tu trimiți\",\n  \"willReceive\": \"vei primi cel puțin\",\n  \"to\": \"spre\",\n  \"addLiquidity\": \"Adaugă Lichiditate\",\n  \"deposit\": \"Depozitează\",\n  \"currentPoolSize\": \"Volumul Actual al Fondului\",\n  \"yourPoolShare\": \"Partea Ta din Fond\",\n  \"noZero\": \"Cantitatea nu poate fi zero.\",\n  \"mustBeETH\": \"Una dintre valori trebuie să fie ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Setează o valoare pentru {{ inputCurrency }} sau {{ label }} pentru a continua. \",\n  \"youAreAdding\": \"Tu adaugi\",\n  \"and\": \"și\",\n  \"intoPool\": \"în fondul de lichidatate.\",\n  \"outPool\": \"din fondul de lichiditate.\",\n  \"youWillMint\": \"Tu vei tipări\",\n  \"liquidityTokens\": \"jetoane de lichiditate.\",\n  \"totalSupplyIs\": \"Cantitatea totală de jetoane de lichiditate este\",\n  \"youAreSettingExRate\": \"Setezi cursul de schimb inițial la\",\n  \"totalSupplyIs0\": \"Cantitatea totală de jetoane de lichiditate este 0.\",\n  \"tokenWorth\": \"La cursul de schimb actual, fiecare jeton de lichiditate este valorat la\",\n  \"firstLiquidity\": \"Ești prima persoană care depune lichiditate!\",\n  \"initialExchangeRate\": \"Cursul de schimb inițial va fi setat în funcție de depozitele tale. Te rog asigură-te că ETH-ul și {{ label }}-ul pe care le-ai depozitat au aceeași valoare în bani fiat.\",\n  \"removeLiquidity\": \"Retrage Lichiditat\",\n  \"poolTokens\": \"Depune Jetoane\",\n  \"enterLabelCont\": \"Setează o valoare pentru {{ label }} pentru a continua.\",\n  \"youAreRemoving\": \"Retragi între\",\n  \"youWillRemove\": \"Vei retrage\",\n  \"createExchange\": \"Creează Piață de Schimb\",\n  \"invalidTokenAddress\": \"Adresa de jeton nu este validă\",\n  \"exchangeExists\": \"{{ label }} Piața de schimb există deja!\",\n  \"invalidSymbol\": \"Simbol invalid\",\n  \"invalidDecimals\": \"Zecimale invalide\",\n  \"tokenAddress\": \"Adresă Jeton\",\n  \"label\": \"Denumire\",\n  \"name\": \"Nume\",\n  \"symbol\": \"Simbol\",\n  \"decimals\": \"Zecimale\",\n  \"enterTokenCont\": \"Setează o adresă de jeton pentru a continua\",\n  \"priceChange\": \"Deviație de preț așteptată\",\n  \"forAtLeast\": \"pentru cel puțin \",\n  \"brokenToken\": \"Jetonul selectat nu este compatibil cu Uniswap V1. Depunerea de lichiditate îți va bloca fondurile pe vecie.\",\n  \"toleranceExplanation\": \"Micșorând această limită, vei reduce riscul de frontrunning. În același timp, devine mai probabil că tranzacția va eșua din cauza variațiilor normale de preț.\",\n  \"tokenSearchPlaceholder\": \"Caută nume sau lipește adresă\"\n}\n"
  },
  {
    "path": "public/locales/ru.json",
    "content": "{\n  \"noWallet\": \"Кошелек эфира не найден\",\n  \"wrongNetwork\": \"Некорректная сеть\",\n  \"switchNetwork\": \"Пожалуйста, перейдите в {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Пожалуйста, откройте в браузере с поддержкой web3, таком, как Trust Wallet или Coinbase Wallet.\",\n  \"installMetamask\": \"Пожалуйста, откройте в Chrome или Brave с установленным расширением Metamask.\",\n  \"disconnected\": \"Нет подключения\",\n  \"swap\": \"Обменять\",\n  \"send\": \"Отправить\",\n  \"pool\": \"Вложить\",\n  \"betaWarning\": \"Проект находится на стадии бета тестирования.\",\n  \"input\": \"Ввести\",\n  \"output\": \"Вывести\",\n  \"estimated\": \"по оценке\",\n  \"balance\": \"Баланс: {{ balanceInput }}\",\n  \"unlock\": \"Разблокировать\",\n  \"pending\": \"Ожидание\",\n  \"selectToken\": \"Выберите токен\",\n  \"searchOrPaste\": \"Поиск токена или вставить адрес токена\",\n  \"noExchange\": \"Обмен не найден\",\n  \"exchangeRate\": \"Курс обмена\",\n  \"enterValueCont\": \"Введите {{ missingCurrencyValue }}, чтобы продолжить.\",\n  \"selectTokenCont\": \"Введите токен, чтобы продолжить.\",\n  \"noLiquidity\": \"Нет ликвидности.\",\n  \"unlockTokenCont\": \"Пожалуйста, разблокируйте токен, чтобы продолжить.\",\n  \"transactionDetails\": \"Детали транзакции\",\n  \"hideDetails\": \"Скрыть подробности\",\n  \"youAreSelling\": \"Вы продаете\",\n  \"orTransFail\": \"или транзакция будет отклонена.\",\n  \"youWillReceive\": \"Вы получите как минимум\",\n  \"youAreBuying\": \"Вы покупаете\",\n  \"itWillCost\": \"В крайнем случае это будет стоить\",\n  \"insufficientBalance\": \"Недостаточно средств\",\n  \"inputNotValid\": \"Некорректное значение\",\n  \"differentToken\": \"Должны быть разные токены.\",\n  \"noRecipient\": \"Введите адрес кошелька эфира, куда перечислить.\",\n  \"invalidRecipient\": \"Пожалуйста, введите корректный адрес кошелька получателя.\",\n  \"recipientAddress\": \"Адрес получателя\",\n  \"youAreSending\": \"Вы отправляете\",\n  \"willReceive\": \"получит как минимум\",\n  \"to\": \"\",\n  \"addLiquidity\": \"Добавить ликвидность\",\n  \"deposit\": \"Вложить\",\n  \"currentPoolSize\": \"Текущий размер пула\",\n  \"yourPoolShare\": \"Ваша доля в пуле\",\n  \"noZero\": \"Значение не может быть нулевым.\",\n  \"mustBeETH\": \"Одно из значений должно быть ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Введите {{ inputCurrency }} или {{ label }}, чтобы продолжить.\",\n  \"youAreAdding\": \"Вы добавляете от\",\n  \"and\": \"и\",\n  \"intoPool\": \"в пул ликвидности.\",\n  \"outPool\": \"из пула ликвидности.\",\n  \"youWillMint\": \"Вы произведёте\",\n  \"liquidityTokens\": \"токенов ликвидности.\",\n  \"totalSupplyIs\": \"Ваш объем токенов ликвидности\",\n  \"youAreSettingExRate\": \"Вы устанавливаете начальный курс обмена\",\n  \"totalSupplyIs0\": \"Ваш объем токенов ликвидности 0.\",\n  \"tokenWorth\": \"При текущем курсе, каждый токен пула оценивается в\",\n  \"firstLiquidity\": \"Вы первый, кто создаст ликвидность!\",\n  \"initialExchangeRate\": \"Начальный курс обмена будет установлен согласно вашим депозитам. Убедитесь, что ваши депозиты ETH и {{ label }} имеют одинаковое значение в валюте.\",\n  \"removeLiquidity\": \"Убрать ликвидность\",\n  \"poolTokens\": \"Токены пула\",\n  \"enterLabelCont\": \"Введите {{ label }}, чтобы продолжить.\",\n  \"youAreRemoving\": \"Вы убираете в от\",\n  \"youWillRemove\": \"Вы уберёте\",\n  \"createExchange\": \"Создать обмен\",\n  \"invalidTokenAddress\": \"Некорректный адрес токена\",\n  \"exchangeExists\": \"{{ label }} Обмен уже существует!\",\n  \"invalidSymbol\": \"Некорректный символ\",\n  \"invalidDecimals\": \"Некорректное десятичное значение\",\n  \"tokenAddress\": \"Адрес токена\",\n  \"label\": \"Название\",\n  \"decimals\": \"Десятичное значение\",\n  \"enterTokenCont\": \"Чтобы продолжить, введите адрес токена\"\n}\n"
  },
  {
    "path": "public/locales/vi.json",
    "content": "{\n  \"noWallet\": \"Không tìm thấy ví tiền Ethereum\",\n  \"wrongNetwork\": \"Kết nối mạng không đúng\",\n  \"switchNetwork\": \"Vui lòng chuyển sang {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"Vui lòng truy cập từ trình duyệt di động hỗ trợ web3 như là Ví Trust hoặc Ví Coinbase\",\n  \"installMetamask\": \"Vui lòng truy cập sau khi cài đặt Metamask trên Chrome hoặc Brave.\",\n  \"disconnected\": \"Ngắt kết nối rồi\",\n  \"swap\": \"Hoán đổi\",\n  \"swapAnyway\": \"Tiếp tục hoán đổi?\",\n  \"send\": \"Gửi\",\n  \"sendAnyway\": \"Tiếp tục gửi?\",\n  \"pool\": \"Chung vốn\",\n  \"betaWarning\": \"Dự án này đang trong giai đoạn thử nghiệm. Sử dụng có rủi ro của riêng bạn\",\n  \"input\": \"Đầu vào\",\n  \"output\": \"Đầu ra\",\n  \"estimated\": \"ước lượng\",\n  \"balance\": \"Số dư: {{ balanceInput }}\",\n  \"unlock\": \"Mở khóa\",\n  \"pending\": \"Đang chờ xử lý\",\n  \"selectToken\": \"Chọn một đồng tiền ảo\",\n  \"searchOrPaste\": \"Tìm kiếm tên, biểu tượng, hoặc địa chỉ của đồng tiền ảo\",\n  \"searchOrPasteMobile\": \"Tên, Biểu tượng, hoặc Địa chỉ\",\n  \"noExchange\": \"Không tìm thấy giao dịch\",\n  \"exchangeRate\": \"Tỷ giá\",\n  \"unknownError\": \"Rất tiếc! Xảy ra lỗi không xác định. Vui lòng làm mới trang, hoặc truy cập từ trình duyệt hay thiết bị khác.\",\n  \"enterValueCont\": \"Nhập một giá trị {{ missingCurrencyValue }} để tiếp tục.\",\n  \"selectTokenCont\": \"Chọn một đồng tiền ảo để tiếp tục.\",\n  \"noLiquidity\": \"Không có tính thanh khoản.\",\n  \"insufficientLiquidity\": \"Không đủ tính thanh khoản.\",\n  \"unlockTokenCont\": \"Vui lòng mở khoá đồng tiền ảo để tiếp tục\",\n  \"transactionDetails\": \"Chi tiết nâng cao\",\n  \"hideDetails\": \"Ẩn chi tiết\",\n  \"slippageWarning\": \"Cảnh báo trượt giá\",\n  \"highSlippageWarning\": \"Cảnh báo trượt giá cao\",\n  \"youAreSelling\": \"Bạn đang bán\",\n  \"orTransFail\": \"hoặc giao dịch sẽ thất bại.\",\n  \"youWillReceive\": \"Bạn sẽ nhận dược ít nhất là\",\n  \"youAreBuying\": \"Bạn đang mua\",\n  \"itWillCost\": \"Nó sẽ có giá cao nhất\",\n  \"forAtMost\": \"nhiều nhất\",\n  \"insufficientBalance\": \"Số dư không đủ\",\n  \"inputNotValid\": \"Giá trị nhập vào không hợp lệ\",\n  \"differentToken\": \"Đồng tiền ảo phải khác nhau.\",\n  \"noRecipient\": \"Nhập địa chỉ ví để gửi đến.\",\n  \"invalidRecipient\": \"Vui lòng nhập một người nhận địa chỉ ví hợp lệ.\",\n  \"recipientAddress\": \"Địa chỉ người nhận\",\n  \"youAreSending\": \"Bạn đang gửi\",\n  \"willReceive\": \"sẽ nhận dược ít nhất là\",\n  \"to\": \"đến\",\n  \"addLiquidity\": \"Thêm tiền thanh khoản\",\n  \"deposit\": \"Gửi tiền\",\n  \"currentPoolSize\": \"Quy mô hiện tại của quỹ\",\n  \"yourPoolShare\": \"Phần hùn của bạn trong quỹ\",\n  \"noZero\": \"Số tiền không thể bằng không.\",\n  \"mustBeETH\": \"Một trong những đầu vào phải là ETH.\",\n  \"enterCurrencyOrLabelCont\": \"Nhập giá trị {{ inputCurrency }} hoặc {{ label }} để tiếp tục.\",\n  \"youAreAdding\": \"Bạn đang thêm\",\n  \"and\": \"và\",\n  \"intoPool\": \"vào nhóm thanh khoản.\",\n  \"outPool\": \"từ nhóm thanh khoản.\",\n  \"youWillMint\": \"Bạn sẽ đúc tiền\",\n  \"liquidityTokens\": \"đồng thanh khoản.\",\n  \"totalSupplyIs\": \"Tổng cung hiện tại của đồng thanh khoản là\",\n  \"youAreSettingExRate\": \"Bạn đang đặt tỷ giá hối đoái ban đầu thành\",\n  \"totalSupplyIs0\": \"Tổng cung hiện tại của đồng thanh khoản là 0.\",\n  \"tokenWorth\": \"Tại tỷ giá hối đoái hiện tại, giá trị đồng token của quỹ là\",\n  \"firstLiquidity\": \"Bạn là người đầu tiên thêm thanh khoản!\",\n  \"initialExchangeRate\": \"Tỷ giá hối đoái ban đầu sẽ được thiết lập dựa trên tiền gửi của bạn. Vui lòng đảm bảo rằng tiền gửi ETH và {{ label }} của bạn có cùng giá trị tiền định danh.\",\n  \"removeLiquidity\": \"Loại bỏ thanh khoản\",\n  \"poolTokens\": \"Đồng tiền ảo của quỹ\",\n  \"enterLabelCont\": \"Nhập giá trị {{ label }} để tiếp tục\",\n  \"youAreRemoving\": \"Bạn đang loại bỏ giữa\",\n  \"youWillRemove\": \"Bạn sẽ loại bỏ\",\n  \"createExchange\": \"Tạo giao dịch\",\n  \"invalidTokenAddress\": \"Địa chỉ đồng tiền điện tử không hợp lệ\",\n  \"exchangeExists\": \"{{ label }} Giao dịch đã tồn tại!\",\n  \"invalidSymbol\": \"Biểu tượng không hợp lệ\",\n  \"invalidDecimals\": \"Số thập phân không hợp lệ\",\n  \"tokenAddress\": \"Địa chỉ đồng tiền điện tử\",\n  \"label\": \"Nhãn\",\n  \"name\": \"Tên\",\n  \"symbol\": \"Biểu tượng\",\n  \"decimals\": \"Số thập phân\",\n  \"enterTokenCont\": \"Nhập địa chỉ đồng tiền ảo để tiếp tục\",\n  \"priceChange\": \"Trượt giá dự kiến\",\n  \"forAtLeast\": \"cho ít nhất \"\n}\n"
  },
  {
    "path": "public/locales/zh-CN.json",
    "content": "{\n  \"noWallet\": \"未发现以太钱包\",\n  \"wrongNetwork\": \"网络错误\",\n  \"switchNetwork\": \"请切换到 {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"请从支持web3的移动端浏览器，如 Trust Wallet 或 Coinbase Wallet 访问。\",\n  \"installMetamask\": \"请从安装了 Metamask 插件的 Chrome 或 Brave 访问。\",\n  \"disconnected\": \"未连接\",\n  \"swap\": \"兑换\",\n  \"send\": \"发送\",\n  \"pool\": \"资金池\",\n  \"betaWarning\": \"项目尚处于beta阶段。使用需自行承担风险。\",\n  \"input\": \"输入\",\n  \"output\": \"输出\",\n  \"estimated\": \"估计\",\n  \"balance\": \"余额: {{ balanceInput }}\",\n  \"unlock\": \"解锁\",\n  \"pending\": \"处理中\",\n  \"selectToken\": \"选择通证\",\n  \"searchOrPaste\": \"搜索通证或粘贴地址\",\n  \"noExchange\": \"未找到交易所\",\n  \"exchangeRate\": \"兑换率\",\n  \"enterValueCont\": \"输入{{ missingCurrencyValue }}值并继续。\",\n  \"selectTokenCont\": \"选取通证继续。\",\n  \"noLiquidity\": \"没有流动金。\",\n  \"unlockTokenCont\": \"请解锁通证并继续。\",\n  \"transactionDetails\": \"交易明细\",\n  \"hideDetails\": \"隐藏明细\",\n  \"youAreSelling\": \"你正在出售\",\n  \"orTransFail\": \"或交易失败。\",\n  \"youWillReceive\": \"你将至少收到\",\n  \"youAreBuying\": \"你正在购买\",\n  \"itWillCost\": \"它将至少花费\",\n  \"insufficientBalance\": \"余额不足\",\n  \"inputNotValid\": \"无效的输入值\",\n  \"differentToken\": \"必须是不同的通证。\",\n  \"noRecipient\": \"输入接收钱包地址。\",\n  \"invalidRecipient\": \"请输入有效的收钱地址。\",\n  \"recipientAddress\": \"接收地址\",\n  \"youAreSending\": \"你正在发送\",\n  \"willReceive\": \"将至少收到\",\n  \"to\": \"至\",\n  \"addLiquidity\": \"添加流动金\",\n  \"deposit\": \"存入\",\n  \"currentPoolSize\": \"当前资金池大小\",\n  \"yourPoolShare\": \"你的资金池份额\",\n  \"noZero\": \"金额不能为零。\",\n  \"mustBeETH\": \"输入中必须有一个是 ETH。\",\n  \"enterCurrencyOrLabelCont\": \"输入 {{ inputCurrency }} 或 {{ label }} 值并继续。\",\n  \"youAreAdding\": \"你将添加\",\n  \"and\": \"和\",\n  \"intoPool\": \"入流动资金池。\",\n  \"outPool\": \"出流动资金池。\",\n  \"youWillMint\": \"你将铸造\",\n  \"liquidityTokens\": \"流动通证。\",\n  \"totalSupplyIs\": \"当前流动通证的总量是\",\n  \"youAreSettingExRate\": \"你将初始兑换率设置为\",\n  \"totalSupplyIs0\": \"当前流动通证的总量是0。\",\n  \"tokenWorth\": \"当前兑换率下，每个资金池通证价值\",\n  \"firstLiquidity\": \"你是第一个添加流动金的人！\",\n  \"initialExchangeRate\": \"初始兑换率将由你的存入情况决定。请确保你存入的 ETH 和 {{ label }} 具有相同的总市值。\",\n  \"removeLiquidity\": \"删除流动金\",\n  \"poolTokens\": \"资金池通证\",\n  \"enterLabelCont\": \"输入 {{ label }} 值并继续。\",\n  \"youAreRemoving\": \"你正在移除\",\n  \"youWillRemove\": \"你将移除\",\n  \"createExchange\": \"创建交易所\",\n  \"invalidTokenAddress\": \"通证地址无效\",\n  \"exchangeExists\": \"{{ label }} 交易所已存在！\",\n  \"invalidSymbol\": \"通证符号无效\",\n  \"invalidDecimals\": \"小数位数无效\",\n  \"tokenAddress\": \"通证地址\",\n  \"label\": \"通证符号\",\n  \"decimals\": \"小数位数\",\n  \"enterTokenCont\": \"输入通证地址并继续\"\n}\n"
  },
  {
    "path": "public/locales/zh-TW.json",
    "content": "{\n  \"noWallet\": \"未偵測到以太坊錢包\",\n  \"wrongNetwork\": \"你位在錯誤的網路\",\n  \"switchNetwork\": \"請切換到 {{ correctNetwork }}\",\n  \"installWeb3MobileBrowser\": \"請安裝含有 web3 瀏覽器的手機錢包，如 Trust Wallet 或 Coinbase Wallet。\",\n  \"installMetamask\": \"請使用 Chrome 或 Brave 瀏覽器安裝 Metamask。\",\n  \"disconnected\": \"未連接\",\n  \"swap\": \"兌換\",\n  \"send\": \"發送\",\n  \"pool\": \"資金池\",\n  \"betaWarning\": \"本產品仍在測試階段。使用者需自負風險。\",\n  \"input\": \"輸入\",\n  \"output\": \"輸出\",\n  \"estimated\": \"估計\",\n  \"balance\": \"餘額: {{ balanceInput }}\",\n  \"unlock\": \"解鎖\",\n  \"pending\": \"處理中\",\n  \"selectToken\": \"選擇代幣\",\n  \"searchOrPaste\": \"選擇代幣或輸入地址\",\n  \"noExchange\": \"找不到交易所\",\n  \"exchangeRate\": \"匯率\",\n  \"enterValueCont\": \"輸入 {{ missingCurrencyValue }} 以繼續。\",\n  \"selectTokenCont\": \"選擇代幣以繼續。\",\n  \"noLiquidity\": \"沒有流動性資金。\",\n  \"unlockTokenCont\": \"解鎖代幣以繼續。\",\n  \"transactionDetails\": \"交易明細\",\n  \"hideDetails\": \"隱藏明細\",\n  \"youAreSelling\": \"你正在出售\",\n  \"orTransFail\": \"或交易失敗。\",\n  \"youWillReceive\": \"你將至少收到\",\n  \"youAreBuying\": \"你正在購買\",\n  \"itWillCost\": \"這將花費至多\",\n  \"insufficientBalance\": \"餘額不足\",\n  \"inputNotValid\": \"無效的輸入值\",\n  \"differentToken\": \"必須是不同的代幣。\",\n  \"noRecipient\": \"請輸入收款人錢包地址。\",\n  \"invalidRecipient\": \"請輸入有效的錢包地址。\",\n  \"recipientAddress\": \"收款人錢包地址\",\n  \"youAreSending\": \"你正在發送\",\n  \"willReceive\": \"將至少收到\",\n  \"to\": \"至\",\n  \"addLiquidity\": \"增加流動性資金\",\n  \"deposit\": \"存入\",\n  \"currentPoolSize\": \"目前的資金池總量\",\n  \"yourPoolShare\": \"你在資金池中的佔比\",\n  \"noZero\": \"金額不能為零。\",\n  \"mustBeETH\": \"輸入中必須包含 ETH。\",\n  \"enterCurrencyOrLabelCont\": \"輸入 {{ inputCurrency }} 或 {{ label }} 以繼續。\",\n  \"youAreAdding\": \"你將把\",\n  \"and\": \"和\",\n  \"intoPool\": \"加入資金池。\",\n  \"outPool\": \"領出資金池。\",\n  \"youWillMint\": \"你將產生\",\n  \"liquidityTokens\": \"流動性代幣。\",\n  \"totalSupplyIs\": \"目前流動性代幣供給總量為\",\n  \"youAreSettingExRate\": \"初始的匯率將被設定為\",\n  \"totalSupplyIs0\": \"目前流動性代幣供給為零。\",\n  \"tokenWorth\": \"依據目前的匯率，每個流動性代幣價值\",\n  \"firstLiquidity\": \"您是第一個提供流動性資金的人！\",\n  \"initialExchangeRate\": \"初始的匯率將取決於你存入的資金。請確保存入的 ETH 和 {{ label }} 的價值相等。\",\n  \"removeLiquidity\": \"領出流動性資金\",\n  \"poolTokens\": \"資金池代幣\",\n  \"enterLabelCont\": \"輸入 {{ label }} 以繼續。\",\n  \"youAreRemoving\": \"您正在移除\",\n  \"youWillRemove\": \"您即將移除\",\n  \"createExchange\": \"創建交易所\",\n  \"invalidTokenAddress\": \"無效的代幣地址\",\n  \"exchangeExists\": \"{{ label }} 的交易所已經存在！\",\n  \"invalidSymbol\": \"代幣符號錯誤\",\n  \"invalidDecimals\": \"小數位數錯誤\",\n  \"tokenAddress\": \"代幣地址\",\n  \"label\": \"代幣符號\",\n  \"decimals\": \"小數位數\",\n  \"enterTokenCont\": \"輸入代幣地址\"\n}\n"
  },
  {
    "path": "public/manifest.json",
    "content": "{\n  \"short_name\": \"Uniswap\",\n  \"name\": \"Uniswap\",\n  \"icons\": [\n    {\n      \"src\": \"./images/192x192_App_Icon.png\",\n      \"sizes\": \"192x192\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    },\n    {\n      \"src\": \"./images/512x512_App_Icon.png\",\n      \"sizes\": \"512x512\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    }\n  ],\n  \"orientation\": \"portrait\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#ff007a\",\n  \"background_color\": \"#fff\"\n}\n"
  },
  {
    "path": "schema.json",
    "content": "{\n  \"__schema\": {\n    \"description\": null,\n    \"queryType\": {\n      \"name\": \"Query\"\n    },\n    \"mutationType\": null,\n    \"subscriptionType\": {\n      \"name\": \"Subscription\"\n    },\n    \"types\": [\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"BigDecimal\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"BigInt\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Block_height\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"hash\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"number\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"Int\",\n        \"description\": \"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.\",\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Bundle\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"ID\",\n        \"description\": \"The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\\\"4\\\"`) or integer (such as `4`) input value will be accepted as an ID.\",\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Bundle_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Bundle_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ethPriceUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Burn\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Transaction\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Burn_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"String\",\n        \"description\": \"The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.\",\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Burn_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"Bytes\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Collect\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Transaction\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Collect_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Collect_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Factory\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Factory_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Factory_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalVolumeETH\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Flash\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Transaction\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Flash_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Flash_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0Paid\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1Paid\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Mint\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Transaction\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Mint_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Mint_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"owner\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickLower\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickUpper\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"OrderDirection\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"asc\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"desc\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Pool\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Token\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Token\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolHourData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"PoolHourData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"PoolHourData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"PoolHourData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"PoolDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"PoolDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"PoolDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mints\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Mint_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Mint_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Mint\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burns\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Burn_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Burn_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Burn\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swaps\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Swap_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Swap_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Swap\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collects\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Collect_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Collect_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Collect\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ticks\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Tick_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Tick_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Tick\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"PoolDayData\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"PoolDayData_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"PoolDayData_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"PoolHourData\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"PoolHourData_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"PoolHourData_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Pool_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Pool_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"feeTier\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidity\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPrice\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token0Price\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token1Price\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"observationIndex\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedETH\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolHourData\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolDayData\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mints\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burns\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swaps\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collects\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ticks\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Query\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"factory\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Factory\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"factories\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Factory_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Factory_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Factory\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"bundle\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Bundle\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"bundles\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Bundle_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Bundle_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Bundle\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Token\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokens\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Token_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Token_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Token\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Pool\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pools\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Pool_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Pool_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Pool\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Tick\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ticks\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Tick_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Tick_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Tick\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Transaction\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transactions\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Transaction_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Transaction_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Transaction\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mint\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Mint\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mints\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Mint_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Mint_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Mint\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burn\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Burn\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burns\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Burn_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Burn_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Burn\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swap\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Swap\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swaps\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Swap_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Swap_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Swap\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collect\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Collect\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collects\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Collect_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Collect_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Collect\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"flash\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Flash\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"flashes\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Flash_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Flash_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Flash\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"uniswapDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"UniswapDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"uniswapDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"UniswapDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"UniswapDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"UniswapDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolHourData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"PoolHourData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolHourDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"PoolHourData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"PoolHourData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"PoolHourData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"PoolDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"PoolDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"PoolDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"PoolDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickHourData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"TickHourData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickHourDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TickHourData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TickHourData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TickHourData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"TickDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TickDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TickDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TickDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokenDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"TokenDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokenDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TokenDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TokenDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TokenDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"_meta\",\n            \"description\": \"Access to subgraph metadata\",\n            \"args\": [\n              {\n                \"name\": \"block\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"_Meta_\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Subscription\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"factory\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Factory\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"factories\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Factory_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Factory_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Factory\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"bundle\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Bundle\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"bundles\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Bundle_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Bundle_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Bundle\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Token\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokens\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Token_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Token_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Token\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Pool\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pools\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Pool_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Pool_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Pool\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Tick\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ticks\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Tick_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Tick_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Tick\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Transaction\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transactions\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Transaction_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Transaction_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Transaction\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mint\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Mint\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mints\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Mint_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Mint_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Mint\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burn\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Burn\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burns\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Burn_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Burn_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Burn\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swap\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Swap\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swaps\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Swap_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Swap_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Swap\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collect\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Collect\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collects\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Collect_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Collect_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Collect\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"flash\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"Flash\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"flashes\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Flash_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Flash_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Flash\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"uniswapDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"UniswapDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"uniswapDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"UniswapDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"UniswapDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"UniswapDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolHourData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"PoolHourData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolHourDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"PoolHourData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"PoolHourData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"PoolHourData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"PoolDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"PoolDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"PoolDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"PoolDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickHourData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"TickHourData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickHourDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TickHourData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TickHourData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TickHourData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"TickDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tickDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TickDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TickDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TickDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokenDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"id\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"SCALAR\",\n                    \"name\": \"ID\",\n                    \"ofType\": null\n                  }\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"TokenDayData\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokenDayDatas\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TokenDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TokenDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"block\",\n                \"description\": \"The block at which the query should be executed. Can either be an `{ number: Int }` containing the block number or a `{ hash: Bytes }` value containing a block hash. Defaults to the latest block when omitted.\",\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TokenDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"_meta\",\n            \"description\": \"Access to subgraph metadata\",\n            \"args\": [\n              {\n                \"name\": \"block\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Block_height\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"_Meta_\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Swap\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Transaction\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Bytes\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Swap_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Bytes\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Swap_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"transaction\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sender\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"recipient\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"origin\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amount1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"amountUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"sqrtPriceX96\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"logIndex\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Tick\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"TickDayData\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Tick\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"TickDayData_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"TickDayData_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"TickHourData\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Pool\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Tick\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"TickHourData_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"TickHourData_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"periodStartUnix\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tick\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Tick_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Tick_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"pool\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityGross\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityNet\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"price1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken0\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesToken1\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collectedFeesUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtTimestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"createdAtBlockNumber\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"liquidityProviderCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Token\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"whitelistPools\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Pool_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Pool_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"Pool\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokenDayData\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"TokenDayData_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"TokenDayData_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"TokenDayData\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"TokenDayData\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"Token\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"TokenDayData_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"TokenDayData_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"token\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"priceUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Token_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_not_starts_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name_not_ends_with\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"whitelistPools\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"whitelistPools_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"whitelistPools_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"whitelistPools_not_contains\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Token_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"symbol\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"decimals\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalSupply\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volume\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"untrackedVolumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"poolCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLocked\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"totalValueLockedUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"derivedETH\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"whitelistPools\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tokenDayData\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"Transaction\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mints\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Mint_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Mint_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"Mint\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burns\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Burn_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Burn_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"Burn\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swaps\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Swap_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Swap_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"Swap\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"flashed\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Flash_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Flash_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"Flash\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collects\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"skip\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"0\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"first\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"100\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderBy\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"Collect_orderBy\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"orderDirection\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"ENUM\",\n                  \"name\": \"OrderDirection\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              },\n              {\n                \"name\": \"where\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"INPUT_OBJECT\",\n                  \"name\": \"Collect_filter\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": null,\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"Collect\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"Transaction_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"Transaction_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"blockNumber\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"timestamp\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mints\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"burns\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"swaps\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"flashed\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"collects\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"UniswapDayData\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"ID\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigInt\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"BigDecimal\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"INPUT_OBJECT\",\n        \"name\": \"UniswapDayData_filter\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"ID\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"id_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"ID\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Int\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Int\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigInt\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigInt\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_not\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_gt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_lt\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_gte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_lte\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"BigDecimal\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD_not_in\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"BigDecimal\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"UniswapDayData_orderBy\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"date\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeETH\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"volumeUSDUntracked\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"txCount\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"tvlUSD\",\n            \"description\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"_Block_\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"hash\",\n            \"description\": \"The hash of the block\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Bytes\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"number\",\n            \"description\": \"The block number\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Int\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"_Meta_\",\n        \"description\": \"The type for the top-level _meta field\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"block\",\n            \"description\": \"Information about a specific subgraph block. The hash of the block\\nwill be null if the _meta field has a block constraint that asks for\\na block number. It will be filled if the _meta field has no block constraint\\nand therefore asks for the latest  block\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"_Block_\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"deployment\",\n            \"description\": \"The deployment ID\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"hasIndexingErrors\",\n            \"description\": \"If `true`, the subgraph encountered indexing errors at some past block\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"SCALAR\",\n        \"name\": \"Boolean\",\n        \"description\": \"The `Boolean` scalar type represents `true` or `false`.\",\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"_SubgraphErrorPolicy_\",\n        \"description\": null,\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"allow\",\n            \"description\": \"Data will be returned even if the subgraph has indexing errors\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"deny\",\n            \"description\": \"If the subgraph has indexing errors, data will be omitted. The default.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"__Schema\",\n        \"description\": \"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"description\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"types\",\n            \"description\": \"A list of all types supported by this server.\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"__Type\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"queryType\",\n            \"description\": \"The type that query operations will be rooted at.\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"__Type\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"mutationType\",\n            \"description\": \"If this server supports mutation, the type that mutation operations will be rooted at.\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"__Type\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"subscriptionType\",\n            \"description\": \"If this server support subscription, the type that subscription operations will be rooted at.\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"__Type\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"directives\",\n            \"description\": \"A list of all directives supported by this server.\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"__Directive\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"__Type\",\n        \"description\": \"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByUrl`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"kind\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"ENUM\",\n                \"name\": \"__TypeKind\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"description\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"specifiedByUrl\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"fields\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"includeDeprecated\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Boolean\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"false\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"__Field\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"interfaces\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"__Type\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"possibleTypes\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"__Type\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"enumValues\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"includeDeprecated\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Boolean\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"false\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"__EnumValue\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"inputFields\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"includeDeprecated\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Boolean\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"false\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"OBJECT\",\n                  \"name\": \"__InputValue\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ofType\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"OBJECT\",\n              \"name\": \"__Type\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"__TypeKind\",\n        \"description\": \"An enum describing what kind of type a given `__Type` is.\",\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"SCALAR\",\n            \"description\": \"Indicates this type is a scalar.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"OBJECT\",\n            \"description\": \"Indicates this type is an object. `fields` and `interfaces` are valid fields.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"INTERFACE\",\n            \"description\": \"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"UNION\",\n            \"description\": \"Indicates this type is a union. `possibleTypes` is a valid field.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ENUM\",\n            \"description\": \"Indicates this type is an enum. `enumValues` is a valid field.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"INPUT_OBJECT\",\n            \"description\": \"Indicates this type is an input object. `inputFields` is a valid field.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"LIST\",\n            \"description\": \"Indicates this type is a list. `ofType` is a valid field.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"NON_NULL\",\n            \"description\": \"Indicates this type is a non-null. `ofType` is a valid field.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"__Field\",\n        \"description\": \"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"description\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"args\",\n            \"description\": null,\n            \"args\": [\n              {\n                \"name\": \"includeDeprecated\",\n                \"description\": null,\n                \"type\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"Boolean\",\n                  \"ofType\": null\n                },\n                \"defaultValue\": \"false\",\n                \"isDeprecated\": false,\n                \"deprecationReason\": null\n              }\n            ],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"__InputValue\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"type\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"__Type\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"isDeprecated\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"deprecationReason\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"__InputValue\",\n        \"description\": \"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"description\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"type\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"OBJECT\",\n                \"name\": \"__Type\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"defaultValue\",\n            \"description\": \"A GraphQL-formatted string representing the default value for this input value.\",\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"isDeprecated\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"deprecationReason\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"__EnumValue\",\n        \"description\": \"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"description\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"isDeprecated\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"deprecationReason\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"OBJECT\",\n        \"name\": \"__Directive\",\n        \"description\": \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n        \"specifiedByUrl\": null,\n        \"fields\": [\n          {\n            \"name\": \"name\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"description\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"isRepeatable\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"locations\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"ENUM\",\n                    \"name\": \"__DirectiveLocation\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"args\",\n            \"description\": null,\n            \"args\": [],\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"LIST\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"NON_NULL\",\n                  \"name\": null,\n                  \"ofType\": {\n                    \"kind\": \"OBJECT\",\n                    \"name\": \"__InputValue\",\n                    \"ofType\": null\n                  }\n                }\n              }\n            },\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"inputFields\": null,\n        \"interfaces\": [],\n        \"enumValues\": null,\n        \"possibleTypes\": null\n      },\n      {\n        \"kind\": \"ENUM\",\n        \"name\": \"__DirectiveLocation\",\n        \"description\": \"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.\",\n        \"specifiedByUrl\": null,\n        \"fields\": null,\n        \"inputFields\": null,\n        \"interfaces\": null,\n        \"enumValues\": [\n          {\n            \"name\": \"QUERY\",\n            \"description\": \"Location adjacent to a query operation.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"MUTATION\",\n            \"description\": \"Location adjacent to a mutation operation.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"SUBSCRIPTION\",\n            \"description\": \"Location adjacent to a subscription operation.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"FIELD\",\n            \"description\": \"Location adjacent to a field.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"FRAGMENT_DEFINITION\",\n            \"description\": \"Location adjacent to a fragment definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"FRAGMENT_SPREAD\",\n            \"description\": \"Location adjacent to a fragment spread.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"INLINE_FRAGMENT\",\n            \"description\": \"Location adjacent to an inline fragment.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"VARIABLE_DEFINITION\",\n            \"description\": \"Location adjacent to a variable definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"SCHEMA\",\n            \"description\": \"Location adjacent to a schema definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"SCALAR\",\n            \"description\": \"Location adjacent to a scalar definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"OBJECT\",\n            \"description\": \"Location adjacent to an object type definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"FIELD_DEFINITION\",\n            \"description\": \"Location adjacent to a field definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ARGUMENT_DEFINITION\",\n            \"description\": \"Location adjacent to an argument definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"INTERFACE\",\n            \"description\": \"Location adjacent to an interface definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"UNION\",\n            \"description\": \"Location adjacent to a union definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ENUM\",\n            \"description\": \"Location adjacent to an enum definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"ENUM_VALUE\",\n            \"description\": \"Location adjacent to an enum value definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"INPUT_OBJECT\",\n            \"description\": \"Location adjacent to an input object type definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"INPUT_FIELD_DEFINITION\",\n            \"description\": \"Location adjacent to an input object field definition.\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ],\n        \"possibleTypes\": null\n      }\n    ],\n    \"directives\": [\n      {\n        \"name\": \"entity\",\n        \"description\": null,\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"OBJECT\"\n        ],\n        \"args\": []\n      },\n      {\n        \"name\": \"derivedFrom\",\n        \"description\": null,\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD_DEFINITION\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"field\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"subgraphId\",\n        \"description\": null,\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"OBJECT\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"id\",\n            \"description\": null,\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"include\",\n        \"description\": \"Directs the executor to include this field or fragment only when the `if` argument is true.\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD\",\n          \"FRAGMENT_SPREAD\",\n          \"INLINE_FRAGMENT\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"if\",\n            \"description\": \"Included when true.\",\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"skip\",\n        \"description\": \"Directs the executor to skip this field or fragment when the `if` argument is true.\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD\",\n          \"FRAGMENT_SPREAD\",\n          \"INLINE_FRAGMENT\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"if\",\n            \"description\": \"Skipped when true.\",\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"Boolean\",\n                \"ofType\": null\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"deprecated\",\n        \"description\": \"Marks an element of a GraphQL schema as no longer supported.\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD_DEFINITION\",\n          \"ARGUMENT_DEFINITION\",\n          \"INPUT_FIELD_DEFINITION\",\n          \"ENUM_VALUE\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"reason\",\n            \"description\": \"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).\",\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"String\",\n              \"ofType\": null\n            },\n            \"defaultValue\": \"\\\"No longer supported\\\"\",\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"specifiedBy\",\n        \"description\": \"Exposes a URL that specifies the behaviour of this scalar.\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"SCALAR\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"url\",\n            \"description\": \"The URL that specifies the behaviour of this scalar.\",\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"client\",\n        \"description\": \"Direct the client to resolve this field locally, either from the cache or local resolvers.\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD\",\n          \"FRAGMENT_DEFINITION\",\n          \"INLINE_FRAGMENT\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"always\",\n            \"description\": \"When true, the client will never use the cache for this value. See\\nhttps://www.apollographql.com/docs/react/essentials/local-state/#forcing-resolvers-with-clientalways-true\",\n            \"type\": {\n              \"kind\": \"SCALAR\",\n              \"name\": \"Boolean\",\n              \"ofType\": null\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"export\",\n        \"description\": \"Export this locally resolved field as a variable to be used in the remainder of this query. See\\nhttps://www.apollographql.com/docs/react/essentials/local-state/#using-client-fields-as-variables\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"as\",\n            \"description\": \"The variable name to export this field as.\",\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      },\n      {\n        \"name\": \"connection\",\n        \"description\": \"Specify a custom store key for this result. See\\nhttps://www.apollographql.com/docs/react/advanced/caching/#the-connection-directive\",\n        \"isRepeatable\": false,\n        \"locations\": [\n          \"FIELD\"\n        ],\n        \"args\": [\n          {\n            \"name\": \"key\",\n            \"description\": \"Specify the store key.\",\n            \"type\": {\n              \"kind\": \"NON_NULL\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"SCALAR\",\n                \"name\": \"String\",\n                \"ofType\": null\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          },\n          {\n            \"name\": \"filter\",\n            \"description\": \"An array of query argument names to include in the generated custom store key.\",\n            \"type\": {\n              \"kind\": \"LIST\",\n              \"name\": null,\n              \"ofType\": {\n                \"kind\": \"NON_NULL\",\n                \"name\": null,\n                \"ofType\": {\n                  \"kind\": \"SCALAR\",\n                  \"name\": \"String\",\n                  \"ofType\": null\n                }\n              }\n            },\n            \"defaultValue\": null,\n            \"isDeprecated\": false,\n            \"deprecationReason\": null\n          }\n        ]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "src/apollo/client.ts",
    "content": "import { ApolloClient, InMemoryCache } from '@apollo/client'\n\nexport const healthClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/index-node/graphql',\n  cache: new InMemoryCache(),\n})\n\nexport const blockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const client = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const avalancheClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/lynnshaoyu/uniswap-v3-avax?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const avalancheBlockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/lynnshaoyu/avalanche-blocks',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const arbitrumClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-arbitrum-one?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const arbitrumBlockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/arbitrum-one-blocks',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const optimismClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/optimism-post-regenesis?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const baseClient = new ApolloClient({\n  uri: 'https://api.studio.thegraph.com/query/48211/uniswap-v3-base/version/latest?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const baseBlockClient = new ApolloClient({\n  uri: 'https://api.studio.thegraph.com/query/48211/base-blocks/version/latest',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const bscClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-bsc?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const bscBlockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/wombat-exchange/bnb-chain-block',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const optimismBlockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/uni-testing-subgraph',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const polygonClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v3-polygon?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const polygonBlockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/ianlapham/polygon-blocks',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const celoClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/jesse-sawa/uniswap-celo?source=uniswap',\n  cache: new InMemoryCache({\n    typePolicies: {\n      Token: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n      Pool: {\n        // Singleton types that have no identifying field can use an empty\n        // array for their keyFields.\n        keyFields: false,\n      },\n    },\n  }),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'no-cache',\n    },\n    query: {\n      fetchPolicy: 'no-cache',\n      errorPolicy: 'all',\n    },\n  },\n})\n\nexport const celoBlockClient = new ApolloClient({\n  uri: 'https://api.thegraph.com/subgraphs/name/jesse-sawa/celo-blocks',\n  cache: new InMemoryCache(),\n  queryDeduplication: true,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-first',\n    },\n    query: {\n      fetchPolicy: 'cache-first',\n      errorPolicy: 'all',\n    },\n  },\n})\n"
  },
  {
    "path": "src/components/BarChart/alt.tsx",
    "content": "import React, { Dispatch, SetStateAction, ReactNode } from 'react'\nimport { BarChart, ResponsiveContainer, XAxis, Tooltip, Bar } from 'recharts'\nimport styled from 'styled-components'\nimport Card from 'components/Card'\nimport { RowBetween } from 'components/Row'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport useTheme from 'hooks/useTheme'\nimport { VolumeWindow } from 'types'\nimport { LoadingRows } from 'components/Loader'\ndayjs.extend(utc)\n\nconst DEFAULT_HEIGHT = 300\n\nconst Wrapper = styled(Card)`\n  width: 100%;\n  height: ${DEFAULT_HEIGHT}px;\n  padding: 1rem;\n  padding-right: 2rem;\n  display: flex;\n  background-color: ${({ theme }) => theme.bg0};\n  flex-direction: column;\n  > * {\n    font-size: 1rem;\n  }\n`\n\nexport type LineChartProps = {\n  data: any[]\n  color?: string | undefined\n  height?: number | undefined\n  minHeight?: number\n  setValue?: Dispatch<SetStateAction<number | undefined>> // used for value on hover\n  setLabel?: Dispatch<SetStateAction<string | undefined>> // used for label of valye\n  value?: number\n  label?: string\n  activeWindow?: VolumeWindow\n  topLeft?: ReactNode | undefined\n  topRight?: ReactNode | undefined\n  bottomLeft?: ReactNode | undefined\n  bottomRight?: ReactNode | undefined\n} & React.HTMLAttributes<HTMLDivElement>\n\nconst CustomBar = ({\n  x,\n  y,\n  width,\n  height,\n  fill,\n}: {\n  x: number\n  y: number\n  width: number\n  height: number\n  fill: string\n}) => {\n  if (isNaN(x) || isNaN(y) || isNaN(width) || isNaN(height)) {\n    return null\n  }\n  return (\n    <g>\n      <rect x={x} y={y} fill={fill} width={width} height={height} rx=\"2\" />\n    </g>\n  )\n}\n\nconst Chart = ({\n  data,\n  color = '#56B2A4',\n  setValue,\n  setLabel,\n  value,\n  label,\n  activeWindow,\n  topLeft,\n  topRight,\n  bottomLeft,\n  bottomRight,\n  minHeight = DEFAULT_HEIGHT,\n  ...rest\n}: LineChartProps) => {\n  const theme = useTheme()\n  const parsedValue = value\n\n  const now = dayjs()\n\n  return (\n    <Wrapper $minHeight={minHeight} {...rest}>\n      <RowBetween style={{ alignItems: 'flex-start' }}>\n        {topLeft ?? null}\n        {topRight ?? null}\n      </RowBetween>\n      {data?.length === 0 ? (\n        <LoadingRows>\n          <div />\n          <div />\n          <div />\n        </LoadingRows>\n      ) : (\n        <ResponsiveContainer width=\"100%\" height=\"100%\">\n          <BarChart\n            width={500}\n            height={300}\n            data={data}\n            margin={{\n              top: 5,\n              right: 30,\n              left: 20,\n              bottom: 5,\n            }}\n            onMouseLeave={() => {\n              setLabel && setLabel(undefined)\n              setValue && setValue(undefined)\n            }}\n          >\n            <XAxis\n              dataKey=\"time\"\n              axisLine={false}\n              tickLine={false}\n              tickFormatter={(time) => dayjs(time).format(activeWindow === VolumeWindow.monthly ? 'MMM' : 'DD')}\n              minTickGap={10}\n            />\n            <Tooltip\n              cursor={{ fill: theme?.bg2 }}\n              contentStyle={{ display: 'none' }}\n              formatter={(value: number, name: string, config: { payload: { time: string; value: number } }) => {\n                if (setValue && parsedValue !== config.payload.value) {\n                  setValue(config.payload.value)\n                }\n                const formattedTime = dayjs(config.payload.time).format('MMM D')\n                const formattedTimeDaily = dayjs(config.payload.time).format('MMM D YYYY')\n                const formattedTimePlusWeek = dayjs(config.payload.time).add(1, 'week')\n                const formattedTimePlusMonth = dayjs(config.payload.time).add(1, 'month')\n\n                if (setLabel && label !== formattedTime) {\n                  if (activeWindow === VolumeWindow.weekly) {\n                    const isCurrent = formattedTimePlusWeek.isAfter(now)\n                    setLabel(\n                      formattedTime + '-' + (isCurrent ? 'current' : formattedTimePlusWeek.format('MMM D, YYYY')),\n                    )\n                  } else if (activeWindow === VolumeWindow.monthly) {\n                    const isCurrent = formattedTimePlusMonth.isAfter(now)\n                    setLabel(\n                      formattedTime + '-' + (isCurrent ? 'current' : formattedTimePlusMonth.format('MMM D, YYYY')),\n                    )\n                  } else {\n                    setLabel(formattedTimeDaily)\n                  }\n                }\n              }}\n            />\n            <Bar\n              dataKey=\"value\"\n              fill={color}\n              shape={(props: { height: number; width: number; x: number; y: number }) => {\n                return <CustomBar height={props.height} width={props.width} x={props.x} y={props.y} fill={color} />\n              }}\n            />\n          </BarChart>\n        </ResponsiveContainer>\n      )}\n      <RowBetween>\n        {bottomLeft ?? null}\n        {bottomRight ?? null}\n      </RowBetween>\n    </Wrapper>\n  )\n}\n\nexport default Chart\n"
  },
  {
    "path": "src/components/BarChart/index.tsx",
    "content": "import React, { useRef, useState, useEffect, useCallback, Dispatch, SetStateAction, ReactNode } from 'react'\nimport { createChart, IChartApi } from 'lightweight-charts'\nimport { RowBetween } from 'components/Row'\nimport Card from '../Card'\nimport styled from 'styled-components'\nimport useTheme from 'hooks/useTheme'\nimport usePrevious from 'hooks/usePrevious'\nimport { formatDollarAmount } from 'utils/numbers'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\ndayjs.extend(utc)\n\nconst Wrapper = styled(Card)`\n  width: 100%;\n  padding: 1rem;\n  padding-right: 2rem;\n  display: flex;\n  background-color: ${({ theme }) => theme.bg0};\n  flex-direction: column;\n  > * {\n    font-size: 1rem;\n  }\n`\n\nconst DEFAULT_HEIGHT = 300\n\nexport type LineChartProps = {\n  data: any[]\n  color?: string | undefined\n  height?: number | undefined\n  minHeight?: number\n  setValue?: Dispatch<SetStateAction<number | undefined>> // used for value on hover\n  setLabel?: Dispatch<SetStateAction<string | undefined>> // used for label of valye\n  topLeft?: ReactNode | undefined\n  topRight?: ReactNode | undefined\n  bottomLeft?: ReactNode | undefined\n  bottomRight?: ReactNode | undefined\n} & React.HTMLAttributes<HTMLDivElement>\n\nconst BarChart = ({\n  data,\n  color = '#56B2A4',\n  setValue,\n  setLabel,\n  topLeft,\n  topRight,\n  bottomLeft,\n  bottomRight,\n  height = DEFAULT_HEIGHT,\n  minHeight = DEFAULT_HEIGHT,\n  ...rest\n}: LineChartProps) => {\n  const theme = useTheme()\n  const textColor = theme?.text2\n  const chartRef = useRef<HTMLDivElement>(null)\n  const [chartCreated, setChart] = useState<IChartApi | undefined>()\n\n  const dataPrev = usePrevious(data)\n\n  // reset on new data\n  useEffect(() => {\n    if (dataPrev !== data && chartCreated) {\n      chartCreated.resize(0, 0)\n      setChart(undefined)\n    }\n  }, [data, dataPrev, chartCreated])\n\n  // for reseting value on hover exit\n  const currentValue = data[data.length - 1]?.value\n\n  const handleResize = useCallback(() => {\n    if (chartCreated && chartRef?.current?.parentElement) {\n      chartCreated.resize(chartRef.current.parentElement.clientWidth - 32, height)\n      chartCreated.timeScale().fitContent()\n      chartCreated.timeScale().scrollToPosition(0, false)\n    }\n  }, [chartCreated, chartRef, height])\n\n  // add event listener for resize\n  const isClient = typeof window === 'object'\n  useEffect(() => {\n    if (!isClient) {\n      return\n    }\n    window.addEventListener('resize', handleResize)\n    return () => window.removeEventListener('resize', handleResize)\n  }, [isClient, chartRef, handleResize]) // Empty array ensures that effect is only run on mount and unmount\n\n  // if chart not instantiated in canvas, create it\n  useEffect(() => {\n    if (!chartCreated && data && !!chartRef?.current?.parentElement) {\n      const chart = createChart(chartRef.current, {\n        height: height,\n        width: chartRef.current.parentElement.clientWidth - 62,\n        layout: {\n          backgroundColor: 'transparent',\n          textColor: '#565A69',\n          fontFamily: 'Inter var',\n        },\n        rightPriceScale: {\n          scaleMargins: {\n            top: 0.1,\n            bottom: 0,\n          },\n\n          drawTicks: false,\n          borderVisible: false,\n          visible: false,\n        },\n        timeScale: {\n          borderVisible: false,\n        },\n        watermark: {\n          color: 'rgba(0, 0, 0, 0)',\n        },\n        grid: {\n          horzLines: {\n            visible: false,\n          },\n          vertLines: {\n            visible: false,\n          },\n        },\n        crosshair: {\n          horzLine: {\n            visible: false,\n            labelVisible: false,\n          },\n          vertLine: {\n            visible: true,\n            style: 3,\n            width: 1,\n            color: '#505050',\n            labelBackgroundColor: color,\n            labelVisible: false,\n          },\n        },\n      })\n\n      chart.timeScale().fitContent()\n      setChart(chart)\n    }\n  }, [color, chartCreated, currentValue, data, height, setValue, textColor, theme])\n\n  useEffect(() => {\n    if (chartCreated && data) {\n      const series = chartCreated.addHistogramSeries({\n        color: color,\n      })\n\n      series.setData(data)\n      chartCreated.timeScale().fitContent()\n\n      series.applyOptions({\n        priceFormat: {\n          type: 'custom',\n          minMove: 0.02,\n          formatter: (price: any) => formatDollarAmount(price),\n        },\n      })\n\n      // update the title when hovering on the chart\n      chartCreated.subscribeCrosshairMove(function (param) {\n        if (\n          chartRef?.current &&\n          (param === undefined ||\n            param.time === undefined ||\n            (param && param.point && param.point.x < 0) ||\n            (param && param.point && param.point.x > chartRef.current.clientWidth) ||\n            (param && param.point && param.point.y < 0) ||\n            (param && param.point && param.point.y > height))\n        ) {\n          setValue && setValue(undefined)\n          setLabel && setLabel(undefined)\n        } else if (series && param) {\n          const time = param?.time as { day: number; year: number; month: number }\n          const timeString = dayjs(time.year + '-' + time.month + '-' + time.day).format('MMM D, YYYY')\n          const price = parseFloat(param?.seriesPrices?.get(series)?.toString() ?? currentValue)\n          setValue && setValue(price)\n          setLabel && timeString && setLabel(timeString)\n        }\n      })\n    }\n  }, [chartCreated, color, currentValue, data, height, setLabel, setValue, theme?.bg0])\n\n  return (\n    <Wrapper $minHeight={minHeight}>\n      <RowBetween>\n        {topLeft ?? null}\n        {topRight ?? null}\n      </RowBetween>\n      <div ref={chartRef} id={'bar-chart'} {...rest} />\n      <RowBetween>\n        {bottomLeft ?? null}\n        {bottomRight ?? null}\n      </RowBetween>\n    </Wrapper>\n  )\n}\n\nexport default BarChart\n"
  },
  {
    "path": "src/components/Button/index.tsx",
    "content": "import React, { HTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport { darken, lighten } from 'polished'\n\nimport { RowBetween } from '../Row'\nimport { ChevronDown, Check, Star } from 'react-feather'\nimport { Button as RebassButton, ButtonProps } from 'rebass/styled-components'\nimport useTheme from 'hooks/useTheme'\n\nconst Base = styled(RebassButton)<{\n  padding?: string\n  width?: string\n  borderRadius?: string\n  altDisabledStyle?: boolean\n}>`\n  padding: ${({ padding }) => (padding ? padding : '8px 16px')};\n  width: ${({ width }) => (width ? width : '100%')};\n  font-weight: 500;\n  text-align: center;\n  border-radius: 12px;\n  border-radius: ${({ borderRadius }) => borderRadius && borderRadius};\n  outline: none;\n  border: 1px solid transparent;\n  color: white;\n  text-decoration: none;\n  display: flex;\n  justify-content: center;\n  flex-wrap: nowrap;\n  align-items: center;\n  cursor: pointer;\n  position: relative;\n  z-index: 1;\n  &:disabled {\n    cursor: auto;\n  }\n\n  > * {\n    user-select: none;\n  }\n`\n\nexport const ButtonPrimary = styled(Base)<{ bgColor?: string; altDisabledStyle?: boolean }>`\n  background-color: ${({ theme, bgColor }) => bgColor ?? theme.primary1};\n  color: white;\n  &:focus {\n    box-shadow: 0 0 0 1pt ${({ theme, bgColor }) => darken(0.05, bgColor ?? theme.primary1)};\n    background-color: ${({ theme, bgColor }) => darken(0.05, bgColor ?? theme.primary1)};\n  }\n  &:hover {\n    background-color: ${({ theme, bgColor }) => darken(0.05, bgColor ?? theme.primary1)};\n  }\n  &:active {\n    box-shadow: 0 0 0 1pt ${({ theme, bgColor }) => darken(0.1, bgColor ?? theme.primary1)};\n    background-color: ${({ theme, bgColor }) => darken(0.1, bgColor ?? theme.primary1)};\n  }\n  &:disabled {\n    background-color: ${({ theme, altDisabledStyle, disabled }) =>\n      altDisabledStyle ? (disabled ? theme.bg3 : theme.primary1) : theme.bg3};\n    color: ${({ theme, altDisabledStyle, disabled }) =>\n      altDisabledStyle ? (disabled ? theme.text3 : 'white') : theme.text3};\n    cursor: auto;\n    box-shadow: none;\n    border: 1px solid transparent;\n    outline: none;\n    opacity: ${({ altDisabledStyle }) => (altDisabledStyle ? '0.5' : '1')};\n  }\n`\n\nexport const ButtonLight = styled(Base)`\n  background-color: ${({ theme }) => theme.primary5};\n  color: ${({ theme }) => theme.primaryText1};\n  font-size: 16px;\n  font-weight: 500;\n  &:focus {\n    box-shadow: 0 0 0 1pt ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)};\n    background-color: ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)};\n  }\n  &:hover {\n    background-color: ${({ theme, disabled }) => !disabled && darken(0.03, theme.primary5)};\n  }\n  &:active {\n    box-shadow: 0 0 0 1pt ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)};\n    background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.primary5)};\n  }\n  :disabled {\n    opacity: 0.4;\n    :hover {\n      cursor: auto;\n      background-color: ${({ theme }) => theme.primary5};\n      box-shadow: none;\n      border: 1px solid transparent;\n      outline: none;\n    }\n  }\n`\n\nexport const ButtonGray = styled(Base)`\n  background-color: ${({ theme }) => theme.bg3};\n  color: ${({ theme }) => theme.text2};\n  font-size: 16px;\n  font-weight: 500;\n  outline: none;\n  &:focus {\n    background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.bg4)};\n    outline: none;\n  }\n  &:hover {\n    background-color: ${({ theme, disabled }) => !disabled && darken(0.05, theme.bg4)};\n    outline: none;\n  }\n  &:active {\n    background-color: ${({ theme, disabled }) => !disabled && darken(0.1, theme.bg4)};\n    outline: none;\n  }\n`\n\nexport const ButtonSecondary = styled(Base)<{ padding?: string }>`\n  border: 1px solid ${({ theme }) => theme.primary4};\n  color: ${({ theme }) => theme.primary1};\n  background-color: transparent;\n  font-size: 16px;\n  border-radius: 12px;\n  padding: ${({ padding }) => (padding ? padding : '10px')};\n\n  &:focus {\n    box-shadow: 0 0 0 1pt ${({ theme }) => theme.primary4};\n    border: 1px solid ${({ theme }) => theme.primary3};\n  }\n  &:hover {\n    border: 1px solid ${({ theme }) => theme.primary3};\n  }\n  &:active {\n    box-shadow: 0 0 0 1pt ${({ theme }) => theme.primary4};\n    border: 1px solid ${({ theme }) => theme.primary3};\n  }\n  &:disabled {\n    opacity: 50%;\n    cursor: auto;\n  }\n  a:hover {\n    text-decoration: none;\n  }\n`\n\nexport const ButtonPink = styled(Base)`\n  background-color: ${({ theme }) => theme.primary1};\n  color: white;\n\n  &:focus {\n    box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.05, theme.primary1)};\n    background-color: ${({ theme }) => darken(0.05, theme.primary1)};\n  }\n  &:hover {\n    background-color: ${({ theme }) => darken(0.05, theme.primary1)};\n  }\n  &:active {\n    box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.1, theme.primary1)};\n    background-color: ${({ theme }) => darken(0.1, theme.primary1)};\n  }\n  &:disabled {\n    background-color: ${({ theme }) => theme.primary1};\n    opacity: 50%;\n    cursor: auto;\n  }\n`\n\nexport const ButtonUNIGradient = styled(ButtonPrimary)`\n  color: white;\n  padding: 4px 8px;\n  height: 36px;\n  font-weight: 500;\n  background-color: ${({ theme }) => theme.bg3};\n  background: radial-gradient(174.47% 188.91% at 1.84% 0%, #ff007a 0%, #2172e5 100%), #edeef2;\n  width: fit-content;\n  position: relative;\n  cursor: pointer;\n  border: none;\n  white-space: no-wrap;\n  :hover {\n    opacity: 0.8;\n  }\n  :active {\n    opacity: 0.9;\n  }\n`\n\nexport const ButtonOutlined = styled(Base)`\n  border: 1px solid ${({ theme }) => theme.bg2};\n  background-color: transparent;\n  color: ${({ theme }) => theme.text1};\n\n  &:focus {\n    box-shadow: 0 0 0 1px ${({ theme }) => theme.bg4};\n  }\n  &:hover {\n    box-shadow: 0 0 0 1px ${({ theme }) => theme.bg4};\n  }\n  &:active {\n    box-shadow: 0 0 0 1px ${({ theme }) => theme.bg4};\n  }\n  &:disabled {\n    opacity: 50%;\n    cursor: auto;\n  }\n`\n\nexport const ButtonEmpty = styled(Base)`\n  background-color: transparent;\n  color: ${({ theme }) => theme.primary1};\n  display: flex;\n  justify-content: center;\n  align-items: center;\n\n  &:focus {\n    text-decoration: underline;\n  }\n  &:hover {\n    text-decoration: none;\n  }\n  &:active {\n    text-decoration: none;\n  }\n  &:disabled {\n    opacity: 50%;\n    cursor: auto;\n  }\n`\n\nexport const ButtonWhite = styled(Base)`\n  border: 1px solid #edeef2;\n  background-color: ${({ theme }) => theme.bg1};\n  color: black;\n\n  &:focus {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    box-shadow: 0 0 0 1pt ${darken(0.05, '#edeef2')};\n  }\n  &:hover {\n    box-shadow: 0 0 0 1pt ${darken(0.1, '#edeef2')};\n  }\n  &:active {\n    box-shadow: 0 0 0 1pt ${darken(0.1, '#edeef2')};\n  }\n  &:disabled {\n    opacity: 50%;\n    cursor: auto;\n  }\n`\n\nconst ButtonConfirmedStyle = styled(Base)`\n  background-color: ${({ theme }) => lighten(0.5, theme.green1)};\n  color: ${({ theme }) => theme.green1};\n  border: 1px solid ${({ theme }) => theme.green1};\n\n  &:disabled {\n    opacity: 50%;\n    cursor: auto;\n  }\n`\n\nconst ButtonErrorStyle = styled(Base)`\n  background-color: ${({ theme }) => theme.red1};\n  border: 1px solid ${({ theme }) => theme.red1};\n\n  &:focus {\n    box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.05, theme.red1)};\n    background-color: ${({ theme }) => darken(0.05, theme.red1)};\n  }\n  &:hover {\n    background-color: ${({ theme }) => darken(0.05, theme.red1)};\n  }\n  &:active {\n    box-shadow: 0 0 0 1pt ${({ theme }) => darken(0.1, theme.red1)};\n    background-color: ${({ theme }) => darken(0.1, theme.red1)};\n  }\n  &:disabled {\n    opacity: 50%;\n    cursor: auto;\n    box-shadow: none;\n    background-color: ${({ theme }) => theme.red1};\n    border: 1px solid ${({ theme }) => theme.red1};\n  }\n`\n\nexport function ButtonConfirmed({\n  confirmed,\n  altDisabledStyle,\n  ...rest\n}: { confirmed?: boolean; altDisabledStyle?: boolean } & ButtonProps) {\n  if (confirmed) {\n    return <ButtonConfirmedStyle {...rest} />\n  } else {\n    return <ButtonPrimary {...rest} altDisabledStyle={altDisabledStyle} />\n  }\n}\n\nexport function ButtonError({ error, ...rest }: { error?: boolean } & ButtonProps) {\n  if (error) {\n    return <ButtonErrorStyle {...rest} />\n  } else {\n    return <ButtonPrimary {...rest} />\n  }\n}\n\nexport function ButtonDropdown({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) {\n  return (\n    <ButtonPrimary {...rest} disabled={disabled}>\n      <RowBetween>\n        <div style={{ display: 'flex', alignItems: 'center' }}>{children}</div>\n        <ChevronDown size={24} />\n      </RowBetween>\n    </ButtonPrimary>\n  )\n}\n\nexport function ButtonDropdownGrey({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) {\n  return (\n    <ButtonGray {...rest} disabled={disabled} style={{ borderRadius: '20px' }}>\n      <RowBetween>\n        <div style={{ display: 'flex', alignItems: 'center' }}>{children}</div>\n        <ChevronDown size={24} />\n      </RowBetween>\n    </ButtonGray>\n  )\n}\n\nexport function ButtonDropdownLight({ disabled = false, children, ...rest }: { disabled?: boolean } & ButtonProps) {\n  return (\n    <ButtonOutlined {...rest} disabled={disabled}>\n      <RowBetween>\n        <div style={{ display: 'flex', alignItems: 'center' }}>{children}</div>\n        <ChevronDown size={24} />\n      </RowBetween>\n    </ButtonOutlined>\n  )\n}\n\nexport function ButtonRadio({ active, ...rest }: { active?: boolean } & ButtonProps) {\n  if (!active) {\n    return <ButtonWhite {...rest} />\n  } else {\n    return <ButtonPrimary {...rest} />\n  }\n}\n\nconst ActiveOutlined = styled(ButtonOutlined)`\n  border: 1px solid;\n  border-color: ${({ theme }) => theme.primary1};\n`\n\nconst Circle = styled.div`\n  height: 20px;\n  width: 20px;\n  border-radius: 50%;\n  background-color: ${({ theme }) => theme.primary1};\n  display: flex;\n  align-items: center;\n  justify-content: center;\n`\n\nconst CheckboxWrapper = styled.div`\n  width: 30px;\n  padding: 0 10px;\n`\n\nexport function ButtonRadioChecked({ active = false, children, ...rest }: { active?: boolean } & ButtonProps) {\n  if (!active) {\n    return (\n      <ButtonOutlined borderRadius=\"12px\" padding=\"12px 8px\" {...rest}>\n        {<RowBetween>{children}</RowBetween>}\n      </ButtonOutlined>\n    )\n  } else {\n    return (\n      <ActiveOutlined {...rest} padding=\"12px 8px\" borderRadius=\"12px\">\n        {\n          <RowBetween>\n            {children}\n            <CheckboxWrapper>\n              <Circle>\n                <Check size={13} />\n              </Circle>\n            </CheckboxWrapper>\n          </RowBetween>\n        }\n      </ActiveOutlined>\n    )\n  }\n}\n\nconst HoverIcon = styled.div`\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  z-index: 9999;\n  :hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n`\n\nexport const SavedIcon = ({\n  fill = false,\n  size = '20px',\n  ...rest\n}: { fill: boolean; size?: string } & HTMLAttributes<HTMLDivElement>) => {\n  const theme = useTheme()\n  return (\n    <HoverIcon {...rest}>\n      <Star stroke={theme?.text2} fill={fill ? theme?.text2 : 'transparent'} size={size} />\n    </HoverIcon>\n  )\n}\n\nexport const SmallOptionButton = styled(Base)<{ $active?: boolean }>`\n  padding: 4px;\n  width: fit-content;\n  font-size: 12px;\n  border-radius: 4px;\n  min-width: 36px;\n  background-color: ${({ $active, theme }) => ($active ? theme.bg2 : theme.bg1)};\n  color: ${({ $active, theme }) => ($active ? theme.text1 : theme.text2)};\n\n  :hover {\n    opacity: 0.6;\n  }\n`\n\nexport const SmallOption = styled(ButtonOutlined)`\n  padding: 4px;\n`\n"
  },
  {
    "path": "src/components/CandleChart/index.tsx",
    "content": "import React, { useRef, useState, useEffect, useCallback, Dispatch, SetStateAction, ReactNode } from 'react'\nimport { createChart, IChartApi } from 'lightweight-charts'\nimport { RowBetween } from 'components/Row'\nimport Card from '../Card'\nimport styled from 'styled-components'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport useTheme from 'hooks/useTheme'\n\ndayjs.extend(utc)\n\nconst Wrapper = styled(Card)`\n  width: 100%;\n  padding: 1rem;\n  display: flex;\n  background-color: ${({ theme }) => theme.bg0};\n  flex-direction: column;\n  > * {\n    font-size: 1rem;\n  }\n`\n\nconst DEFAULT_HEIGHT = 300\n\nexport type LineChartProps = {\n  data: any[]\n  color?: string | undefined\n  height?: number | undefined\n  minHeight?: number\n  setValue?: Dispatch<SetStateAction<number | undefined>> // used for value on hover\n  setLabel?: Dispatch<SetStateAction<string | undefined>> // used for value label on hover\n  topLeft?: ReactNode | undefined\n  topRight?: ReactNode | undefined\n  bottomLeft?: ReactNode | undefined\n  bottomRight?: ReactNode | undefined\n} & React.HTMLAttributes<HTMLDivElement>\n\nconst CandleChart = ({\n  data,\n  color = '#56B2A4',\n  setValue,\n  setLabel,\n  topLeft,\n  topRight,\n  bottomLeft,\n  bottomRight,\n  height = DEFAULT_HEIGHT,\n  minHeight = DEFAULT_HEIGHT,\n  ...rest\n}: LineChartProps) => {\n  const theme = useTheme()\n  const textColor = theme?.text3\n  const chartRef = useRef<HTMLDivElement>(null)\n  const [chartCreated, setChart] = useState<IChartApi | undefined>()\n\n  const handleResize = useCallback(() => {\n    if (chartCreated && chartRef?.current?.parentElement) {\n      chartCreated.resize(chartRef.current.parentElement.clientWidth - 32, height)\n      chartCreated.timeScale().fitContent()\n      chartCreated.timeScale().scrollToPosition(0, false)\n    }\n  }, [chartCreated, chartRef, height])\n\n  // add event listener for resize\n  const isClient = typeof window === 'object'\n  useEffect(() => {\n    if (!isClient) {\n      return\n    }\n    window.addEventListener('resize', handleResize)\n    return () => window.removeEventListener('resize', handleResize)\n  }, [isClient, chartRef, handleResize]) // Empty array ensures that effect is only run on mount and unmount\n\n  // if chart not instantiated in canvas, create it\n  useEffect(() => {\n    if (!chartCreated && data && !!chartRef?.current?.parentElement) {\n      const chart = createChart(chartRef.current, {\n        height: height,\n        width: chartRef.current.parentElement.clientWidth - 32,\n        layout: {\n          backgroundColor: 'transparent',\n          textColor: '#565A69',\n          fontFamily: 'Inter var',\n        },\n        rightPriceScale: {\n          scaleMargins: {\n            top: 0.1,\n            bottom: 0.1,\n          },\n          borderVisible: false,\n        },\n        timeScale: {\n          borderVisible: false,\n          secondsVisible: true,\n          tickMarkFormatter: (unixTime: number) => {\n            return dayjs.unix(unixTime).format('MM/DD h:mm A')\n          },\n        },\n        watermark: {\n          visible: false,\n        },\n        grid: {\n          horzLines: {\n            visible: false,\n          },\n          vertLines: {\n            visible: false,\n          },\n        },\n        crosshair: {\n          horzLine: {\n            visible: false,\n            labelVisible: false,\n          },\n          mode: 1,\n          vertLine: {\n            visible: true,\n            labelVisible: false,\n            style: 3,\n            width: 1,\n            color: '#505050',\n            labelBackgroundColor: color,\n          },\n        },\n      })\n\n      chart.timeScale().fitContent()\n      setChart(chart)\n    }\n  }, [color, chartCreated, data, height, setValue, textColor, theme])\n\n  useEffect(() => {\n    if (chartCreated && data) {\n      const series = chartCreated.addCandlestickSeries({\n        upColor: 'green',\n        downColor: 'red',\n        borderDownColor: 'red',\n        borderUpColor: 'green',\n        wickDownColor: 'red',\n        wickUpColor: 'green',\n      })\n\n      series.setData(data)\n\n      // update the title when hovering on the chart\n      chartCreated.subscribeCrosshairMove(function (param) {\n        if (\n          chartRef?.current &&\n          (param === undefined ||\n            param.time === undefined ||\n            (param && param.point && param.point.x < 0) ||\n            (param && param.point && param.point.x > chartRef.current.clientWidth) ||\n            (param && param.point && param.point.y < 0) ||\n            (param && param.point && param.point.y > height))\n        ) {\n          // reset values\n          setValue && setValue(undefined)\n          setLabel && setLabel(undefined)\n        } else if (series && param) {\n          const timestamp = param.time as number\n          const time = dayjs.unix(timestamp).utc().format('MMM D, YYYY h:mm A') + ' (UTC)'\n          const parsed = param.seriesPrices.get(series) as { open: number } | undefined\n          setValue && setValue(parsed?.open)\n          setLabel && setLabel(time)\n        }\n      })\n    }\n  }, [chartCreated, color, data, height, setValue, setLabel, theme])\n\n  return (\n    <Wrapper $minHeight={minHeight}>\n      <RowBetween>\n        {topLeft ?? null}\n        {topRight ?? null}\n      </RowBetween>\n      <div ref={chartRef} id={'candle-chart'} {...rest} />\n      <RowBetween>\n        {bottomLeft ?? null}\n        {bottomRight ?? null}\n      </RowBetween>\n    </Wrapper>\n  )\n}\n\nexport default CandleChart\n"
  },
  {
    "path": "src/components/Card/index.tsx",
    "content": "import styled from 'styled-components'\nimport { Box } from 'rebass/styled-components'\n\nconst Card = styled(Box)<{\n  width?: string\n  padding?: string\n  border?: string\n  borderRadius?: string\n  $minHeight?: number\n}>`\n  width: ${({ width }) => width ?? '100%'};\n  border-radius: 16px;\n  padding: 1rem;\n  padding: ${({ padding }) => padding};\n  border: ${({ border }) => border};\n  border-radius: ${({ borderRadius }) => borderRadius};\n  min-height: ${({ $minHeight }) => `${$minHeight}px`};\n`\nexport default Card\n\nexport const LightCard = styled(Card)`\n  border: 1px solid ${({ theme }) => theme.bg2};\n  background-color: ${({ theme }) => theme.bg1};\n`\n\nexport const LightGreyCard = styled(Card)`\n  background-color: ${({ theme }) => theme.bg3};\n`\n\nexport const GreyCard = styled(Card)`\n  background-color: ${({ theme }) => theme.bg2};\n`\n\nexport const DarkGreyCard = styled(Card)`\n  background-color: ${({ theme }) => theme.bg0};\n`\n\nexport const OutlineCard = styled(Card)`\n  border: 1px solid ${({ theme }) => theme.bg3};\n`\n\nexport const YellowCard = styled(Card)`\n  background-color: rgba(243, 132, 30, 0.05);\n  color: ${({ theme }) => theme.yellow3};\n  font-weight: 500;\n`\n\nexport const PinkCard = styled(Card)`\n  background-color: rgba(255, 0, 122, 0.03);\n  color: ${({ theme }) => theme.primary1};\n  font-weight: 500;\n`\n\nexport const BlueCard = styled(Card)`\n  background-color: ${({ theme }) => theme.primary5};\n  color: ${({ theme }) => theme.blue2};\n  border-radius: 12px;\n  width: fit-content;\n`\n\nexport const ScrollableX = styled.div`\n  display: flex;\n  flex-direction: row;\n  width: 100%;\n  overflow-x: auto;\n  overflow-y: hidden;\n  white-space: nowrap;\n\n  ::-webkit-scrollbar {\n    display: none;\n  }\n`\n\nexport const GreyBadge = styled(Card)`\n  width: fit-content;\n  border-radius: 8px;\n  background: ${({ theme }) => theme.bg3};\n  color: ${({ theme }) => theme.text1};\n  padding: 4px 6px;\n  font-weight: 400;\n`\n"
  },
  {
    "path": "src/components/Column/index.tsx",
    "content": "import styled from 'styled-components'\n\nconst Column = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-start;\n`\nexport const ColumnCenter = styled(Column)`\n  width: 100%;\n  align-items: center;\n`\n\nexport const AutoColumn = styled.div<{\n  $gap?: 'sm' | 'md' | 'lg' | string\n  justify?: 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'space-between'\n}>`\n  display: grid;\n  grid-auto-rows: auto;\n  grid-row-gap: ${({ $gap }) =>\n    ($gap === 'sm' && '8px') || ($gap === 'md' && '12px') || ($gap === 'lg' && '24px') || $gap};\n  justify-items: ${({ justify }) => justify && justify};\n`\n\nexport default Column\n"
  },
  {
    "path": "src/components/Confetti/index.tsx",
    "content": "import React from 'react'\nimport ReactConfetti from 'react-confetti'\nimport { useWindowSize } from '../../hooks/useWindowSize'\n\n// eslint-disable-next-line react/prop-types\nexport default function Confetti({ start, variant }: { start: boolean; variant?: string }) {\n  const { width, height } = useWindowSize()\n\n  const _variant = variant ? variant : height && width && height > 1.5 * width ? 'bottom' : variant\n\n  return start && width && height ? (\n    <ReactConfetti\n      style={{ zIndex: 1401 }}\n      numberOfPieces={400}\n      recycle={false}\n      run={true}\n      width={width}\n      height={height}\n      confettiSource={{\n        h: height,\n        w: width,\n        x: 0,\n        y: _variant === 'top' ? height * 0.25 : _variant === 'bottom' ? height * 0.75 : height * 0.5,\n      }}\n      initialVelocityX={15}\n      initialVelocityY={30}\n      gravity={0.45}\n      tweenDuration={100}\n      wind={0.05}\n    />\n  ) : null\n}\n"
  },
  {
    "path": "src/components/CurrencyLogo/index.tsx",
    "content": "import React, { useMemo } from 'react'\nimport styled from 'styled-components'\nimport { isAddress } from 'utils'\nimport Logo from '../Logo'\nimport { useCombinedActiveList } from 'state/lists/hooks'\nimport useHttpLocations from 'hooks/useHttpLocations'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { OptimismNetworkInfo } from 'constants/networks'\nimport EthereumLogo from '../../assets/images/ethereum-logo.png'\nimport { ChainId } from '@uniswap/sdk-core'\n\nexport function chainIdToNetworkName(networkId: ChainId) {\n  switch (networkId) {\n    case ChainId.MAINNET:\n      return 'ethereum'\n    case ChainId.ARBITRUM_ONE:\n      return 'arbitrum'\n    case ChainId.OPTIMISM:\n      return 'optimism'\n    case ChainId.POLYGON:\n      return 'polygon'\n    case ChainId.BNB:\n      return 'smartchain'\n    case ChainId.BASE:\n      return 'base'\n    default:\n      return 'ethereum'\n  }\n}\n\nconst getTokenLogoURL = ({ address, chainId }: { address: string; chainId: ChainId }) => {\n  return `https://raw.githubusercontent.com/uniswap/assets/master/blockchains/${chainIdToNetworkName(\n    chainId,\n  )}/assets/${address}/logo.png`\n}\n\nconst StyledLogo = styled(Logo)<{ size: string }>`\n  width: ${({ size }) => size};\n  height: ${({ size }) => size};\n  border-radius: ${({ size }) => size};\n  box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075);\n  background-color: ${({ theme }) => theme.white};\n  color: ${({ theme }) => theme.text4};\n`\n\nconst StyledEthereumLogo = styled.img<{ size: string }>`\n  width: ${({ size }) => size};\n  height: ${({ size }) => size};\n  box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.075);\n  border-radius: 24px;\n`\n\nexport default function CurrencyLogo({\n  address,\n  size = '24px',\n  style,\n  ...rest\n}: {\n  address?: string\n  size?: string\n  style?: React.CSSProperties\n}) {\n  // useOptimismList()\n  const optimismList = useCombinedActiveList()?.[10]\n  const arbitrumList = useCombinedActiveList()?.[42161]\n  const polygon = useCombinedActiveList()?.[137]\n  const celo = useCombinedActiveList()?.[42220]\n  const bnbList = useCombinedActiveList()?.[ChainId.BNB]\n  const baseList = useCombinedActiveList()?.[ChainId.BASE]\n\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  const checkSummed = isAddress(address)\n\n  const optimismURI = useMemo(() => {\n    if (checkSummed && optimismList?.[checkSummed]) {\n      return optimismList?.[checkSummed].token.logoURI\n    }\n    return undefined\n  }, [checkSummed, optimismList])\n  const uriLocationsOptimism = useHttpLocations(optimismURI)\n\n  const arbitrumURI = useMemo(() => {\n    if (checkSummed && arbitrumList?.[checkSummed]) {\n      return arbitrumList?.[checkSummed].token.logoURI\n    }\n    return undefined\n  }, [checkSummed, arbitrumList])\n  const uriLocationsArbitrum = useHttpLocations(arbitrumURI)\n\n  const BNBURI = useMemo(() => {\n    if (checkSummed && bnbList?.[checkSummed]) {\n      return bnbList?.[checkSummed].token.logoURI\n    }\n    return undefined\n  }, [checkSummed, bnbList])\n  const uriLocationsBNB = useHttpLocations(BNBURI)\n\n  const BaseURI = useMemo(() => {\n    if (checkSummed && baseList?.[checkSummed]) {\n      return baseList?.[checkSummed].token.logoURI\n    }\n    return undefined\n  }, [checkSummed, baseList])\n  const uriLocationsBase = useHttpLocations(BaseURI)\n\n  const polygonURI = useMemo(() => {\n    if (checkSummed && polygon?.[checkSummed]) {\n      return polygon?.[checkSummed].token.logoURI\n    }\n    return undefined\n  }, [checkSummed, polygon])\n  const uriLocationsPolygon = useHttpLocations(polygonURI)\n\n  const celoURI = useMemo(() => {\n    if (checkSummed && celo?.[checkSummed]) {\n      return celo?.[checkSummed].token.logoURI\n    }\n    return undefined\n  }, [checkSummed, celo])\n  const uriLocationsCelo = useHttpLocations(celoURI)\n\n  //temp until token logo issue merged\n  const tempSources: { [address: string]: string } = useMemo(() => {\n    return {\n      ['0x4dd28568d05f09b02220b09c2cb307bfd837cb95']:\n        'https://assets.coingecko.com/coins/images/18143/thumb/wCPb0b88_400x400.png?1630667954',\n    }\n  }, [])\n\n  const srcs: string[] = useMemo(() => {\n    const checkSummed = isAddress(address)\n\n    if (checkSummed && address) {\n      const override = tempSources[address]\n      return [\n        getTokenLogoURL({ address: checkSummed, chainId: activeNetwork.chainId }),\n        ...uriLocationsOptimism,\n        ...uriLocationsArbitrum,\n        ...uriLocationsPolygon,\n        ...uriLocationsCelo,\n        ...uriLocationsBNB,\n        ...uriLocationsBase,\n        override,\n      ]\n    }\n    return []\n  }, [\n    address,\n    tempSources,\n    activeNetwork.chainId,\n    uriLocationsOptimism,\n    uriLocationsArbitrum,\n    uriLocationsPolygon,\n    uriLocationsCelo,\n    uriLocationsBNB,\n    uriLocationsBase,\n  ])\n\n  if (activeNetwork === OptimismNetworkInfo && address === '0x4200000000000000000000000000000000000006') {\n    return <StyledEthereumLogo src={EthereumLogo} size={size} style={style} {...rest} />\n  }\n\n  return <StyledLogo size={size} srcs={srcs} alt={'token logo'} style={style} {...rest} />\n}\n"
  },
  {
    "path": "src/components/DensityChart/CurrentPriceLabel.tsx",
    "content": "import React from 'react'\nimport { ChartEntry } from './index'\nimport { PoolData } from 'state/pools/reducer'\nimport useTheme from 'hooks/useTheme'\nimport styled from 'styled-components'\nimport { AutoColumn } from 'components/Column'\nimport { RowFixed } from 'components/Row'\nimport { TYPE } from 'theme'\n\nconst Wrapper = styled.div`\n  border-radius: 8px;\n  padding: 6px 12px;\n  color: white;\n  width: fit-content;\n  font-size: 14px;\n  background-color: ${({ theme }) => theme.bg2};\n`\n\ninterface LabelProps {\n  x: number\n  y: number\n  index: number\n}\n\ninterface CurrentPriceLabelProps {\n  data: ChartEntry[] | undefined\n  chartProps: any\n  poolData: PoolData\n}\n\nexport function CurrentPriceLabel({ data, chartProps, poolData }: CurrentPriceLabelProps) {\n  const theme = useTheme()\n  const labelData = chartProps as LabelProps\n  const entryData = data?.[labelData.index]\n  if (entryData?.isCurrent) {\n    const price0 = entryData.price0\n    const price1 = entryData.price1\n    return (\n      <g>\n        <foreignObject x={labelData.x - 80} y={318} width={'100%'} height={100}>\n          <Wrapper>\n            <AutoColumn $gap=\"6px\">\n              <RowFixed align=\"center\">\n                <TYPE.main mr=\"6px\">Current Price</TYPE.main>\n                <div\n                  style={{\n                    marginTop: '2px',\n                    height: '6px',\n                    width: '6px',\n                    borderRadius: '50%',\n                    backgroundColor: theme?.pink1,\n                  }}\n                ></div>\n              </RowFixed>\n              <TYPE.label>{`1 ${poolData.token0.symbol} = ${Number(price0).toLocaleString(undefined, {\n                minimumSignificantDigits: 1,\n              })} ${poolData.token1.symbol}`}</TYPE.label>\n              <TYPE.label>{`1 ${poolData.token1.symbol} = ${Number(price1).toLocaleString(undefined, {\n                minimumSignificantDigits: 1,\n              })} ${poolData.token0.symbol}`}</TYPE.label>\n            </AutoColumn>\n          </Wrapper>\n        </foreignObject>\n      </g>\n    )\n  }\n  return null\n}\n"
  },
  {
    "path": "src/components/DensityChart/CustomToolTip.tsx",
    "content": "import React from 'react'\nimport { PoolData } from 'state/pools/reducer'\nimport styled from 'styled-components'\nimport { LightCard } from 'components/Card'\nimport useTheme from 'hooks/useTheme'\nimport { AutoColumn } from 'components/Column'\nimport { TYPE } from 'theme'\nimport { RowBetween } from 'components/Row'\nimport { formatAmount } from 'utils/numbers'\n\nconst TooltipWrapper = styled(LightCard)`\n  padding: 12px;\n  width: 320px;\n  opacity: 0.6;\n  font-size: 12px;\n  z-index: 10;\n`\n\ninterface CustomToolTipProps {\n  chartProps: any\n  poolData: PoolData\n  currentPrice: number | undefined\n}\n\nexport function CustomToolTip({ chartProps, poolData, currentPrice }: CustomToolTipProps) {\n  const theme = useTheme()\n  const price0 = chartProps?.payload?.[0]?.payload.price0\n  const price1 = chartProps?.payload?.[0]?.payload.price1\n  const tvlToken0 = chartProps?.payload?.[0]?.payload.tvlToken0\n  const tvlToken1 = chartProps?.payload?.[0]?.payload.tvlToken1\n\n  return (\n    <TooltipWrapper>\n      <AutoColumn $gap=\"sm\">\n        <TYPE.main color={theme?.text3}>Tick stats</TYPE.main>\n        <RowBetween>\n          <TYPE.label>{poolData?.token0?.symbol} Price: </TYPE.label>\n          <TYPE.label>\n            {price0\n              ? Number(price0).toLocaleString(undefined, {\n                  minimumSignificantDigits: 1,\n                })\n              : ''}{' '}\n            {poolData?.token1?.symbol}\n          </TYPE.label>\n        </RowBetween>\n        <RowBetween>\n          <TYPE.label>{poolData?.token1?.symbol} Price: </TYPE.label>\n          <TYPE.label>\n            {price1\n              ? Number(price1).toLocaleString(undefined, {\n                  minimumSignificantDigits: 1,\n                })\n              : ''}{' '}\n            {poolData?.token0?.symbol}\n          </TYPE.label>\n        </RowBetween>\n        {currentPrice && price0 && currentPrice > price1 ? (\n          <RowBetween>\n            <TYPE.label>{poolData?.token0?.symbol} Locked: </TYPE.label>\n            <TYPE.label>\n              {tvlToken0 ? formatAmount(tvlToken0) : ''} {poolData?.token0?.symbol}\n            </TYPE.label>\n          </RowBetween>\n        ) : (\n          <RowBetween>\n            <TYPE.label>{poolData?.token1?.symbol} Locked: </TYPE.label>\n            <TYPE.label>\n              {tvlToken1 ? formatAmount(tvlToken1) : ''} {poolData?.token1?.symbol}\n            </TYPE.label>\n          </RowBetween>\n        )}\n      </AutoColumn>\n    </TooltipWrapper>\n  )\n}\n\nexport default CustomToolTip\n"
  },
  {
    "path": "src/components/DensityChart/index.tsx",
    "content": "import { fetchTicksSurroundingPrice, TickProcessed } from 'data/pools/tickData'\nimport React, { useEffect, useMemo, useState, useCallback } from 'react'\nimport { BarChart, Bar, LabelList, XAxis, Tooltip, ResponsiveContainer, Cell } from 'recharts'\nimport Loader from 'components/Loader'\nimport styled from 'styled-components'\nimport useTheme from 'hooks/useTheme'\nimport { usePoolDatas, usePoolTickData } from 'state/pools/hooks'\nimport { MAX_UINT128 } from '../../constants/index'\nimport { isAddress } from 'utils'\nimport { Pool, TickMath, TICK_SPACINGS, FeeAmount } from '@uniswap/v3-sdk'\nimport { PoolData } from 'state/pools/reducer'\nimport { CurrentPriceLabel } from './CurrentPriceLabel'\nimport CustomToolTip from './CustomToolTip'\nimport { Token, CurrencyAmount } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\nimport { useClients } from 'state/application/hooks'\n\nconst Wrapper = styled.div`\n  position: relative;\n  width: 100%;\n  height: 400px;\n`\n\nconst ControlsWrapper = styled.div`\n  position: absolute;\n  right: 40px;\n  bottom: 100px;\n  padding: 4px;\n  border-radius: 8px;\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  grid-column-gap: 6px;\n`\n\nconst ActionButton = styled.div<{ disabled?: boolean }>`\n  width: 32x;\n  border-radius: 50%;\n  background-color: black;\n  padding: 4px 8px;\n  display: flex;\n  justify-content: center;\n  font-size: 18px;\n  font-weight: 500;\n  align-items: center;\n  opacity: ${({ disabled }) => (disabled ? 0.4 : 0.9)};\n  background-color: ${({ theme, disabled }) => (disabled ? theme.bg3 : theme.bg2)};\n  user-select: none;\n\n  :hover {\n    cursor: pointer;\n    opacity: 0.4;\n  }\n`\n\ninterface DensityChartProps {\n  address: string\n}\n\nexport interface ChartEntry {\n  index: number\n  isCurrent: boolean\n  activeLiquidity: number\n  price0: number\n  price1: number\n  tvlToken0: number\n  tvlToken1: number\n}\n\ninterface ZoomStateProps {\n  left: number\n  right: number\n  refAreaLeft: string | number\n  refAreaRight: string | number\n}\n\nconst INITIAL_TICKS_TO_FETCH = 200\nconst ZOOM_INTERVAL = 20\n\nconst initialState = {\n  left: 0,\n  right: INITIAL_TICKS_TO_FETCH * 2 + 1,\n  refAreaLeft: '',\n  refAreaRight: '',\n}\n\nexport default function DensityChart({ address }: DensityChartProps) {\n  const theme = useTheme()\n  const { dataClient } = useClients()\n\n  // poolData\n  const poolData: PoolData = usePoolDatas([address])[0]\n  const formattedAddress0 = isAddress(poolData.token0.address)\n  const formattedAddress1 = isAddress(poolData.token1.address)\n  const feeTier = poolData?.feeTier\n\n  // parsed tokens\n  const token0 = useMemo(() => {\n    return poolData && formattedAddress0 && formattedAddress1\n      ? new Token(1, formattedAddress0, poolData.token0.decimals)\n      : undefined\n  }, [formattedAddress0, formattedAddress1, poolData])\n  const token1 = useMemo(() => {\n    return poolData && formattedAddress1 && formattedAddress1\n      ? new Token(1, formattedAddress1, poolData.token1.decimals)\n      : undefined\n  }, [formattedAddress1, poolData])\n\n  // tick data tracking\n  const [poolTickData, updatePoolTickData] = usePoolTickData(address)\n  const [ticksToFetch, setTicksToFetch] = useState(INITIAL_TICKS_TO_FETCH)\n  const amountTicks = ticksToFetch * 2 + 1\n\n  const [loading, setLoading] = useState(false)\n  const [zoomState, setZoomState] = useState<ZoomStateProps>(initialState)\n\n  useEffect(() => {\n    async function fetch() {\n      const { data } = await fetchTicksSurroundingPrice(address, dataClient, ticksToFetch)\n      if (data) {\n        updatePoolTickData(address, data)\n      }\n    }\n    if (!poolTickData || (poolTickData && poolTickData.ticksProcessed.length < amountTicks)) {\n      fetch()\n    }\n  }, [address, poolTickData, updatePoolTickData, ticksToFetch, amountTicks, dataClient])\n\n  const [formattedData, setFormattedData] = useState<ChartEntry[] | undefined>()\n  useEffect(() => {\n    async function formatData() {\n      if (poolTickData) {\n        const newData = await Promise.all(\n          poolTickData.ticksProcessed.map(async (t: TickProcessed, i) => {\n            const active = t.tickIdx === poolTickData.activeTickIdx\n            const sqrtPriceX96 = TickMath.getSqrtRatioAtTick(t.tickIdx)\n            const feeAmount: FeeAmount = poolData.feeTier\n            const mockTicks = [\n              {\n                index: t.tickIdx - TICK_SPACINGS[feeAmount],\n                liquidityGross: t.liquidityGross,\n                liquidityNet: JSBI.multiply(t.liquidityNet, JSBI.BigInt('-1')),\n              },\n              {\n                index: t.tickIdx,\n                liquidityGross: t.liquidityGross,\n                liquidityNet: t.liquidityNet,\n              },\n            ]\n            const pool =\n              token0 && token1 && feeTier\n                ? new Pool(token0, token1, feeTier, sqrtPriceX96, t.liquidityActive, t.tickIdx, mockTicks)\n                : undefined\n            const nextSqrtX96 = poolTickData.ticksProcessed[i - 1]\n              ? TickMath.getSqrtRatioAtTick(poolTickData.ticksProcessed[i - 1].tickIdx)\n              : undefined\n            const maxAmountToken0 = token0 ? CurrencyAmount.fromRawAmount(token0, MAX_UINT128.toString()) : undefined\n            const outputRes0 =\n              pool && maxAmountToken0 ? await pool.getOutputAmount(maxAmountToken0, nextSqrtX96) : undefined\n\n            const token1Amount = outputRes0?.[0] as CurrencyAmount<Token> | undefined\n\n            const amount0 = token1Amount ? parseFloat(token1Amount.toExact()) * parseFloat(t.price1) : 0\n            const amount1 = token1Amount ? parseFloat(token1Amount.toExact()) : 0\n\n            return {\n              index: i,\n              isCurrent: active,\n              activeLiquidity: parseFloat(t.liquidityActive.toString()),\n              price0: parseFloat(t.price0),\n              price1: parseFloat(t.price1),\n              tvlToken0: amount0,\n              tvlToken1: amount1,\n            }\n          }),\n        )\n        // offset the values to line off bars with TVL used to swap across bar\n        newData?.map((entry, i) => {\n          if (i > 0) {\n            newData[i - 1].tvlToken0 = entry.tvlToken0\n            newData[i - 1].tvlToken1 = entry.tvlToken1\n          }\n        })\n\n        if (newData) {\n          if (loading) {\n            setLoading(false)\n          }\n          setFormattedData(newData)\n        }\n        return\n      } else {\n        return []\n      }\n    }\n    if (!formattedData) {\n      formatData()\n    }\n  }, [feeTier, formattedData, loading, poolData.feeTier, poolTickData, token0, token1])\n\n  const atZoomMax = zoomState.left + ZOOM_INTERVAL >= zoomState.right - ZOOM_INTERVAL - 1\n  const atZoomMin = zoomState.left - ZOOM_INTERVAL < 0\n\n  const handleZoomIn = useCallback(() => {\n    !atZoomMax &&\n      setZoomState({\n        ...zoomState,\n        left: zoomState.left + ZOOM_INTERVAL,\n        right: zoomState.right - ZOOM_INTERVAL,\n      })\n  }, [zoomState, atZoomMax])\n\n  const handleZoomOut = useCallback(() => {\n    if (atZoomMin) {\n      setLoading(true)\n      setTicksToFetch(ticksToFetch + ZOOM_INTERVAL)\n      setFormattedData(undefined)\n      setZoomState({\n        ...zoomState,\n        left: 0,\n        right: amountTicks,\n      })\n    } else {\n      setZoomState({\n        ...zoomState,\n        left: zoomState.left - ZOOM_INTERVAL,\n        right: zoomState.right + ZOOM_INTERVAL,\n      })\n    }\n  }, [amountTicks, atZoomMin, ticksToFetch, zoomState])\n\n  const zoomedData = useMemo(() => {\n    if (formattedData) {\n      return formattedData.slice(zoomState.left, zoomState.right)\n    }\n    return undefined\n  }, [formattedData, zoomState.left, zoomState.right])\n\n  // reset data on address change\n  useEffect(() => {\n    setFormattedData(undefined)\n  }, [address])\n\n  if (!poolTickData) {\n    return <Loader />\n  }\n\n  const CustomBar = ({\n    x,\n    y,\n    width,\n    height,\n    fill,\n  }: {\n    x: number\n    y: number\n    width: number\n    height: number\n    fill: string\n  }) => {\n    if (isNaN(x) || isNaN(y) || isNaN(width) || isNaN(height)) {\n      return null\n    }\n    return (\n      <g>\n        <rect x={x} y={y} fill={fill} width={width} height={height} rx=\"2\" />\n      </g>\n    )\n  }\n  return (\n    <Wrapper>\n      {!loading ? (\n        <ResponsiveContainer width=\"100%\" height=\"100%\">\n          <BarChart\n            width={500}\n            height={300}\n            data={zoomedData}\n            margin={{\n              top: 5,\n              right: 30,\n              left: 20,\n              bottom: 60,\n            }}\n          >\n            <Tooltip\n              content={(props) => (\n                <CustomToolTip chartProps={props} poolData={poolData} currentPrice={poolData.token0Price} />\n              )}\n            />\n            <XAxis reversed={true} tick={false} />\n            <Bar\n              dataKey=\"activeLiquidity\"\n              fill=\"#2172E5\"\n              isAnimationActive={false}\n              shape={(props) => {\n                // eslint-disable-next-line react/prop-types\n                return <CustomBar height={props.height} width={props.width} x={props.x} y={props.y} fill={props.fill} />\n              }}\n            >\n              {zoomedData?.map((entry, index) => {\n                return <Cell key={`cell-${index}`} fill={entry.isCurrent ? theme?.pink1 : theme?.blue1} />\n              })}\n              <LabelList\n                dataKey=\"activeLiquidity\"\n                position=\"inside\"\n                content={(props) => <CurrentPriceLabel chartProps={props} poolData={poolData} data={zoomedData} />}\n              />\n            </Bar>\n          </BarChart>\n        </ResponsiveContainer>\n      ) : (\n        <Loader />\n      )}\n      <ControlsWrapper>\n        <ActionButton disabled={false} onClick={handleZoomOut}>\n          -\n        </ActionButton>\n        <ActionButton disabled={atZoomMax} onClick={handleZoomIn}>\n          +\n        </ActionButton>\n      </ControlsWrapper>\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/DoubleLogo/index.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\nimport CurrencyLogo from '../CurrencyLogo'\n\nconst Wrapper = styled.div<{ $margin: boolean; $sizeraw: number }>`\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  margin-right: ${({ $sizeraw, $margin }) => $margin && ($sizeraw / 3 + 8).toString() + 'px'};\n`\n\ninterface DoubleCurrencyLogoProps {\n  margin?: boolean\n  size?: number\n  address0?: string\n  address1?: string\n}\n\nconst HigherLogo = styled(CurrencyLogo)`\n  z-index: 2;\n`\n\nexport default function DoubleCurrencyLogo({ address0, address1, size = 16, margin = false }: DoubleCurrencyLogoProps) {\n  return (\n    <Wrapper $sizeraw={size} $margin={margin}>\n      {address0 && <HigherLogo address={address0} size={size.toString() + 'px'} />}\n      {address1 && <CurrencyLogo address={address1} size={size.toString() + 'px'} />}\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/FormattedCurrencyAmount/index.tsx",
    "content": "import React from 'react'\nimport { CurrencyAmount, Fraction, Token } from '@uniswap/sdk-core'\nimport JSBI from 'jsbi'\n\nconst CURRENCY_AMOUNT_MIN = new Fraction(JSBI.BigInt(1), JSBI.BigInt(1000000))\n\nexport default function FormattedCurrencyAmount({\n  currencyAmount,\n  significantDigits = 4,\n}: {\n  currencyAmount: CurrencyAmount<Token>\n  significantDigits?: number\n}) {\n  return (\n    <>\n      {currencyAmount.equalTo(JSBI.BigInt(0))\n        ? '0'\n        : currencyAmount.greaterThan(CURRENCY_AMOUNT_MIN)\n        ? currencyAmount.toSignificant(significantDigits)\n        : `<${CURRENCY_AMOUNT_MIN.toSignificant(1)}`}\n    </>\n  )\n}\n"
  },
  {
    "path": "src/components/Header/Polling.tsx",
    "content": "import React, { useState, useEffect } from 'react'\nimport styled, { keyframes } from 'styled-components'\nimport { TYPE, ExternalLink } from '../../theme'\n\nimport { useActiveNetworkVersion, useSubgraphStatus } from '../../state/application/hooks'\nimport { ExplorerDataType, getExplorerLink } from '../../utils'\nimport useTheme from 'hooks/useTheme'\nimport { EthereumNetworkInfo } from 'constants/networks'\nimport { ChainId } from '@uniswap/sdk-core'\n\nconst StyledPolling = styled.div`\n  display: flex;\n  color: white;\n  margin-right: 1rem;\n  border-radius: 4px;\n  width: 192px;\n  padding: 4px;\n  background-color: ${({ theme }) => theme.bg2};\n  transition: opacity 0.25s ease;\n  color: ${({ theme }) => theme.green1};\n  :hover {\n    opacity: 1;\n  }\n  z-index: 9999;\n\n  ${({ theme }) => theme.mediaWidth.upToMedium`\n    display: none;\n  `}\n`\nconst StyledPollingDot = styled.div`\n  width: 8px;\n  height: 8px;\n  min-height: 8px;\n  min-width: 8px;\n  margin-left: 0.4rem;\n  margin-top: 3px;\n  border-radius: 50%;\n  position: relative;\n  background-color: ${({ theme }) => theme.green1};\n`\n\nconst rotate360 = keyframes`\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n`\n\nconst Spinner = styled.div`\n  animation: ${rotate360} 1s cubic-bezier(0.83, 0, 0.17, 1) infinite;\n  transform: translateZ(0);\n  border-top: 1px solid transparent;\n  border-right: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  border-left: 2px solid ${({ theme }) => theme.green1};\n  background: transparent;\n  width: 14px;\n  height: 14px;\n  border-radius: 50%;\n  position: relative;\n  left: -3px;\n  top: -3px;\n`\n\nexport default function Polling() {\n  const theme = useTheme()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const [status] = useSubgraphStatus()\n  const [isMounted, setIsMounted] = useState(true)\n  const latestBlock = activeNetwork === EthereumNetworkInfo ? status.headBlock : status.syncedBlock\n\n  useEffect(\n    () => {\n      const timer1 = setTimeout(() => setIsMounted(true), 1000)\n\n      // this will clear Timeout when component unmount like in willComponentUnmount\n      return () => {\n        setIsMounted(false)\n        clearTimeout(timer1)\n      }\n    },\n    [status], //useEffect will run only one time\n    //if you pass a value to array, like this [data] than clearTimeout will run every time this value changes (useEffect re-run)\n  )\n\n  return (\n    <ExternalLink\n      href={latestBlock ? getExplorerLink(ChainId.MAINNET, latestBlock.toString(), ExplorerDataType.BLOCK) : ''}\n    >\n      <StyledPolling>\n        <TYPE.small mr=\"4px\" color={theme?.text3}>\n          Latest synced block:{' '}\n        </TYPE.small>\n        <TYPE.small style={{ opacity: isMounted ? '0.6' : '0.8' }}>{latestBlock}</TYPE.small>\n        <StyledPollingDot>{!isMounted && <Spinner />}</StyledPollingDot>\n      </StyledPolling>\n    </ExternalLink>\n  )\n}\n"
  },
  {
    "path": "src/components/Header/TopBar.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\nimport { AutoRow, RowBetween, RowFixed } from 'components/Row'\nimport { ExternalLink, TYPE } from 'theme'\nimport { useEthPrices } from 'hooks/useEthPrices'\nimport { formatDollarAmount } from 'utils/numbers'\nimport Polling from './Polling'\nimport { useActiveNetworkVersion } from '../../state/application/hooks'\nimport { SupportedNetwork } from '../../constants/networks'\n\nconst Wrapper = styled.div`\n  width: 100%;\n  background-color: ${({ theme }) => theme.black};\n  padding: 10px 20px;\n`\n\nconst Item = styled(TYPE.main)`\n  font-size: 12px;\n`\n\nconst StyledLink = styled(ExternalLink)`\n  font-size: 12px;\n  color: ${({ theme }) => theme.text1};\n`\n\nconst TopBar = () => {\n  const ethPrices = useEthPrices()\n  const [activeNetwork] = useActiveNetworkVersion()\n  return (\n    <Wrapper>\n      <RowBetween>\n        <Polling />\n        <AutoRow $gap=\"6px\">\n          <RowFixed>\n            {activeNetwork.id === SupportedNetwork.CELO ? (\n              <Item>Celo Price:</Item>\n            ) : activeNetwork.id === SupportedNetwork.BNB ? (\n              <Item>BNB Price:</Item>\n            ) : activeNetwork.id === SupportedNetwork.AVALANCHE ? (\n              <Item>AVAX Price:</Item>\n            ) : (\n              <Item>Eth Price:</Item>\n            )}\n            <Item fontWeight=\"700\" ml=\"4px\">\n              {formatDollarAmount(ethPrices?.current)}\n            </Item>\n          </RowFixed>\n        </AutoRow>\n        <AutoRow $gap=\"6px\" style={{ justifyContent: 'flex-end' }}>\n          <StyledLink href=\"https://v2.info.uniswap.org/#/\">V2 Analytics</StyledLink>\n          <StyledLink href=\"https://docs.uniswap.org/\">Docs</StyledLink>\n          <StyledLink href=\"https://app.uniswap.org/#/swap\">App</StyledLink>\n        </AutoRow>\n      </RowBetween>\n    </Wrapper>\n  )\n}\n\nexport default TopBar\n"
  },
  {
    "path": "src/components/Header/URLWarning.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\n\nimport { AlertTriangle, X } from 'react-feather'\nimport { useURLWarningToggle, useURLWarningVisible } from '../../state/user/hooks'\nimport { isMobile } from 'react-device-detect'\n\nconst PhishAlert = styled.div<{ isActive: any }>`\n  width: 100%;\n  padding: 6px 6px;\n  background-color: ${({ theme }) => theme.blue1};\n  color: white;\n  font-size: 11px;\n  justify-content: space-between;\n  align-items: center;\n  display: ${({ isActive }) => (isActive ? 'flex' : 'none')};\n`\n\nexport const StyledClose = styled(X)`\n  :hover {\n    cursor: pointer;\n  }\n`\n\nexport default function URLWarning() {\n  const toggleURLWarning = useURLWarningToggle()\n  const showURLWarning = useURLWarningVisible()\n\n  return isMobile ? (\n    <PhishAlert isActive={showURLWarning}>\n      <div style={{ display: 'flex' }}>\n        <AlertTriangle style={{ marginRight: 6 }} size={12} /> Make sure the URL is\n        <code style={{ padding: '0 4px', display: 'inline', fontWeight: 'bold' }}>app.uniswap.org</code>\n      </div>\n      <StyledClose size={12} onClick={toggleURLWarning} />\n    </PhishAlert>\n  ) : window.location.hostname === 'app.uniswap.org' ? (\n    <PhishAlert isActive={showURLWarning}>\n      <div style={{ display: 'flex' }}>\n        <AlertTriangle style={{ marginRight: 6 }} size={12} /> Always make sure the URL is\n        <code style={{ padding: '0 4px', display: 'inline', fontWeight: 'bold' }}>app.uniswap.org</code> - bookmark it\n        to be safe.\n      </div>\n      <StyledClose size={12} onClick={toggleURLWarning} />\n    </PhishAlert>\n  ) : null\n}\n"
  },
  {
    "path": "src/components/Header/index.tsx",
    "content": "import React from 'react'\nimport { NavLink, useLocation } from 'react-router-dom'\nimport { darken } from 'polished'\nimport styled from 'styled-components'\nimport LogoDark from '../../assets/svg/logo_white.svg'\nimport Menu from '../Menu'\nimport Row, { RowFixed, RowBetween } from '../Row'\nimport SearchSmall from 'components/Search'\nimport NetworkDropdown from 'components/Menu/NetworkDropdown'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { networkPrefix } from 'utils/networkPrefix'\nimport { AutoColumn } from 'components/Column'\n\nconst HeaderFrame = styled.div`\n  display: grid;\n  grid-template-columns: 1fr 120px;\n  align-items: center;\n  justify-content: space-between;\n  align-items: center;\n  flex-direction: row;\n  width: 100%;\n  top: 0;\n  position: relative;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n  padding: 1rem;\n  z-index: 2;\n  box-shadow:\n    0 1px 3px rgba(0, 0, 0, 0.12),\n    0 1px 2px rgba(0, 0, 0, 0.24);\n\n  background-color: ${({ theme }) => theme.bg0};\n\n  @media (max-width: 1080px) {\n    grid-template-columns: 1fr;\n    padding: 0.5rem 1rem;\n    width: calc(100%);\n    position: relative;\n  }\n\n  ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n    padding: 0.5rem 1rem;\n  `}\n`\n\nconst HeaderControls = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-self: flex-end;\n\n  @media (max-width: 1080px) {\n    display: none;\n  }\n`\n\nconst HeaderRow = styled(RowFixed)`\n  @media (max-width: 1080px) {\n    width: 100%;\n  }\n`\n\nconst HeaderLinks = styled(Row)`\n  justify-content: center;\n  @media (max-width: 1080px) {\n    padding: 0.5rem;\n    justify-content: flex-end;\n  }\n`\n\nconst Title = styled(NavLink)`\n  display: flex;\n  align-items: center;\n  pointer-events: auto;\n  justify-self: flex-start;\n  margin-right: 12px;\n  :hover {\n    cursor: pointer;\n  }\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    justify-self: center;\n  `};\n`\n\nconst UniIcon = styled.div`\n  transition: transform 0.3s ease;\n  :hover {\n    transform: rotate(-5deg);\n  }\n`\n\nconst StyledNavLink = styled(NavLink)<{ $isActive: boolean }>`\n  ${({ theme }) => theme.flexRowNoWrap}\n  align-items: left;\n  border-radius: 3rem;\n  outline: none;\n  cursor: pointer;\n  text-decoration: none;\n  font-size: 1rem;\n  width: fit-content;\n  margin: 0 6px;\n  padding: 8px 12px;\n  font-weight: 500;\n\n  border-radius: ${({ $isActive }) => ($isActive ? '12px' : 'unset')};\n  background-color: ${({ theme, $isActive }) => ($isActive ? theme.bg2 : 'unset')};\n  color: ${({ theme, $isActive }) => ($isActive ? theme.text1 : theme.text3)};\n\n  :hover,\n  :focus {\n    color: ${({ theme }) => darken(0.1, theme.text1)};\n  }\n`\n\nexport const StyledMenuButton = styled.button`\n  position: relative;\n  width: 100%;\n  height: 100%;\n  border: none;\n  background-color: transparent;\n  margin: 0;\n  padding: 0;\n  height: 35px;\n  background-color: ${({ theme }) => theme.bg3};\n  margin-left: 8px;\n  padding: 0.15rem 0.5rem;\n  border-radius: 0.5rem;\n\n  :hover,\n  :focus {\n    cursor: pointer;\n    outline: none;\n    background-color: ${({ theme }) => theme.bg4};\n  }\n\n  svg {\n    margin-top: 2px;\n  }\n\n  > * {\n    stroke: ${({ theme }) => theme.text1};\n  }\n`\n\nconst SmallContentGrouping = styled.div`\n  width: 100%;\n  display: none;\n  @media (max-width: 1080px) {\n    display: initial;\n  }\n`\n\nexport default function Header() {\n  const [activeNewtork] = useActiveNetworkVersion()\n\n  const { pathname } = useLocation()\n\n  return (\n    <HeaderFrame>\n      <HeaderRow>\n        <Title to={networkPrefix(activeNewtork)}>\n          <UniIcon>\n            <img width={'24px'} src={LogoDark} alt=\"logo\" />\n          </UniIcon>\n        </Title>\n        <HeaderLinks>\n          <StyledNavLink id={`pool-nav-link`} to={networkPrefix(activeNewtork)} $isActive={pathname === '/'}>\n            Overview\n          </StyledNavLink>\n          <StyledNavLink\n            id={`stake-nav-link`}\n            to={networkPrefix(activeNewtork) + 'pools'}\n            $isActive={pathname.includes('pools')}\n          >\n            Pools\n          </StyledNavLink>\n          <StyledNavLink\n            id={`stake-nav-link`}\n            to={networkPrefix(activeNewtork) + 'tokens'}\n            $isActive={pathname.includes('tokens')}\n          >\n            Tokens\n          </StyledNavLink>\n        </HeaderLinks>\n      </HeaderRow>\n      <HeaderControls>\n        <NetworkDropdown />\n        <SearchSmall />\n        <Menu />\n      </HeaderControls>\n      <SmallContentGrouping>\n        <AutoColumn $gap=\"sm\">\n          <RowBetween>\n            <NetworkDropdown />\n            <Menu />\n          </RowBetween>\n          <SearchSmall />\n        </AutoColumn>\n      </SmallContentGrouping>\n    </HeaderFrame>\n  )\n}\n"
  },
  {
    "path": "src/components/HoverInlineText/index.tsx",
    "content": "import Tooltip from 'components/Tooltip'\nimport React, { useState } from 'react'\nimport styled from 'styled-components'\n\nconst TextWrapper = styled.div<{\n  $margin: boolean\n  $link: boolean\n  color?: string\n  fontSize?: string\n  $adjustSize?: boolean\n}>`\n  position: relative;\n  margin-left: ${({ $margin }) => $margin && '4px'};\n  color: ${({ theme, $link, color }) => ($link ? theme.blue1 : color ?? theme.text1)};\n  font-size: ${({ fontSize }) => fontSize ?? 'inherit'};\n\n  :hover {\n    cursor: pointer;\n  }\n\n  @media screen and (max-width: 600px) {\n    font-size: ${({ $adjustSize }) => $adjustSize && '12px'};\n  }\n`\n\nconst HoverInlineText = ({\n  text,\n  maxCharacters = 20,\n  margin = false,\n  adjustSize = false,\n  fontSize,\n  color,\n  link,\n  ...rest\n}: {\n  text: string\n  maxCharacters?: number\n  margin?: boolean\n  adjustSize?: boolean\n  fontSize?: string\n  color?: string\n  link?: boolean\n}) => {\n  const [showHover, setShowHover] = useState(false)\n\n  if (!text) {\n    return <span></span>\n  }\n\n  if (text.length > maxCharacters) {\n    return (\n      <Tooltip text={text} show={showHover}>\n        <TextWrapper\n          onMouseEnter={() => setShowHover(true)}\n          onMouseLeave={() => setShowHover(false)}\n          $margin={margin}\n          $adjustSize={adjustSize}\n          $link={!!link}\n          color={color}\n          fontSize={fontSize}\n          {...rest}\n        >\n          {' ' + text.slice(0, maxCharacters - 1) + '...'}\n        </TextWrapper>\n      </Tooltip>\n    )\n  }\n\n  return (\n    <TextWrapper color={color} $margin={margin} $adjustSize={adjustSize} $link={!!link} fontSize={fontSize} {...rest}>\n      {text}\n    </TextWrapper>\n  )\n}\n\nexport default HoverInlineText\n"
  },
  {
    "path": "src/components/LineChart/alt.tsx",
    "content": "import React, { Dispatch, SetStateAction, ReactNode } from 'react'\nimport { ResponsiveContainer, XAxis, Tooltip, AreaChart, Area } from 'recharts'\nimport styled from 'styled-components'\nimport Card from 'components/Card'\nimport { RowBetween } from 'components/Row'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport useTheme from 'hooks/useTheme'\nimport { darken } from 'polished'\nimport { LoadingRows } from 'components/Loader'\ndayjs.extend(utc)\n\nconst DEFAULT_HEIGHT = 300\n\nconst Wrapper = styled(Card)`\n  width: 100%;\n  height: ${DEFAULT_HEIGHT}px;\n  padding: 1rem;\n  padding-right: 2rem;\n  display: flex;\n  background-color: ${({ theme }) => theme.bg0};\n  flex-direction: column;\n  > * {\n    font-size: 1rem;\n  }\n`\n\nexport type LineChartProps = {\n  data: any[]\n  color?: string | undefined\n  height?: number | undefined\n  minHeight?: number\n  setValue?: Dispatch<SetStateAction<number | undefined>> // used for value on hover\n  setLabel?: Dispatch<SetStateAction<string | undefined>> // used for label of valye\n  value?: number\n  label?: string\n  topLeft?: ReactNode | undefined\n  topRight?: ReactNode | undefined\n  bottomLeft?: ReactNode | undefined\n  bottomRight?: ReactNode | undefined\n} & React.HTMLAttributes<HTMLDivElement>\n\nconst Chart = ({\n  data,\n  color = '#56B2A4',\n  value,\n  label,\n  setValue,\n  setLabel,\n  topLeft,\n  topRight,\n  bottomLeft,\n  bottomRight,\n  minHeight = DEFAULT_HEIGHT,\n  ...rest\n}: LineChartProps) => {\n  const theme = useTheme()\n  const parsedValue = value\n\n  return (\n    <Wrapper $minHeight={minHeight} {...rest}>\n      <RowBetween>\n        {topLeft ?? null}\n        {topRight ?? null}\n      </RowBetween>\n      {data?.length === 0 ? (\n        <LoadingRows>\n          <div />\n          <div />\n          <div />\n        </LoadingRows>\n      ) : (\n        <ResponsiveContainer width=\"100%\" height=\"100%\">\n          <AreaChart\n            width={500}\n            height={300}\n            data={data}\n            margin={{\n              top: 5,\n              right: 30,\n              left: 20,\n              bottom: 5,\n            }}\n            onMouseLeave={() => {\n              setLabel && setLabel(undefined)\n              setValue && setValue(undefined)\n            }}\n          >\n            <defs>\n              <linearGradient id=\"gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                <stop offset=\"5%\" stopColor={darken(0.36, color)} stopOpacity={0.5} />\n                <stop offset=\"100%\" stopColor={color} stopOpacity={0} />\n              </linearGradient>\n            </defs>\n            <XAxis\n              dataKey=\"time\"\n              axisLine={false}\n              tickLine={false}\n              tickFormatter={(time) => dayjs(time).format('DD')}\n              minTickGap={10}\n            />\n            <Tooltip\n              cursor={{ stroke: theme?.bg2 }}\n              contentStyle={{ display: 'none' }}\n              formatter={(value: number, name: string, config: { payload: { time: string; value: number } }) => {\n                if (setValue && parsedValue !== config.payload.value) {\n                  setValue(config.payload.value)\n                }\n                const formattedTime = dayjs(config.payload.time).format('MMM D, YYYY')\n                if (setLabel && label !== formattedTime) setLabel(formattedTime)\n              }}\n            />\n            <Area dataKey=\"value\" type=\"monotone\" stroke={color} fill=\"url(#gradient)\" strokeWidth={2} />\n          </AreaChart>\n        </ResponsiveContainer>\n      )}\n      <RowBetween>\n        {bottomLeft ?? null}\n        {bottomRight ?? null}\n      </RowBetween>\n    </Wrapper>\n  )\n}\n\nexport default Chart\n"
  },
  {
    "path": "src/components/LineChart/index.tsx",
    "content": "import React, { useRef, useState, useEffect, useCallback, Dispatch, SetStateAction, ReactNode } from 'react'\nimport { createChart, IChartApi } from 'lightweight-charts'\nimport { darken } from 'polished'\nimport { RowBetween } from 'components/Row'\nimport Card from '../Card'\nimport styled from 'styled-components'\nimport useTheme from 'hooks/useTheme'\nimport usePrevious from 'hooks/usePrevious'\nimport { formatDollarAmount } from 'utils/numbers'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\ndayjs.extend(utc)\n\nconst Wrapper = styled(Card)`\n  width: 100%;\n  padding: 1rem;\n  display: flex;\n  background-color: ${({ theme }) => theme.bg0};\n  flex-direction: column;\n  > * {\n    font-size: 1rem;\n  }\n`\n\nconst DEFAULT_HEIGHT = 300\n\nexport type LineChartProps = {\n  data: any[]\n  color?: string | undefined\n  height?: number | undefined\n  minHeight?: number\n  setValue?: Dispatch<SetStateAction<number | undefined>> // used for value on hover\n  setLabel?: Dispatch<SetStateAction<string | undefined>> // used for label value\n  topLeft?: ReactNode | undefined\n  topRight?: ReactNode | undefined\n  bottomLeft?: ReactNode | undefined\n  bottomRight?: ReactNode | undefined\n} & React.HTMLAttributes<HTMLDivElement>\n\nconst LineChart = ({\n  data,\n  color = '#56B2A4',\n  setValue,\n  setLabel,\n  topLeft,\n  topRight,\n  bottomLeft,\n  bottomRight,\n  height = DEFAULT_HEIGHT,\n  minHeight = DEFAULT_HEIGHT,\n  ...rest\n}: LineChartProps) => {\n  // theming\n  const theme = useTheme()\n  const textColor = theme?.text2\n\n  // chart pointer\n  const chartRef = useRef<HTMLDivElement>(null)\n  const [chartCreated, setChart] = useState<IChartApi | undefined>()\n  const dataPrev = usePrevious(data)\n\n  // reset on new data\n  useEffect(() => {\n    if (dataPrev !== data && chartCreated) {\n      chartCreated.resize(0, 0)\n      setChart(undefined)\n    }\n  }, [data, dataPrev, chartCreated])\n\n  // for reseting value on hover exit\n  const currentValue = data[data.length - 1]?.value\n\n  const handleResize = useCallback(() => {\n    if (chartCreated && chartRef?.current?.parentElement) {\n      chartCreated.resize(chartRef.current.parentElement.clientWidth - 32, height)\n      chartCreated.timeScale().fitContent()\n      chartCreated.timeScale().scrollToPosition(0, false)\n    }\n  }, [chartCreated, chartRef, height])\n\n  // add event listener for resize\n  const isClient = typeof window === 'object'\n  useEffect(() => {\n    if (!isClient) {\n      return\n    }\n    window.addEventListener('resize', handleResize)\n    return () => window.removeEventListener('resize', handleResize)\n  }, [isClient, chartRef, handleResize]) // Empty array ensures that effect is only run on mount and unmount\n\n  // if chart not instantiated in canvas, create it\n  useEffect(() => {\n    if (!chartCreated && data && !!chartRef?.current?.parentElement) {\n      const chart = createChart(chartRef.current, {\n        height: height,\n        width: chartRef.current.parentElement.clientWidth - 32,\n        layout: {\n          backgroundColor: 'transparent',\n          textColor: '#565A69',\n          fontFamily: 'Inter var',\n        },\n        rightPriceScale: {\n          scaleMargins: {\n            top: 0.1,\n            bottom: 0.1,\n          },\n          drawTicks: false,\n          borderVisible: false,\n        },\n        timeScale: {\n          borderVisible: false,\n        },\n        watermark: {\n          color: 'rgba(0, 0, 0, 0)',\n        },\n        grid: {\n          horzLines: {\n            visible: false,\n          },\n          vertLines: {\n            visible: false,\n          },\n        },\n        crosshair: {\n          horzLine: {\n            visible: false,\n            labelVisible: false,\n          },\n          vertLine: {\n            visible: true,\n            style: 0,\n            width: 2,\n            color: '#505050',\n            labelVisible: false,\n          },\n        },\n      })\n      chart.timeScale().fitContent()\n      setChart(chart)\n    }\n  }, [color, chartCreated, currentValue, data, height, setValue, textColor, theme])\n\n  useEffect(() => {\n    if (chartCreated && data) {\n      const series = chartCreated.addAreaSeries({\n        lineColor: color,\n        topColor: darken(0.36, color),\n        bottomColor: theme?.bg0,\n        lineWidth: 2,\n        priceLineVisible: false,\n      })\n      series.setData(data)\n      chartCreated.timeScale().fitContent()\n      chartCreated.timeScale().scrollToRealTime()\n\n      series.applyOptions({\n        priceFormat: {\n          type: 'custom',\n          minMove: 0.02,\n          formatter: (price: any) => formatDollarAmount(price),\n        },\n      })\n\n      // update the title when hovering on the chart\n      chartCreated.subscribeCrosshairMove(function (param) {\n        if (\n          chartRef?.current &&\n          (param === undefined ||\n            param.time === undefined ||\n            (param && param.point && param.point.x < 0) ||\n            (param && param.point && param.point.x > chartRef.current.clientWidth) ||\n            (param && param.point && param.point.y < 0) ||\n            (param && param.point && param.point.y > height))\n        ) {\n          setValue && setValue(undefined)\n          setLabel && setLabel(undefined)\n        } else if (series && param) {\n          const price = parseFloat(param?.seriesPrices?.get(series)?.toString() ?? currentValue)\n          const time = param?.time as { day: number; year: number; month: number }\n          const timeString = dayjs(time.year + '-' + time.month + '-' + time.day).format('MMM D, YYYY')\n          setValue && setValue(price)\n          setLabel && timeString && setLabel(timeString)\n        }\n      })\n    }\n  }, [chartCreated, color, currentValue, data, height, setLabel, setValue, theme])\n\n  return (\n    <Wrapper $minHeight={minHeight}>\n      <RowBetween>\n        {topLeft ?? null}\n        {topRight ?? null}\n      </RowBetween>\n      <div ref={chartRef} id={'line-chart'} {...rest} />\n      <RowBetween>\n        {bottomLeft ?? null}\n        {bottomRight ?? null}\n      </RowBetween>\n    </Wrapper>\n  )\n}\n\nexport default LineChart\n"
  },
  {
    "path": "src/components/ListLogo/index.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\nimport useHttpLocations from '../../hooks/useHttpLocations'\n\nimport Logo from '../Logo'\n\nconst StyledListLogo = styled(Logo)<{ size: string }>`\n  width: ${({ size }) => size};\n  height: ${({ size }) => size};\n`\n\nexport default function ListLogo({\n  logoURI,\n  style,\n  size = '24px',\n  alt,\n}: {\n  logoURI: string\n  size?: string\n  style?: React.CSSProperties\n  alt?: string\n}) {\n  const srcs: string[] = useHttpLocations(logoURI)\n\n  return <StyledListLogo alt={alt} size={size} srcs={srcs} style={style} />\n}\n"
  },
  {
    "path": "src/components/Loader/index.tsx",
    "content": "import React from 'react'\nimport v3 from '../../assets/images/whitev3.svg'\nimport styled, { keyframes, css } from 'styled-components'\n\nconst rotate = keyframes`\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n`\n\nconst StyledSVG = styled.svg<{ size: string; stroke?: string }>`\n  animation: 2s ${rotate} linear infinite;\n  height: ${({ size }) => size};\n  width: ${({ size }) => size};\n  path {\n    stroke: ${({ stroke, theme }) => stroke ?? theme.primary1};\n  }\n`\n\n/**\n * Takes in custom size and stroke for circle color, default to primary color as fill,\n * need ...rest for layered styles on top\n */\nexport default function Loader({\n  size = '16px',\n  stroke,\n  ...rest\n}: {\n  size?: string\n  stroke?: string\n  [k: string]: any\n}) {\n  return (\n    <StyledSVG viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" size={size} stroke={stroke} {...rest}>\n      <path\n        d=\"M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 9.27455 20.9097 6.80375 19.1414 5\"\n        strokeWidth=\"2.5\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </StyledSVG>\n  )\n}\n\nconst pulse = keyframes`\n  0% { transform: scale(1); }\n  60% { transform: scale(1.1); }\n  100% { transform: scale(1); }\n`\n\nconst Wrapper = styled.div<{ fill: number; height?: string }>`\n  pointer-events: none;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: ${({ theme, fill }) => (fill ? 'black' : theme.bg0)};\n  height: 100%;\n  width: 100%;\n  ${(props) =>\n    props.fill && !props.height\n      ? css`\n          height: 100vh;\n        `\n      : css`\n          height: 180px;\n        `}\n`\n\nconst AnimatedImg = styled.div`\n  animation: ${pulse} 800ms linear infinite;\n  & > * {\n    width: 72px;\n  }\n`\n\nexport const LocalLoader = ({ fill }: { fill: boolean }) => {\n  return (\n    <Wrapper fill={fill ? 1 : 0}>\n      <AnimatedImg>\n        <img src={v3} alt=\"loading-icon\" />\n      </AnimatedImg>\n    </Wrapper>\n  )\n}\n\nconst loadingAnimation = keyframes`\n  0% {\n    background-position: 100% 50%;\n  }\n  100% {\n    background-position: 0% 50%;\n  }\n`\n\nexport const LoadingRows = styled.div`\n  display: grid;\n  min-width: 75%;\n  max-width: 100%;\n  grid-column-gap: 0.5em;\n  grid-row-gap: 0.8em;\n  grid-template-columns: repeat(1, 1fr);\n  & > div {\n    animation: ${loadingAnimation} 1.5s infinite;\n    animation-fill-mode: both;\n    background: linear-gradient(\n      to left,\n      ${({ theme }) => theme.bg1} 25%,\n      ${({ theme }) => theme.bg2} 50%,\n      ${({ theme }) => theme.bg1} 75%\n    );\n    background-size: 400%;\n    border-radius: 12px;\n    height: 2.4em;\n    will-change: background-position;\n  }\n  & > div:nth-child(4n + 1) {\n    grid-column: 1 / 3;\n  }\n  & > div:nth-child(4n) {\n    grid-column: 3 / 4;\n    margin-bottom: 2em;\n  }\n`\n"
  },
  {
    "path": "src/components/Logo/index.tsx",
    "content": "import React, { useState } from 'react'\nimport { HelpCircle } from 'react-feather'\nimport { ImageProps } from 'rebass'\nimport styled from 'styled-components'\n\nconst BAD_SRCS: { [tokenAddress: string]: true } = {}\n\nexport interface LogoProps extends Pick<ImageProps, 'style' | 'alt' | 'className'> {\n  srcs: string[]\n}\n\n/**\n * Renders an image by sequentially trying a list of URIs, and then eventually a fallback triangle alert\n */\nexport default function Logo({ srcs, alt, ...rest }: LogoProps) {\n  const [, refresh] = useState<number>(0)\n\n  const src: string | undefined = srcs.find((src) => !BAD_SRCS[src])\n\n  if (src) {\n    return (\n      <img\n        {...rest}\n        alt={alt}\n        src={src}\n        onError={() => {\n          if (src) BAD_SRCS[src] = true\n          refresh((i) => i + 1)\n        }}\n      />\n    )\n  }\n\n  return <HelpCircle {...rest} />\n}\n\nexport const GenericImageWrapper = styled.img<{ size?: string }>`\n  width: ${({ size }) => size ?? '20px'};\n  height: ${({ size }) => size ?? '20px'};\n`\n"
  },
  {
    "path": "src/components/Menu/NetworkDropdown.tsx",
    "content": "import { RowFixed, RowBetween } from 'components/Row'\nimport {\n  AvalancheNetworkInfo,\n  BNBNetworkInfo,\n  CeloNetworkInfo,\n  PolygonNetworkInfo,\n  SUPPORTED_NETWORK_VERSIONS,\n} from 'constants/networks'\nimport useTheme from 'hooks/useTheme'\nimport React, { useState, useRef } from 'react'\nimport { ChevronDown } from 'react-feather'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport styled from 'styled-components'\nimport { StyledInternalLink, TYPE } from 'theme'\nimport { useOnClickOutside } from 'hooks/useOnClickOutside'\nimport { AutoColumn } from 'components/Column'\nimport { EthereumNetworkInfo } from '../../constants/networks'\n\nconst Container = styled.div`\n  position: relative;\n  z-index: 40;\n`\n\nconst Wrapper = styled.div`\n  border-radius: 12px;\n  background-color: ${({ theme }) => theme.bg1};\n  padding: 6px 8px;\n  margin-right: 12px;\n\n  :hover {\n    cursor: pointer;\n    opacity: 0.7;\n  }\n`\n\nconst LogaContainer = styled.div`\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: center;\n`\n\nconst LogoWrapper = styled.img`\n  width: 20px;\n  height: 20px;\n`\n\nconst FlyOut = styled.div`\n  background-color: ${({ theme }) => theme.bg1};\n  position: absolute;\n  top: 40px;\n  left: 0;\n  border-radius: 12px;\n  padding: 16px;\n  width: 270px;\n`\n\nconst NetworkRow = styled(RowBetween)<{ active?: boolean; disabled?: boolean }>`\n  padding: 6px 8px;\n  background-color: ${({ theme, active }) => (active ? theme.bg2 : theme.bg1)};\n  border-radius: 8px;\n  opacity: ${({ disabled }) => (disabled ? '0.5' : 1)};\n  :hover {\n    cursor: ${({ disabled }) => (disabled ? 'initial' : 'pointer')};\n    opacity: ${({ disabled }) => (disabled ? 0.5 : 0.7)};\n  }\n`\n\nconst Badge = styled.div<{ $bgColor?: string }>`\n  background-color: ${({ theme, $bgColor }) => $bgColor ?? theme.bg4};\n  border-radius: 6px;\n  padding: 2px 6px;\n  font-size: 12px;\n  font-weight: 600;\n`\n\nconst GreenDot = styled.div`\n  height: 12px;\n  width: 12px;\n  margin-right: 12px;\n  background-color: ${({ theme }) => theme.green1};\n  border-radius: 50%;\n  position: absolute;\n  border: 2px solid black;\n  right: -16px;\n  bottom: -4px;\n`\n\nexport default function NetworkDropdown() {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const theme = useTheme()\n\n  const [showMenu, setShowMenu] = useState(false)\n\n  const node = useRef<HTMLDivElement>(null)\n  useOnClickOutside(node, () => setShowMenu(false))\n\n  return (\n    <Container ref={node}>\n      <Wrapper onClick={() => setShowMenu(!showMenu)}>\n        <RowFixed>\n          <LogoWrapper src={activeNetwork.imageURL} />\n          <TYPE.main fontSize=\"14px\" color={theme?.white} ml=\"8px\" mt=\"-2px\" mr=\"2px\" style={{ whiteSpace: 'nowrap' }}>\n            {activeNetwork.name}\n          </TYPE.main>\n          {[EthereumNetworkInfo, PolygonNetworkInfo, CeloNetworkInfo, BNBNetworkInfo, AvalancheNetworkInfo].includes(\n            activeNetwork,\n          ) ? null : (\n            <Badge $bgColor={activeNetwork.primaryColor} style={{ margin: '0 4px' }}>\n              L2\n            </Badge>\n          )}\n          <ChevronDown size=\"20px\" />\n        </RowFixed>\n      </Wrapper>\n      {showMenu && (\n        <FlyOut>\n          <AutoColumn $gap=\"16px\">\n            <TYPE.main color={theme?.text3} fontWeight={600} fontSize=\"16px\">\n              Select network\n            </TYPE.main>\n            {SUPPORTED_NETWORK_VERSIONS.map((n) => {\n              return (\n                <StyledInternalLink key={n.id} to={`${n === EthereumNetworkInfo ? '' : '/' + n.route}/`}>\n                  <NetworkRow\n                    onClick={() => {\n                      setShowMenu(false)\n                    }}\n                    active={activeNetwork.id === n.id}\n                  >\n                    <RowFixed>\n                      <LogaContainer>\n                        <LogoWrapper src={n.imageURL} />\n                        {activeNetwork.id === n.id && <GreenDot />}\n                      </LogaContainer>\n                      <TYPE.main ml=\"12px\" color={theme?.white}>\n                        {n.name}\n                      </TYPE.main>\n                    </RowFixed>\n                  </NetworkRow>\n                </StyledInternalLink>\n              )\n            })}\n          </AutoColumn>\n        </FlyOut>\n      )}\n    </Container>\n  )\n}\n"
  },
  {
    "path": "src/components/Menu/index.tsx",
    "content": "import React, { useRef, useState } from 'react'\nimport { BookOpen, Code, Info, MessageCircle } from 'react-feather'\nimport styled from 'styled-components'\nimport { ReactComponent as MenuIcon } from '../../assets/images/menu.svg'\nimport { useOnClickOutside } from '../../hooks/useOnClickOutside'\n\nimport { ExternalLink } from '../../theme'\n\nconst StyledMenuIcon = styled(MenuIcon)`\n  path {\n    stroke: ${({ theme }) => theme.text1};\n  }\n`\n\nconst StyledMenuButton = styled.button`\n  width: 100%;\n  height: 100%;\n  border: none;\n  background-color: transparent;\n  margin: 0;\n  padding: 0;\n  height: 35px;\n  background-color: ${({ theme }) => theme.bg3};\n\n  padding: 0.15rem 0.5rem;\n  border-radius: 0.5rem;\n\n  :hover,\n  :focus {\n    cursor: pointer;\n    outline: none;\n    background-color: ${({ theme }) => theme.bg4};\n  }\n\n  svg {\n    margin-top: 2px;\n  }\n`\n\nconst StyledMenu = styled.div`\n  margin-left: 0.5rem;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: relative;\n  border: none;\n  text-align: left;\n`\n\nconst MenuFlyout = styled.span`\n  min-width: 8.125rem;\n  background-color: ${({ theme }) => theme.bg3};\n  box-shadow:\n    0px 0px 1px rgba(0, 0, 0, 0.01),\n    0px 4px 8px rgba(0, 0, 0, 0.04),\n    0px 16px 24px rgba(0, 0, 0, 0.04),\n    0px 24px 32px rgba(0, 0, 0, 0.01);\n  border-radius: 12px;\n  padding: 0.5rem;\n  display: flex;\n  flex-direction: column;\n  font-size: 1rem;\n  position: absolute;\n  top: 2.6rem;\n  right: 0rem;\n  z-index: 1000;\n`\n\nconst MenuItem = styled(ExternalLink)`\n  flex: 1;\n  padding: 0.5rem 0.5rem;\n  color: ${({ theme }) => theme.text2};\n  :hover {\n    color: ${({ theme }) => theme.text1};\n    cursor: pointer;\n    text-decoration: none;\n    opacity: 0.6;\n  }\n  > svg {\n    margin-right: 8px;\n  }\n`\n\nconst CODE_LINK = 'https://github.com/Uniswap/uniswap-v3-info'\n\nexport default function Menu() {\n  const node = useRef<HTMLDivElement>(null)\n  const [isOpen, setOpen] = useState(false)\n\n  useOnClickOutside(node, isOpen ? () => setOpen(false) : undefined)\n\n  return (\n    <StyledMenu ref={node}>\n      <StyledMenuButton onClick={() => setOpen((open) => !open)}>\n        <StyledMenuIcon />\n      </StyledMenuButton>\n\n      {isOpen && (\n        <MenuFlyout>\n          <MenuItem id=\"link\" href=\"https://uniswap.org/\">\n            <Info size={14} />\n            About\n          </MenuItem>\n          <MenuItem id=\"link\" href=\"https://docs.uniswap.org/\">\n            <BookOpen size={14} />\n            Docs\n          </MenuItem>\n          <MenuItem id=\"link\" href={CODE_LINK}>\n            <Code size={14} />\n            Github\n          </MenuItem>\n          <MenuItem id=\"link\" href=\"https://discord.gg/FCfyBSbCU5\">\n            <MessageCircle size={14} />\n            Discord\n          </MenuItem>\n        </MenuFlyout>\n      )}\n    </StyledMenu>\n  )\n}\n"
  },
  {
    "path": "src/components/Modal/index.tsx",
    "content": "import React from 'react'\nimport styled, { css } from 'styled-components'\nimport { animated, useTransition, useSpring } from 'react-spring'\nimport { DialogOverlay, DialogContent } from '@reach/dialog'\nimport { isMobile } from 'react-device-detect'\nimport '@reach/dialog/styles.css'\nimport { transparentize } from 'polished'\nimport { useGesture } from 'react-use-gesture'\n\nconst AnimatedDialogOverlay = animated(DialogOverlay)\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst StyledDialogOverlay = styled(AnimatedDialogOverlay)`\n  &[data-reach-dialog-overlay] {\n    z-index: 2;\n    background-color: transparent;\n    overflow: hidden;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    background-color: ${({ theme }) => theme.modalBG};\n  }\n`\n\nconst AnimatedDialogContent = animated(DialogContent)\n\n// destructure to not pass custom props to Dialog DOM element\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst StyledDialogContent = styled(AnimatedDialogContent)<{\n  minHeight: number | false\n  maxHeight: number\n  mobile: boolean\n  isOpen?: boolean\n}>`\n  overflow-y: ${({ mobile }) => (mobile ? 'scroll' : 'hidden')};\n\n  &[data-reach-dialog-content] {\n    margin: 0 0 2rem 0;\n    background-color: ${({ theme }) => theme.bg1};\n    box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.95, theme.shadow1)};\n    padding: 0px;\n    width: 50vw;\n    overflow-y: ${({ mobile }) => (mobile ? 'scroll' : 'hidden')};\n    overflow-x: hidden;\n\n    align-self: ${({ mobile }) => (mobile ? 'flex-end' : 'center')};\n\n    max-width: 420px;\n    ${({ maxHeight }) =>\n      maxHeight &&\n      css`\n        max-height: ${maxHeight}vh;\n      `}\n    ${({ minHeight }) =>\n      minHeight &&\n      css`\n        min-height: ${minHeight}vh;\n      `}\n    display: flex;\n    border-radius: 20px;\n    ${({ theme }) => theme.mediaWidth.upToMedium`\n      width: 65vw;\n      margin: 0;\n    `}\n    ${({ theme, mobile }) => theme.mediaWidth.upToSmall`\n      width:  85vw;\n      ${\n        mobile &&\n        css`\n          width: 100vw;\n          border-radius: 20px;\n          border-bottom-left-radius: 0;\n          border-bottom-right-radius: 0;\n        `\n      }\n    `}\n  }\n`\n\ninterface ModalProps {\n  isOpen: boolean\n  onDismiss: () => void\n  minHeight?: number | false\n  maxHeight?: number\n  initialFocusRef?: React.RefObject<any>\n  children?: React.ReactNode\n}\n\nexport default function Modal({\n  isOpen,\n  onDismiss,\n  minHeight = false,\n  maxHeight = 90,\n  initialFocusRef,\n  children,\n}: ModalProps) {\n  const fadeTransition = useTransition(isOpen, null, {\n    config: { duration: 200 },\n    from: { opacity: 0 },\n    enter: { opacity: 1 },\n    leave: { opacity: 0 },\n  })\n\n  const [{ y }, set] = useSpring(() => ({ y: 0, config: { mass: 1, tension: 210, friction: 20 } }))\n  const bind = useGesture({\n    onDrag: (state) => {\n      set({\n        y: state.down ? state.movement[1] : 0,\n      })\n      if (state.movement[1] > 300 || (state.velocity > 3 && state.direction[1] > 0)) {\n        onDismiss()\n      }\n    },\n  })\n\n  return (\n    <>\n      {fadeTransition.map(\n        ({ item, key, props }) =>\n          item && (\n            <StyledDialogOverlay key={key} style={props} onDismiss={onDismiss} initialFocusRef={initialFocusRef}>\n              <StyledDialogContent\n                {...bind()}\n                minHeight={minHeight}\n                maxHeight={maxHeight}\n                mobile={isMobile}\n                style={\n                  isMobile ? { transform: y.interpolate((y) => `translateY(${(y as number) > 0 ? y : 0}px)`) } : {}\n                }\n              >\n                {/* prevents the automatic focusing of inputs on mobile by the reach dialog */}\n                {!initialFocusRef && isMobile ? <div tabIndex={1} /> : null}\n                {children}\n              </StyledDialogContent>\n            </StyledDialogOverlay>\n          ),\n      )}\n    </>\n  )\n}\n"
  },
  {
    "path": "src/components/NumericalInput/index.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\nimport { escapeRegExp } from '../../utils'\n\nconst StyledInput = styled.input<{ error?: boolean; fontSize?: string; align?: string }>`\n  color: ${({ error, theme }) => (error ? theme.red1 : theme.text1)};\n  width: 0;\n  position: relative;\n  font-weight: 500;\n  outline: none;\n  border: none;\n  flex: 1 1 auto;\n  background-color: ${({ theme }) => theme.bg1};\n  font-size: ${({ fontSize }) => fontSize ?? '24px'};\n  text-align: ${({ align }) => align && align};\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  padding: 0px;\n  -webkit-appearance: textfield;\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  [type='number'] {\n    -moz-appearance: textfield;\n  }\n\n  ::-webkit-outer-spin-button,\n  ::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n  }\n\n  ::placeholder {\n    color: ${({ theme }) => theme.text4};\n  }\n`\n\nconst inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n\nexport const Input = React.memo(function InnerInput({\n  value,\n  onUserInput,\n  placeholder,\n  prependSymbol,\n  ...rest\n}: {\n  value: string | number\n  onUserInput: (input: string) => void\n  error?: boolean\n  fontSize?: string\n  align?: 'right' | 'left'\n  prependSymbol?: string | undefined\n} & Omit<React.HTMLProps<HTMLInputElement>, 'ref' | 'onChange' | 'as'>) {\n  const enforcer = (nextUserInput: string) => {\n    if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {\n      onUserInput(nextUserInput)\n    }\n  }\n\n  return (\n    <StyledInput\n      {...rest}\n      value={prependSymbol && value ? prependSymbol + value : value}\n      onChange={(event) => {\n        if (prependSymbol) {\n          const value = event.target.value\n\n          // cut off prepended symbol\n          const formattedValue = value.toString().includes(prependSymbol)\n            ? value.toString().slice(1, value.toString().length + 1)\n            : value\n\n          // replace commas with periods, because uniswap exclusively uses period as the decimal separator\n          enforcer(formattedValue.replace(/,/g, '.'))\n        } else {\n          enforcer(event.target.value.replace(/,/g, '.'))\n        }\n      }}\n      // universal input options\n      inputMode=\"decimal\"\n      title=\"Token Amount\"\n      autoComplete=\"off\"\n      autoCorrect=\"off\"\n      // text-specific options\n      type=\"text\"\n      pattern=\"^[0-9]*[.,]?[0-9]*$\"\n      placeholder={placeholder || '0.0'}\n      minLength={1}\n      maxLength={79}\n      spellCheck=\"false\"\n    />\n  )\n})\n\nexport default Input\n\n// const inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n"
  },
  {
    "path": "src/components/Percent/index.tsx",
    "content": "import React from 'react'\nimport { TYPE } from 'theme'\nimport styled from 'styled-components'\n\nconst Wrapper = styled(TYPE.main)<{ fontWeight: number; fontSize: string; negative: boolean; neutral: boolean }>`\n  font-size: ${({ fontSize }) => fontSize};\n  font-weight: ${({ fontWeight }) => fontWeight};\n  color: ${({ theme, negative }) => (negative ? theme.red1 : theme.green1)};\n`\n\nexport interface LogoProps {\n  value: number | undefined\n  decimals?: number\n  fontSize?: string\n  fontWeight?: number\n  wrap?: boolean\n  simple?: boolean\n}\n\nexport default function Percent({\n  value,\n  decimals = 2,\n  fontSize = '16px',\n  fontWeight = 500,\n  wrap = false,\n  simple = false,\n  ...rest\n}: LogoProps) {\n  if (value === undefined || value === null) {\n    return (\n      <TYPE.main fontWeight={fontWeight} fontSize={fontSize}>\n        -\n      </TYPE.main>\n    )\n  }\n\n  const truncated = parseFloat(value.toFixed(decimals))\n\n  if (simple) {\n    return (\n      <Wrapper {...rest} fontWeight={fontWeight} fontSize={fontSize} negative={false} neutral={true}>\n        {Math.abs(value).toFixed(decimals)}%\n      </Wrapper>\n    )\n  }\n\n  return (\n    <Wrapper {...rest} fontWeight={fontWeight} fontSize={fontSize} negative={truncated < 0} neutral={truncated === 0}>\n      {wrap && '('}\n      {truncated < 0 && '↓'}\n      {truncated > 0 && '↑'}\n      {Math.abs(value).toFixed(decimals)}%{wrap && ')'}\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/Popover/index.tsx",
    "content": "import { Placement } from '@popperjs/core'\nimport { transparentize } from 'polished'\nimport React, { useCallback, useState } from 'react'\nimport { usePopper } from 'react-popper'\nimport styled from 'styled-components'\nimport useInterval from '../../hooks/useInterval'\nimport Portal from '@reach/portal'\n\nconst PopoverContainer = styled.div<{ $show: boolean }>`\n  z-index: 9999;\n\n  visibility: ${(props) => (props.$show ? 'visible' : 'hidden')};\n  opacity: ${(props) => (props.$show ? 1 : 0)};\n  transition:\n    visibility 150ms linear,\n    opacity 150ms linear;\n\n  background: ${({ theme }) => theme.bg2};\n  border: 1px solid ${({ theme }) => theme.bg3};\n  box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.9, theme.shadow1)};\n  color: ${({ theme }) => theme.text2};\n  border-radius: 8px;\n`\n\nconst ReferenceElement = styled.div`\n  display: inline-block;\n`\n\nconst Arrow = styled.div`\n  width: 8px;\n  height: 8px;\n  z-index: 9998;\n\n  ::before {\n    position: absolute;\n    width: 8px;\n    height: 8px;\n    z-index: 9998;\n\n    content: '';\n    border: 1px solid ${({ theme }) => theme.bg3};\n    transform: rotate(45deg);\n    background: ${({ theme }) => theme.bg2};\n  }\n\n  &.arrow-top {\n    bottom: -5px;\n    ::before {\n      border-top: none;\n      border-left: none;\n    }\n  }\n\n  &.arrow-bottom {\n    top: -5px;\n    ::before {\n      border-bottom: none;\n      border-right: none;\n    }\n  }\n\n  &.arrow-left {\n    right: -5px;\n\n    ::before {\n      border-bottom: none;\n      border-left: none;\n    }\n  }\n\n  &.arrow-right {\n    left: -5px;\n    ::before {\n      border-right: none;\n      border-top: none;\n    }\n  }\n`\n\nexport interface PopoverProps {\n  content: React.ReactNode\n  show: boolean\n  children: React.ReactNode\n  placement?: Placement\n}\n\nexport default function Popover({ content, show, children, placement = 'auto' }: PopoverProps) {\n  const [referenceElement, setReferenceElement] = useState<HTMLDivElement | null>(null)\n  const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(null)\n  const [arrowElement, setArrowElement] = useState<HTMLDivElement | null>(null)\n  const { styles, update, attributes } = usePopper(referenceElement, popperElement, {\n    placement,\n    strategy: 'fixed',\n    modifiers: [\n      { name: 'offset', options: { offset: [8, 8] } },\n      { name: 'arrow', options: { element: arrowElement } },\n    ],\n  })\n  const updateCallback = useCallback(() => {\n    update && update()\n  }, [update])\n  useInterval(updateCallback, show ? 100 : null)\n\n  return (\n    <>\n      <ReferenceElement ref={setReferenceElement as any}>{children}</ReferenceElement>\n      <Portal>\n        <PopoverContainer $show={show} ref={setPopperElement as any} style={styles.popper} {...attributes.popper}>\n          {content}\n          <Arrow\n            className={`arrow-${attributes.popper?.['data-popper-placement'] ?? ''}`}\n            ref={setArrowElement as any}\n            style={styles.arrow}\n            {...attributes.arrow}\n          />\n        </PopoverContainer>\n      </Portal>\n    </>\n  )\n}\n"
  },
  {
    "path": "src/components/Popups/ListUpdatePopup.tsx",
    "content": "import { diffTokenLists, TokenList } from '@uniswap/token-lists'\nimport React, { useCallback, useMemo } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { Text } from 'rebass'\nimport styled from 'styled-components'\nimport { AppDispatch } from '../../state'\nimport { useRemovePopup } from '../../state/application/hooks'\nimport { acceptListUpdate } from '../../state/lists/actions'\nimport { TYPE } from '../../theme'\nimport listVersionLabel from '../../utils/listVersionLabel'\nimport { ButtonSecondary } from '../Button'\nimport { AutoColumn } from '../Column'\nimport { AutoRow } from '../Row'\n\nexport const ChangesList = styled.ul`\n  max-height: 400px;\n  overflow: auto;\n`\n\nexport default function ListUpdatePopup({\n  popKey,\n  listUrl,\n  oldList,\n  newList,\n  auto,\n}: {\n  popKey: string\n  listUrl: string\n  oldList: TokenList\n  newList: TokenList\n  auto: boolean\n}) {\n  const removePopup = useRemovePopup()\n  const removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup])\n  const dispatch = useDispatch<AppDispatch>()\n\n  const handleAcceptUpdate = useCallback(() => {\n    if (auto) return\n    dispatch(acceptListUpdate(listUrl))\n    removeThisPopup()\n  }, [auto, dispatch, listUrl, removeThisPopup])\n\n  const {\n    added: tokensAdded,\n    changed: tokensChanged,\n    removed: tokensRemoved,\n  } = useMemo(() => {\n    return diffTokenLists(oldList.tokens, newList.tokens)\n  }, [newList.tokens, oldList.tokens])\n  const numTokensChanged = useMemo(\n    () =>\n      Object.keys(tokensChanged).reduce((memo, chainId: any) => memo + Object.keys(tokensChanged[chainId]).length, 0),\n    [tokensChanged],\n  )\n\n  return (\n    <AutoRow>\n      <AutoColumn style={{ flex: '1' }} $gap=\"8px\">\n        {auto ? (\n          <TYPE.body fontWeight={500}>\n            The token list &quot;{oldList.name}&quot; has been updated to{' '}\n            <strong>{listVersionLabel(newList.version)}</strong>.\n          </TYPE.body>\n        ) : (\n          <>\n            <div>\n              <Text>\n                An update is available for the token list &quot;{oldList.name}&quot; (\n                {listVersionLabel(oldList.version)} to {listVersionLabel(newList.version)}).\n              </Text>\n              <ChangesList>\n                {tokensAdded.length > 0 ? (\n                  <li>\n                    {tokensAdded.map((token, i) => (\n                      <React.Fragment key={`${token.chainId}-${token.address}`}>\n                        <strong title={token.address}>{token.symbol}</strong>\n                        {i === tokensAdded.length - 1 ? null : ', '}\n                      </React.Fragment>\n                    ))}{' '}\n                    added\n                  </li>\n                ) : null}\n                {tokensRemoved.length > 0 ? (\n                  <li>\n                    {tokensRemoved.map((token, i) => (\n                      <React.Fragment key={`${token.chainId}-${token.address}`}>\n                        <strong title={token.address}>{token.symbol}</strong>\n                        {i === tokensRemoved.length - 1 ? null : ', '}\n                      </React.Fragment>\n                    ))}{' '}\n                    removed\n                  </li>\n                ) : null}\n                {numTokensChanged > 0 ? <li>{numTokensChanged} tokens updated</li> : null}\n              </ChangesList>\n            </div>\n            <AutoRow>\n              <div style={{ flexGrow: 1, marginRight: 12 }}>\n                <ButtonSecondary onClick={handleAcceptUpdate}>Accept update</ButtonSecondary>\n              </div>\n              <div style={{ flexGrow: 1 }}>\n                <ButtonSecondary onClick={removeThisPopup}>Dismiss</ButtonSecondary>\n              </div>\n            </AutoRow>\n          </>\n        )}\n      </AutoColumn>\n    </AutoRow>\n  )\n}\n"
  },
  {
    "path": "src/components/Popups/PopupItem.tsx",
    "content": "import React, { useCallback, useContext, useEffect } from 'react'\nimport { X } from 'react-feather'\nimport { useSpring } from 'react-spring/web'\nimport styled, { ThemeContext } from 'styled-components'\nimport { animated } from 'react-spring'\nimport { PopupContent } from '../../state/application/actions'\nimport { useRemovePopup } from '../../state/application/hooks'\nimport ListUpdatePopup from './ListUpdatePopup'\n\nexport const StyledClose = styled(X)`\n  position: absolute;\n  right: 10px;\n  top: 10px;\n\n  :hover {\n    cursor: pointer;\n  }\n`\nexport const Popup = styled.div`\n  display: inline-block;\n  width: 100%;\n  padding: 1em;\n  background-color: ${({ theme }) => theme.bg1};\n  position: relative;\n  border-radius: 10px;\n  padding: 20px;\n  padding-right: 35px;\n  overflow: hidden;\n\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    min-width: 290px;\n    &:not(:last-of-type) {\n      margin-right: 20px;\n    }\n  `}\n`\nconst Fader = styled.div`\n  position: absolute;\n  bottom: 0px;\n  left: 0px;\n  width: 100%;\n  height: 2px;\n  background-color: ${({ theme }) => theme.bg3};\n`\n\nconst AnimatedFader = animated(Fader)\n\nexport default function PopupItem({\n  removeAfterMs,\n  content,\n  popKey,\n}: {\n  removeAfterMs: number | null\n  content: PopupContent\n  popKey: string\n}) {\n  const removePopup = useRemovePopup()\n  const removeThisPopup = useCallback(() => removePopup(popKey), [popKey, removePopup])\n  useEffect(() => {\n    if (removeAfterMs === null) return undefined\n\n    const timeout = setTimeout(() => {\n      removeThisPopup()\n    }, removeAfterMs)\n\n    return () => {\n      clearTimeout(timeout)\n    }\n  }, [removeAfterMs, removeThisPopup])\n\n  const theme = useContext(ThemeContext)\n\n  let popupContent\n  if ('listUpdate' in content) {\n    const {\n      listUpdate: { listUrl, oldList, newList, auto },\n    } = content\n    popupContent = <ListUpdatePopup popKey={popKey} listUrl={listUrl} oldList={oldList} newList={newList} auto={auto} />\n  }\n\n  const faderStyle = useSpring({\n    from: { width: '100%' },\n    to: { width: '0%' },\n    config: { duration: removeAfterMs ?? undefined },\n  })\n\n  return (\n    <Popup>\n      <StyledClose color={theme?.text2} onClick={removeThisPopup} />\n      {popupContent}\n      {removeAfterMs !== null ? <AnimatedFader style={faderStyle} /> : null}\n    </Popup>\n  )\n}\n"
  },
  {
    "path": "src/components/Popups/index.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\nimport { useActivePopups } from '../../state/application/hooks'\nimport { AutoColumn } from '../Column'\nimport PopupItem from './PopupItem'\nimport { useURLWarningVisible } from '../../state/user/hooks'\n\nconst MobilePopupWrapper = styled.div<{ height: string | number }>`\n  position: relative;\n  max-width: 100%;\n  height: ${({ height }) => height};\n  margin: ${({ height }) => (height ? '0 auto;' : 0)};\n  margin-bottom: ${({ height }) => (height ? '20px' : 0)};\n\n  display: none;\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    display: block;\n  `};\n`\n\nconst MobilePopupInner = styled.div`\n  height: 99%;\n  overflow-x: auto;\n  overflow-y: hidden;\n  display: flex;\n  flex-direction: row;\n  -webkit-overflow-scrolling: touch;\n  ::-webkit-scrollbar {\n    display: none;\n  }\n`\n\nconst FixedPopupColumn = styled(AutoColumn)<{ $extraPadding: boolean }>`\n  position: fixed;\n  top: ${({ $extraPadding }) => ($extraPadding ? '108px' : '88px')};\n  right: 1rem;\n  max-width: 355px !important;\n  width: 100%;\n  z-index: 3;\n\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    display: none;\n  `};\n`\n\nexport default function Popups() {\n  // get all popups\n  const activePopups = useActivePopups()\n\n  const urlWarningActive = useURLWarningVisible()\n\n  return (\n    <>\n      <FixedPopupColumn $gap=\"20px\" $extraPadding={urlWarningActive}>\n        {activePopups.map((item) => (\n          <PopupItem key={item.key} content={item.content} popKey={item.key} removeAfterMs={item.removeAfterMs} />\n        ))}\n      </FixedPopupColumn>\n      <MobilePopupWrapper height={activePopups?.length > 0 ? 'fit-content' : 0}>\n        <MobilePopupInner>\n          {activePopups // reverse so new items up front\n            .slice(0)\n            .reverse()\n            .map((item) => (\n              <PopupItem key={item.key} content={item.content} popKey={item.key} removeAfterMs={item.removeAfterMs} />\n            ))}\n        </MobilePopupInner>\n      </MobilePopupWrapper>\n    </>\n  )\n}\n"
  },
  {
    "path": "src/components/QuestionHelper/index.tsx",
    "content": "import React, { useCallback, useState } from 'react'\nimport { HelpCircle as Question } from 'react-feather'\nimport styled from 'styled-components'\nimport Tooltip from '../Tooltip'\n\nconst QuestionWrapper = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0.2rem;\n  border: none;\n  background: none;\n  outline: none;\n  cursor: default;\n  border-radius: 36px;\n  background-color: ${({ theme }) => theme.bg2};\n  color: ${({ theme }) => theme.text2};\n\n  :hover,\n  :focus {\n    opacity: 0.7;\n  }\n`\n\nconst LightQuestionWrapper = styled.div`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0.2rem;\n  border: none;\n  background: none;\n  outline: none;\n  cursor: default;\n  border-radius: 36px;\n  width: 24px;\n  height: 24px;\n  background-color: rgba(255, 255, 255, 0.1);\n  color: ${({ theme }) => theme.white};\n\n  :hover,\n  :focus {\n    opacity: 0.7;\n  }\n`\n\nconst QuestionMark = styled.span`\n  font-size: 1rem;\n`\n\nexport default function QuestionHelper({ text }: { text: string }) {\n  const [show, setShow] = useState<boolean>(false)\n\n  const open = useCallback(() => setShow(true), [setShow])\n  const close = useCallback(() => setShow(false), [setShow])\n\n  return (\n    <span style={{ marginLeft: 4 }}>\n      <Tooltip text={text} show={show}>\n        <QuestionWrapper onClick={open} onMouseEnter={open} onMouseLeave={close}>\n          <Question size={16} />\n        </QuestionWrapper>\n      </Tooltip>\n    </span>\n  )\n}\n\nexport function LightQuestionHelper({ text }: { text: string }) {\n  const [show, setShow] = useState<boolean>(false)\n\n  const open = useCallback(() => setShow(true), [setShow])\n  const close = useCallback(() => setShow(false), [setShow])\n\n  return (\n    <span style={{ marginLeft: 4 }}>\n      <Tooltip text={text} show={show}>\n        <LightQuestionWrapper onClick={open} onMouseEnter={open} onMouseLeave={close}>\n          <QuestionMark>?</QuestionMark>\n        </LightQuestionWrapper>\n      </Tooltip>\n    </span>\n  )\n}\n"
  },
  {
    "path": "src/components/Row/index.tsx",
    "content": "import styled from 'styled-components'\nimport { Box } from 'rebass/styled-components'\n\nconst Row = styled(Box)<{\n  width?: string\n  align?: string\n  justify?: string\n  padding?: string\n  border?: string\n  borderRadius?: string\n  gap?: string\n}>`\n  width: ${({ width }) => width ?? '100%'};\n  display: flex;\n  padding: 0;\n  align-items: ${({ align }) => align ?? 'center'};\n  justify-content: ${({ justify }) => justify ?? 'flex-start'};\n  padding: ${({ padding }) => padding};\n  border: ${({ border }) => border};\n  border-radius: ${({ borderRadius }) => borderRadius};\n  gap: ${({ gap }) => gap};\n`\n\nexport const RowBetween = styled(Row)`\n  justify-content: space-between;\n`\n\nexport const RowFlat = styled.div`\n  display: flex;\n  align-items: flex-end;\n`\n\nexport const AutoRow = styled(Row)<{ $gap?: string; justify?: string }>`\n  flex-wrap: wrap;\n  margin: ${({ $gap }) => $gap && `-${$gap}`};\n  justify-content: ${({ justify }) => justify && justify};\n\n  & > * {\n    margin: ${({ $gap }) => $gap} !important;\n  }\n`\n\nexport const RowFixed = styled(Row)<{ gap?: string; justify?: string }>`\n  width: fit-content;\n  margin: ${({ gap }) => gap && `-${gap}`};\n`\n\nexport const ResponsiveRow = styled(RowBetween)`\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    flex-direction: column;\n    row-gap: 1rem;\n  `};\n`\n\nexport default Row\n"
  },
  {
    "path": "src/components/Search/index.tsx",
    "content": "import React, { useRef, useCallback, useState, useEffect, useMemo } from 'react'\nimport styled from 'styled-components'\nimport Row, { RowFixed } from 'components/Row'\nimport { HideSmall, TYPE } from 'theme'\nimport Hotkeys from 'react-hot-keys'\nimport { useFetchSearchResults } from 'data/search'\nimport { AutoColumn } from 'components/Column'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { formatDollarAmount } from 'utils/numbers'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport { GreyBadge } from 'components/Card'\nimport { feeTierPercent } from 'utils'\nimport { useSavedTokens, useSavedPools } from 'state/user/hooks'\nimport { SavedIcon } from 'components/Button'\nimport { useTokenDatas } from 'state/tokens/hooks'\nimport { usePoolDatas } from 'state/pools/hooks'\nimport HoverInlineText from 'components/HoverInlineText'\nimport { TOKEN_HIDE, POOL_HIDE } from '../../constants/index'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { networkPrefix } from 'utils/networkPrefix'\nimport { useNavigate } from 'react-router-dom'\n\nconst Container = styled.div`\n  position: relative;\n  z-index: 30;\n  width: 100%;\n`\n\nconst Wrapper = styled(Row)`\n  background-color: ${({ theme }) => theme.black};\n  padding: 10px 16px;\n  width: 500px;\n  height: 38px;\n  border-radius: 20px;\n  position: relative;\n  z-index: 9999;\n\n  @media (max-width: 1080px) {\n    width: 100%;\n  }\n`\n\nconst StyledInput = styled.input`\n  position: relative;\n  display: flex;\n  align-items: center;\n  white-space: nowrap;\n  background: none;\n  border: none;\n  width: 100%;\n  font-size: 16px;\n  outline: none;\n  color: ${({ theme }) => theme.text1};\n\n  ::placeholder {\n    color: ${({ theme }) => theme.text3};\n    font-size: 16px;\n  }\n\n  @media screen and (max-width: 640px) {\n    ::placeholder {\n      font-size: 1rem;\n    }\n  }\n`\n\nconst Menu = styled.div<{ $hide: boolean }>`\n  display: flex;\n  flex-direction: column;\n  z-index: 9999;\n  width: 800px;\n  top: 50px;\n  max-height: 600px;\n  overflow: auto;\n  right: 0;\n  padding: 1.5rem;\n  padding-bottom: 1.5rem;\n  position: absolute;\n  background: ${({ theme }) => theme.bg0};\n  border-radius: 8px;\n  box-shadow:\n    0px 0px 1px rgba(0, 0, 0, 0.04),\n    0px 4px 8px rgba(0, 0, 0, 0.04),\n    0px 16px 24px rgba(0, 0, 0, 0.04),\n    0px 24px 32px rgba(0, 0, 0, 0.04);\n  display: ${({ $hide }) => $hide && 'none'};\n  border: 1px solid ${({ theme }) => theme.pink1};\n\n  ${({ theme }) => theme.mediaWidth.upToMedium`\n    position: absolute;\n    margin-top: 4px;\n    z-index: 9999;\n    width: 100%;\n    max-height: 400px;\n  `};\n`\n\nconst Blackout = styled.div`\n  position: absolute;\n  min-height: 100vh;\n  width: 100vw;\n  z-index: -40;\n  background-color: black;\n  opacity: 0.7;\n  left: 0;\n  top: 0;\n`\n\nconst ResponsiveGrid = styled.div`\n  display: grid;\n  grid-gap: 1em;\n  grid-template-columns: 1.5fr repeat(3, 1fr);\n  align-items: center;\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    grid-template-columns: 1fr;\n  `};\n`\n\nconst Break = styled.div`\n  height: 1px;\n  background-color: ${({ theme }) => theme.bg1};\n  width: 100%;\n`\n\nconst HoverText = styled.div<{ $hide?: boolean | undefined }>`\n  color: ${({ theme }) => theme.blue1};\n  display: ${({ $hide = false }) => $hide && 'none'};\n  :hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n`\n\nconst HoverRowLink = styled.div`\n  :hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n`\n\nconst OptionButton = styled.div<{ $enabled: boolean }>`\n  width: fit-content;\n  padding: 4px 8px;\n  border-radius: 8px;\n  display: flex;\n  font-size: 12px;\n  font-weight: 600;\n  margin-right: 10px;\n  justify-content: center;\n  align-items: center;\n  background-color: ${({ theme, $enabled }) => ($enabled ? theme.pink1 : 'transparent')};\n  color: ${({ theme, $enabled }) => ($enabled ? theme.white : theme.pink1)};\n  :hover {\n    opacity: 0.6;\n    cursor: pointer;\n  }\n`\n\nconst Search = ({ ...rest }: React.HTMLAttributes<HTMLDivElement>) => {\n  const navigate = useNavigate()\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  const ref = useRef<HTMLInputElement>(null)\n  const menuRef = useRef<HTMLDivElement>(null)\n  const textRef = useRef<HTMLDivElement>(null)\n\n  const handleDown = useCallback(() => {\n    if (ref != null && ref.current !== null) {\n      ref.current.focus()\n    }\n  }, [])\n\n  const [focused, setFocused] = useState<boolean>(false)\n  const [showMenu, setShowMenu] = useState(false)\n  const [value, setValue] = useState('')\n\n  const { tokens, pools } = useFetchSearchResults(value)\n\n  useEffect(() => {\n    if (value !== '') {\n      setFocused(true)\n    } else {\n      setFocused(false)\n    }\n  }, [value])\n\n  const [tokensShown, setTokensShown] = useState(3)\n  const [poolsShown, setPoolsShown] = useState(3)\n\n  const handleClick = (e: any) => {\n    if (!(menuRef.current && menuRef.current.contains(e.target)) && !(ref.current && ref.current.contains(e.target))) {\n      setPoolsShown(3)\n      setTokensShown(3)\n      setShowMenu(false)\n    }\n  }\n\n  useEffect(() => {\n    document.addEventListener('click', handleClick)\n    return () => {\n      document.removeEventListener('click', handleClick)\n    }\n  })\n\n  // watchlist\n  const [savedTokens, addSavedToken] = useSavedTokens()\n  const [savedPools, addSavedPool] = useSavedPools()\n\n  const handleNav = (to: string) => {\n    setShowMenu(false)\n    setPoolsShown(3)\n    setTokensShown(3)\n    navigate(to)\n  }\n\n  // get date for watchlist\n  const watchListTokenData = useTokenDatas(savedTokens)\n  const watchListPoolData = usePoolDatas(savedPools)\n\n  // filter on view\n  const [showWatchlist, setShowWatchlist] = useState(false)\n  const tokensForList = useMemo(\n    () => (showWatchlist ? watchListTokenData ?? [] : tokens.sort((t0, t1) => (t0.volumeUSD > t1.volumeUSD ? -1 : 1))),\n    [showWatchlist, tokens, watchListTokenData],\n  )\n  const poolForList = useMemo(\n    () => (showWatchlist ? watchListPoolData ?? [] : pools.sort((p0, p1) => (p0.volumeUSD > p1.volumeUSD ? -1 : 1))),\n    [pools, showWatchlist, watchListPoolData],\n  )\n\n  return (\n    <Hotkeys keyName=\"command+/\" onKeyDown={handleDown}>\n      {showMenu ? <Blackout /> : null}\n      <Container>\n        <Wrapper {...rest}>\n          <StyledInput\n            type=\"text\"\n            value={value}\n            onChange={(e) => {\n              setValue(e.target.value)\n            }}\n            placeholder=\"Search pools or tokens\"\n            ref={ref}\n            onFocus={() => {\n              setFocused(true)\n              setShowMenu(true)\n            }}\n            onBlur={() => setFocused(false)}\n          />\n          {!focused && <TYPE.gray pl=\"2px\">⌘/</TYPE.gray>}\n        </Wrapper>\n        <Menu $hide={!showMenu} ref={menuRef}>\n          <AutoColumn $gap=\"lg\">\n            <AutoColumn $gap=\"sm\">\n              <RowFixed>\n                <OptionButton $enabled={!showWatchlist} onClick={() => setShowWatchlist(false)}>\n                  Search\n                </OptionButton>\n                <OptionButton $enabled={showWatchlist} onClick={() => setShowWatchlist(true)}>\n                  Watchlist\n                </OptionButton>\n              </RowFixed>\n            </AutoColumn>\n            <ResponsiveGrid>\n              <TYPE.main>Tokens</TYPE.main>\n              <HideSmall>\n                <TYPE.main textAlign=\"end\" fontSize=\"12px\">\n                  Volume 24H\n                </TYPE.main>\n              </HideSmall>\n              <HideSmall>\n                <TYPE.main textAlign=\"end\" fontSize=\"12px\">\n                  TVL\n                </TYPE.main>\n              </HideSmall>\n              <HideSmall>\n                <TYPE.main textAlign=\"end\" fontSize=\"12px\">\n                  Price\n                </TYPE.main>\n              </HideSmall>\n            </ResponsiveGrid>\n            {tokensForList\n              .filter((t) => !TOKEN_HIDE[activeNetwork.id].includes(t.address))\n              .slice(0, tokensShown)\n              .map((t, i) => {\n                return (\n                  <HoverRowLink onClick={() => handleNav(networkPrefix(activeNetwork) + 'tokens/' + t.address)} key={i}>\n                    <ResponsiveGrid>\n                      <RowFixed>\n                        <CurrencyLogo address={t.address} />\n                        <TYPE.label ml=\"10px\">\n                          <HoverInlineText text={`${t.name} (${t.symbol})`} />{' '}\n                        </TYPE.label>\n                        <SavedIcon\n                          id=\"watchlist-icon\"\n                          size={'16px'}\n                          style={{ marginLeft: '8px' }}\n                          fill={savedTokens.includes(t.address)}\n                          onClick={(e) => {\n                            e.stopPropagation()\n                            addSavedToken(t.address)\n                          }}\n                        />\n                      </RowFixed>\n                      <HideSmall>\n                        <TYPE.label textAlign=\"end\">{formatDollarAmount(t.volumeUSD)}</TYPE.label>\n                      </HideSmall>\n                      <HideSmall>\n                        <TYPE.label textAlign=\"end\">{formatDollarAmount(t.tvlUSD)}</TYPE.label>\n                      </HideSmall>\n                      <HideSmall>\n                        <TYPE.label textAlign=\"end\">{formatDollarAmount(t.priceUSD)}</TYPE.label>\n                      </HideSmall>\n                    </ResponsiveGrid>\n                  </HoverRowLink>\n                )\n              })}\n            {tokensForList.length === 0 ? (\n              <TYPE.main>{showWatchlist ? 'Saved tokens will appear here' : 'No results'}</TYPE.main>\n            ) : null}\n            <HoverText\n              onClick={() => {\n                setTokensShown(tokensShown + 5)\n              }}\n              $hide={!(tokensForList.length > 3 && tokensForList.length >= tokensShown)}\n              ref={textRef}\n            >\n              See more...\n            </HoverText>\n            <Break />\n            <ResponsiveGrid>\n              <TYPE.main>Pools</TYPE.main>\n              <HideSmall>\n                <TYPE.main textAlign=\"end\" fontSize=\"12px\">\n                  Volume 24H\n                </TYPE.main>\n              </HideSmall>\n              <HideSmall>\n                <TYPE.main textAlign=\"end\" fontSize=\"12px\">\n                  TVL\n                </TYPE.main>\n              </HideSmall>\n              <HideSmall>\n                <TYPE.main textAlign=\"end\" fontSize=\"12px\">\n                  Price\n                </TYPE.main>\n              </HideSmall>\n            </ResponsiveGrid>\n            {poolForList\n              .filter((p) => !POOL_HIDE[activeNetwork.id].includes(p.address))\n              .slice(0, poolsShown)\n              .map((p, i) => {\n                return (\n                  <HoverRowLink onClick={() => handleNav(networkPrefix(activeNetwork) + 'pools/' + p.address)} key={i}>\n                    <ResponsiveGrid key={i}>\n                      <RowFixed>\n                        <DoubleCurrencyLogo address0={p.token0.address} address1={p.token1.address} />\n                        <TYPE.label ml=\"10px\" style={{ whiteSpace: 'nowrap' }}>\n                          <HoverInlineText maxCharacters={12} text={`${p.token0.symbol} / ${p.token1.symbol}`} />\n                        </TYPE.label>\n                        <GreyBadge ml=\"10px\">{feeTierPercent(p.feeTier)}</GreyBadge>\n                        <SavedIcon\n                          id=\"watchlist-icon\"\n                          size={'16px'}\n                          style={{ marginLeft: '10px' }}\n                          fill={savedPools.includes(p.address)}\n                          onClick={(e) => {\n                            e.stopPropagation()\n                            addSavedPool(p.address)\n                          }}\n                        />\n                      </RowFixed>\n                      <HideSmall>\n                        <TYPE.label textAlign=\"end\">{formatDollarAmount(p.volumeUSD)}</TYPE.label>\n                      </HideSmall>\n                      <HideSmall>\n                        <TYPE.label textAlign=\"end\">{formatDollarAmount(p.tvlUSD)}</TYPE.label>\n                      </HideSmall>\n                      <HideSmall>\n                        <TYPE.label textAlign=\"end\">{formatDollarAmount(p.token0Price)}</TYPE.label>\n                      </HideSmall>\n                    </ResponsiveGrid>\n                  </HoverRowLink>\n                )\n              })}\n            {poolForList.length === 0 ? (\n              <TYPE.main>{showWatchlist ? 'Saved pools will appear here' : 'No results'}</TYPE.main>\n            ) : null}\n            <HoverText\n              onClick={() => {\n                setPoolsShown(poolsShown + 5)\n              }}\n              $hide={!(poolForList.length > 3 && poolForList.length >= poolsShown)}\n              ref={textRef}\n            >\n              See more...\n            </HoverText>\n          </AutoColumn>\n        </Menu>\n      </Container>\n    </Hotkeys>\n  )\n}\n\nexport default Search\n"
  },
  {
    "path": "src/components/Text/index.ts",
    "content": "import styled from 'styled-components'\nimport { TYPE } from 'theme'\n\n// responsive text\nexport const Label = styled(TYPE.label)<{ end?: number }>`\n  display: flex;\n  font-size: 16px;\n  font-weight: 400;\n  justify-content: ${({ end }) => (end ? 'flex-end' : 'flex-start')};\n  align-items: center;\n  font-variant-numeric: tabular-nums;\n  @media screen and (max-width: 640px) {\n    font-size: 14px;\n  }\n`\n\nexport const ClickableText = styled(Label)`\n  text-align: end;\n  &:hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n  user-select: none;\n  @media screen and (max-width: 640px) {\n    font-size: 12px;\n  }\n`\n"
  },
  {
    "path": "src/components/Toggle/ListToggle.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\nimport { TYPE } from '../../theme'\n\nconst Wrapper = styled.button<{ isActive?: boolean; activeElement?: boolean }>`\n  border-radius: 20px;\n  border: none;\n  background: ${({ theme }) => theme.bg1};\n  display: flex;\n  width: fit-content;\n  cursor: pointer;\n  outline: none;\n  padding: 0.4rem 0.4rem;\n  align-items: center;\n`\n\nconst ToggleElement = styled.span<{ isActive?: boolean; bgColor?: string }>`\n  border-radius: 50%;\n  height: 24px;\n  width: 24px;\n  background-color: ${({ isActive, bgColor, theme }) => (isActive ? bgColor : theme.bg4)};\n  :hover {\n    opacity: 0.8;\n  }\n`\n\nconst StatusText = styled(TYPE.main)<{ isActive?: boolean }>`\n  margin: 0 10px;\n  width: 24px;\n  color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text3)};\n`\n\nexport interface ToggleProps {\n  id?: string\n  isActive: boolean\n  bgColor: string\n  toggle: () => void\n}\n\nexport default function ListToggle({ id, isActive, bgColor, toggle }: ToggleProps) {\n  return (\n    <Wrapper id={id} isActive={isActive} onClick={toggle}>\n      {isActive && (\n        <StatusText fontWeight=\"600\" margin=\"0 6px\" isActive={true}>\n          ON\n        </StatusText>\n      )}\n      <ToggleElement isActive={isActive} bgColor={bgColor} />\n      {!isActive && (\n        <StatusText fontWeight=\"600\" margin=\"0 6px\" isActive={false}>\n          OFF\n        </StatusText>\n      )}\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/Toggle/MultiToggle.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\n\nexport const ToggleWrapper = styled.button<{ width?: string }>`\n  display: flex;\n  align-items: center;\n  width: ${({ width }) => width ?? '100%'}\n  padding: 1px;\n  background: ${({ theme }) => theme.bg0};\n  border-radius: 8px;\n  border: ${({ theme }) => '2px solid ' + theme.bg2};\n  cursor: pointer;\n  outline: none;\n`\n\nexport const ToggleElement = styled.span<{ isActive?: boolean; fontSize?: string }>`\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 4px 0.5rem;\n  border-radius: 6px;\n  justify-content: center;\n  height: 100%;\n  background: ${({ theme, isActive }) => (isActive ? theme.bg2 : 'none')};\n  color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text3)};\n  font-size: ${({ fontSize }) => fontSize ?? '1rem'};\n  font-weight: 500;\n  :hover {\n    user-select: initial;\n    color: ${({ theme, isActive }) => (isActive ? theme.text2 : theme.text3)};\n  }\n`\n\nexport interface ToggleProps {\n  options: string[]\n  activeIndex: number\n  toggle: (index: number) => void\n  id?: string\n  width?: string\n}\n\nexport default function MultiToggle({ id, options, activeIndex, toggle, width }: ToggleProps) {\n  return (\n    <ToggleWrapper id={id} width={width}>\n      {options.map((option, index) => (\n        <ToggleElement key={id + '-' + index} isActive={index === activeIndex} onClick={() => toggle(index)}>\n          {option}\n        </ToggleElement>\n      ))}\n    </ToggleWrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/Toggle/index.tsx",
    "content": "import React from 'react'\nimport styled from 'styled-components'\n\nconst ToggleElement = styled.span<{ isActive?: boolean; isOnSwitch?: boolean }>`\n  padding: 0.25rem 0.5rem;\n  border-radius: 14px;\n  background: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.primary1 : theme.text4) : 'none')};\n  color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.text2) : theme.text3)};\n  font-size: 1rem;\n  font-weight: 400;\n\n  padding: 0.35rem 0.6rem;\n  border-radius: 12px;\n  background: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.primary1 : theme.text4) : 'none')};\n  color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.text2) : theme.text2)};\n  font-size: 1rem;\n  font-weight: ${({ isOnSwitch }) => (isOnSwitch ? '500' : '400')};\n  :hover {\n    user-select: ${({ isOnSwitch }) => (isOnSwitch ? 'none' : 'initial')};\n    background: ${({ theme, isActive, isOnSwitch }) =>\n      isActive ? (isOnSwitch ? theme.primary1 : theme.text3) : 'none'};\n    color: ${({ theme, isActive, isOnSwitch }) => (isActive ? (isOnSwitch ? theme.white : theme.text2) : theme.text3)};\n  }\n`\n\nconst StyledToggle = styled.button<{ isActive?: boolean; activeElement?: boolean }>`\n  border-radius: 12px;\n  border: none;\n  background: ${({ theme }) => theme.bg3};\n  display: flex;\n  width: fit-content;\n  cursor: pointer;\n  outline: none;\n  padding: 0;\n`\n\nexport interface ToggleProps {\n  id?: string\n  isActive: boolean\n  toggle: () => void\n}\n\nexport default function Toggle({ id, isActive, toggle }: ToggleProps) {\n  return (\n    <StyledToggle id={id} isActive={isActive} onClick={toggle}>\n      <ToggleElement isActive={isActive} isOnSwitch={true}>\n        On\n      </ToggleElement>\n      <ToggleElement isActive={!isActive} isOnSwitch={false}>\n        Off\n      </ToggleElement>\n    </StyledToggle>\n  )\n}\n\nexport const ToggleWrapper = styled.button<{ width?: string }>`\n  display: flex;\n  align-items: center;\n  width: ${({ width }) => width ?? '100%'}\n  padding: 1px;\n  background: ${({ theme }) => theme.bg2};\n  border-radius: 12px;\n  border: ${({ theme }) => '2px solid ' + theme.bg2};\n  cursor: pointer;\n  outline: none;\n  color: ${({ theme }) => theme.text2};\n\n`\n\nexport const ToggleElementFree = styled.span<{ isActive?: boolean; fontSize?: string }>`\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 2px 10px;\n  border-radius: 12px;\n  justify-content: center;\n  height: 100%;\n  background: ${({ theme, isActive }) => (isActive ? theme.black : 'none')};\n  color: ${({ theme, isActive }) => (isActive ? theme.text1 : theme.text2)};\n  font-size: ${({ fontSize }) => fontSize ?? '1rem'};\n  font-weight: 600;\n  white-space: nowrap;\n  :hover {\n    user-select: initial;\n    color: ${({ theme, isActive }) => (isActive ? theme.text2 : theme.text3)};\n  }\n  margin-top: 0.5px;\n`\n"
  },
  {
    "path": "src/components/Tooltip/index.tsx",
    "content": "import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport Popover, { PopoverProps } from '../Popover'\n\nconst TooltipContainer = styled.div`\n  width: 228px;\n  padding: 0.6rem 1rem;\n  line-height: 150%;\n  font-weight: 400;\n`\n\ninterface TooltipProps extends Omit<PopoverProps, 'content'> {\n  text: string\n}\n\nexport default function Tooltip({ text, ...rest }: TooltipProps) {\n  return <Popover content={<TooltipContainer>{text}</TooltipContainer>} {...rest} />\n}\n\nexport function MouseoverTooltip({ children, ...rest }: Omit<TooltipProps, 'show'>) {\n  const [show, setShow] = useState(false)\n  const open = useCallback(() => setShow(true), [setShow])\n  const close = useCallback(() => setShow(false), [setShow])\n  return (\n    <Tooltip {...rest} show={show}>\n      <div onMouseEnter={open} onMouseLeave={close}>\n        {children}\n      </div>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "src/components/TransactionsTable/index.tsx",
    "content": "import React, { useCallback, useState, useMemo, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { DarkGreyCard } from 'components/Card'\nimport Loader from 'components/Loader'\nimport { AutoColumn } from 'components/Column'\nimport { formatDollarAmount, formatAmount } from 'utils/numbers'\nimport { shortenAddress, getExplorerLink, ExplorerDataType } from 'utils'\nimport { Label, ClickableText } from 'components/Text'\nimport { Transaction, TransactionType } from 'types'\nimport { formatTime } from 'utils/date'\nimport { RowFixed } from 'components/Row'\nimport { ExternalLink, TYPE } from 'theme'\nimport { PageButtons, Arrow, Break } from 'components/shared'\nimport useTheme from 'hooks/useTheme'\nimport HoverInlineText from 'components/HoverInlineText'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { OptimismNetworkInfo } from 'constants/networks'\nimport { ChainId } from '@uniswap/sdk-core'\n\nconst Wrapper = styled(DarkGreyCard)`\n  width: 100%;\n`\n\nconst ResponsiveGrid = styled.div`\n  display: grid;\n  grid-gap: 1em;\n  align-items: center;\n\n  grid-template-columns: 1.5fr repeat(5, 1fr);\n\n  @media screen and (max-width: 940px) {\n    grid-template-columns: 1.5fr repeat(4, 1fr);\n    & > *:nth-child(5) {\n      display: none;\n    }\n  }\n\n  @media screen and (max-width: 800px) {\n    grid-template-columns: 1.5fr repeat(2, 1fr);\n    & > *:nth-child(5) {\n      display: none;\n    }\n    & > *:nth-child(3) {\n      display: none;\n    }\n    & > *:nth-child(4) {\n      display: none;\n    }\n  }\n\n  @media screen and (max-width: 500px) {\n    grid-template-columns: 1.5fr repeat(1, 1fr);\n    & > *:nth-child(5) {\n      display: none;\n    }\n    & > *:nth-child(3) {\n      display: none;\n    }\n    & > *:nth-child(4) {\n      display: none;\n    }\n    & > *:nth-child(2) {\n      display: none;\n    }\n  }\n`\n\nconst SortText = styled.button<{ $active: boolean }>`\n  cursor: pointer;\n  font-weight: ${({ $active }) => ($active ? 500 : 400)};\n  margin-right: 0.75rem !important;\n  border: none;\n  background-color: transparent;\n  font-size: 1rem;\n  padding: 0px;\n  color: ${({ $active, theme }) => ($active ? theme.text1 : theme.text3)};\n  outline: none;\n  @media screen and (max-width: 600px) {\n    font-size: 14px;\n  }\n`\n\nconst SORT_FIELD = {\n  amountUSD: 'amountUSD',\n  timestamp: 'timestamp',\n  sender: 'sender',\n  amountToken0: 'amountToken0',\n  amountToken1: 'amountToken1',\n}\n\nconst DataRow = ({ transaction, color }: { transaction: Transaction; color?: string }) => {\n  const abs0 = Math.abs(transaction.amountToken0)\n  const abs1 = Math.abs(transaction.amountToken1)\n  const outputTokenSymbol = transaction.amountToken0 < 0 ? transaction.token0Symbol : transaction.token1Symbol\n  const inputTokenSymbol = transaction.amountToken1 < 0 ? transaction.token0Symbol : transaction.token1Symbol\n  const [activeNetwork] = useActiveNetworkVersion()\n  const theme = useTheme()\n\n  return (\n    <ResponsiveGrid>\n      <ExternalLink href={getExplorerLink(ChainId.MAINNET, transaction.hash, ExplorerDataType.TRANSACTION)}>\n        <Label color={color ?? theme?.blue1} fontWeight={400}>\n          {transaction.type === TransactionType.MINT\n            ? `Add ${transaction.token0Symbol} and ${transaction.token1Symbol}`\n            : transaction.type === TransactionType.SWAP\n            ? `Swap ${inputTokenSymbol} for ${outputTokenSymbol}`\n            : `Remove ${transaction.token0Symbol} and ${transaction.token1Symbol}`}\n        </Label>\n      </ExternalLink>\n      <Label end={1} fontWeight={400}>\n        {formatDollarAmount(transaction.amountUSD)}\n      </Label>\n      <Label end={1} fontWeight={400}>\n        <HoverInlineText text={`${formatAmount(abs0)}  ${transaction.token0Symbol}`} maxCharacters={16} />\n      </Label>\n      <Label end={1} fontWeight={400}>\n        <HoverInlineText text={`${formatAmount(abs1)}  ${transaction.token1Symbol}`} maxCharacters={16} />\n      </Label>\n      <Label end={1} fontWeight={400}>\n        <ExternalLink\n          href={getExplorerLink(ChainId.MAINNET, transaction.sender, ExplorerDataType.ADDRESS)}\n          style={{ color: color ?? theme?.blue1 }}\n        >\n          {shortenAddress(transaction.sender)}\n        </ExternalLink>\n      </Label>\n      <Label end={1} fontWeight={400}>\n        {formatTime(transaction.timestamp, activeNetwork === OptimismNetworkInfo ? 8 : 0)}\n      </Label>\n    </ResponsiveGrid>\n  )\n}\n\nexport default function TransactionTable({\n  transactions,\n  maxItems = 10,\n  color,\n}: {\n  transactions: Transaction[]\n  maxItems?: number\n  color?: string\n}) {\n  // theming\n  const theme = useTheme()\n\n  // for sorting\n  const [sortField, setSortField] = useState(SORT_FIELD.timestamp)\n  const [sortDirection, setSortDirection] = useState<boolean>(true)\n\n  // pagination\n  const [page, setPage] = useState(1)\n  const [maxPage, setMaxPage] = useState(1)\n\n  useEffect(() => {\n    let extraPages = 1\n    if (transactions.length % maxItems === 0) {\n      extraPages = 0\n    }\n    setMaxPage(Math.floor(transactions.length / maxItems) + extraPages)\n  }, [maxItems, transactions])\n\n  // filter on txn type\n  const [txFilter, setTxFilter] = useState<TransactionType | undefined>(undefined)\n\n  const sortedTransactions = useMemo(() => {\n    return transactions\n      ? transactions\n          .slice()\n          .sort((a, b) => {\n            if (a && b) {\n              return a[sortField as keyof Transaction] > b[sortField as keyof Transaction]\n                ? (sortDirection ? -1 : 1) * 1\n                : (sortDirection ? -1 : 1) * -1\n            } else {\n              return -1\n            }\n          })\n          .filter((x) => {\n            return txFilter === undefined || x.type === txFilter\n          })\n          .slice(maxItems * (page - 1), page * maxItems)\n      : []\n  }, [transactions, maxItems, page, sortField, sortDirection, txFilter])\n\n  const handleSort = useCallback(\n    (newField: string) => {\n      setSortField(newField)\n      setSortDirection(sortField !== newField ? true : !sortDirection)\n    },\n    [sortDirection, sortField],\n  )\n\n  const arrow = useCallback(\n    (field: string) => {\n      return sortField === field ? (!sortDirection ? '↑' : '↓') : ''\n    },\n    [sortDirection, sortField],\n  )\n\n  if (!transactions) {\n    return <Loader />\n  }\n\n  return (\n    <Wrapper>\n      <AutoColumn $gap=\"16px\">\n        <ResponsiveGrid>\n          <RowFixed>\n            <SortText\n              onClick={() => {\n                setTxFilter(undefined)\n              }}\n              $active={txFilter === undefined}\n            >\n              All\n            </SortText>\n            <SortText\n              onClick={() => {\n                setTxFilter(TransactionType.SWAP)\n              }}\n              $active={txFilter === TransactionType.SWAP}\n            >\n              Swaps\n            </SortText>\n            <SortText\n              onClick={() => {\n                setTxFilter(TransactionType.MINT)\n              }}\n              $active={txFilter === TransactionType.MINT}\n            >\n              Adds\n            </SortText>\n            <SortText\n              onClick={() => {\n                setTxFilter(TransactionType.BURN)\n              }}\n              $active={txFilter === TransactionType.BURN}\n            >\n              Removes\n            </SortText>\n          </RowFixed>\n          <ClickableText color={theme?.text2} onClick={() => handleSort(SORT_FIELD.amountUSD)} end={1}>\n            Total Value {arrow(SORT_FIELD.amountUSD)}\n          </ClickableText>\n          <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.amountToken0)}>\n            Token Amount {arrow(SORT_FIELD.amountToken0)}\n          </ClickableText>\n          <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.amountToken1)}>\n            Token Amount {arrow(SORT_FIELD.amountToken1)}\n          </ClickableText>\n          <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.sender)}>\n            Account {arrow(SORT_FIELD.sender)}\n          </ClickableText>\n          <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.timestamp)}>\n            Time {arrow(SORT_FIELD.timestamp)}\n          </ClickableText>\n        </ResponsiveGrid>\n        <Break />\n\n        {sortedTransactions.map((t, i) => {\n          if (t) {\n            return (\n              <React.Fragment key={i}>\n                <DataRow transaction={t} color={color} />\n                <Break />\n              </React.Fragment>\n            )\n          }\n          return null\n        })}\n        {sortedTransactions.length === 0 ? <TYPE.main>No Transactions</TYPE.main> : undefined}\n        <PageButtons>\n          <div\n            onClick={() => {\n              setPage(page === 1 ? page : page - 1)\n            }}\n          >\n            <Arrow $faded={page === 1 ? true : false}>←</Arrow>\n          </div>\n          <TYPE.body>{'Page ' + page + ' of ' + maxPage}</TYPE.body>\n          <div\n            onClick={() => {\n              setPage(page === maxPage ? page : page + 1)\n            }}\n          >\n            <Arrow $faded={page === maxPage ? true : false}>→</Arrow>\n          </div>\n        </PageButtons>\n      </AutoColumn>\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/pools/PoolTable.tsx",
    "content": "import React, { useCallback, useState, useMemo, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { Link } from 'react-router-dom'\nimport { TYPE } from 'theme'\nimport { DarkGreyCard, GreyBadge } from 'components/Card'\nimport Loader, { LoadingRows } from 'components/Loader'\nimport { AutoColumn } from 'components/Column'\nimport { RowFixed } from 'components/Row'\nimport { formatDollarAmount } from 'utils/numbers'\nimport { PoolData } from 'state/pools/reducer'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport { feeTierPercent } from 'utils'\nimport { Label, ClickableText } from 'components/Text'\nimport { PageButtons, Arrow, Break } from 'components/shared'\nimport { POOL_HIDE } from '../../constants/index'\nimport useTheme from 'hooks/useTheme'\nimport { networkPrefix } from 'utils/networkPrefix'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\n\nconst Wrapper = styled(DarkGreyCard)`\n  width: 100%;\n`\n\nconst ResponsiveGrid = styled.div`\n  display: grid;\n  grid-gap: 1em;\n  align-items: center;\n\n  grid-template-columns: 20px 3.5fr repeat(3, 1fr);\n\n  @media screen and (max-width: 900px) {\n    grid-template-columns: 20px 1.5fr repeat(2, 1fr);\n    & :nth-child(3) {\n      display: none;\n    }\n  }\n\n  @media screen and (max-width: 500px) {\n    grid-template-columns: 20px 1.5fr repeat(1, 1fr);\n    & :nth-child(5) {\n      display: none;\n    }\n  }\n\n  @media screen and (max-width: 480px) {\n    grid-template-columns: 2.5fr repeat(1, 1fr);\n    > *:nth-child(1) {\n      display: none;\n    }\n  }\n`\n\nconst LinkWrapper = styled(Link)`\n  text-decoration: none;\n  :hover {\n    cursor: pointer;\n    opacity: 0.7;\n  }\n`\n\nconst SORT_FIELD = {\n  feeTier: 'feeTier',\n  volumeUSD: 'volumeUSD',\n  tvlUSD: 'tvlUSD',\n  volumeUSDWeek: 'volumeUSDWeek',\n}\n\nconst DataRow = ({ poolData, index }: { poolData: PoolData; index: number }) => {\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  return (\n    <LinkWrapper to={networkPrefix(activeNetwork) + 'pools/' + poolData.address}>\n      <ResponsiveGrid>\n        <Label fontWeight={400}>{index + 1}</Label>\n        <Label fontWeight={400}>\n          <RowFixed>\n            <DoubleCurrencyLogo address0={poolData.token0.address} address1={poolData.token1.address} />\n            <TYPE.label ml=\"8px\">\n              {poolData.token0.symbol}/{poolData.token1.symbol}\n            </TYPE.label>\n            <GreyBadge ml=\"10px\" fontSize=\"14px\">\n              {feeTierPercent(poolData.feeTier)}\n            </GreyBadge>\n          </RowFixed>\n        </Label>\n        <Label end={1} fontWeight={400}>\n          {formatDollarAmount(poolData.tvlUSD)}\n        </Label>\n        <Label end={1} fontWeight={400}>\n          {formatDollarAmount(poolData.volumeUSD)}\n        </Label>\n        <Label end={1} fontWeight={400}>\n          {formatDollarAmount(poolData.volumeUSDWeek)}\n        </Label>\n      </ResponsiveGrid>\n    </LinkWrapper>\n  )\n}\n\nconst MAX_ITEMS = 10\n\nexport default function PoolTable({ poolDatas, maxItems = MAX_ITEMS }: { poolDatas: PoolData[]; maxItems?: number }) {\n  const [currentNetwork] = useActiveNetworkVersion()\n\n  // theming\n  const theme = useTheme()\n\n  // for sorting\n  const [sortField, setSortField] = useState(SORT_FIELD.tvlUSD)\n  const [sortDirection, setSortDirection] = useState<boolean>(true)\n\n  // pagination\n  const [page, setPage] = useState(1)\n  const [maxPage, setMaxPage] = useState(1)\n  useEffect(() => {\n    let extraPages = 1\n    if (poolDatas.length % maxItems === 0) {\n      extraPages = 0\n    }\n    setMaxPage(Math.floor(poolDatas.length / maxItems) + extraPages)\n  }, [maxItems, poolDatas])\n\n  const sortedPools = useMemo(() => {\n    return poolDatas\n      ? poolDatas\n          .filter((x) => !!x && !POOL_HIDE[currentNetwork.id].includes(x.address))\n          .sort((a, b) => {\n            if (a && b) {\n              return a[sortField as keyof PoolData] > b[sortField as keyof PoolData]\n                ? (sortDirection ? -1 : 1) * 1\n                : (sortDirection ? -1 : 1) * -1\n            } else {\n              return -1\n            }\n          })\n          .slice(maxItems * (page - 1), page * maxItems)\n      : []\n  }, [currentNetwork.id, maxItems, page, poolDatas, sortDirection, sortField])\n\n  const handleSort = useCallback(\n    (newField: string) => {\n      setSortField(newField)\n      setSortDirection(sortField !== newField ? true : !sortDirection)\n    },\n    [sortDirection, sortField],\n  )\n\n  const arrow = useCallback(\n    (field: string) => {\n      return sortField === field ? (!sortDirection ? '↑' : '↓') : ''\n    },\n    [sortDirection, sortField],\n  )\n\n  if (!poolDatas) {\n    return <Loader />\n  }\n\n  return (\n    <Wrapper>\n      {sortedPools.length > 0 ? (\n        <AutoColumn $gap=\"16px\">\n          <ResponsiveGrid>\n            <Label color={theme?.text2}>#</Label>\n            <ClickableText color={theme?.text2} onClick={() => handleSort(SORT_FIELD.feeTier)}>\n              Pool {arrow(SORT_FIELD.feeTier)}\n            </ClickableText>\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.tvlUSD)}>\n              TVL {arrow(SORT_FIELD.tvlUSD)}\n            </ClickableText>\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.volumeUSD)}>\n              Volume 24H {arrow(SORT_FIELD.volumeUSD)}\n            </ClickableText>\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.volumeUSDWeek)}>\n              Volume 7D {arrow(SORT_FIELD.volumeUSDWeek)}\n            </ClickableText>\n          </ResponsiveGrid>\n          <Break />\n          {sortedPools.map((poolData, i) => {\n            if (poolData) {\n              return (\n                <React.Fragment key={i}>\n                  <DataRow index={(page - 1) * MAX_ITEMS + i} poolData={poolData} />\n                  <Break />\n                </React.Fragment>\n              )\n            }\n            return null\n          })}\n          <PageButtons>\n            <div\n              onClick={() => {\n                setPage(page === 1 ? page : page - 1)\n              }}\n            >\n              <Arrow $faded={page === 1 ? true : false}>←</Arrow>\n            </div>\n            <TYPE.body>{'Page ' + page + ' of ' + maxPage}</TYPE.body>\n            <div\n              onClick={() => {\n                setPage(page === maxPage ? page : page + 1)\n              }}\n            >\n              <Arrow $faded={page === maxPage ? true : false}>→</Arrow>\n            </div>\n          </PageButtons>\n        </AutoColumn>\n      ) : (\n        <LoadingRows>\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n        </LoadingRows>\n      )}\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/pools/TopPoolMovers.tsx",
    "content": "import React, { useMemo } from 'react'\nimport styled from 'styled-components'\nimport { ScrollableX, GreyCard, GreyBadge } from 'components/Card'\nimport Loader from 'components/Loader'\nimport { AutoColumn } from 'components/Column'\nimport { RowFixed } from 'components/Row'\nimport { TYPE, StyledInternalLink } from 'theme'\nimport { formatDollarAmount } from 'utils/numbers'\nimport Percent from 'components/Percent'\nimport { useAllPoolData } from 'state/pools/hooks'\nimport { PoolData } from 'state/pools/reducer'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport HoverInlineText from 'components/HoverInlineText'\nimport { feeTierPercent } from 'utils'\n\nconst Container = styled(StyledInternalLink)`\n  min-width: 210px;\n  margin-right: 16px;\n\n  :hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n`\n\nconst Wrapper = styled(GreyCard)`\n  padding: 12px;\n`\n\nconst DataCard = ({ poolData }: { poolData: PoolData }) => {\n  return (\n    <Container to={'pools/' + poolData.address}>\n      <Wrapper>\n        <AutoColumn $gap=\"sm\">\n          <RowFixed>\n            <DoubleCurrencyLogo address0={poolData.token0.address} address1={poolData.token1.address} size={16} />\n            <TYPE.label ml=\"8px\">\n              <HoverInlineText maxCharacters={10} text={`${poolData.token0.symbol}/${poolData.token1.symbol}`} />\n            </TYPE.label>\n            <GreyBadge ml=\"10px\" fontSize=\"12px\">\n              {feeTierPercent(poolData.feeTier)}\n            </GreyBadge>\n          </RowFixed>\n          <RowFixed>\n            <TYPE.label mr=\"6px\">{formatDollarAmount(poolData.volumeUSD)}</TYPE.label>\n            <Percent fontSize=\"14px\" value={poolData.volumeUSDChange} />\n          </RowFixed>\n        </AutoColumn>\n      </Wrapper>\n    </Container>\n  )\n}\n\nexport default function TopPoolMovers() {\n  const allPools = useAllPoolData()\n\n  const topVolume = useMemo(() => {\n    return Object.values(allPools)\n      .sort(({ data: a }, { data: b }) => {\n        return a && b ? (a?.volumeUSDChange > b?.volumeUSDChange ? -1 : 1) : -1\n      })\n      .slice(0, Math.min(20, Object.values(allPools).length))\n  }, [allPools])\n\n  if (Object.keys(allPools).length === 0) {\n    return <Loader />\n  }\n\n  return (\n    <ScrollableX>\n      {topVolume.map((entry) =>\n        entry.data ? <DataCard key={'top-card-pool-' + entry.data.address} poolData={entry.data} /> : null,\n      )}\n    </ScrollableX>\n  )\n}\n"
  },
  {
    "path": "src/components/shared/index.tsx",
    "content": "import styled from 'styled-components'\n\nexport const PageButtons = styled.div`\n  width: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin-top: 0.2em;\n  margin-bottom: 0.5em;\n`\n\nexport const Arrow = styled.div<{ $faded: boolean }>`\n  color: ${({ theme }) => theme.primary1};\n  opacity: ${(props) => (props.$faded ? 0.3 : 1)};\n  padding: 0 20px;\n  user-select: none;\n  :hover {\n    cursor: pointer;\n  }\n`\n\nexport const Break = styled.div`\n  height: 1px;\n  background-color: ${({ theme }) => theme.bg1};\n  width: 100%;\n`\n\nexport const FixedSpan = styled.span<{ width?: string | null }>`\n  width: ${({ width }) => width ?? ''};\n`\n\nexport const MonoSpace = styled.span`\n  font-variant-numeric: tabular-nums;\n`\n"
  },
  {
    "path": "src/components/tokens/TokenTable.tsx",
    "content": "import React, { useState, useMemo, useCallback, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { ExtraSmallOnly, HideExtraSmall, TYPE } from 'theme'\nimport { DarkGreyCard } from 'components/Card'\nimport { TokenData } from '../../state/tokens/reducer'\nimport Loader, { LoadingRows } from 'components/Loader'\nimport { Link } from 'react-router-dom'\nimport { AutoColumn } from 'components/Column'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { RowFixed } from 'components/Row'\nimport { formatDollarAmount } from 'utils/numbers'\nimport Percent from 'components/Percent'\nimport { Label, ClickableText } from '../Text'\nimport { PageButtons, Arrow, Break } from 'components/shared'\nimport HoverInlineText from '../HoverInlineText'\nimport useTheme from 'hooks/useTheme'\nimport { TOKEN_HIDE } from '../../constants/index'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\n\nconst Wrapper = styled(DarkGreyCard)`\n  width: 100%;\n`\n\nconst ResponsiveGrid = styled.div`\n  display: grid;\n  grid-gap: 1em;\n  align-items: center;\n\n  grid-template-columns: 20px 3fr repeat(4, 1fr);\n\n  @media screen and (max-width: 900px) {\n    grid-template-columns: 20px 1.5fr repeat(3, 1fr);\n    & :nth-child(4) {\n      display: none;\n    }\n  }\n\n  @media screen and (max-width: 800px) {\n    grid-template-columns: 20px 1.5fr repeat(2, 1fr);\n    & :nth-child(6) {\n      display: none;\n    }\n  }\n\n  @media screen and (max-width: 670px) {\n    grid-template-columns: repeat(2, 1fr);\n    > *:first-child {\n      display: none;\n    }\n    > *:nth-child(3) {\n      display: none;\n    }\n  }\n`\n\nconst LinkWrapper = styled(Link)`\n  text-decoration: none;\n  :hover {\n    cursor: pointer;\n    opacity: 0.7;\n  }\n`\n\nconst ResponsiveLogo = styled(CurrencyLogo)`\n  @media screen and (max-width: 670px) {\n    width: 16px;\n    height: 16px;\n  }\n`\n\nconst DataRow = ({ tokenData, index }: { tokenData: TokenData; index: number }) => {\n  const theme = useTheme()\n  return (\n    <LinkWrapper to={'tokens/' + tokenData.address}>\n      <ResponsiveGrid>\n        <Label>{index + 1}</Label>\n        <Label>\n          <RowFixed>\n            <ResponsiveLogo address={tokenData.address} />\n          </RowFixed>\n          <ExtraSmallOnly style={{ marginLeft: '6px' }}>\n            <Label ml=\"8px\">{tokenData.symbol}</Label>\n          </ExtraSmallOnly>\n          <HideExtraSmall style={{ marginLeft: '10px' }}>\n            <RowFixed>\n              <HoverInlineText text={tokenData.name} />\n              <Label ml=\"8px\" color={theme?.text3}>\n                ({tokenData.symbol})\n              </Label>\n            </RowFixed>\n          </HideExtraSmall>\n        </Label>\n        <Label end={1} fontWeight={400}>\n          {formatDollarAmount(tokenData.priceUSD)}\n        </Label>\n        <Label end={1} fontWeight={400}>\n          <Percent value={tokenData.priceUSDChange} fontWeight={400} />\n        </Label>\n        <Label end={1} fontWeight={400}>\n          {formatDollarAmount(tokenData.volumeUSD)}\n        </Label>\n        <Label end={1} fontWeight={400}>\n          {formatDollarAmount(tokenData.tvlUSD)}\n        </Label>\n      </ResponsiveGrid>\n    </LinkWrapper>\n  )\n}\n\nconst SORT_FIELD = {\n  name: 'name',\n  volumeUSD: 'volumeUSD',\n  tvlUSD: 'tvlUSD',\n  priceUSD: 'priceUSD',\n  priceUSDChange: 'priceUSDChange',\n  priceUSDChangeWeek: 'priceUSDChangeWeek',\n}\n\nconst MAX_ITEMS = 10\n\nexport default function TokenTable({\n  tokenDatas,\n  maxItems = MAX_ITEMS,\n}: {\n  tokenDatas: TokenData[] | undefined\n  maxItems?: number\n}) {\n  const [currentNetwork] = useActiveNetworkVersion()\n\n  // theming\n  const theme = useTheme()\n\n  // for sorting\n  const [sortField, setSortField] = useState(SORT_FIELD.tvlUSD)\n  const [sortDirection, setSortDirection] = useState<boolean>(true)\n\n  // pagination\n  const [page, setPage] = useState(1)\n  const [maxPage, setMaxPage] = useState(1)\n  useEffect(() => {\n    let extraPages = 1\n    if (tokenDatas) {\n      if (tokenDatas.length % maxItems === 0) {\n        extraPages = 0\n      }\n      setMaxPage(Math.floor(tokenDatas.length / maxItems) + extraPages)\n    }\n  }, [maxItems, tokenDatas])\n\n  const sortedTokens = useMemo(() => {\n    return tokenDatas\n      ? tokenDatas\n          .filter((x) => !!x && !TOKEN_HIDE[currentNetwork.id].includes(x.address))\n          .sort((a, b) => {\n            if (a && b) {\n              return a[sortField as keyof TokenData] > b[sortField as keyof TokenData]\n                ? (sortDirection ? -1 : 1) * 1\n                : (sortDirection ? -1 : 1) * -1\n            } else {\n              return -1\n            }\n          })\n          .slice(maxItems * (page - 1), page * maxItems)\n      : []\n  }, [tokenDatas, maxItems, page, currentNetwork.id, sortField, sortDirection])\n\n  const handleSort = useCallback(\n    (newField: string) => {\n      setSortField(newField)\n      setSortDirection(sortField !== newField ? true : !sortDirection)\n    },\n    [sortDirection, sortField],\n  )\n\n  const arrow = useCallback(\n    (field: string) => {\n      return sortField === field ? (!sortDirection ? '↑' : '↓') : ''\n    },\n    [sortDirection, sortField],\n  )\n\n  if (!tokenDatas) {\n    return <Loader />\n  }\n\n  return (\n    <Wrapper>\n      {sortedTokens.length > 0 ? (\n        <AutoColumn $gap=\"16px\">\n          <ResponsiveGrid>\n            <Label color={theme?.text2}>#</Label>\n            <ClickableText color={theme?.text2} onClick={() => handleSort(SORT_FIELD.name)}>\n              Name {arrow(SORT_FIELD.name)}\n            </ClickableText>\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.priceUSD)}>\n              Price {arrow(SORT_FIELD.priceUSD)}\n            </ClickableText>\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.priceUSDChange)}>\n              Price Change {arrow(SORT_FIELD.priceUSDChange)}\n            </ClickableText>\n            {/* <ClickableText end={1} onClick={() => handleSort(SORT_FIELD.priceUSDChangeWeek)}>\n            7d {arrow(SORT_FIELD.priceUSDChangeWeek)}\n          </ClickableText> */}\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.volumeUSD)}>\n              Volume 24H {arrow(SORT_FIELD.volumeUSD)}\n            </ClickableText>\n            <ClickableText color={theme?.text2} end={1} onClick={() => handleSort(SORT_FIELD.tvlUSD)}>\n              TVL {arrow(SORT_FIELD.tvlUSD)}\n            </ClickableText>\n          </ResponsiveGrid>\n\n          <Break />\n          {sortedTokens.map((data, i) => {\n            if (data) {\n              return (\n                <React.Fragment key={i}>\n                  <DataRow index={(page - 1) * MAX_ITEMS + i} tokenData={data} />\n                  <Break />\n                </React.Fragment>\n              )\n            }\n            return null\n          })}\n          <PageButtons>\n            <div\n              onClick={() => {\n                setPage(page === 1 ? page : page - 1)\n              }}\n            >\n              <Arrow $faded={page === 1 ? true : false}>←</Arrow>\n            </div>\n            <TYPE.body>{'Page ' + page + ' of ' + maxPage}</TYPE.body>\n            <div\n              onClick={() => {\n                setPage(page === maxPage ? page : page + 1)\n              }}\n            >\n              <Arrow $faded={page === maxPage ? true : false}>→</Arrow>\n            </div>\n          </PageButtons>\n        </AutoColumn>\n      ) : (\n        <LoadingRows>\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n          <div />\n        </LoadingRows>\n      )}\n    </Wrapper>\n  )\n}\n"
  },
  {
    "path": "src/components/tokens/TopTokenMovers.tsx",
    "content": "import React, { useMemo, useRef, useState, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { useAllTokenData } from 'state/tokens/hooks'\nimport { GreyCard } from 'components/Card'\nimport { TokenData } from 'state/tokens/reducer'\nimport { AutoColumn } from 'components/Column'\nimport { RowFixed, RowFlat } from 'components/Row'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { TYPE, StyledInternalLink } from 'theme'\nimport { formatDollarAmount } from 'utils/numbers'\nimport Percent from 'components/Percent'\nimport HoverInlineText from 'components/HoverInlineText'\n\nconst CardWrapper = styled(StyledInternalLink)`\n  min-width: 190px;\n  margin-right: 16px;\n\n  :hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n`\n\nconst FixedContainer = styled(AutoColumn)``\n\nexport const ScrollableRow = styled.div`\n  display: flex;\n  flex-direction: row;\n  width: 100%;\n  overflow-x: auto;\n  white-space: nowrap;\n\n  ::-webkit-scrollbar {\n    display: none;\n  }\n`\n\nconst DataCard = ({ tokenData }: { tokenData: TokenData }) => {\n  return (\n    <CardWrapper to={'tokens/' + tokenData.address}>\n      <GreyCard padding=\"16px\">\n        <RowFixed>\n          <CurrencyLogo address={tokenData.address} size=\"32px\" />\n          <AutoColumn $gap=\"3px\" style={{ marginLeft: '12px' }}>\n            <TYPE.label fontSize=\"14px\">\n              <HoverInlineText text={tokenData.symbol} />\n            </TYPE.label>\n            <RowFlat>\n              <TYPE.label fontSize=\"14px\" mr=\"6px\" lineHeight=\"16px\">\n                {formatDollarAmount(tokenData.priceUSD)}\n              </TYPE.label>\n              <Percent fontSize=\"14px\" value={tokenData.priceUSDChange} />\n            </RowFlat>\n          </AutoColumn>\n        </RowFixed>\n      </GreyCard>\n    </CardWrapper>\n  )\n}\n\nexport default function TopTokenMovers() {\n  const allTokens = useAllTokenData()\n\n  const topPriceIncrease = useMemo(() => {\n    return Object.values(allTokens)\n      .sort(({ data: a }, { data: b }) => {\n        return a && b ? (Math.abs(a?.priceUSDChange) > Math.abs(b?.priceUSDChange) ? -1 : 1) : -1\n      })\n      .slice(0, Math.min(20, Object.values(allTokens).length))\n  }, [allTokens])\n\n  const increaseRef = useRef<HTMLDivElement>(null)\n  const [increaseSet, setIncreaseSet] = useState(false)\n  // const [pauseAnimation, setPauseAnimation] = useState(false)\n  // const [resetInterval, setClearInterval] = useState<() => void | undefined>()\n\n  useEffect(() => {\n    if (!increaseSet && increaseRef && increaseRef.current) {\n      setInterval(() => {\n        if (increaseRef.current && increaseRef.current.scrollLeft !== increaseRef.current.scrollWidth) {\n          increaseRef.current.scrollTo(increaseRef.current.scrollLeft + 1, 0)\n        }\n      }, 30)\n      setIncreaseSet(true)\n    }\n  }, [increaseRef, increaseSet])\n\n  return (\n    <FixedContainer $gap=\"md\">\n      <ScrollableRow ref={increaseRef}>\n        {topPriceIncrease.map((entry) =>\n          entry.data ? <DataCard key={'top-card-token-' + entry.data?.address} tokenData={entry.data} /> : null,\n        )}\n      </ScrollableRow>\n    </FixedContainer>\n  )\n}\n"
  },
  {
    "path": "src/constants/abis/argent-wallet-detector.json",
    "content": "[\n  {\n    \"inputs\": [\n      { \"internalType\": \"bytes32[]\", \"name\": \"_codes\", \"type\": \"bytes32[]\" },\n      { \"internalType\": \"address[]\", \"name\": \"_implementations\", \"type\": \"address[]\" }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [{ \"indexed\": true, \"internalType\": \"bytes32\", \"name\": \"code\", \"type\": \"bytes32\" }],\n    \"name\": \"CodeAdded\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"implementation\", \"type\": \"address\" }],\n    \"name\": \"ImplementationAdded\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"_newOwner\", \"type\": \"address\" }],\n    \"name\": \"OwnerChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n    \"name\": \"acceptedCodes\",\n    \"outputs\": [\n      { \"internalType\": \"bool\", \"name\": \"exists\", \"type\": \"bool\" },\n      { \"internalType\": \"uint128\", \"name\": \"index\", \"type\": \"uint128\" }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n    \"name\": \"acceptedImplementations\",\n    \"outputs\": [\n      { \"internalType\": \"bool\", \"name\": \"exists\", \"type\": \"bool\" },\n      { \"internalType\": \"uint128\", \"name\": \"index\", \"type\": \"uint128\" }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"bytes32\", \"name\": \"_code\", \"type\": \"bytes32\" }],\n    \"name\": \"addCode\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"address\", \"name\": \"_argentWallet\", \"type\": \"address\" }],\n    \"name\": \"addCodeAndImplementationFromWallet\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"address\", \"name\": \"_impl\", \"type\": \"address\" }],\n    \"name\": \"addImplementation\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"address\", \"name\": \"_newOwner\", \"type\": \"address\" }],\n    \"name\": \"changeOwner\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getCodes\",\n    \"outputs\": [{ \"internalType\": \"bytes32[]\", \"name\": \"\", \"type\": \"bytes32[]\" }],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getImplementations\",\n    \"outputs\": [{ \"internalType\": \"address[]\", \"name\": \"\", \"type\": \"address[]\" }],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"address\", \"name\": \"_wallet\", \"type\": \"address\" }],\n    \"name\": \"isArgentWallet\",\n    \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/argent-wallet-detector.ts",
    "content": "import ARGENT_WALLET_DETECTOR_ABI from './argent-wallet-detector.json'\n\nconst ARGENT_WALLET_DETECTOR_MAINNET_ADDRESS = '0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8'\n\nexport { ARGENT_WALLET_DETECTOR_ABI, ARGENT_WALLET_DETECTOR_MAINNET_ADDRESS }\n"
  },
  {
    "path": "src/constants/abis/ens-public-resolver.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"contract ENS\",\n        \"name\": \"_ens\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"uint256\",\n        \"name\": \"contentType\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ABIChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"a\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"AddrChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"coinType\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes\",\n        \"name\": \"newAddress\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"AddressChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"target\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bool\",\n        \"name\": \"isAuthorised\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"name\": \"AuthorisationChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes\",\n        \"name\": \"hash\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"ContenthashChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes\",\n        \"name\": \"name\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint16\",\n        \"name\": \"resource\",\n        \"type\": \"uint16\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes\",\n        \"name\": \"record\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"DNSRecordChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes\",\n        \"name\": \"name\",\n        \"type\": \"bytes\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint16\",\n        \"name\": \"resource\",\n        \"type\": \"uint16\"\n      }\n    ],\n    \"name\": \"DNSRecordDeleted\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"DNSZoneCleared\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes4\",\n        \"name\": \"interfaceID\",\n        \"type\": \"bytes4\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"implementer\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"InterfaceChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"string\",\n        \"name\": \"name\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"NameChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes32\",\n        \"name\": \"x\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bytes32\",\n        \"name\": \"y\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"PubkeyChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"string\",\n        \"name\": \"indexedKey\",\n        \"type\": \"string\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"string\",\n        \"name\": \"key\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"TextChanged\",\n    \"type\": \"event\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"contentTypes\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ABI\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"addr\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address payable\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"authorisations\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"clearDNSZone\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"contenthash\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"name\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"uint16\",\n        \"name\": \"resource\",\n        \"type\": \"uint16\"\n      }\n    ],\n    \"name\": \"dnsRecord\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"name\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"hasDNSRecords\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes4\",\n        \"name\": \"interfaceID\",\n        \"type\": \"bytes4\"\n      }\n    ],\n    \"name\": \"interfaceImplementer\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"pubkey\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"x\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"y\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"contentType\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"data\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"setABI\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"coinType\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"a\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"setAddr\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"a\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"setAddr\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"target\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"isAuthorised\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"name\": \"setAuthorisation\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"hash\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"setContenthash\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes\",\n        \"name\": \"data\",\n        \"type\": \"bytes\"\n      }\n    ],\n    \"name\": \"setDNSRecords\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes4\",\n        \"name\": \"interfaceID\",\n        \"type\": \"bytes4\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"implementer\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"setInterface\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"name\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"setName\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"x\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"y\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"setPubkey\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"key\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"value\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"setText\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes4\",\n        \"name\": \"interfaceID\",\n        \"type\": \"bytes4\"\n      }\n    ],\n    \"name\": \"supportsInterface\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"pure\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"key\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"text\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/ens-registrar.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"contract ENS\",\n        \"name\": \"_old\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"operator\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"bool\",\n        \"name\": \"approved\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"name\": \"ApprovalForAll\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"label\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"NewOwner\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"resolver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"NewResolver\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint64\",\n        \"name\": \"ttl\",\n        \"type\": \"uint64\"\n      }\n    ],\n    \"name\": \"NewTTL\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"operator\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"isApprovedForAll\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"old\",\n    \"outputs\": [\n      {\n        \"internalType\": \"contract ENS\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"recordExists\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"resolver\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"operator\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"approved\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"name\": \"setApprovalForAll\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"setOwner\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"resolver\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint64\",\n        \"name\": \"ttl\",\n        \"type\": \"uint64\"\n      }\n    ],\n    \"name\": \"setRecord\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"resolver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"setResolver\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"label\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"setSubnodeOwner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"label\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"resolver\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint64\",\n        \"name\": \"ttl\",\n        \"type\": \"uint64\"\n      }\n    ],\n    \"name\": \"setSubnodeRecord\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"internalType\": \"uint64\",\n        \"name\": \"ttl\",\n        \"type\": \"uint64\"\n      }\n    ],\n    \"name\": \"setTTL\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"node\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"name\": \"ttl\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint64\",\n        \"name\": \"\",\n        \"type\": \"uint64\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/erc20.json",
    "content": "[\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"string\" }],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      { \"name\": \"_spender\", \"type\": \"address\" },\n      { \"name\": \"_value\", \"type\": \"uint256\" }\n    ],\n    \"name\": \"approve\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"bool\" }],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"totalSupply\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\" }],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      { \"name\": \"_from\", \"type\": \"address\" },\n      { \"name\": \"_to\", \"type\": \"address\" },\n      { \"name\": \"_value\", \"type\": \"uint256\" }\n    ],\n    \"name\": \"transferFrom\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"bool\" }],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"decimals\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint8\" }],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [{ \"name\": \"_owner\", \"type\": \"address\" }],\n    \"name\": \"balanceOf\",\n    \"outputs\": [{ \"name\": \"balance\", \"type\": \"uint256\" }],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"string\" }],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      { \"name\": \"_to\", \"type\": \"address\" },\n      { \"name\": \"_value\", \"type\": \"uint256\" }\n    ],\n    \"name\": \"transfer\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"bool\" }],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      { \"name\": \"_owner\", \"type\": \"address\" },\n      { \"name\": \"_spender\", \"type\": \"address\" }\n    ],\n    \"name\": \"allowance\",\n    \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\" }],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  { \"payable\": true, \"stateMutability\": \"payable\", \"type\": \"fallback\" },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      { \"indexed\": true, \"name\": \"owner\", \"type\": \"address\" },\n      { \"indexed\": true, \"name\": \"spender\", \"type\": \"address\" },\n      { \"indexed\": false, \"name\": \"value\", \"type\": \"uint256\" }\n    ],\n    \"name\": \"Approval\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      { \"indexed\": true, \"name\": \"from\", \"type\": \"address\" },\n      { \"indexed\": true, \"name\": \"to\", \"type\": \"address\" },\n      { \"indexed\": false, \"name\": \"value\", \"type\": \"uint256\" }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/erc20.ts",
    "content": "import { Interface } from '@ethersproject/abi'\nimport ERC20_ABI from './erc20.json'\nimport ERC20_BYTES32_ABI from './erc20_bytes32.json'\n\nconst ERC20_INTERFACE = new Interface(ERC20_ABI)\n\nconst ERC20_BYTES32_INTERFACE = new Interface(ERC20_BYTES32_ABI)\n\nexport default ERC20_INTERFACE\nexport { ERC20_ABI, ERC20_BYTES32_INTERFACE, ERC20_BYTES32_ABI }\n"
  },
  {
    "path": "src/constants/abis/erc20_bytes32.json",
    "content": "[\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/migrator.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_factoryV1\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_router\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amountTokenMin\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amountETHMin\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"deadline\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"migrate\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"stateMutability\": \"payable\",\n    \"type\": \"receive\"\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/migrator.ts",
    "content": "import MIGRATOR_ABI from './migrator.json'\n\nconst MIGRATOR_ADDRESS = '0x16D4F26C15f3658ec65B1126ff27DD3dF2a2996b'\n\nexport { MIGRATOR_ADDRESS, MIGRATOR_ABI }\n"
  },
  {
    "path": "src/constants/abis/staking-rewards.ts",
    "content": "import { Interface } from '@ethersproject/abi'\nimport { abi as STAKING_REWARDS_ABI } from '@uniswap/liquidity-staker/build/StakingRewards.json'\nimport { abi as STAKING_REWARDS_FACTORY_ABI } from '@uniswap/liquidity-staker/build/StakingRewardsFactory.json'\n\nconst STAKING_REWARDS_INTERFACE = new Interface(STAKING_REWARDS_ABI)\n\nconst STAKING_REWARDS_FACTORY_INTERFACE = new Interface(STAKING_REWARDS_FACTORY_ABI)\n\nexport { STAKING_REWARDS_FACTORY_INTERFACE, STAKING_REWARDS_INTERFACE }\n"
  },
  {
    "path": "src/constants/abis/unisocks.json",
    "content": "[\n  {\n    \"name\": \"Transfer\",\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_from\",\n        \"indexed\": true\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"_to\",\n        \"indexed\": true\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\",\n        \"indexed\": true\n      }\n    ],\n    \"anonymous\": false,\n    \"type\": \"event\"\n  },\n  {\n    \"name\": \"Approval\",\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_owner\",\n        \"indexed\": true\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"_approved\",\n        \"indexed\": true\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\",\n        \"indexed\": true\n      }\n    ],\n    \"anonymous\": false,\n    \"type\": \"event\"\n  },\n  {\n    \"name\": \"ApprovalForAll\",\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_owner\",\n        \"indexed\": true\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"_operator\",\n        \"indexed\": true\n      },\n      {\n        \"type\": \"bool\",\n        \"name\": \"_approved\",\n        \"indexed\": false\n      }\n    ],\n    \"anonymous\": false,\n    \"type\": \"event\"\n  },\n  {\n    \"outputs\": [],\n    \"inputs\": [],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"constructor\"\n  },\n  {\n    \"name\": \"tokenURI\",\n    \"outputs\": [\n      {\n        \"type\": \"string\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 22405\n  },\n  {\n    \"name\": \"tokenByIndex\",\n    \"outputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_index\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 631\n  },\n  {\n    \"name\": \"tokenOfOwnerByIndex\",\n    \"outputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_owner\"\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_index\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 1248\n  },\n  {\n    \"name\": \"transferFrom\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_from\"\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"_to\"\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 259486\n  },\n  {\n    \"name\": \"safeTransferFrom\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_from\"\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"_to\"\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\"\n  },\n  {\n    \"name\": \"safeTransferFrom\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_from\"\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"_to\"\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\"\n      },\n      {\n        \"type\": \"bytes\",\n        \"name\": \"_data\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\"\n  },\n  {\n    \"name\": \"approve\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_approved\"\n      },\n      {\n        \"type\": \"uint256\",\n        \"name\": \"_tokenId\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 38422\n  },\n  {\n    \"name\": \"setApprovalForAll\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_operator\"\n      },\n      {\n        \"type\": \"bool\",\n        \"name\": \"_approved\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 38016\n  },\n  {\n    \"name\": \"mint\",\n    \"outputs\": [\n      {\n        \"type\": \"bool\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_to\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 182636\n  },\n  {\n    \"name\": \"changeMinter\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_minter\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 35897\n  },\n  {\n    \"name\": \"changeURI\",\n    \"outputs\": [],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"_newURI\"\n      }\n    ],\n    \"constant\": false,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 35927\n  },\n  {\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"type\": \"string\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 6612\n  },\n  {\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"type\": \"string\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 6642\n  },\n  {\n    \"name\": \"totalSupply\",\n    \"outputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 873\n  },\n  {\n    \"name\": \"minter\",\n    \"outputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 903\n  },\n  {\n    \"name\": \"socks\",\n    \"outputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"out\",\n        \"unit\": \"Socks\"\n      }\n    ],\n    \"inputs\": [],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 933\n  },\n  {\n    \"name\": \"newURI\",\n    \"outputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 963\n  },\n  {\n    \"name\": \"ownerOf\",\n    \"outputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"arg0\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 1126\n  },\n  {\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"arg0\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 1195\n  },\n  {\n    \"name\": \"getApproved\",\n    \"outputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"uint256\",\n        \"name\": \"arg0\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 1186\n  },\n  {\n    \"name\": \"isApprovedForAll\",\n    \"outputs\": [\n      {\n        \"type\": \"bool\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"address\",\n        \"name\": \"arg0\"\n      },\n      {\n        \"type\": \"address\",\n        \"name\": \"arg1\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 1415\n  },\n  {\n    \"name\": \"supportsInterface\",\n    \"outputs\": [\n      {\n        \"type\": \"bool\",\n        \"name\": \"out\"\n      }\n    ],\n    \"inputs\": [\n      {\n        \"type\": \"bytes32\",\n        \"name\": \"arg0\"\n      }\n    ],\n    \"constant\": true,\n    \"payable\": false,\n    \"type\": \"function\",\n    \"gas\": 1246\n  }\n]\n"
  },
  {
    "path": "src/constants/abis/weth.json",
    "content": "[\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"name\": \"guy\",\n        \"type\": \"address\"\n      },\n      {\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"approve\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"totalSupply\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"name\": \"src\",\n        \"type\": \"address\"\n      },\n      {\n        \"name\": \"dst\",\n        \"type\": \"address\"\n      },\n      {\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transferFrom\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"withdraw\",\n    \"outputs\": [],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"decimals\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint8\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [\n      {\n        \"name\": \"dst\",\n        \"type\": \"address\"\n      },\n      {\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transfer\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": false,\n    \"inputs\": [],\n    \"name\": \"deposit\",\n    \"outputs\": [],\n    \"payable\": true,\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"address\"\n      },\n      {\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"allowance\",\n    \"outputs\": [\n      {\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"payable\": true,\n    \"stateMutability\": \"payable\",\n    \"type\": \"fallback\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"name\": \"src\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"name\": \"guy\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Approval\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"name\": \"src\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"name\": \"dst\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"name\": \"dst\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Deposit\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"name\": \"src\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"name\": \"wad\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Withdrawal\",\n    \"type\": \"event\"\n  }\n]\n"
  },
  {
    "path": "src/constants/chains.ts",
    "content": "import { ChainId, SUPPORTED_CHAINS, SupportedChainsType } from '@uniswap/sdk-core'\n\nexport const CHAIN_IDS_TO_NAMES = {\n  [ChainId.MAINNET]: 'mainnet',\n  [ChainId.GOERLI]: 'goerli',\n  [ChainId.SEPOLIA]: 'sepolia',\n  [ChainId.POLYGON]: 'polygon',\n  [ChainId.POLYGON_MUMBAI]: 'polygon_mumbai',\n  [ChainId.CELO]: 'celo',\n  [ChainId.CELO_ALFAJORES]: 'celo_alfajores',\n  [ChainId.ARBITRUM_ONE]: 'arbitrum',\n  [ChainId.ARBITRUM_GOERLI]: 'arbitrum_goerli',\n  [ChainId.OPTIMISM]: 'optimism',\n  [ChainId.OPTIMISM_GOERLI]: 'optimism_goerli',\n  [ChainId.BNB]: 'bnb',\n  [ChainId.AVALANCHE]: 'avalanche',\n  [ChainId.BASE]: 'base',\n} as const\n\n// Include ChainIds in this array if they are not supported by the UX yet, but are already in the SDK.\nconst NOT_YET_UX_SUPPORTED_CHAIN_IDS: number[] = [ChainId.BASE_GOERLI]\n\n// TODO: include BASE_GOERLI when routing is implemented\nexport type SupportedInterfaceChain = Exclude<SupportedChainsType, ChainId.BASE_GOERLI>\n\nexport function isSupportedChain(\n  chainId: number | null | undefined | ChainId,\n  featureFlags?: Record<number, boolean>,\n): chainId is SupportedInterfaceChain {\n  if (featureFlags && chainId && chainId in featureFlags) {\n    return featureFlags[chainId]\n  }\n  return !!chainId && SUPPORTED_CHAINS.indexOf(chainId) !== -1 && NOT_YET_UX_SUPPORTED_CHAIN_IDS.indexOf(chainId) === -1\n}\n\nexport function asSupportedChain(\n  chainId: number | null | undefined | ChainId,\n  featureFlags?: Record<number, boolean>,\n): SupportedInterfaceChain | undefined {\n  if (!chainId) return undefined\n  if (featureFlags && chainId in featureFlags && !featureFlags[chainId]) {\n    return undefined\n  }\n  return isSupportedChain(chainId) ? chainId : undefined\n}\n\nexport const SUPPORTED_GAS_ESTIMATE_CHAIN_IDS = [\n  ChainId.MAINNET,\n  ChainId.POLYGON,\n  ChainId.CELO,\n  ChainId.OPTIMISM,\n  ChainId.ARBITRUM_ONE,\n  ChainId.BNB,\n  ChainId.AVALANCHE,\n  ChainId.BASE,\n] as const\n\n/**\n * Supported networks for V2 pool behavior.\n */\nexport const SUPPORTED_V2POOL_CHAIN_IDS = [ChainId.MAINNET, ChainId.GOERLI] as const\n\nexport const TESTNET_CHAIN_IDS = [\n  ChainId.GOERLI,\n  ChainId.SEPOLIA,\n  ChainId.POLYGON_MUMBAI,\n  ChainId.ARBITRUM_GOERLI,\n  ChainId.OPTIMISM_GOERLI,\n  ChainId.CELO_ALFAJORES,\n] as const\n\n/**\n * All the chain IDs that are running the Ethereum protocol.\n */\nexport const L1_CHAIN_IDS = [\n  ChainId.MAINNET,\n  ChainId.GOERLI,\n  ChainId.SEPOLIA,\n  ChainId.POLYGON,\n  ChainId.POLYGON_MUMBAI,\n  ChainId.CELO,\n  ChainId.CELO_ALFAJORES,\n  ChainId.BNB,\n  ChainId.AVALANCHE,\n] as const\n\nexport type SupportedL1ChainId = (typeof L1_CHAIN_IDS)[number]\n\n/**\n * Controls some L2 specific behavior, e.g. slippage tolerance, special UI behavior.\n * The expectation is that all of these networks have immediate transaction confirmation.\n */\nexport const L2_CHAIN_IDS = [\n  ChainId.ARBITRUM_ONE,\n  ChainId.ARBITRUM_GOERLI,\n  ChainId.OPTIMISM,\n  ChainId.OPTIMISM_GOERLI,\n  ChainId.BASE,\n] as const\n\nexport type SupportedL2ChainId = (typeof L2_CHAIN_IDS)[number]\n\n/**\n * Get the priority of a chainId based on its relevance to the user.\n * @param {ChainId} chainId - The chainId to determine the priority for.\n * @returns {number} The priority of the chainId, the lower the priority, the earlier it should be displayed, with base of MAINNET=0.\n */\nexport function getChainPriority(chainId: ChainId): number {\n  switch (chainId) {\n    case ChainId.MAINNET:\n    case ChainId.GOERLI:\n    case ChainId.SEPOLIA:\n      return 0\n    case ChainId.ARBITRUM_ONE:\n    case ChainId.ARBITRUM_GOERLI:\n      return 1\n    case ChainId.OPTIMISM:\n    case ChainId.OPTIMISM_GOERLI:\n      return 2\n    case ChainId.POLYGON:\n    case ChainId.POLYGON_MUMBAI:\n      return 3\n    case ChainId.BASE:\n      return 4\n    case ChainId.BNB:\n      return 5\n    case ChainId.AVALANCHE:\n      return 6\n    case ChainId.CELO:\n    case ChainId.CELO_ALFAJORES:\n      return 7\n    default:\n      return 8\n  }\n}\n\nexport function isUniswapXSupportedChain(chainId: number) {\n  return chainId === ChainId.MAINNET\n}\n"
  },
  {
    "path": "src/constants/index.ts",
    "content": "import { BigNumber } from '@ethersproject/bignumber'\nimport { Connector } from '@web3-react/types'\nimport ms from 'ms'\n\nimport { SupportedNetwork } from './networks'\n\nexport const MAX_UINT128 = BigNumber.from(2).pow(128).sub(1)\n\nexport const MATIC_ADDRESS = '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270'\nexport const CELO_ADDRESS = '0x471EcE3750Da237f93B8E339c536989b8978a438'\n\nconst WETH_ADDRESS = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'\nconst ARBITRUM_WETH_ADDRESS = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1'\n\nexport const WETH_ADDRESSES = [WETH_ADDRESS, ARBITRUM_WETH_ADDRESS]\n\nexport const TOKEN_HIDE: { [key: string]: string[] } = {\n  [SupportedNetwork.ETHEREUM]: [\n    '0xd46ba6d942050d489dbd938a2c909a5d5039a161',\n    '0x7dfb72a2aad08c937706f21421b15bfc34cba9ca',\n    '0x12b32f10a499bf40db334efe04226cca00bf2d9b',\n    '0x160de4468586b6b2f8a92feb0c260fc6cfc743b1',\n  ],\n  [SupportedNetwork.POLYGON]: ['0x8d52c2d70a7c28a9daac2ff12ad9bfbf041cd318'],\n  [SupportedNetwork.ARBITRUM]: [],\n  [SupportedNetwork.OPTIMISM]: [],\n  [SupportedNetwork.CELO]: [],\n  [SupportedNetwork.BNB]: [],\n  [SupportedNetwork.AVALANCHE]: [],\n  [SupportedNetwork.BASE]: [],\n}\n\nexport const POOL_HIDE: { [key: string]: string[] } = {\n  [SupportedNetwork.ETHEREUM]: [\n    '0x86d257cdb7bc9c0df10e84c8709697f92770b335',\n    '0xf8dbd52488978a79dfe6ffbd81a01fc5948bf9ee',\n    '0x8fe8d9bb8eeba3ed688069c3d6b556c9ca258248',\n    '0xa850478adaace4c08fc61de44d8cf3b64f359bec',\n    '0x277667eb3e34f134adf870be9550e9f323d0dc24',\n    '0x8c0411f2ad5470a66cb2e9c64536cfb8dcd54d51',\n    '0x055284a4ca6532ecc219ac06b577d540c686669d',\n  ],\n  [SupportedNetwork.POLYGON]: ['0x5f616541c801e2b9556027076b730e0197974f6a'],\n  [SupportedNetwork.ARBITRUM]: [],\n  [SupportedNetwork.OPTIMISM]: [],\n  [SupportedNetwork.CELO]: [],\n  [SupportedNetwork.BNB]: [],\n  [SupportedNetwork.AVALANCHE]: [],\n  [SupportedNetwork.BASE]: [],\n}\n\nexport const START_BLOCKS: { [key: string]: number } = {\n  [SupportedNetwork.ETHEREUM]: 14292820,\n  [SupportedNetwork.POLYGON]: 25459720,\n  [SupportedNetwork.ARBITRUM]: 175,\n  [SupportedNetwork.OPTIMISM]: 10028767,\n  [SupportedNetwork.CELO]: 13916355,\n  [SupportedNetwork.BNB]: 26324014,\n  [SupportedNetwork.AVALANCHE]: 31422450,\n  [SupportedNetwork.BASE]: 1371680,\n}\n\nexport interface WalletInfo {\n  connector?: Connector\n  name: string\n  iconName: string\n  description: string\n  href: string | null\n  color: string\n  primary?: true\n  mobile?: true\n  mobileOnly?: true\n}\n\nexport const AVERAGE_L1_BLOCK_TIME = ms(`12s`)\n\nexport const NetworkContextName = 'NETWORK'\n\n// SDN OFAC addresses\nexport const BLOCKED_ADDRESSES: string[] = [\n  '0x7F367cC41522cE07553e823bf3be79A889DEbe1B',\n  '0xd882cFc20F52f2599D84b8e8D58C7FB62cfE344b',\n  '0x901bb9583b24D97e995513C6778dc6888AB6870e',\n  '0xA7e5d5A720f06526557c513402f2e6B5fA20b008',\n]\n"
  },
  {
    "path": "src/constants/intervals.ts",
    "content": "/**\n * Constanst for historical data fetching.\n *\n */\n\nimport { OpUnitType } from 'dayjs'\n\nexport const ONE_HOUR_SECONDS = 3600\n\nexport const TimeWindow: {\n  [key: string]: OpUnitType\n} = {\n  DAY: 'day',\n  WEEK: 'week',\n  MONTH: 'month',\n}\n"
  },
  {
    "path": "src/constants/lists.ts",
    "content": "// used to mark unsupported tokens, these are hosted lists of unsupported tokens\n\nexport const UNSUPPORTED_LIST_URLS: string[] = []\nexport const OPTIMISM_LIST = 'https://static.optimism.io/optimism.tokenlist.json'\nexport const ARBITRUM_LIST = 'https://bridge.arbitrum.io/token-list-42161.json'\nexport const POLYGON_LIST =\n  'https://unpkg.com/quickswap-default-token-list@1.2.2/build/quickswap-default.tokenlist.json'\nexport const CELO_LIST = 'https://celo-org.github.io/celo-token-list/celo.tokenlist.json'\nexport const BNB_LIST = 'https://raw.githubusercontent.com/plasmadlt/plasma-finance-token-list/master/bnb.json'\n\n// lower index == higher priority for token import\nexport const DEFAULT_LIST_OF_LISTS: string[] = [\n  OPTIMISM_LIST,\n  ARBITRUM_LIST,\n  POLYGON_LIST,\n  CELO_LIST,\n  BNB_LIST,\n  ...UNSUPPORTED_LIST_URLS, // need to load unsupported tokens as well\n]\n\n// default lists to be 'active' aka searched across\nexport const DEFAULT_ACTIVE_LIST_URLS: string[] = [OPTIMISM_LIST, ARBITRUM_LIST, POLYGON_LIST, CELO_LIST, BNB_LIST]\n"
  },
  {
    "path": "src/constants/multicall/abi.json",
    "content": "[\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"getCurrentBlockTimestamp\",\n    \"outputs\": [\n      {\n        \"name\": \"timestamp\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"name\": \"target\",\n            \"type\": \"address\"\n          },\n          {\n            \"name\": \"callData\",\n            \"type\": \"bytes\"\n          }\n        ],\n        \"name\": \"calls\",\n        \"type\": \"tuple[]\"\n      }\n    ],\n    \"name\": \"aggregate\",\n    \"outputs\": [\n      {\n        \"name\": \"blockNumber\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"name\": \"returnData\",\n        \"type\": \"bytes[]\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"getLastBlockHash\",\n    \"outputs\": [\n      {\n        \"name\": \"blockHash\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"name\": \"addr\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getEthBalance\",\n    \"outputs\": [\n      {\n        \"name\": \"balance\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"getCurrentBlockDifficulty\",\n    \"outputs\": [\n      {\n        \"name\": \"difficulty\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"getCurrentBlockGasLimit\",\n    \"outputs\": [\n      {\n        \"name\": \"gaslimit\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [],\n    \"name\": \"getCurrentBlockCoinbase\",\n    \"outputs\": [\n      {\n        \"name\": \"coinbase\",\n        \"type\": \"address\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"constant\": true,\n    \"inputs\": [\n      {\n        \"name\": \"blockNumber\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"getBlockHash\",\n    \"outputs\": [\n      {\n        \"name\": \"blockHash\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"payable\": false,\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "src/constants/multicall/index.ts",
    "content": "import MULTICALL_ABI from './abi.json'\n\nexport { MULTICALL_ABI }\n"
  },
  {
    "path": "src/constants/networks.ts",
    "content": "import OPTIMISM_LOGO_URL from '../assets/images/optimism.svg'\nimport ARBITRUM_LOGO_URL from '../assets/images/arbitrum.svg'\nimport ETHEREUM_LOGO_URL from '../assets/images/ethereum-logo.png'\nimport POLYGON_LOGO_URL from '../assets/images/polygon-logo.png'\nimport CELO_LOGO_URL from '../assets/images/celo-logo.svg'\nimport BNB_LOGO_URL from '../assets/images/bnb-logo.svg'\nimport BASE_LOGO_URL from '../assets/images/base-logo.svg'\nimport { ChainId } from '@uniswap/sdk-core'\nimport AVALANCHE_LOGO_URL from '../assets/images/avalanche-logo.png'\n\nexport enum SupportedNetwork {\n  ETHEREUM,\n  ARBITRUM,\n  OPTIMISM,\n  POLYGON,\n  CELO,\n  BNB,\n  BASE,\n  AVALANCHE,\n}\n\nexport type NetworkInfo = {\n  chainId: ChainId\n  id: SupportedNetwork\n  route: string\n  name: string\n  imageURL: string\n  bgColor: string\n  primaryColor: string\n  secondaryColor: string\n}\n\nexport const EthereumNetworkInfo: NetworkInfo = {\n  chainId: ChainId.MAINNET,\n  id: SupportedNetwork.ETHEREUM,\n  route: '',\n  name: 'Ethereum',\n  bgColor: '#fc077d',\n  primaryColor: '#fc077d',\n  secondaryColor: '#2172E5',\n  imageURL: ETHEREUM_LOGO_URL,\n}\n\nexport const ArbitrumNetworkInfo: NetworkInfo = {\n  chainId: ChainId.ARBITRUM_ONE,\n  id: SupportedNetwork.ARBITRUM,\n  route: 'arbitrum',\n  name: 'Arbitrum',\n  imageURL: ARBITRUM_LOGO_URL,\n  bgColor: '#0A294B',\n  primaryColor: '#0490ED',\n  secondaryColor: '#96BEDC',\n}\n\nexport const OptimismNetworkInfo: NetworkInfo = {\n  chainId: ChainId.OPTIMISM,\n  id: SupportedNetwork.OPTIMISM,\n  route: 'optimism',\n  name: 'Optimism',\n  bgColor: '#F01B36',\n  primaryColor: '#F01B36',\n  secondaryColor: '#FB7876',\n  imageURL: OPTIMISM_LOGO_URL,\n}\n\nexport const PolygonNetworkInfo: NetworkInfo = {\n  chainId: ChainId.POLYGON,\n  id: SupportedNetwork.POLYGON,\n  route: 'polygon',\n  name: 'Polygon',\n  bgColor: '#8247e5',\n  primaryColor: '#8247e5',\n  secondaryColor: '#FB7876',\n  imageURL: POLYGON_LOGO_URL,\n}\nexport const CeloNetworkInfo: NetworkInfo = {\n  chainId: ChainId.CELO,\n  id: SupportedNetwork.CELO,\n  route: 'celo',\n  name: 'Celo',\n  bgColor: '#02502F',\n  primaryColor: '#35D07F',\n  secondaryColor: '#9ACDB2',\n  imageURL: CELO_LOGO_URL,\n}\n\nexport const BNBNetworkInfo: NetworkInfo = {\n  chainId: ChainId.BNB,\n  id: SupportedNetwork.BNB,\n  route: 'bnb',\n  name: 'BNB Chain',\n  bgColor: '#F0B90B',\n  primaryColor: '#F0B90B',\n  secondaryColor: '#F0B90B',\n  imageURL: BNB_LOGO_URL,\n}\n\nexport const BaseNetworkInfo: NetworkInfo = {\n  chainId: ChainId.BASE,\n  id: SupportedNetwork.BASE,\n  route: 'base',\n  name: 'Base',\n  bgColor: '#0052ff',\n  primaryColor: '#0052ff',\n  secondaryColor: '#0052ff',\n  imageURL: BASE_LOGO_URL,\n}\n\nexport const AvalancheNetworkInfo: NetworkInfo = {\n  chainId: 43114,\n  id: SupportedNetwork.AVALANCHE,\n  route: 'avax',\n  name: 'Avalanche',\n  bgColor: '#e84142',\n  primaryColor: '#e84142',\n  secondaryColor: '#e84142',\n  imageURL: AVALANCHE_LOGO_URL,\n}\n\nexport const SUPPORTED_NETWORK_VERSIONS: NetworkInfo[] = [\n  EthereumNetworkInfo,\n  PolygonNetworkInfo,\n  OptimismNetworkInfo,\n  ArbitrumNetworkInfo,\n  CeloNetworkInfo,\n  BNBNetworkInfo,\n  BaseNetworkInfo,\n  AvalancheNetworkInfo,\n]\n"
  },
  {
    "path": "src/constants/tokenLists/uniswap-v2-unsupported.tokenlist.json",
    "content": "{\n  \"name\": \"Uniswap V2 Unsupported List\",\n  \"timestamp\": \"2021-01-05T20:47:02.923Z\",\n  \"version\": {\n    \"major\": 1,\n    \"minor\": 0,\n    \"patch\": 0\n  },\n  \"tags\": {},\n  \"logoURI\": \"ipfs://QmNa8mQkrNKp1WEEeGjFezDmDeodkWRevGFN8JCV7b4Xir\",\n  \"keywords\": [\"uniswap\", \"unsupported\"],\n  \"tokens\": [\n    {\n      \"name\": \"Gold Tether\",\n      \"address\": \"0x4922a015c4407F87432B179bb209e125432E4a2A\",\n      \"symbol\": \"XAUt\",\n      \"decimals\": 6,\n      \"chainId\": 1,\n      \"logoURI\": \"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x4922a015c4407F87432B179bb209e125432E4a2A/logo.png\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/data/application/index.ts",
    "content": "import { useActiveNetworkVersion } from 'state/application/hooks'\nimport { healthClient } from './../../apollo/client'\nimport { useQuery } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { ArbitrumNetworkInfo, EthereumNetworkInfo } from 'constants/networks'\n\nexport const SUBGRAPH_HEALTH = gql`\n  query health($name: Bytes) {\n    indexingStatusForCurrentVersion(subgraphName: $name, subgraphError: allow) {\n      synced\n      health\n      chains {\n        chainHeadBlock {\n          number\n        }\n        latestBlock {\n          number\n        }\n      }\n    }\n  }\n`\n\ninterface HealthResponse {\n  indexingStatusForCurrentVersion: {\n    chains: {\n      chainHeadBlock: {\n        number: string\n      }\n      latestBlock: {\n        number: string\n      }\n    }[]\n    synced: boolean\n  }\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport function useFetchedSubgraphStatus(): {\n  available: boolean | null\n  syncedBlock: number | undefined\n  headBlock: number | undefined\n} {\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  const { loading, error, data } = useQuery<HealthResponse>(SUBGRAPH_HEALTH, {\n    client: healthClient,\n    fetchPolicy: 'network-only',\n    variables: {\n      name:\n        activeNetwork === EthereumNetworkInfo\n          ? 'uniswap/uniswap-v3'\n          : activeNetwork === ArbitrumNetworkInfo\n          ? 'ianlapham/uniswap-arbitrum-one'\n          : 'ianlapham/uniswap-optimism',\n    },\n  })\n\n  const parsed = data?.indexingStatusForCurrentVersion\n\n  if (loading) {\n    return {\n      available: null,\n      syncedBlock: undefined,\n      headBlock: undefined,\n    }\n  }\n\n  if ((!loading && !parsed) || error) {\n    return {\n      available: false,\n      syncedBlock: undefined,\n      headBlock: undefined,\n    }\n  }\n\n  const syncedBlock = parsed?.chains[0].latestBlock.number\n  const headBlock = parsed?.chains[0].chainHeadBlock.number\n\n  return {\n    available: true,\n    syncedBlock: syncedBlock ? parseFloat(syncedBlock) : undefined,\n    headBlock: headBlock ? parseFloat(headBlock) : undefined,\n  }\n}\n"
  },
  {
    "path": "src/data/combined/pools.ts",
    "content": "import { useQuery } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { useDeltaTimestamps } from 'utils/queries'\nimport { useBlocksFromTimestamps } from 'hooks/useBlocksFromTimestamps'\nimport { PoolData } from 'state/pools/reducer'\nimport { get2DayChange } from 'utils/data'\nimport { formatTokenName, formatTokenSymbol } from 'utils/tokens'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\n\nexport const POOLS_BULK = (block: number | undefined, pools: string[]) => {\n  let poolString = `[`\n  pools.map((address) => {\n    return (poolString += `\"${address}\",`)\n  })\n  poolString += ']'\n  const queryString =\n    `\n    query pools {\n      pools(where: {id_in: ${poolString}},` +\n    (block ? `block: {number: ${block}} ,` : ``) +\n    ` orderBy: totalValueLockedUSD, orderDirection: desc, subgraphError: allow) {\n        id\n        feeTier\n        liquidity\n        sqrtPrice\n        tick\n        token0 {\n            id\n            symbol \n            name\n            decimals\n            derivedETH\n        }\n        token1 {\n            id\n            symbol \n            name\n            decimals\n            derivedETH\n        }\n        token0Price\n        token1Price\n        volumeUSD\n        txCount\n        totalValueLockedToken0\n        totalValueLockedToken1\n        totalValueLockedUSD\n      }\n    }\n    `\n  return gql(queryString)\n}\n\ninterface PoolFields {\n  id: string\n  feeTier: string\n  liquidity: string\n  sqrtPrice: string\n  tick: string\n  token0: {\n    id: string\n    symbol: string\n    name: string\n    decimals: string\n    derivedETH: string\n  }\n  token1: {\n    id: string\n    symbol: string\n    name: string\n    decimals: string\n    derivedETH: string\n  }\n  token0Price: string\n  token1Price: string\n  volumeUSD: string\n  txCount: string\n  totalValueLockedToken0: string\n  totalValueLockedToken1: string\n  totalValueLockedUSD: string\n}\n\ninterface PoolDataResponse {\n  pools: PoolFields[]\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport function usePoolDatas(poolAddresses: string[]): {\n  loading: boolean\n  error: boolean\n  data:\n    | {\n        [address: string]: PoolData\n      }\n    | undefined\n} {\n  // get client\n  const { dataClient } = useClients()\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  // get blocks from historic timestamps\n  const [t24, t48, tWeek] = useDeltaTimestamps()\n  const { blocks, error: blockError } = useBlocksFromTimestamps([t24, t48, tWeek])\n  const [block24, block48, blockWeek] = blocks ?? []\n\n  const { loading, error, data } = useQuery<PoolDataResponse>(POOLS_BULK(undefined, poolAddresses), {\n    client: dataClient,\n  })\n\n  const {\n    loading: loading24,\n    error: error24,\n    data: data24,\n  } = useQuery<PoolDataResponse>(POOLS_BULK(block24?.number, poolAddresses), { client: dataClient })\n  const {\n    loading: loading48,\n    error: error48,\n    data: data48,\n  } = useQuery<PoolDataResponse>(POOLS_BULK(block48?.number, poolAddresses), { client: dataClient })\n  const {\n    loading: loadingWeek,\n    error: errorWeek,\n    data: dataWeek,\n  } = useQuery<PoolDataResponse>(POOLS_BULK(blockWeek?.number, poolAddresses), { client: dataClient })\n\n  const anyError = Boolean(error || error24 || error48 || blockError || errorWeek)\n  const anyLoading = Boolean(loading || loading24 || loading48 || loadingWeek)\n\n  // return early if not all data yet\n  if (anyError || anyLoading) {\n    return {\n      loading: anyLoading,\n      error: anyError,\n      data: undefined,\n    }\n  }\n\n  const parsed = data?.pools\n    ? data.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsed24 = data24?.pools\n    ? data24.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsed48 = data48?.pools\n    ? data48.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsedWeek = dataWeek?.pools\n    ? dataWeek.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n\n  // format data and calculate daily changes\n  const formatted = poolAddresses.reduce((accum: { [address: string]: PoolData }, address) => {\n    const current: PoolFields | undefined = parsed[address]\n    const oneDay: PoolFields | undefined = parsed24[address]\n    const twoDay: PoolFields | undefined = parsed48[address]\n    const week: PoolFields | undefined = parsedWeek[address]\n\n    const [volumeUSD, volumeUSDChange] =\n      current && oneDay && twoDay\n        ? get2DayChange(current.volumeUSD, oneDay.volumeUSD, twoDay.volumeUSD)\n        : current\n        ? [parseFloat(current.volumeUSD), 0]\n        : [0, 0]\n\n    const volumeUSDWeek =\n      current && week\n        ? parseFloat(current.volumeUSD) - parseFloat(week.volumeUSD)\n        : current\n        ? parseFloat(current.volumeUSD)\n        : 0\n\n    const tvlUSD = current ? parseFloat(current.totalValueLockedUSD) : 0\n\n    const tvlUSDChange =\n      current && oneDay\n        ? ((parseFloat(current.totalValueLockedUSD) - parseFloat(oneDay.totalValueLockedUSD)) /\n            parseFloat(oneDay.totalValueLockedUSD === '0' ? '1' : oneDay.totalValueLockedUSD)) *\n          100\n        : 0\n\n    const tvlToken0 = current ? parseFloat(current.totalValueLockedToken0) : 0\n    const tvlToken1 = current ? parseFloat(current.totalValueLockedToken1) : 0\n\n    const feeTier = current ? parseInt(current.feeTier) : 0\n\n    if (current) {\n      accum[address] = {\n        address,\n        feeTier,\n        liquidity: parseFloat(current.liquidity),\n        sqrtPrice: parseFloat(current.sqrtPrice),\n        tick: parseFloat(current.tick),\n        token0: {\n          address: current.token0.id,\n          name: formatTokenName(current.token0.id, current.token0.name, activeNetwork),\n          symbol: formatTokenSymbol(current.token0.id, current.token0.symbol, activeNetwork),\n          decimals: parseInt(current.token0.decimals),\n          derivedETH: parseFloat(current.token0.derivedETH),\n        },\n        token1: {\n          address: current.token1.id,\n          name: formatTokenName(current.token1.id, current.token1.name, activeNetwork),\n          symbol: formatTokenSymbol(current.token1.id, current.token1.symbol, activeNetwork),\n          decimals: parseInt(current.token1.decimals),\n          derivedETH: parseFloat(current.token1.derivedETH),\n        },\n        token0Price: parseFloat(current.token0Price),\n        token1Price: parseFloat(current.token1Price),\n        volumeUSD,\n        volumeUSDChange,\n        volumeUSDWeek,\n        tvlUSD,\n        tvlUSDChange,\n        tvlToken0,\n        tvlToken1,\n      }\n    }\n\n    return accum\n  }, {})\n\n  return {\n    loading: anyLoading,\n    error: anyError,\n    data: formatted,\n  }\n}\n"
  },
  {
    "path": "src/data/pools/chartData.ts",
    "content": "import dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport gql from 'graphql-tag'\nimport { PoolChartEntry } from 'state/pools/reducer'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\n\n// format dayjs with the libraries that we need\ndayjs.extend(utc)\ndayjs.extend(weekOfYear)\nconst ONE_DAY_UNIX = 24 * 60 * 60\n\nconst POOL_CHART = gql`\n  query poolDayDatas($startTime: Int!, $skip: Int!, $address: Bytes!) {\n    poolDayDatas(\n      first: 1000\n      skip: $skip\n      where: { pool: $address, date_gt: $startTime }\n      orderBy: date\n      orderDirection: asc\n      subgraphError: allow\n    ) {\n      date\n      volumeUSD\n      tvlUSD\n      feesUSD\n      pool {\n        feeTier\n      }\n    }\n  }\n`\n\ninterface ChartResults {\n  poolDayDatas: {\n    date: number\n    volumeUSD: string\n    tvlUSD: string\n    feesUSD: string\n    pool: {\n      feeTier: string\n    }\n  }[]\n}\n\nexport async function fetchPoolChartData(address: string, client: ApolloClient<NormalizedCacheObject>) {\n  let data: {\n    date: number\n    volumeUSD: string\n    tvlUSD: string\n    feesUSD: string\n    pool: {\n      feeTier: string\n    }\n  }[] = []\n  const startTimestamp = 1619170975\n  const endTimestamp = dayjs.utc().unix()\n\n  let error = false\n  let skip = 0\n  let allFound = false\n\n  try {\n    while (!allFound) {\n      const {\n        data: chartResData,\n        error,\n        loading,\n      } = await client.query<ChartResults>({\n        query: POOL_CHART,\n        variables: {\n          address: address,\n          startTime: startTimestamp,\n          skip,\n        },\n        fetchPolicy: 'cache-first',\n      })\n      if (!loading) {\n        skip += 1000\n        if (chartResData.poolDayDatas.length < 1000 || error) {\n          allFound = true\n        }\n        if (chartResData) {\n          data = data.concat(chartResData.poolDayDatas)\n        }\n      }\n    }\n  } catch {\n    error = true\n  }\n\n  if (data) {\n    const formattedExisting = data.reduce((accum: { [date: number]: PoolChartEntry }, dayData) => {\n      const roundedDate = parseInt((dayData.date / ONE_DAY_UNIX).toFixed(0))\n      const feePercent = parseFloat(dayData.pool.feeTier) / 10000\n      const tvlAdjust = dayData?.volumeUSD ? parseFloat(dayData.volumeUSD) * feePercent : 0\n\n      accum[roundedDate] = {\n        date: dayData.date,\n        volumeUSD: parseFloat(dayData.volumeUSD),\n        totalValueLockedUSD: parseFloat(dayData.tvlUSD) - tvlAdjust,\n        feesUSD: parseFloat(dayData.feesUSD),\n      }\n      return accum\n    }, {})\n\n    const firstEntry = formattedExisting[parseInt(Object.keys(formattedExisting)[0])]\n\n    // fill in empty days ( there will be no day datas if no trades made that day )\n    let timestamp = firstEntry?.date ?? startTimestamp\n    let latestTvl = firstEntry?.totalValueLockedUSD ?? 0\n    while (timestamp < endTimestamp - ONE_DAY_UNIX) {\n      const nextDay = timestamp + ONE_DAY_UNIX\n      const currentDayIndex = parseInt((nextDay / ONE_DAY_UNIX).toFixed(0))\n      if (!Object.keys(formattedExisting).includes(currentDayIndex.toString())) {\n        formattedExisting[currentDayIndex] = {\n          date: nextDay,\n          volumeUSD: 0,\n          totalValueLockedUSD: latestTvl,\n          feesUSD: 0,\n        }\n      } else {\n        latestTvl = formattedExisting[currentDayIndex].totalValueLockedUSD\n      }\n      timestamp = nextDay\n    }\n\n    const dateMap = Object.keys(formattedExisting).map((key) => {\n      return formattedExisting[parseInt(key)]\n    })\n\n    return {\n      data: dateMap,\n      error: false,\n    }\n  } else {\n    return {\n      data: undefined,\n      error,\n    }\n  }\n}\n"
  },
  {
    "path": "src/data/pools/poolData.ts",
    "content": "import { useQuery } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { useDeltaTimestamps } from 'utils/queries'\nimport { useBlocksFromTimestamps } from 'hooks/useBlocksFromTimestamps'\nimport { PoolData } from 'state/pools/reducer'\nimport { get2DayChange } from 'utils/data'\nimport { formatTokenName, formatTokenSymbol } from 'utils/tokens'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\n\nexport const POOLS_BULK = (block: number | undefined, pools: string[]) => {\n  let poolString = `[`\n  pools.map((address) => {\n    return (poolString += `\"${address}\",`)\n  })\n  poolString += ']'\n  const queryString =\n    `\n    query pools {\n      pools(where: {id_in: ${poolString}},` +\n    (block ? `block: {number: ${block}} ,` : ``) +\n    ` orderBy: totalValueLockedUSD, orderDirection: desc, subgraphError: allow) {\n        id\n        feeTier\n        liquidity\n        sqrtPrice\n        tick\n        token0 {\n            id\n            symbol \n            name\n            decimals\n            derivedETH\n        }\n        token1 {\n            id\n            symbol \n            name\n            decimals\n            derivedETH\n        }\n        token0Price\n        token1Price\n        volumeUSD\n        volumeToken0\n        volumeToken1\n        txCount\n        totalValueLockedToken0\n        totalValueLockedToken1\n        totalValueLockedUSD\n      }\n      bundles (where: {id: \"1\"}) {\n        ethPriceUSD\n      }\n    }\n    `\n  return gql(queryString)\n}\n\ninterface PoolFields {\n  id: string\n  feeTier: string\n  liquidity: string\n  sqrtPrice: string\n  tick: string\n  token0: {\n    id: string\n    symbol: string\n    name: string\n    decimals: string\n    derivedETH: string\n  }\n  token1: {\n    id: string\n    symbol: string\n    name: string\n    decimals: string\n    derivedETH: string\n  }\n  token0Price: string\n  token1Price: string\n  volumeUSD: string\n  volumeToken0: string\n  volumeToken1: string\n  txCount: string\n  totalValueLockedToken0: string\n  totalValueLockedToken1: string\n  totalValueLockedUSD: string\n}\n\ninterface PoolDataResponse {\n  pools: PoolFields[]\n  bundles: {\n    ethPriceUSD: string\n  }[]\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport function usePoolDatas(poolAddresses: string[]): {\n  loading: boolean\n  error: boolean\n  data:\n    | {\n        [address: string]: PoolData\n      }\n    | undefined\n} {\n  // get client\n  const { dataClient } = useClients()\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  // get blocks from historic timestamps\n  const [t24, t48, tWeek] = useDeltaTimestamps()\n  const { blocks, error: blockError } = useBlocksFromTimestamps([t24, t48, tWeek])\n  const [block24, block48, blockWeek] = blocks ?? []\n\n  const { loading, error, data } = useQuery<PoolDataResponse>(POOLS_BULK(undefined, poolAddresses), {\n    client: dataClient,\n  })\n\n  const {\n    loading: loading24,\n    error: error24,\n    data: data24,\n  } = useQuery<PoolDataResponse>(POOLS_BULK(block24?.number, poolAddresses), { client: dataClient })\n  const {\n    loading: loading48,\n    error: error48,\n    data: data48,\n  } = useQuery<PoolDataResponse>(POOLS_BULK(block48?.number, poolAddresses), { client: dataClient })\n  const {\n    loading: loadingWeek,\n    error: errorWeek,\n    data: dataWeek,\n  } = useQuery<PoolDataResponse>(POOLS_BULK(blockWeek?.number, poolAddresses), { client: dataClient })\n\n  const anyError = Boolean(error || error24 || error48 || blockError || errorWeek)\n  const anyLoading = Boolean(loading || loading24 || loading48 || loadingWeek)\n\n  // return early if not all data yet\n  if (anyError || anyLoading) {\n    return {\n      loading: anyLoading,\n      error: anyError,\n      data: undefined,\n    }\n  }\n\n  const ethPriceUSD = data?.bundles?.[0]?.ethPriceUSD ? parseFloat(data?.bundles?.[0]?.ethPriceUSD) : 0\n\n  const parsed = data?.pools\n    ? data.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsed24 = data24?.pools\n    ? data24.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsed48 = data48?.pools\n    ? data48.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsedWeek = dataWeek?.pools\n    ? dataWeek.pools.reduce((accum: { [address: string]: PoolFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n\n  // format data and calculate daily changes\n  const formatted = poolAddresses.reduce((accum: { [address: string]: PoolData }, address) => {\n    const current: PoolFields | undefined = parsed[address]\n    const oneDay: PoolFields | undefined = parsed24[address]\n    const twoDay: PoolFields | undefined = parsed48[address]\n    const week: PoolFields | undefined = parsedWeek[address]\n\n    const [volumeUSD, volumeUSDChange] =\n      current && oneDay && twoDay\n        ? get2DayChange(current.volumeUSD, oneDay.volumeUSD, twoDay.volumeUSD)\n        : current\n        ? [parseFloat(current.volumeUSD), 0]\n        : [0, 0]\n\n    const volumeUSDWeek =\n      current && week\n        ? parseFloat(current.volumeUSD) - parseFloat(week.volumeUSD)\n        : current\n        ? parseFloat(current.volumeUSD)\n        : 0\n\n    // Hotifx: Subtract fees from TVL to correct data while subgraph is fixed.\n    /**\n     * Note: see issue desribed here https://github.com/Uniswap/v3-subgraph/issues/74\n     * During subgraph deploy switch this month we lost logic to fix this accounting.\n     * Grafted sync pending fix now.\n     */\n    const feePercent = current ? parseFloat(current.feeTier) / 10000 / 100 : 0\n    const tvlAdjust0 = current?.volumeToken0 ? (parseFloat(current.volumeToken0) * feePercent) / 2 : 0\n    const tvlAdjust1 = current?.volumeToken1 ? (parseFloat(current.volumeToken1) * feePercent) / 2 : 0\n    const tvlToken0 = current ? parseFloat(current.totalValueLockedToken0) - tvlAdjust0 : 0\n    const tvlToken1 = current ? parseFloat(current.totalValueLockedToken1) - tvlAdjust1 : 0\n    let tvlUSD = current ? parseFloat(current.totalValueLockedUSD) : 0\n\n    const tvlUSDChange =\n      current && oneDay\n        ? ((parseFloat(current.totalValueLockedUSD) - parseFloat(oneDay.totalValueLockedUSD)) /\n            parseFloat(oneDay.totalValueLockedUSD === '0' ? '1' : oneDay.totalValueLockedUSD)) *\n          100\n        : 0\n\n    // Part of TVL fix\n    const tvlUpdated = current\n      ? tvlToken0 * parseFloat(current.token0.derivedETH) * ethPriceUSD +\n        tvlToken1 * parseFloat(current.token1.derivedETH) * ethPriceUSD\n      : undefined\n    if (tvlUpdated) {\n      tvlUSD = tvlUpdated\n    }\n\n    const feeTier = current ? parseInt(current.feeTier) : 0\n\n    if (current) {\n      accum[address] = {\n        address,\n        feeTier,\n        liquidity: parseFloat(current.liquidity),\n        sqrtPrice: parseFloat(current.sqrtPrice),\n        tick: parseFloat(current.tick),\n        token0: {\n          address: current.token0.id,\n          name: formatTokenName(current.token0.id, current.token0.name, activeNetwork),\n          symbol: formatTokenSymbol(current.token0.id, current.token0.symbol, activeNetwork),\n          decimals: parseInt(current.token0.decimals),\n          derivedETH: parseFloat(current.token0.derivedETH),\n        },\n        token1: {\n          address: current.token1.id,\n          name: formatTokenName(current.token1.id, current.token1.name, activeNetwork),\n          symbol: formatTokenSymbol(current.token1.id, current.token1.symbol, activeNetwork),\n          decimals: parseInt(current.token1.decimals),\n          derivedETH: parseFloat(current.token1.derivedETH),\n        },\n        token0Price: parseFloat(current.token0Price),\n        token1Price: parseFloat(current.token1Price),\n        volumeUSD,\n        volumeUSDChange,\n        volumeUSDWeek,\n        tvlUSD,\n        tvlUSDChange,\n        tvlToken0,\n        tvlToken1,\n      }\n    }\n\n    return accum\n  }, {})\n\n  return {\n    loading: anyLoading,\n    error: anyError,\n    data: formatted,\n  }\n}\n"
  },
  {
    "path": "src/data/pools/tickData.ts",
    "content": "import gql from 'graphql-tag'\nimport JSBI from 'jsbi'\nimport keyBy from 'lodash.keyby'\nimport { TickMath, tickToPrice } from '@uniswap/v3-sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\n\nconst PRICE_FIXED_DIGITS = 4\nconst DEFAULT_SURROUNDING_TICKS = 300\nconst FEE_TIER_TO_TICK_SPACING = (feeTier: string): number => {\n  switch (feeTier) {\n    case '10000':\n      return 200\n    case '3000':\n      return 60\n    case '500':\n      return 10\n    case '100':\n      return 1\n    default:\n      throw Error(`Tick spacing for fee tier ${feeTier} undefined.`)\n  }\n}\n\ninterface TickPool {\n  tick: string\n  feeTier: string\n  token0: {\n    symbol: string\n    id: string\n    decimals: string\n  }\n  token1: {\n    symbol: string\n    id: string\n    decimals: string\n  }\n  sqrtPrice: string\n  liquidity: string\n}\n\ninterface PoolResult {\n  pool: TickPool\n}\n\n// Raw tick returned from GQL\ninterface Tick {\n  tickIdx: string\n  liquidityGross: string\n  liquidityNet: string\n  price0: string\n  price1: string\n}\n\ninterface SurroundingTicksResult {\n  ticks: Tick[]\n}\n\n// Tick with fields parsed to JSBIs, and active liquidity computed.\nexport interface TickProcessed {\n  liquidityGross: JSBI\n  liquidityNet: JSBI\n  tickIdx: number\n  liquidityActive: JSBI\n  price0: string\n  price1: string\n}\n\nconst fetchInitializedTicks = async (\n  poolAddress: string,\n  tickIdxLowerBound: number,\n  tickIdxUpperBound: number,\n  client: ApolloClient<NormalizedCacheObject>,\n): Promise<{ loading?: boolean; error?: boolean; ticks?: Tick[] }> => {\n  const tickQuery = gql`\n    query surroundingTicks(\n      $poolAddress: String!\n      $tickIdxLowerBound: BigInt!\n      $tickIdxUpperBound: BigInt!\n      $skip: Int!\n    ) {\n      ticks(\n        subgraphError: allow\n        first: 1000\n        skip: $skip\n        where: { poolAddress: $poolAddress, tickIdx_lte: $tickIdxUpperBound, tickIdx_gte: $tickIdxLowerBound }\n      ) {\n        tickIdx\n        liquidityGross\n        liquidityNet\n        price0\n        price1\n      }\n    }\n  `\n\n  let surroundingTicks: Tick[] = []\n  let surroundingTicksResult: Tick[] = []\n  let skip = 0\n  do {\n    const { data, error, loading } = await client.query<SurroundingTicksResult>({\n      query: tickQuery,\n      fetchPolicy: 'cache-first',\n      variables: {\n        poolAddress,\n        tickIdxLowerBound,\n        tickIdxUpperBound,\n        skip,\n      },\n    })\n\n    // console.log({ data, error, loading }, 'Result. Skip: ' + skip)\n\n    if (loading) {\n      continue\n    }\n\n    if (error) {\n      return { error: Boolean(error), loading, ticks: surroundingTicksResult }\n    }\n\n    surroundingTicks = data.ticks\n    surroundingTicksResult = surroundingTicksResult.concat(surroundingTicks)\n    skip += 1000\n  } while (surroundingTicks.length > 0)\n\n  return { ticks: surroundingTicksResult, loading: false, error: false }\n}\n\nexport interface PoolTickData {\n  ticksProcessed: TickProcessed[]\n  feeTier: string\n  tickSpacing: number\n  activeTickIdx: number\n}\n\nconst poolQuery = gql`\n  query pool($poolAddress: String!) {\n    pool(id: $poolAddress) {\n      tick\n      token0 {\n        symbol\n        id\n        decimals\n      }\n      token1 {\n        symbol\n        id\n        decimals\n      }\n      feeTier\n      sqrtPrice\n      liquidity\n    }\n  }\n`\n\nexport const fetchTicksSurroundingPrice = async (\n  poolAddress: string,\n  client: ApolloClient<NormalizedCacheObject>,\n  numSurroundingTicks = DEFAULT_SURROUNDING_TICKS,\n): Promise<{\n  loading?: boolean\n  error?: boolean\n  data?: PoolTickData\n}> => {\n  const {\n    data: poolResult,\n    error,\n    loading,\n  } = await client.query<PoolResult>({\n    query: poolQuery,\n    variables: {\n      poolAddress,\n    },\n  })\n\n  if (loading || error || !poolResult) {\n    return {\n      loading,\n      error: Boolean(error),\n      data: undefined,\n    }\n  }\n\n  const {\n    pool: {\n      tick: poolCurrentTick,\n      feeTier,\n      liquidity,\n      token0: { id: token0Address, decimals: token0Decimals },\n      token1: { id: token1Address, decimals: token1Decimals },\n    },\n  } = poolResult\n\n  const poolCurrentTickIdx = parseInt(poolCurrentTick)\n  const tickSpacing = FEE_TIER_TO_TICK_SPACING(feeTier)\n\n  // The pools current tick isn't necessarily a tick that can actually be initialized.\n  // Find the nearest valid tick given the tick spacing.\n  const activeTickIdx = Math.floor(poolCurrentTickIdx / tickSpacing) * tickSpacing\n\n  // Our search bounds must take into account fee spacing. i.e. for fee tier 1%, only\n  // ticks with index 200, 400, 600, etc can be active.\n  const tickIdxLowerBound = activeTickIdx - numSurroundingTicks * tickSpacing\n  const tickIdxUpperBound = activeTickIdx + numSurroundingTicks * tickSpacing\n\n  const initializedTicksResult = await fetchInitializedTicks(poolAddress, tickIdxLowerBound, tickIdxUpperBound, client)\n  if (initializedTicksResult.error || initializedTicksResult.loading) {\n    return {\n      error: initializedTicksResult.error,\n      loading: initializedTicksResult.loading,\n    }\n  }\n\n  const { ticks: initializedTicks } = initializedTicksResult\n\n  const tickIdxToInitializedTick = keyBy(initializedTicks, 'tickIdx')\n\n  const token0 = new Token(1, token0Address, parseInt(token0Decimals))\n  const token1 = new Token(1, token1Address, parseInt(token1Decimals))\n\n  // console.log({ activeTickIdx, poolCurrentTickIdx }, 'Active ticks')\n\n  // If the pool's tick is MIN_TICK (-887272), then when we find the closest\n  // initializable tick to its left, the value would be smaller than MIN_TICK.\n  // In this case we must ensure that the prices shown never go below/above.\n  // what actual possible from the protocol.\n  let activeTickIdxForPrice = activeTickIdx\n  if (activeTickIdxForPrice < TickMath.MIN_TICK) {\n    activeTickIdxForPrice = TickMath.MIN_TICK\n  }\n  if (activeTickIdxForPrice > TickMath.MAX_TICK) {\n    activeTickIdxForPrice = TickMath.MAX_TICK\n  }\n\n  const activeTickProcessed: TickProcessed = {\n    liquidityActive: JSBI.BigInt(liquidity),\n    tickIdx: activeTickIdx,\n    liquidityNet: JSBI.BigInt(0),\n    price0: tickToPrice(token0, token1, activeTickIdxForPrice).toFixed(PRICE_FIXED_DIGITS),\n    price1: tickToPrice(token1, token0, activeTickIdxForPrice).toFixed(PRICE_FIXED_DIGITS),\n    liquidityGross: JSBI.BigInt(0),\n  }\n\n  // If our active tick happens to be initialized (i.e. there is a position that starts or\n  // ends at that tick), ensure we set the gross and net.\n  // correctly.\n  const activeTick = tickIdxToInitializedTick[activeTickIdx]\n  if (activeTick) {\n    activeTickProcessed.liquidityGross = JSBI.BigInt(activeTick.liquidityGross)\n    activeTickProcessed.liquidityNet = JSBI.BigInt(activeTick.liquidityNet)\n  }\n\n  enum Direction {\n    ASC,\n    DESC,\n  }\n\n  // Computes the numSurroundingTicks above or below the active tick.\n  const computeSurroundingTicks = (\n    activeTickProcessed: TickProcessed,\n    tickSpacing: number,\n    numSurroundingTicks: number,\n    direction: Direction,\n  ) => {\n    let previousTickProcessed: TickProcessed = {\n      ...activeTickProcessed,\n    }\n\n    // Iterate outwards (either up or down depending on 'Direction') from the active tick,\n    // building active liquidity for every tick.\n    let processedTicks: TickProcessed[] = []\n    for (let i = 0; i < numSurroundingTicks; i++) {\n      const currentTickIdx =\n        direction == Direction.ASC\n          ? previousTickProcessed.tickIdx + tickSpacing\n          : previousTickProcessed.tickIdx - tickSpacing\n\n      if (currentTickIdx < TickMath.MIN_TICK || currentTickIdx > TickMath.MAX_TICK) {\n        break\n      }\n\n      const currentTickProcessed: TickProcessed = {\n        liquidityActive: previousTickProcessed.liquidityActive,\n        tickIdx: currentTickIdx,\n        liquidityNet: JSBI.BigInt(0),\n        price0: tickToPrice(token0, token1, currentTickIdx).toFixed(PRICE_FIXED_DIGITS),\n        price1: tickToPrice(token1, token0, currentTickIdx).toFixed(PRICE_FIXED_DIGITS),\n        liquidityGross: JSBI.BigInt(0),\n      }\n\n      // Check if there is an initialized tick at our current tick.\n      // If so copy the gross and net liquidity from the initialized tick.\n      const currentInitializedTick = tickIdxToInitializedTick[currentTickIdx.toString()]\n      if (currentInitializedTick) {\n        currentTickProcessed.liquidityGross = JSBI.BigInt(currentInitializedTick.liquidityGross)\n        currentTickProcessed.liquidityNet = JSBI.BigInt(currentInitializedTick.liquidityNet)\n      }\n\n      // Update the active liquidity.\n      // If we are iterating ascending and we found an initialized tick we immediately apply\n      // it to the current processed tick we are building.\n      // If we are iterating descending, we don't want to apply the net liquidity until the following tick.\n      if (direction == Direction.ASC && currentInitializedTick) {\n        currentTickProcessed.liquidityActive = JSBI.add(\n          previousTickProcessed.liquidityActive,\n          JSBI.BigInt(currentInitializedTick.liquidityNet),\n        )\n      } else if (direction == Direction.DESC && JSBI.notEqual(previousTickProcessed.liquidityNet, JSBI.BigInt(0))) {\n        // We are iterating descending, so look at the previous tick and apply any net liquidity.\n        currentTickProcessed.liquidityActive = JSBI.subtract(\n          previousTickProcessed.liquidityActive,\n          previousTickProcessed.liquidityNet,\n        )\n      }\n\n      processedTicks.push(currentTickProcessed)\n      previousTickProcessed = currentTickProcessed\n    }\n\n    if (direction == Direction.DESC) {\n      processedTicks = processedTicks.reverse()\n    }\n\n    return processedTicks\n  }\n\n  const subsequentTicks: TickProcessed[] = computeSurroundingTicks(\n    activeTickProcessed,\n    tickSpacing,\n    numSurroundingTicks,\n    Direction.ASC,\n  )\n\n  const previousTicks: TickProcessed[] = computeSurroundingTicks(\n    activeTickProcessed,\n    tickSpacing,\n    numSurroundingTicks,\n    Direction.DESC,\n  )\n\n  const ticksProcessed = previousTicks.concat(activeTickProcessed).concat(subsequentTicks)\n\n  return {\n    data: {\n      ticksProcessed,\n      feeTier,\n      tickSpacing,\n      activeTickIdx,\n    },\n  }\n}\n"
  },
  {
    "path": "src/data/pools/topPools.ts",
    "content": "import { useMemo } from 'react'\nimport { useQuery } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\nimport { notEmpty } from 'utils'\nimport { POOL_HIDE } from '../../constants'\n\nexport const TOP_POOLS = gql`\n  query topPools {\n    pools(first: 50, orderBy: totalValueLockedUSD, orderDirection: desc, subgraphError: allow) {\n      id\n    }\n  }\n`\n\ninterface TopPoolsResponse {\n  pools: {\n    id: string\n  }[]\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport function useTopPoolAddresses(): {\n  loading: boolean\n  error: boolean\n  addresses: string[] | undefined\n} {\n  const [currentNetwork] = useActiveNetworkVersion()\n  const { dataClient } = useClients()\n  const { loading, error, data } = useQuery<TopPoolsResponse>(TOP_POOLS, {\n    client: dataClient,\n    fetchPolicy: 'cache-first',\n  })\n\n  const formattedData = useMemo(() => {\n    if (data) {\n      return data.pools\n        .map((p) => {\n          if (POOL_HIDE[currentNetwork.id].includes(p.id.toLocaleLowerCase())) {\n            return undefined\n          }\n          return p.id\n        })\n        .filter(notEmpty)\n    } else {\n      return undefined\n    }\n  }, [currentNetwork.id, data])\n\n  return {\n    loading: loading,\n    error: Boolean(error),\n    addresses: formattedData,\n  }\n}\n"
  },
  {
    "path": "src/data/pools/transactions.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { Transaction, TransactionType } from 'types'\nimport { formatTokenSymbol } from 'utils/tokens'\n\nconst POOL_TRANSACTIONS = gql`\n  query transactions($address: Bytes!) {\n    mints(first: 100, orderBy: timestamp, orderDirection: desc, where: { pool: $address }, subgraphError: allow) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      owner\n      sender\n      origin\n      amount0\n      amount1\n      amountUSD\n    }\n    swaps(first: 100, orderBy: timestamp, orderDirection: desc, where: { pool: $address }, subgraphError: allow) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      origin\n      amount0\n      amount1\n      amountUSD\n    }\n    burns(first: 100, orderBy: timestamp, orderDirection: desc, where: { pool: $address }, subgraphError: allow) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      owner\n      amount0\n      amount1\n      amountUSD\n    }\n  }\n`\n\ninterface TransactionResults {\n  mints: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  swaps: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  burns: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    owner: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n}\n\nexport async function fetchPoolTransactions(\n  address: string,\n  client: ApolloClient<NormalizedCacheObject>,\n): Promise<{ data: Transaction[] | undefined; error: boolean; loading: boolean }> {\n  const { data, error, loading } = await client.query<TransactionResults>({\n    query: POOL_TRANSACTIONS,\n    variables: {\n      address: address,\n    },\n    fetchPolicy: 'cache-first',\n  })\n\n  if (error) {\n    return {\n      data: undefined,\n      error: true,\n      loading: false,\n    }\n  }\n\n  if (loading && !data) {\n    return {\n      data: undefined,\n      error: false,\n      loading: true,\n    }\n  }\n\n  const mints = data.mints.map((m) => {\n    return {\n      type: TransactionType.MINT,\n      hash: m.transaction.id,\n      timestamp: m.timestamp,\n      sender: m.origin,\n      token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n      token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n      token0Address: m.pool.token0.id,\n      token1Address: m.pool.token1.id,\n      amountUSD: parseFloat(m.amountUSD),\n      amountToken0: parseFloat(m.amount0),\n      amountToken1: parseFloat(m.amount1),\n    }\n  })\n  const burns = data.burns.map((m) => {\n    return {\n      type: TransactionType.BURN,\n      hash: m.transaction.id,\n      timestamp: m.timestamp,\n      sender: m.owner,\n      token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n      token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n      token0Address: m.pool.token0.id,\n      token1Address: m.pool.token1.id,\n      amountUSD: parseFloat(m.amountUSD),\n      amountToken0: parseFloat(m.amount0),\n      amountToken1: parseFloat(m.amount1),\n    }\n  })\n\n  const swaps = data.swaps.map((m) => {\n    return {\n      type: TransactionType.SWAP,\n      hash: m.transaction.id,\n      timestamp: m.timestamp,\n      sender: m.origin,\n      token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n      token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n      token0Address: m.pool.token0.id,\n      token1Address: m.pool.token1.id,\n      amountUSD: parseFloat(m.amountUSD),\n      amountToken0: parseFloat(m.amount0),\n      amountToken1: parseFloat(m.amount1),\n    }\n  })\n\n  return { data: [...mints, ...burns, ...swaps], error: false, loading: false }\n}\n"
  },
  {
    "path": "src/data/protocol/chart.ts",
    "content": "import { ChartDayData } from '../../types/index'\nimport { useState, useEffect } from 'react'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport gql from 'graphql-tag'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\nimport { arbitrumClient, optimismClient } from 'apollo/client'\nimport { SupportedNetwork } from 'constants/networks'\nimport { useDerivedProtocolTVLHistory } from './derived'\n\n// format dayjs with the libraries that we need\ndayjs.extend(utc)\ndayjs.extend(weekOfYear)\nconst ONE_DAY_UNIX = 24 * 60 * 60\n\nconst GLOBAL_CHART = gql`\n  query uniswapDayDatas($startTime: Int!, $skip: Int!) {\n    uniswapDayDatas(\n      first: 1000\n      skip: $skip\n      subgraphError: allow\n      where: { date_gt: $startTime }\n      orderBy: date\n      orderDirection: asc\n    ) {\n      id\n      date\n      volumeUSD\n      tvlUSD\n    }\n  }\n`\n\ninterface ChartResults {\n  uniswapDayDatas: {\n    date: number\n    volumeUSD: string\n    tvlUSD: string\n  }[]\n}\n\nasync function fetchChartData(client: ApolloClient<NormalizedCacheObject>) {\n  let data: {\n    date: number\n    volumeUSD: string\n    tvlUSD: string\n  }[] = []\n  const startTimestamp = client === arbitrumClient ? 1630423606 : client === optimismClient ? 1636697130 : 1619170975\n  const endTimestamp = dayjs.utc().unix()\n\n  let error = false\n  let skip = 0\n  let allFound = false\n\n  try {\n    while (!allFound) {\n      const {\n        data: chartResData,\n        error,\n        loading,\n      } = await client.query<ChartResults>({\n        query: GLOBAL_CHART,\n        variables: {\n          startTime: startTimestamp,\n          skip,\n        },\n        fetchPolicy: 'cache-first',\n      })\n      if (!loading) {\n        skip += 1000\n        if (chartResData.uniswapDayDatas.length < 1000 || error) {\n          allFound = true\n        }\n        if (chartResData) {\n          data = data.concat(chartResData.uniswapDayDatas)\n        }\n      }\n    }\n  } catch {\n    error = true\n  }\n\n  if (data) {\n    const formattedExisting = data.reduce((accum: { [date: number]: ChartDayData }, dayData) => {\n      const roundedDate = parseInt((dayData.date / ONE_DAY_UNIX).toFixed(0))\n      accum[roundedDate] = {\n        date: dayData.date,\n        volumeUSD: parseFloat(dayData.volumeUSD),\n        tvlUSD: parseFloat(dayData.tvlUSD),\n      }\n      return accum\n    }, {})\n\n    const firstEntry = formattedExisting[parseInt(Object.keys(formattedExisting)[0])]\n\n    // fill in empty days ( there will be no day datas if no trades made that day )\n    let timestamp = firstEntry?.date ?? startTimestamp\n    let latestTvl = firstEntry?.tvlUSD ?? 0\n    while (timestamp < endTimestamp - ONE_DAY_UNIX) {\n      const nextDay = timestamp + ONE_DAY_UNIX\n      const currentDayIndex = parseInt((nextDay / ONE_DAY_UNIX).toFixed(0))\n      if (!Object.keys(formattedExisting).includes(currentDayIndex.toString())) {\n        formattedExisting[currentDayIndex] = {\n          date: nextDay,\n          volumeUSD: 0,\n          tvlUSD: latestTvl,\n        }\n      } else {\n        latestTvl = formattedExisting[currentDayIndex].tvlUSD\n      }\n      timestamp = nextDay\n    }\n\n    if (client === optimismClient) {\n      formattedExisting[18855] = {\n        ...formattedExisting[18855],\n        tvlUSD: 13480000,\n      }\n      formattedExisting[18856] = {\n        ...formattedExisting[18856],\n        tvlUSD: 13480000,\n      }\n    }\n\n    return {\n      data: Object.values(formattedExisting),\n      error: false,\n    }\n  } else {\n    return {\n      data: undefined,\n      error,\n    }\n  }\n}\n\n/**\n * Fetch historic chart data\n */\nexport function useFetchGlobalChartData(): {\n  error: boolean\n  data: ChartDayData[] | undefined\n} {\n  const [data, setData] = useState<{ [network: string]: ChartDayData[] | undefined }>()\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  const derivedData = useDerivedProtocolTVLHistory()\n\n  const [activeNetworkVersion] = useActiveNetworkVersion()\n  const shouldUserDerivedData =\n    activeNetworkVersion.id === SupportedNetwork.ETHEREUM || activeNetworkVersion.id === SupportedNetwork.POLYGON\n  const indexedData = data?.[activeNetworkVersion.id]\n\n  // @TODO: remove this once we have fix for mainnet TVL issue\n  const formattedData = shouldUserDerivedData ? derivedData : indexedData\n\n  useEffect(() => {\n    async function fetch() {\n      const { data, error } = await fetchChartData(dataClient)\n      if (data && !error) {\n        setData({\n          [activeNetworkVersion.id]: data,\n        })\n      } else if (error) {\n        setError(true)\n      }\n    }\n    if (!indexedData && !error && !shouldUserDerivedData) {\n      fetch()\n    }\n  }, [data, error, dataClient, indexedData, activeNetworkVersion.id, shouldUserDerivedData])\n\n  return {\n    error,\n    data: formattedData,\n  }\n}\n"
  },
  {
    "path": "src/data/protocol/derived.ts",
    "content": "import { SupportedNetwork } from 'constants/networks'\nimport { fetchPoolChartData } from 'data/pools/chartData'\nimport { usePoolDatas } from 'data/pools/poolData'\nimport { useTopPoolAddresses } from 'data/pools/topPools'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { AppDispatch } from 'state'\nimport { useActiveNetworkVersion, useDataClient } from 'state/application/hooks'\nimport { updatePoolChartData } from 'state/pools/actions'\nimport { PoolChartEntry, PoolData } from 'state/pools/reducer'\nimport { ChartDayData } from 'types'\nimport { POOL_HIDE } from '../../constants'\n\n/**\n * Calculates offset amount to avoid inaccurate USD data for global TVL.\n * @returns TVL value in USD\n */\nexport function useTVLOffset() {\n  const [currentNetwork] = useActiveNetworkVersion()\n  const { data } = usePoolDatas(POOL_HIDE[currentNetwork.id])\n\n  const tvlOffset = useMemo(() => {\n    if (!data) return undefined\n\n    return Object.keys(data).reduce((accum: number, poolAddress) => {\n      const poolData: PoolData = data[poolAddress]\n      return accum + poolData.tvlUSD\n    }, 0)\n  }, [data])\n\n  return tvlOffset\n}\n\n/**\n * Fecthes and formats data for pools that result in incorrect USD TVL.\n *\n * Note: not used currently but useful for debugging.\n *\n * @returns Chart data by day for values to offset accurate USD.\n */\nexport function useDerivedOffsetTVLHistory() {\n  const dataClient = useDataClient()\n  const [chartData, setChartData] = useState<{ [key: number]: ChartDayData } | undefined>(undefined)\n  const dispatch = useDispatch<AppDispatch>()\n\n  const [currentNetwork] = useActiveNetworkVersion()\n\n  useEffect(() => {\n    async function fetchAll() {\n      // fetch all data for each pool\n      const data = await POOL_HIDE[currentNetwork.id].reduce(\n        async (accumP: Promise<{ [key: number]: ChartDayData }>, address) => {\n          const accum = await accumP\n          const { data } = await fetchPoolChartData(address, dataClient)\n          if (!data) return accum\n          dispatch(updatePoolChartData({ poolAddress: address, chartData: data, networkId: SupportedNetwork.ETHEREUM }))\n          data.map((poolDayData: PoolChartEntry) => {\n            const { date, totalValueLockedUSD, volumeUSD } = poolDayData\n            const roundedDate = date\n            if (!accum[roundedDate]) {\n              accum[roundedDate] = {\n                tvlUSD: 0,\n                date: roundedDate,\n                volumeUSD: 0,\n              }\n            }\n            accum[roundedDate].tvlUSD = accum[roundedDate].tvlUSD + totalValueLockedUSD\n            accum[roundedDate].volumeUSD = accum[roundedDate].volumeUSD + volumeUSD\n          })\n          return accum\n        },\n        Promise.resolve({} as { [key: number]: ChartDayData }),\n      )\n\n      // Format as array\n      setChartData(data)\n    }\n\n    if (!chartData) {\n      fetchAll()\n    }\n  }, [chartData, currentNetwork.id, dataClient, dispatch])\n\n  return chartData\n}\n\n// # of pools to include in historical chart volume and TVL data\nconst POOL_COUNT_FOR_AGGREGATE = 20\n\n/**\n * Derives historical TVL data for top 50 pools.\n * @returns Chart data for aggregate Uniswap TVL over time.\n */\nexport function useDerivedProtocolTVLHistory() {\n  const dataClient = useDataClient()\n  const { addresses } = useTopPoolAddresses()\n  const dispatch = useDispatch<AppDispatch>()\n\n  const [currentNetwork] = useActiveNetworkVersion()\n\n  const [chartData, setChartData] = useState<{ [key: string]: ChartDayData[] } | undefined>(undefined)\n\n  useEffect(() => {\n    async function fetchAll() {\n      if (!addresses) {\n        return\n      }\n      // fetch all data for each pool\n      const data = await addresses\n        .slice(0, POOL_COUNT_FOR_AGGREGATE) // @TODO: must be replaced with aggregate with subgraph data fixed.\n        .reduce(\n          async (accumP: Promise<{ [key: number]: ChartDayData }>, address) => {\n            const accum = await accumP\n            if (POOL_HIDE[currentNetwork.id].includes(address)) {\n              return accum\n            }\n            const { data } = await fetchPoolChartData(address, dataClient)\n            if (!data) return accum\n            dispatch(updatePoolChartData({ poolAddress: address, chartData: data, networkId: currentNetwork.id }))\n            data.map((poolDayData: PoolChartEntry) => {\n              const { date, totalValueLockedUSD, volumeUSD } = poolDayData\n              const roundedDate = date\n              if (!accum[roundedDate]) {\n                accum[roundedDate] = {\n                  tvlUSD: 0,\n                  date: roundedDate,\n                  volumeUSD: 0,\n                }\n              }\n              accum[roundedDate].tvlUSD = accum[roundedDate].tvlUSD + totalValueLockedUSD\n              accum[roundedDate].volumeUSD = accum[roundedDate].volumeUSD + volumeUSD\n            })\n            return accum\n          },\n          Promise.resolve({} as { [key: number]: ChartDayData }),\n        )\n\n      // Format as array\n      setChartData({ ...chartData, [currentNetwork.id]: Object.values(data) })\n    }\n\n    if (!chartData) {\n      fetchAll()\n    }\n  }, [addresses, chartData, currentNetwork.id, dataClient, dispatch])\n\n  return chartData?.[currentNetwork.id]\n}\n"
  },
  {
    "path": "src/data/protocol/overview.ts",
    "content": "import { getPercentChange } from '../../utils/data'\nimport { ProtocolData } from '../../state/protocol/reducer'\nimport gql from 'graphql-tag'\nimport { useQuery, ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { useDeltaTimestamps } from 'utils/queries'\nimport { useBlocksFromTimestamps } from 'hooks/useBlocksFromTimestamps'\nimport { useMemo } from 'react'\nimport { useClients } from 'state/application/hooks'\nimport { useTVLOffset } from './derived'\n\nexport const GLOBAL_DATA = (block?: string) => {\n  const queryString = ` query uniswapFactories {\n      factories(\n       ${block !== undefined ? `block: { number: ${block}}` : ``} \n       first: 1, subgraphError: allow) {\n        txCount\n        totalVolumeUSD\n        totalFeesUSD\n        totalValueLockedUSD\n      }\n    }`\n  return gql(queryString)\n}\n\ninterface GlobalResponse {\n  factories: {\n    txCount: string\n    totalVolumeUSD: string\n    totalFeesUSD: string\n    totalValueLockedUSD: string\n  }[]\n}\n\nexport function useFetchProtocolData(\n  dataClientOverride?: ApolloClient<NormalizedCacheObject>,\n  blockClientOverride?: ApolloClient<NormalizedCacheObject>,\n): {\n  loading: boolean\n  error: boolean\n  data: ProtocolData | undefined\n} {\n  // get appropriate clients if override needed\n  const { dataClient, blockClient } = useClients()\n  const activeDataClient = dataClientOverride ?? dataClient\n  const activeBlockClient = blockClientOverride ?? blockClient\n\n  // Aggregate TVL in inaccurate pools. Offset Uniswap aggregate TVL by this amount.\n  const tvlOffset = useTVLOffset()\n\n  // get blocks from historic timestamps\n  const [t24, t48] = useDeltaTimestamps()\n  const { blocks, error: blockError } = useBlocksFromTimestamps([t24, t48], activeBlockClient)\n  const [block24, block48] = blocks ?? []\n\n  // fetch all data\n  const { loading, error, data } = useQuery<GlobalResponse>(GLOBAL_DATA(), { client: activeDataClient })\n\n  const {\n    loading: loading24,\n    error: error24,\n    data: data24,\n  } = useQuery<GlobalResponse>(GLOBAL_DATA(block24?.number ?? 0), { client: activeDataClient })\n\n  const {\n    loading: loading48,\n    error: error48,\n    data: data48,\n  } = useQuery<GlobalResponse>(GLOBAL_DATA(block48?.number ?? 0), { client: activeDataClient })\n\n  const anyError = Boolean(error || error24 || error48 || blockError)\n  const anyLoading = Boolean(loading || loading24 || loading48)\n\n  const parsed = data?.factories?.[0]\n  const parsed24 = data24?.factories?.[0]\n  const parsed48 = data48?.factories?.[0]\n\n  const formattedData: ProtocolData | undefined = useMemo(() => {\n    if (anyError || anyLoading || !parsed || !blocks || tvlOffset === undefined) {\n      return undefined\n    }\n\n    // volume data\n    const volumeUSD =\n      parsed && parsed24\n        ? parseFloat(parsed.totalVolumeUSD) - parseFloat(parsed24.totalVolumeUSD)\n        : parseFloat(parsed.totalVolumeUSD)\n\n    const volumeOneWindowAgo =\n      parsed24?.totalVolumeUSD && parsed48?.totalVolumeUSD\n        ? parseFloat(parsed24.totalVolumeUSD) - parseFloat(parsed48.totalVolumeUSD)\n        : undefined\n\n    const volumeUSDChange =\n      volumeUSD && volumeOneWindowAgo ? ((volumeUSD - volumeOneWindowAgo) / volumeOneWindowAgo) * 100 : 0\n\n    // total value locked\n    const tvlUSDChange = getPercentChange(parsed?.totalValueLockedUSD, parsed24?.totalValueLockedUSD)\n\n    // 24H transactions\n    const txCount =\n      parsed && parsed24 ? parseFloat(parsed.txCount) - parseFloat(parsed24.txCount) : parseFloat(parsed.txCount)\n\n    const txCountOneWindowAgo =\n      parsed24 && parsed48 ? parseFloat(parsed24.txCount) - parseFloat(parsed48.txCount) : undefined\n\n    const txCountChange =\n      txCount && txCountOneWindowAgo ? getPercentChange(txCount.toString(), txCountOneWindowAgo.toString()) : 0\n\n    const feesOneWindowAgo =\n      parsed24 && parsed48 ? parseFloat(parsed24.totalFeesUSD) - parseFloat(parsed48.totalFeesUSD) : undefined\n\n    const feesUSD =\n      parsed && parsed24\n        ? parseFloat(parsed.totalFeesUSD) - parseFloat(parsed24.totalFeesUSD)\n        : parseFloat(parsed.totalFeesUSD)\n\n    const feeChange =\n      feesUSD && feesOneWindowAgo ? getPercentChange(feesUSD.toString(), feesOneWindowAgo.toString()) : 0\n\n    return {\n      volumeUSD,\n      volumeUSDChange: typeof volumeUSDChange === 'number' ? volumeUSDChange : 0,\n      tvlUSD: parseFloat(parsed?.totalValueLockedUSD) - tvlOffset,\n      tvlUSDChange,\n      feesUSD,\n      feeChange,\n      txCount,\n      txCountChange,\n    }\n  }, [anyError, anyLoading, blocks, parsed, parsed24, parsed48, tvlOffset])\n  return {\n    loading: anyLoading,\n    error: anyError,\n    data: formattedData,\n  }\n}\n"
  },
  {
    "path": "src/data/protocol/transactions.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { Transaction, TransactionType } from 'types'\nimport { formatTokenSymbol } from 'utils/tokens'\n\nconst GLOBAL_TRANSACTIONS = gql`\n  query transactions {\n    transactions(first: 500, orderBy: timestamp, orderDirection: desc, subgraphError: allow) {\n      id\n      timestamp\n      mints {\n        pool {\n          token0 {\n            id\n            symbol\n          }\n          token1 {\n            id\n            symbol\n          }\n        }\n        owner\n        sender\n        origin\n        amount0\n        amount1\n        amountUSD\n      }\n      swaps {\n        pool {\n          token0 {\n            id\n            symbol\n          }\n          token1 {\n            id\n            symbol\n          }\n        }\n        origin\n        amount0\n        amount1\n        amountUSD\n      }\n      burns {\n        pool {\n          token0 {\n            id\n            symbol\n          }\n          token1 {\n            id\n            symbol\n          }\n        }\n        owner\n        origin\n        amount0\n        amount1\n        amountUSD\n      }\n    }\n  }\n`\n\ntype TransactionEntry = {\n  timestamp: string\n  id: string\n  mints: {\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  swaps: {\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  burns: {\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    owner: string\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n}\n\ninterface TransactionResults {\n  transactions: TransactionEntry[]\n}\n\nexport async function fetchTopTransactions(\n  client: ApolloClient<NormalizedCacheObject>,\n): Promise<Transaction[] | undefined> {\n  try {\n    const { data, error, loading } = await client.query<TransactionResults>({\n      query: GLOBAL_TRANSACTIONS,\n      fetchPolicy: 'cache-first',\n    })\n\n    if (error || loading || !data) {\n      return undefined\n    }\n\n    const formatted = data.transactions.reduce((accum: Transaction[], t: TransactionEntry) => {\n      const mintEntries = t.mints.map((m) => {\n        return {\n          type: TransactionType.MINT,\n          hash: t.id,\n          timestamp: t.timestamp,\n          sender: m.origin,\n          token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n          token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n          token0Address: m.pool.token0.id,\n          token1Address: m.pool.token1.id,\n          amountUSD: parseFloat(m.amountUSD),\n          amountToken0: parseFloat(m.amount0),\n          amountToken1: parseFloat(m.amount1),\n        }\n      })\n      const burnEntries = t.burns.map((m) => {\n        return {\n          type: TransactionType.BURN,\n          hash: t.id,\n          timestamp: t.timestamp,\n          sender: m.origin,\n          token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n          token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n          token0Address: m.pool.token0.id,\n          token1Address: m.pool.token1.id,\n          amountUSD: parseFloat(m.amountUSD),\n          amountToken0: parseFloat(m.amount0),\n          amountToken1: parseFloat(m.amount1),\n        }\n      })\n\n      const swapEntries = t.swaps.map((m) => {\n        return {\n          hash: t.id,\n          type: TransactionType.SWAP,\n          timestamp: t.timestamp,\n          sender: m.origin,\n          token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n          token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n          token0Address: m.pool.token0.id,\n          token1Address: m.pool.token1.id,\n          amountUSD: parseFloat(m.amountUSD),\n          amountToken0: parseFloat(m.amount0),\n          amountToken1: parseFloat(m.amount1),\n        }\n      })\n      accum = [...accum, ...mintEntries, ...burnEntries, ...swapEntries]\n      return accum\n    }, [])\n\n    return formatted\n  } catch {\n    return undefined\n  }\n}\n"
  },
  {
    "path": "src/data/search/index.ts",
    "content": "import { useAllTokenData } from 'state/tokens/hooks'\nimport { TokenData } from 'state/tokens/reducer'\nimport { useFetchedTokenDatas } from 'data/tokens/tokenData'\nimport gql from 'graphql-tag'\nimport { useState, useEffect, useMemo } from 'react'\nimport { client } from 'apollo/client'\nimport { usePoolDatas, useAllPoolData } from 'state/pools/hooks'\nimport { PoolData } from 'state/pools/reducer'\nimport { notEmpty, escapeRegExp } from 'utils'\n\nexport const TOKEN_SEARCH = gql`\n  query tokens($value: String, $id: String) {\n    asSymbol: tokens(\n      where: { symbol_contains: $value }\n      orderBy: totalValueLockedUSD\n      orderDirection: desc\n      subgraphError: allow\n    ) {\n      id\n      symbol\n      name\n      totalValueLockedUSD\n    }\n    asName: tokens(\n      where: { name_contains: $value }\n      orderBy: totalValueLockedUSD\n      orderDirection: desc\n      subgraphError: allow\n    ) {\n      id\n      symbol\n      name\n      totalValueLockedUSD\n    }\n    asAddress: tokens(where: { id: $id }, orderBy: totalValueLockedUSD, orderDirection: desc, subgraphError: allow) {\n      id\n      symbol\n      name\n      totalValueLockedUSD\n    }\n  }\n`\n\nexport const POOL_SEARCH = gql`\n  query pools($tokens: [Bytes]!, $id: String) {\n    as0: pools(where: { token0_in: $tokens }, subgraphError: allow) {\n      id\n      feeTier\n      token0 {\n        id\n        symbol\n        name\n      }\n      token1 {\n        id\n        symbol\n        name\n      }\n    }\n    as1: pools(where: { token1_in: $tokens }, subgraphError: allow) {\n      id\n      feeTier\n      token0 {\n        id\n        symbol\n        name\n      }\n      token1 {\n        id\n        symbol\n        name\n      }\n    }\n    asAddress: pools(where: { id: $id }, subgraphError: allow) {\n      id\n      feeTier\n      token0 {\n        id\n        symbol\n        name\n      }\n      token1 {\n        id\n        symbol\n        name\n      }\n    }\n  }\n`\n\ninterface TokenRes {\n  asSymbol: {\n    id: string\n    symbol: string\n    name: string\n    totalValueLockedUSD: string\n  }[]\n  asName: {\n    id: string\n    symbol: string\n    name: string\n    totalValueLockedUSD: string\n  }[]\n  asAddress: {\n    id: string\n    symbol: string\n    name: string\n    totalValueLockedUSD: string\n  }[]\n}\n\ninterface PoolResFields {\n  id: string\n  feeTier: string\n  token0: {\n    id: string\n    symbol: string\n    name: string\n  }\n  token1: {\n    id: string\n    symbol: string\n    name: string\n  }\n}\n\ninterface PoolRes {\n  as0: PoolResFields[]\n  as1: PoolResFields[]\n  asAddress: PoolResFields[]\n}\n\nexport function useFetchSearchResults(value: string): {\n  tokens: TokenData[]\n  pools: PoolData[]\n  loading: boolean\n} {\n  const allTokens = useAllTokenData()\n  const allPools = useAllPoolData()\n\n  const [tokenData, setTokenData] = useState<TokenRes | undefined>()\n  const [poolData, setPoolData] = useState<PoolRes | undefined>()\n\n  // fetch data based on search input\n  useEffect(() => {\n    async function fetch() {\n      try {\n        const tokens = await client.query<TokenRes>({\n          query: TOKEN_SEARCH,\n          variables: {\n            value: value ? value.toUpperCase() : '',\n            id: value,\n          },\n        })\n        const pools = await client.query<PoolRes>({\n          query: POOL_SEARCH,\n          variables: {\n            tokens: tokens.data.asSymbol?.map((t) => t.id),\n            id: value,\n          },\n        })\n\n        if (tokens.data) {\n          setTokenData(tokens.data)\n        }\n        if (pools.data) {\n          setPoolData(pools.data)\n        }\n      } catch (e) {\n        console.log(e)\n      }\n    }\n    if (value && value.length > 0) {\n      fetch()\n    }\n  }, [value])\n\n  const allFetchedTokens = useMemo(() => {\n    if (tokenData) {\n      return [...tokenData.asAddress, ...tokenData.asName, ...tokenData.asSymbol]\n    }\n    return []\n  }, [tokenData])\n\n  const allFetchedPools = useMemo(() => {\n    if (poolData) {\n      return [...poolData.asAddress, ...poolData.as0, ...poolData.as1]\n    }\n    return []\n  }, [poolData])\n\n  // format as token and pool datas\n  const { data: tokenFullDatas, loading: tokenFullLoading } = useFetchedTokenDatas(allFetchedTokens.map((t) => t.id))\n\n  const poolDatasFull = usePoolDatas(allFetchedPools.map((p) => p.id))\n  const formattedTokens = useMemo(() => (tokenFullDatas ? Object.values(tokenFullDatas) : []), [tokenFullDatas])\n\n  const newTokens = useMemo(() => {\n    return formattedTokens.filter((t) => !Object.keys(allTokens).includes(t.address))\n  }, [allTokens, formattedTokens])\n\n  const combinedTokens = useMemo(() => {\n    return [\n      ...newTokens,\n      ...Object.values(allTokens)\n        .map((t) => t.data)\n        .filter(notEmpty),\n    ]\n  }, [allTokens, newTokens])\n\n  const filteredSortedTokens = useMemo(() => {\n    return combinedTokens.filter((t) => {\n      const regexMatches = Object.keys(t).map((tokenEntryKey) => {\n        const isAddress = value.slice(0, 2) === '0x'\n        if (tokenEntryKey === 'address' && isAddress) {\n          return t[tokenEntryKey].match(new RegExp(escapeRegExp(value), 'i'))\n        }\n        if (tokenEntryKey === 'symbol' && !isAddress) {\n          return t[tokenEntryKey].match(new RegExp(escapeRegExp(value), 'i'))\n        }\n        if (tokenEntryKey === 'name' && !isAddress) {\n          return t[tokenEntryKey].match(new RegExp(escapeRegExp(value), 'i'))\n        }\n        return false\n      })\n      return regexMatches.some((m) => m)\n    })\n  }, [combinedTokens, value])\n\n  const newPools = useMemo(() => {\n    return poolDatasFull.filter((p) => !Object.keys(allPools).includes(p.address))\n  }, [allPools, poolDatasFull])\n\n  const combinedPools = useMemo(() => {\n    return [\n      ...newPools,\n      ...Object.values(allPools)\n        .map((p) => p.data)\n        .filter(notEmpty),\n    ]\n  }, [allPools, newPools])\n\n  const filteredSortedPools = useMemo(() => {\n    return combinedPools.filter((t) => {\n      const regexMatches = Object.keys(t).map((key) => {\n        const isAddress = value.slice(0, 2) === '0x'\n        if (key === 'address' && isAddress) {\n          return t[key].match(new RegExp(escapeRegExp(value), 'i'))\n        }\n        if ((key === 'token0' || key === 'token1') && !isAddress) {\n          return (\n            t[key].name.match(new RegExp(escapeRegExp(value), 'i')) ||\n            t[key].symbol.toLocaleLowerCase().match(new RegExp(escapeRegExp(value.toLocaleLowerCase()), 'i'))\n          )\n        }\n        return false\n      })\n      return regexMatches.some((m) => m)\n    })\n  }, [combinedPools, value])\n\n  return {\n    tokens: filteredSortedTokens,\n    pools: filteredSortedPools,\n    loading: tokenFullLoading,\n  }\n}\n"
  },
  {
    "path": "src/data/tokens/chartData.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport gql from 'graphql-tag'\nimport { TokenChartEntry } from 'state/tokens/reducer'\n\n// format dayjs with the libraries that we need\ndayjs.extend(utc)\ndayjs.extend(weekOfYear)\nconst ONE_DAY_UNIX = 24 * 60 * 60\n\nconst TOKEN_CHART = gql`\n  query tokenDayDatas($startTime: Int!, $skip: Int!, $address: Bytes!) {\n    tokenDayDatas(\n      first: 1000\n      skip: $skip\n      where: { token: $address, date_gt: $startTime }\n      orderBy: date\n      orderDirection: asc\n      subgraphError: allow\n    ) {\n      date\n      volumeUSD\n      totalValueLockedUSD\n    }\n  }\n`\n\ninterface ChartResults {\n  tokenDayDatas: {\n    date: number\n    volumeUSD: string\n    totalValueLockedUSD: string\n  }[]\n}\n\nexport async function fetchTokenChartData(address: string, client: ApolloClient<NormalizedCacheObject>) {\n  let data: {\n    date: number\n    volumeUSD: string\n    totalValueLockedUSD: string\n  }[] = []\n  const startTimestamp = 1619170975\n  const endTimestamp = dayjs.utc().unix()\n\n  let error = false\n  let skip = 0\n  let allFound = false\n\n  try {\n    while (!allFound) {\n      const {\n        data: chartResData,\n        error,\n        loading,\n      } = await client.query<ChartResults>({\n        query: TOKEN_CHART,\n        variables: {\n          address: address,\n          startTime: startTimestamp,\n          skip,\n        },\n        fetchPolicy: 'cache-first',\n      })\n      if (!loading) {\n        skip += 1000\n        if (chartResData.tokenDayDatas.length < 1000 || error) {\n          allFound = true\n        }\n        if (chartResData) {\n          data = data.concat(chartResData.tokenDayDatas)\n        }\n      }\n    }\n  } catch {\n    error = true\n  }\n\n  if (data) {\n    const formattedExisting = data.reduce((accum: { [date: number]: TokenChartEntry }, dayData) => {\n      const roundedDate = parseInt((dayData.date / ONE_DAY_UNIX).toFixed(0))\n      accum[roundedDate] = {\n        date: dayData.date,\n        volumeUSD: parseFloat(dayData.volumeUSD),\n        totalValueLockedUSD: parseFloat(dayData.totalValueLockedUSD),\n      }\n      return accum\n    }, {})\n\n    const firstEntry = formattedExisting[parseInt(Object.keys(formattedExisting)[0])]\n\n    // fill in empty days ( there will be no day datas if no trades made that day )\n    let timestamp = firstEntry?.date ?? startTimestamp\n    let latestTvl = firstEntry?.totalValueLockedUSD ?? 0\n    while (timestamp < endTimestamp - ONE_DAY_UNIX) {\n      const nextDay = timestamp + ONE_DAY_UNIX\n      const currentDayIndex = parseInt((nextDay / ONE_DAY_UNIX).toFixed(0))\n      if (!Object.keys(formattedExisting).includes(currentDayIndex.toString())) {\n        formattedExisting[currentDayIndex] = {\n          date: nextDay,\n          volumeUSD: 0,\n          totalValueLockedUSD: latestTvl,\n        }\n      } else {\n        latestTvl = formattedExisting[currentDayIndex].totalValueLockedUSD\n      }\n      timestamp = nextDay\n    }\n\n    const dateMap = Object.keys(formattedExisting).map((key) => {\n      return formattedExisting[parseInt(key)]\n    })\n\n    return {\n      data: dateMap,\n      error: false,\n    }\n  } else {\n    return {\n      data: undefined,\n      error,\n    }\n  }\n}\n"
  },
  {
    "path": "src/data/tokens/poolsForToken.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport gql from 'graphql-tag'\n\nexport const POOLS_FOR_TOKEN = gql`\n  query topPools($address: Bytes!) {\n    asToken0: pools(\n      first: 200\n      orderBy: totalValueLockedUSD\n      orderDirection: desc\n      where: { token0: $address }\n      subgraphError: allow\n    ) {\n      id\n    }\n    asToken1: pools(\n      first: 200\n      orderBy: totalValueLockedUSD\n      orderDirection: desc\n      where: { token1: $address }\n      subgraphError: allow\n    ) {\n      id\n    }\n  }\n`\n\ninterface PoolsForTokenResponse {\n  asToken0: {\n    id: string\n  }[]\n  asToken1: {\n    id: string\n  }[]\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport async function fetchPoolsForToken(\n  address: string,\n  client: ApolloClient<NormalizedCacheObject>,\n): Promise<{\n  loading: boolean\n  error: boolean\n  addresses: string[] | undefined\n}> {\n  try {\n    const { loading, error, data } = await client.query<PoolsForTokenResponse>({\n      query: POOLS_FOR_TOKEN,\n      variables: {\n        address: address,\n      },\n      fetchPolicy: 'cache-first',\n    })\n\n    if (loading || error || !data) {\n      return {\n        loading,\n        error: Boolean(error),\n        addresses: undefined,\n      }\n    }\n\n    const formattedData = data.asToken0.concat(data.asToken1).map((p) => p.id)\n\n    return {\n      loading,\n      error: Boolean(error),\n      addresses: formattedData,\n    }\n  } catch {\n    return {\n      loading: false,\n      error: true,\n      addresses: undefined,\n    }\n  }\n}\n"
  },
  {
    "path": "src/data/tokens/priceData.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport gql from 'graphql-tag'\nimport { getBlocksFromTimestamps } from 'hooks/useBlocksFromTimestamps'\nimport { PriceChartEntry } from 'types'\n\n// format dayjs with the libraries that we need\ndayjs.extend(utc)\ndayjs.extend(weekOfYear)\n\nexport const PRICES_BY_BLOCK = (tokenAddress: string, blocks: any) => {\n  let queryString = 'query blocks {'\n  queryString += blocks.map(\n    (block: any) => `\n      t${block.timestamp}:token(id:\"${tokenAddress}\", block: { number: ${block.number} }, subgraphError: allow) { \n        derivedETH\n      }\n    `,\n  )\n  queryString += ','\n  queryString += blocks.map(\n    (block: any) => `\n      b${block.timestamp}: bundle(id:\"1\", block: { number: ${block.number} }, subgraphError: allow) { \n        ethPriceUSD\n      }\n    `,\n  )\n\n  queryString += '}'\n  return gql(queryString)\n}\n\nconst PRICE_CHART = gql`\n  query tokenHourDatas($startTime: Int!, $skip: Int!, $address: Bytes!) {\n    tokenHourDatas(\n      first: 100\n      skip: $skip\n      where: { token: $address, periodStartUnix_gt: $startTime }\n      orderBy: periodStartUnix\n      orderDirection: asc\n    ) {\n      periodStartUnix\n      high\n      low\n      open\n      close\n    }\n  }\n`\n\ninterface PriceResults {\n  tokenHourDatas: {\n    periodStartUnix: number\n    high: string\n    low: string\n    open: string\n    close: string\n  }[]\n}\n\nexport async function fetchTokenPriceData(\n  address: string,\n  interval: number,\n  startTimestamp: number,\n  dataClient: ApolloClient<NormalizedCacheObject>,\n  blockClient: ApolloClient<NormalizedCacheObject>,\n): Promise<{\n  data: PriceChartEntry[]\n  error: boolean\n}> {\n  // start and end bounds\n\n  try {\n    const endTimestamp = dayjs.utc().unix()\n\n    if (!startTimestamp) {\n      console.log('Error constructing price start timestamp')\n      return {\n        data: [],\n        error: false,\n      }\n    }\n\n    // create an array of hour start times until we reach current hour\n    const timestamps = []\n    let time = startTimestamp\n    while (time <= endTimestamp) {\n      timestamps.push(time)\n      time += interval\n    }\n\n    // backout if invalid timestamp format\n    if (timestamps.length === 0) {\n      return {\n        data: [],\n        error: false,\n      }\n    }\n\n    // fetch blocks based on timestamp\n    const blocks = await getBlocksFromTimestamps(timestamps, blockClient, 500)\n    if (!blocks || blocks.length === 0) {\n      console.log('Error fetching blocks')\n      return {\n        data: [],\n        error: false,\n      }\n    }\n\n    let data: {\n      periodStartUnix: number\n      high: string\n      low: string\n      open: string\n      close: string\n    }[] = []\n    let skip = 0\n    let allFound = false\n    while (!allFound) {\n      const {\n        data: priceData,\n        errors,\n        loading,\n      } = await dataClient.query<PriceResults>({\n        query: PRICE_CHART,\n        variables: {\n          address: address,\n          startTime: startTimestamp,\n          skip,\n        },\n        fetchPolicy: 'no-cache',\n      })\n\n      if (!loading) {\n        skip += 100\n        if ((priceData && priceData.tokenHourDatas.length < 100) || errors) {\n          allFound = true\n        }\n        if (priceData) {\n          data = data.concat(priceData.tokenHourDatas)\n        }\n      }\n    }\n\n    const formattedHistory = data.map((d) => {\n      return {\n        time: d.periodStartUnix,\n        open: parseFloat(d.open),\n        close: parseFloat(d.close),\n        high: parseFloat(d.high),\n        low: parseFloat(d.low),\n      }\n    })\n\n    return {\n      data: formattedHistory,\n      error: false,\n    }\n  } catch (e) {\n    console.log(e)\n    return {\n      data: [],\n      error: true,\n    }\n  }\n}\n"
  },
  {
    "path": "src/data/tokens/tokenData.ts",
    "content": "import { getPercentChange } from './../../utils/data'\nimport { useQuery } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { useDeltaTimestamps } from 'utils/queries'\nimport { useBlocksFromTimestamps } from 'hooks/useBlocksFromTimestamps'\nimport { get2DayChange } from 'utils/data'\nimport { TokenData } from 'state/tokens/reducer'\nimport { useEthPrices } from 'hooks/useEthPrices'\nimport { formatTokenSymbol, formatTokenName } from 'utils/tokens'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\n\nexport const TOKENS_BULK = (block: number | undefined, tokens: string[]) => {\n  let tokenString = `[`\n  tokens.map((address) => {\n    return (tokenString += `\"${address}\",`)\n  })\n  tokenString += ']'\n  const queryString =\n    `\n    query tokens {\n      tokens(where: {id_in: ${tokenString}},` +\n    (block ? `block: {number: ${block}} ,` : ``) +\n    ` orderBy: totalValueLockedUSD, orderDirection: desc, subgraphError: allow) {\n        id\n        symbol\n        name\n        derivedETH\n        volumeUSD\n        volume\n        txCount\n        totalValueLocked\n        feesUSD\n        totalValueLockedUSD\n      }\n    }\n    `\n  return gql(queryString)\n}\n\ninterface TokenFields {\n  id: string\n  symbol: string\n  name: string\n  derivedETH: string\n  volumeUSD: string\n  volume: string\n  feesUSD: string\n  txCount: string\n  totalValueLocked: string\n  totalValueLockedUSD: string\n}\n\ninterface TokenDataResponse {\n  tokens: TokenFields[]\n  bundles: {\n    ethPriceUSD: string\n  }[]\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport function useFetchedTokenDatas(tokenAddresses: string[]): {\n  loading: boolean\n  error: boolean\n  data:\n    | {\n        [address: string]: TokenData\n      }\n    | undefined\n} {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const { dataClient } = useClients()\n\n  // get blocks from historic timestamps\n  const [t24, t48, tWeek] = useDeltaTimestamps()\n\n  const { blocks, error: blockError } = useBlocksFromTimestamps([t24, t48, tWeek])\n  const [block24, block48, blockWeek] = blocks ?? []\n  const ethPrices = useEthPrices()\n\n  const { loading, error, data } = useQuery<TokenDataResponse>(TOKENS_BULK(undefined, tokenAddresses), {\n    client: dataClient,\n  })\n\n  const {\n    loading: loading24,\n    error: error24,\n    data: data24,\n  } = useQuery<TokenDataResponse>(TOKENS_BULK(parseInt(block24?.number), tokenAddresses), {\n    client: dataClient,\n  })\n\n  const {\n    loading: loading48,\n    error: error48,\n    data: data48,\n  } = useQuery<TokenDataResponse>(TOKENS_BULK(parseInt(block48?.number), tokenAddresses), {\n    client: dataClient,\n  })\n\n  const {\n    loading: loadingWeek,\n    error: errorWeek,\n    data: dataWeek,\n  } = useQuery<TokenDataResponse>(TOKENS_BULK(parseInt(blockWeek?.number), tokenAddresses), {\n    client: dataClient,\n  })\n\n  const anyError = Boolean(error || error24 || error48 || blockError || errorWeek)\n  const anyLoading = Boolean(loading || loading24 || loading48 || loadingWeek || !blocks)\n\n  if (!ethPrices) {\n    return {\n      loading: true,\n      error: false,\n      data: undefined,\n    }\n  }\n\n  // return early if not all data yet\n  if (anyError || anyLoading) {\n    return {\n      loading: anyLoading,\n      error: anyError,\n      data: undefined,\n    }\n  }\n\n  const parsed = data?.tokens\n    ? data.tokens.reduce((accum: { [address: string]: TokenFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsed24 = data24?.tokens\n    ? data24.tokens.reduce((accum: { [address: string]: TokenFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsed48 = data48?.tokens\n    ? data48.tokens.reduce((accum: { [address: string]: TokenFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n  const parsedWeek = dataWeek?.tokens\n    ? dataWeek.tokens.reduce((accum: { [address: string]: TokenFields }, poolData) => {\n        accum[poolData.id] = poolData\n        return accum\n      }, {})\n    : {}\n\n  // format data and calculate daily changes\n  const formatted = tokenAddresses.reduce((accum: { [address: string]: TokenData }, address) => {\n    const current: TokenFields | undefined = parsed[address]\n    const oneDay: TokenFields | undefined = parsed24[address]\n    const twoDay: TokenFields | undefined = parsed48[address]\n    const week: TokenFields | undefined = parsedWeek[address]\n\n    const [volumeUSD, volumeUSDChange] =\n      current && oneDay && twoDay\n        ? get2DayChange(current.volumeUSD, oneDay.volumeUSD, twoDay.volumeUSD)\n        : current\n        ? [parseFloat(current.volumeUSD), 0]\n        : [0, 0]\n\n    const volumeUSDWeek =\n      current && week\n        ? parseFloat(current.volumeUSD) - parseFloat(week.volumeUSD)\n        : current\n        ? parseFloat(current.volumeUSD)\n        : 0\n    const tvlUSD = current ? parseFloat(current.totalValueLockedUSD) : 0\n    const tvlUSDChange = getPercentChange(current?.totalValueLockedUSD, oneDay?.totalValueLockedUSD)\n    const tvlToken = current ? parseFloat(current.totalValueLocked) : 0\n    const priceUSD = current ? parseFloat(current.derivedETH) * ethPrices.current : 0\n    const priceUSDOneDay = oneDay ? parseFloat(oneDay.derivedETH) * ethPrices.oneDay : 0\n    const priceUSDWeek = week ? parseFloat(week.derivedETH) * ethPrices.week : 0\n    const priceUSDChange =\n      priceUSD && priceUSDOneDay ? getPercentChange(priceUSD.toString(), priceUSDOneDay.toString()) : 0\n\n    const priceUSDChangeWeek =\n      priceUSD && priceUSDWeek ? getPercentChange(priceUSD.toString(), priceUSDWeek.toString()) : 0\n    const txCount =\n      current && oneDay\n        ? parseFloat(current.txCount) - parseFloat(oneDay.txCount)\n        : current\n        ? parseFloat(current.txCount)\n        : 0\n    const feesUSD =\n      current && oneDay\n        ? parseFloat(current.feesUSD) - parseFloat(oneDay.feesUSD)\n        : current\n        ? parseFloat(current.feesUSD)\n        : 0\n\n    accum[address] = {\n      exists: !!current,\n      address,\n      name: current ? formatTokenName(address, current.name, activeNetwork) : '',\n      symbol: current ? formatTokenSymbol(address, current.symbol, activeNetwork) : '',\n      volumeUSD,\n      volumeUSDChange,\n      volumeUSDWeek,\n      txCount,\n      tvlUSD,\n      feesUSD,\n      tvlUSDChange,\n      tvlToken,\n      priceUSD,\n      priceUSDChange,\n      priceUSDChangeWeek,\n    }\n\n    return accum\n  }, {})\n\n  return {\n    loading: anyLoading,\n    error: anyError,\n    data: formatted,\n  }\n}\n"
  },
  {
    "path": "src/data/tokens/topTokens.ts",
    "content": "import { useMemo } from 'react'\nimport { useQuery } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { useClients } from 'state/application/hooks'\n\nexport const TOP_TOKENS = gql`\n  query topPools {\n    tokens(first: 50, orderBy: totalValueLockedUSD, orderDirection: desc, subgraphError: allow) {\n      id\n    }\n  }\n`\n\ninterface TopTokensResponse {\n  tokens: {\n    id: string\n  }[]\n}\n\n/**\n * Fetch top addresses by volume\n */\nexport function useTopTokenAddresses(): {\n  loading: boolean\n  error: boolean\n  addresses: string[] | undefined\n} {\n  const { dataClient } = useClients()\n\n  const { loading, error, data } = useQuery<TopTokensResponse>(TOP_TOKENS, { client: dataClient })\n\n  const formattedData = useMemo(() => {\n    if (data) {\n      return data.tokens.map((t) => t.id)\n    } else {\n      return undefined\n    }\n  }, [data])\n\n  return {\n    loading: loading,\n    error: Boolean(error),\n    addresses: formattedData,\n  }\n}\n"
  },
  {
    "path": "src/data/tokens/transactions.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport gql from 'graphql-tag'\nimport { Transaction, TransactionType } from 'types'\nimport { formatTokenSymbol } from 'utils/tokens'\n\nconst GLOBAL_TRANSACTIONS = gql`\n  query transactions($address: Bytes!) {\n    mintsAs0: mints(\n      first: 500\n      orderBy: timestamp\n      orderDirection: desc\n      where: { token0: $address }\n      subgraphError: allow\n    ) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      owner\n      sender\n      origin\n      amount0\n      amount1\n      amountUSD\n    }\n    mintsAs1: mints(\n      first: 500\n      orderBy: timestamp\n      orderDirection: desc\n      where: { token0: $address }\n      subgraphError: allow\n    ) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      owner\n      sender\n      origin\n      amount0\n      amount1\n      amountUSD\n    }\n    swapsAs0: swaps(\n      first: 500\n      orderBy: timestamp\n      orderDirection: desc\n      where: { token0: $address }\n      subgraphError: allow\n    ) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      origin\n      amount0\n      amount1\n      amountUSD\n    }\n    swapsAs1: swaps(\n      first: 500\n      orderBy: timestamp\n      orderDirection: desc\n      where: { token1: $address }\n      subgraphError: allow\n    ) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      origin\n      amount0\n      amount1\n      amountUSD\n    }\n    burnsAs0: burns(\n      first: 500\n      orderBy: timestamp\n      orderDirection: desc\n      where: { token0: $address }\n      subgraphError: allow\n    ) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      owner\n      amount0\n      amount1\n      amountUSD\n    }\n    burnsAs1: burns(\n      first: 500\n      orderBy: timestamp\n      orderDirection: desc\n      where: { token1: $address }\n      subgraphError: allow\n    ) {\n      timestamp\n      transaction {\n        id\n      }\n      pool {\n        token0 {\n          id\n          symbol\n        }\n        token1 {\n          id\n          symbol\n        }\n      }\n      owner\n      amount0\n      amount1\n      amountUSD\n    }\n  }\n`\n\ninterface TransactionResults {\n  mintsAs0: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  mintsAs1: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  swapsAs0: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  swapsAs1: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    origin: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  burnsAs0: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    owner: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n  burnsAs1: {\n    timestamp: string\n    transaction: {\n      id: string\n    }\n    pool: {\n      token0: {\n        id: string\n        symbol: string\n      }\n      token1: {\n        id: string\n        symbol: string\n      }\n    }\n    owner: string\n    amount0: string\n    amount1: string\n    amountUSD: string\n  }[]\n}\n\nexport async function fetchTokenTransactions(\n  address: string,\n  client: ApolloClient<NormalizedCacheObject>,\n): Promise<{ data: Transaction[] | undefined; error: boolean; loading: boolean }> {\n  try {\n    const { data, error, loading } = await client.query<TransactionResults>({\n      query: GLOBAL_TRANSACTIONS,\n      variables: {\n        address: address,\n      },\n      fetchPolicy: 'cache-first',\n    })\n\n    if (error) {\n      return {\n        data: undefined,\n        error: true,\n        loading: false,\n      }\n    }\n\n    if (loading && !data) {\n      return {\n        data: undefined,\n        error: false,\n        loading: true,\n      }\n    }\n\n    const mints0 = data.mintsAs0.map((m) => {\n      return {\n        type: TransactionType.MINT,\n        hash: m.transaction.id,\n        timestamp: m.timestamp,\n        sender: m.origin,\n        token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n        token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n        token0Address: m.pool.token0.id,\n        token1Address: m.pool.token1.id,\n        amountUSD: parseFloat(m.amountUSD),\n        amountToken0: parseFloat(m.amount0),\n        amountToken1: parseFloat(m.amount1),\n      }\n    })\n    const mints1 = data.mintsAs1.map((m) => {\n      return {\n        type: TransactionType.MINT,\n        hash: m.transaction.id,\n        timestamp: m.timestamp,\n        sender: m.origin,\n        token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n        token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n        token0Address: m.pool.token0.id,\n        token1Address: m.pool.token1.id,\n        amountUSD: parseFloat(m.amountUSD),\n        amountToken0: parseFloat(m.amount0),\n        amountToken1: parseFloat(m.amount1),\n      }\n    })\n\n    const burns0 = data.burnsAs0.map((m) => {\n      return {\n        type: TransactionType.BURN,\n        hash: m.transaction.id,\n        timestamp: m.timestamp,\n        sender: m.owner,\n        token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n        token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n        token0Address: m.pool.token0.id,\n        token1Address: m.pool.token1.id,\n        amountUSD: parseFloat(m.amountUSD),\n        amountToken0: parseFloat(m.amount0),\n        amountToken1: parseFloat(m.amount1),\n      }\n    })\n    const burns1 = data.burnsAs1.map((m) => {\n      return {\n        type: TransactionType.BURN,\n        hash: m.transaction.id,\n        timestamp: m.timestamp,\n        sender: m.owner,\n        token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n        token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n        token0Address: m.pool.token0.id,\n        token1Address: m.pool.token1.id,\n        amountUSD: parseFloat(m.amountUSD),\n        amountToken0: parseFloat(m.amount0),\n        amountToken1: parseFloat(m.amount1),\n      }\n    })\n\n    const swaps0 = data.swapsAs0.map((m) => {\n      return {\n        type: TransactionType.SWAP,\n        hash: m.transaction.id,\n        timestamp: m.timestamp,\n        sender: m.origin,\n        token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n        token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n        token0Address: m.pool.token0.id,\n        token1Address: m.pool.token1.id,\n        amountUSD: parseFloat(m.amountUSD),\n        amountToken0: parseFloat(m.amount0),\n        amountToken1: parseFloat(m.amount1),\n      }\n    })\n\n    const swaps1 = data.swapsAs1.map((m) => {\n      return {\n        type: TransactionType.SWAP,\n        hash: m.transaction.id,\n        timestamp: m.timestamp,\n        sender: m.origin,\n        token0Symbol: formatTokenSymbol(m.pool.token0.id, m.pool.token0.symbol),\n        token1Symbol: formatTokenSymbol(m.pool.token1.id, m.pool.token1.symbol),\n        token0Address: m.pool.token0.id,\n        token1Address: m.pool.token1.id,\n        amountUSD: parseFloat(m.amountUSD),\n        amountToken0: parseFloat(m.amount0),\n        amountToken1: parseFloat(m.amount1),\n      }\n    })\n\n    return { data: [...mints0, ...mints1, ...burns0, ...burns1, ...swaps0, ...swaps1], error: false, loading: false }\n  } catch {\n    return {\n      data: undefined,\n      error: true,\n      loading: false,\n    }\n  }\n}\n"
  },
  {
    "path": "src/hooks/chart.ts",
    "content": "import { useMemo } from 'react'\nimport { PoolChartEntry } from 'state/pools/reducer'\nimport { TokenChartEntry } from 'state/tokens/reducer'\nimport { ChartDayData, GenericChartEntry } from 'types'\nimport { unixToDate } from 'utils/date'\nimport dayjs from 'dayjs'\n\nfunction unixToType(unix: number, type: 'month' | 'week') {\n  const date = dayjs.unix(unix).utc()\n\n  switch (type) {\n    case 'month':\n      return date.format('YYYY-MM')\n    case 'week':\n      let week = String(date.week())\n      if (week.length === 1) {\n        week = `0${week}`\n      }\n      return `${date.year()}-${week}`\n  }\n}\n\nexport function useTransformedVolumeData(\n  chartData: ChartDayData[] | PoolChartEntry[] | TokenChartEntry[] | undefined,\n  type: 'month' | 'week',\n) {\n  return useMemo(() => {\n    if (chartData) {\n      const data: Record<string, GenericChartEntry> = {}\n\n      chartData.forEach(({ date, volumeUSD }: { date: number; volumeUSD: number }) => {\n        const group = unixToType(date, type)\n        if (data[group]) {\n          data[group].value += volumeUSD\n        } else {\n          data[group] = {\n            time: unixToDate(date),\n            value: volumeUSD,\n          }\n        }\n      })\n\n      return Object.values(data)\n    } else {\n      return []\n    }\n  }, [chartData, type])\n}\n"
  },
  {
    "path": "src/hooks/useAppDispatch.ts",
    "content": "import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'\nimport { AppDispatch, AppState } from 'state'\n\nexport const useAppDispatch = () => useDispatch<AppDispatch>()\nexport const useAppSelector: TypedUseSelectorHook<AppState> = useSelector\n"
  },
  {
    "path": "src/hooks/useBlocksFromTimestamps.ts",
    "content": "import gql from 'graphql-tag'\nimport { useState, useEffect, useMemo } from 'react'\nimport { splitQuery } from 'utils/queries'\nimport { START_BLOCKS } from 'constants/index'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\n\nexport const GET_BLOCKS = (timestamps: string[]) => {\n  let queryString = 'query blocks {'\n  queryString += timestamps.map((timestamp) => {\n    return `t${timestamp}:blocks(first: 1, orderBy: timestamp, orderDirection: desc, where: { timestamp_gt: ${timestamp}, timestamp_lt: ${\n      timestamp + 600\n    } }) {\n        number\n      }`\n  })\n  queryString += '}'\n  return gql(queryString)\n}\n\n/**\n * for a given array of timestamps, returns block entities\n * @param timestamps\n */\nexport function useBlocksFromTimestamps(\n  timestamps: number[],\n  blockClientOverride?: ApolloClient<NormalizedCacheObject>,\n): {\n  blocks:\n    | {\n        timestamp: string\n        number: any\n      }[]\n    | undefined\n  error: boolean\n} {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const [blocks, setBlocks] = useState<any>()\n  const [error, setError] = useState(false)\n\n  const { blockClient } = useClients()\n  const activeBlockClient = blockClientOverride ?? blockClient\n\n  // derive blocks based on active network\n  const networkBlocks = blocks?.[activeNetwork.id]\n\n  useEffect(() => {\n    async function fetchData() {\n      const results = await splitQuery(GET_BLOCKS, activeBlockClient, [], timestamps)\n      if (results) {\n        setBlocks({ ...(blocks ?? {}), [activeNetwork.id]: results })\n      } else {\n        setError(true)\n      }\n    }\n    if (!networkBlocks && !error) {\n      fetchData()\n    }\n  })\n\n  const blocksFormatted = useMemo(() => {\n    if (blocks?.[activeNetwork.id]) {\n      const networkBlocks = blocks?.[activeNetwork.id]\n      const formatted = []\n      for (const t in networkBlocks) {\n        if (networkBlocks[t].length > 0) {\n          const number = networkBlocks[t][0]['number']\n          const deploymentBlock = START_BLOCKS[activeNetwork.id]\n          const adjustedNumber = number > deploymentBlock ? number : deploymentBlock\n\n          formatted.push({\n            timestamp: t.split('t')[1],\n            number: adjustedNumber,\n          })\n        }\n      }\n      return formatted\n    }\n    return undefined\n  }, [activeNetwork.id, blocks])\n\n  return {\n    blocks: blocksFormatted,\n    error,\n  }\n}\n\n/**\n * @notice Fetches block objects for an array of timestamps.\n * @dev blocks are returned in chronological order (ASC) regardless of input.\n * @dev blocks are returned at string representations of Int\n * @dev timestamps are returns as they were provided; not the block time.\n * @param {Array} timestamps\n */\nexport async function getBlocksFromTimestamps(\n  timestamps: number[],\n  blockClient: ApolloClient<NormalizedCacheObject>,\n  skipCount = 500,\n) {\n  if (timestamps?.length === 0) {\n    return []\n  }\n  const fetchedData: any = await splitQuery(GET_BLOCKS, blockClient, [], timestamps, skipCount)\n\n  const blocks: any[] = []\n  if (fetchedData) {\n    for (const t in fetchedData) {\n      if (fetchedData[t].length > 0) {\n        blocks.push({\n          timestamp: t.split('t')[1],\n          number: fetchedData[t][0]['number'],\n        })\n      }\n    }\n  }\n  return blocks\n}\n"
  },
  {
    "path": "src/hooks/useCMCLink.ts",
    "content": "import { useState, useEffect } from 'react'\n\n// endpoint to check asset exists\nconst cmcEndpoint = 'https://3rdparty-apis.coinmarketcap.com/v1/cryptocurrency/contract?address='\n\n/**\n * Check if asset exists on CMC, if exists\n * return  url, if not return undefined\n * @param address token address\n */\nexport function useCMCLink(address: string): string | undefined {\n  const [link, setLink] = useState<string | undefined>(undefined)\n\n  useEffect(() => {\n    async function fetchLink() {\n      const result = await fetch(cmcEndpoint + address)\n      // if link exists, format the url\n      if (result.status === 200) {\n        result.json().then(({ data }) => {\n          setLink(data.url)\n        })\n      }\n    }\n    if (address) {\n      fetchLink()\n    }\n  }, [address])\n\n  return link\n}\n"
  },
  {
    "path": "src/hooks/useColor.ts",
    "content": "import { useState, useLayoutEffect, useMemo } from 'react'\nimport { shade } from 'polished'\nimport Vibrant from 'node-vibrant'\nimport { hex } from 'wcag-contrast'\nimport { Token } from '@uniswap/sdk-core'\nimport uriToHttp from 'utils/uriToHttp'\nimport { isAddress } from 'utils'\n\nasync function getColorFromToken(token: Token): Promise<string | null> {\n  const path = `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/${token.address}/logo.png`\n\n  return Vibrant.from(path)\n    .getPalette()\n    .then((palette) => {\n      if (palette?.Vibrant) {\n        let detectedHex = palette.Vibrant.hex\n        let AAscore = hex(detectedHex, '#FFF')\n        while (AAscore < 3) {\n          detectedHex = shade(0.005, detectedHex)\n          AAscore = hex(detectedHex, '#FFF')\n        }\n        return detectedHex\n      }\n      return null\n    })\n    .catch(() => null)\n}\n\nasync function getColorFromUriPath(uri: string): Promise<string | null> {\n  const formattedPath = uriToHttp(uri)[0]\n\n  return Vibrant.from(formattedPath)\n    .getPalette()\n    .then((palette) => {\n      if (palette?.Vibrant) {\n        return palette.Vibrant.hex\n      }\n      return null\n    })\n    .catch(() => null)\n}\n\nexport function useColor(address?: string) {\n  const [color, setColor] = useState('#2172E5')\n\n  const formattedAddress = isAddress(address)\n\n  const token = useMemo(() => {\n    return formattedAddress ? new Token(1, formattedAddress, 0) : undefined\n  }, [formattedAddress])\n\n  useLayoutEffect(() => {\n    let stale = false\n\n    if (token) {\n      getColorFromToken(token).then((tokenColor) => {\n        if (!stale && tokenColor !== null) {\n          setColor(tokenColor)\n        }\n      })\n    }\n\n    return () => {\n      stale = true\n      setColor('#2172E5')\n    }\n  }, [token])\n\n  return color\n}\n\nexport function useListColor(listImageUri?: string) {\n  const [color, setColor] = useState('#2172E5')\n\n  useLayoutEffect(() => {\n    let stale = false\n\n    if (listImageUri) {\n      getColorFromUriPath(listImageUri).then((color) => {\n        if (!stale && color !== null) {\n          setColor(color)\n        }\n      })\n    }\n\n    return () => {\n      stale = true\n      setColor('#2172E5')\n    }\n  }, [listImageUri])\n\n  return color\n}\n"
  },
  {
    "path": "src/hooks/useCopyClipboard.ts",
    "content": "import copy from 'copy-to-clipboard'\nimport { useCallback, useEffect, useState } from 'react'\n\nexport default function useCopyClipboard(timeout = 500): [boolean, (toCopy: string) => void] {\n  const [isCopied, setIsCopied] = useState(false)\n\n  const staticCopy = useCallback((text: string) => {\n    const didCopy = copy(text)\n    setIsCopied(didCopy)\n  }, [])\n\n  useEffect(() => {\n    if (isCopied) {\n      const hide = setTimeout(() => {\n        setIsCopied(false)\n      }, timeout)\n\n      return () => {\n        clearTimeout(hide)\n      }\n    }\n    return undefined\n  }, [isCopied, setIsCopied, timeout])\n\n  return [isCopied, staticCopy]\n}\n"
  },
  {
    "path": "src/hooks/useDebounce.ts",
    "content": "import { useEffect, useState } from 'react'\n\n// modified from https://usehooks.com/useDebounce/\nexport default function useDebounce<T>(value: T, delay: number): T {\n  const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n  useEffect(() => {\n    // Update debounced value after delay\n    const handler = setTimeout(() => {\n      setDebouncedValue(value)\n    }, delay)\n\n    // Cancel the timeout if value changes (also on delay change or unmount)\n    // This is how we prevent debounced value from updating if value is changed ...\n    // .. within the delay period. Timeout gets cleared and restarted.\n    return () => {\n      clearTimeout(handler)\n    }\n  }, [value, delay])\n\n  return debouncedValue\n}\n"
  },
  {
    "path": "src/hooks/useEthPrices.ts",
    "content": "import { useBlocksFromTimestamps } from 'hooks/useBlocksFromTimestamps'\nimport { useDeltaTimestamps } from 'utils/queries'\nimport { useState, useEffect, useMemo } from 'react'\nimport gql from 'graphql-tag'\nimport { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\n\nexport interface EthPrices {\n  current: number\n  oneDay: number\n  twoDay: number\n  week: number\n}\n\nexport const ETH_PRICES = gql`\n  query prices($block24: Int!, $block48: Int!, $blockWeek: Int!) {\n    current: bundles(first: 1, subgraphError: allow) {\n      ethPriceUSD\n    }\n    oneDay: bundles(first: 1, block: { number: $block24 }, subgraphError: allow) {\n      ethPriceUSD\n    }\n    twoDay: bundles(first: 1, block: { number: $block48 }, subgraphError: allow) {\n      ethPriceUSD\n    }\n    oneWeek: bundles(first: 1, block: { number: $blockWeek }, subgraphError: allow) {\n      ethPriceUSD\n    }\n  }\n`\n\ninterface PricesResponse {\n  current: {\n    ethPriceUSD: string\n  }[]\n  oneDay: {\n    ethPriceUSD: string\n  }[]\n  twoDay: {\n    ethPriceUSD: string\n  }[]\n  oneWeek: {\n    ethPriceUSD: string\n  }[]\n}\n\nasync function fetchEthPrices(\n  blocks: [number, number, number],\n  client: ApolloClient<NormalizedCacheObject>,\n): Promise<{ data: EthPrices | undefined; error: boolean }> {\n  try {\n    const { data, error } = await client.query<PricesResponse>({\n      query: ETH_PRICES,\n      variables: {\n        block24: blocks[0],\n        block48: blocks[1] ?? 1,\n        blockWeek: blocks[2] ?? 1,\n      },\n    })\n\n    if (error) {\n      return {\n        error: true,\n        data: undefined,\n      }\n    } else if (data) {\n      return {\n        data: {\n          current: parseFloat(data.current[0].ethPriceUSD ?? 0),\n          oneDay: parseFloat(data.oneDay[0]?.ethPriceUSD ?? 0),\n          twoDay: parseFloat(data.twoDay[0]?.ethPriceUSD ?? 0),\n          week: parseFloat(data.oneWeek[0]?.ethPriceUSD ?? 0),\n        },\n        error: false,\n      }\n    } else {\n      return {\n        data: undefined,\n        error: true,\n      }\n    }\n  } catch (e) {\n    console.log(e)\n    return {\n      data: undefined,\n      error: true,\n    }\n  }\n}\n\n/**\n * returns eth prices at current, 24h, 48h, and 1w intervals\n */\nexport function useEthPrices(): EthPrices | undefined {\n  const [prices, setPrices] = useState<{ [network: string]: EthPrices | undefined }>()\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  const [t24, t48, tWeek] = useDeltaTimestamps()\n  const { blocks, error: blockError } = useBlocksFromTimestamps([t24, t48, tWeek])\n\n  // index on active network\n  const [activeNetwork] = useActiveNetworkVersion()\n  const indexedPrices = prices?.[activeNetwork.id]\n\n  const formattedBlocks = useMemo(() => {\n    if (blocks) {\n      return blocks.map((b) => parseFloat(b.number))\n    }\n    return undefined\n  }, [blocks])\n\n  useEffect(() => {\n    async function fetch() {\n      const { data, error } = await fetchEthPrices(formattedBlocks as [number, number, number], dataClient)\n      if (error || blockError) {\n        setError(true)\n      } else if (data) {\n        setPrices({\n          [activeNetwork.id]: data,\n        })\n      }\n    }\n    if (!indexedPrices && !error && formattedBlocks) {\n      fetch()\n    }\n  }, [error, prices, formattedBlocks, blockError, dataClient, indexedPrices, activeNetwork.id])\n\n  return prices?.[activeNetwork.id]\n}\n"
  },
  {
    "path": "src/hooks/useFetchListCallback.ts",
    "content": "import { nanoid } from '@reduxjs/toolkit'\nimport { TokenList } from '@uniswap/token-lists'\nimport { useCallback } from 'react'\nimport { fetchTokenList } from '../state/lists/actions'\nimport getTokenList from '../utils/getTokenList'\nimport { useAppDispatch } from './useAppDispatch'\n\nexport function useFetchListCallback(): (listUrl: string, sendDispatch?: boolean) => Promise<TokenList> {\n  const dispatch = useAppDispatch()\n\n  // note: prevent dispatch if using for list search or unsupported list\n  return useCallback(\n    async (listUrl: string, sendDispatch = true) => {\n      const requestId = nanoid()\n      sendDispatch && dispatch(fetchTokenList.pending({ requestId, url: listUrl }))\n      return getTokenList(listUrl)\n        .then((tokenList) => {\n          sendDispatch && dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }))\n          return tokenList\n        })\n        .catch((error) => {\n          console.debug(`Failed to get list at url ${listUrl}`, error)\n          sendDispatch && dispatch(fetchTokenList.rejected({ url: listUrl, requestId, errorMessage: error.message }))\n          throw error\n        })\n    },\n    [dispatch],\n  )\n}\n"
  },
  {
    "path": "src/hooks/useHttpLocations.ts",
    "content": "import { useMemo } from 'react'\nimport uriToHttp from '../utils/uriToHttp'\n\nexport default function useHttpLocations(uri: string | undefined): string[] {\n  return useMemo(() => {\n    return uri ? uriToHttp(uri) : []\n  }, [uri])\n}\n"
  },
  {
    "path": "src/hooks/useInterval.ts",
    "content": "import { useEffect, useRef } from 'react'\n\nexport default function useInterval(callback: () => void, delay: null | number, leading = true) {\n  const savedCallback = useRef<() => void>()\n\n  // Remember the latest callback.\n  useEffect(() => {\n    savedCallback.current = callback\n  }, [callback])\n\n  // Set up the interval.\n  useEffect(() => {\n    function tick() {\n      const current = savedCallback.current\n      current && current()\n    }\n\n    if (delay !== null) {\n      if (leading) tick()\n      const id = setInterval(tick, delay)\n      return () => clearInterval(id)\n    }\n    return undefined\n  }, [delay, leading])\n}\n"
  },
  {
    "path": "src/hooks/useIsWindowVisible.ts",
    "content": "import { useCallback, useEffect, useState } from 'react'\n\nconst VISIBILITY_STATE_SUPPORTED = 'visibilityState' in document\n\nfunction isWindowVisible() {\n  return !VISIBILITY_STATE_SUPPORTED || document.visibilityState !== 'hidden'\n}\n\n/**\n * Returns whether the window is currently visible to the user.\n */\nexport default function useIsWindowVisible(): boolean {\n  const [focused, setFocused] = useState<boolean>(isWindowVisible())\n  const listener = useCallback(() => {\n    setFocused(isWindowVisible())\n  }, [setFocused])\n\n  useEffect(() => {\n    if (!VISIBILITY_STATE_SUPPORTED) return undefined\n\n    document.addEventListener('visibilitychange', listener)\n    return () => {\n      document.removeEventListener('visibilitychange', listener)\n    }\n  }, [listener])\n\n  return focused\n}\n"
  },
  {
    "path": "src/hooks/useLast.ts",
    "content": "import { useEffect, useState } from 'react'\n\n/**\n * Returns the last value of type T that passes a filter function\n * @param value changing value\n * @param filterFn function that determines whether a given value should be considered for the last value\n */\nexport default function useLast<T>(\n  value: T | undefined | null,\n  filterFn?: (value: T | null | undefined) => boolean,\n): T | null | undefined {\n  const [last, setLast] = useState<T | null | undefined>(filterFn && filterFn(value) ? value : undefined)\n  useEffect(() => {\n    setLast((last) => {\n      const shouldUse: boolean = filterFn ? filterFn(value) : true\n      if (shouldUse) return value\n      return last\n    })\n  }, [filterFn, value])\n  return last\n}\n\nfunction isDefined<T>(x: T | null | undefined): x is T {\n  return x !== null && x !== undefined\n}\n\n/**\n * Returns the last truthy value of type T\n * @param value changing value\n */\nexport function useLastTruthy<T>(value: T | undefined | null): T | null | undefined {\n  return useLast(value, isDefined)\n}\n"
  },
  {
    "path": "src/hooks/useOnClickOutside.tsx",
    "content": "import { RefObject, useEffect, useRef } from 'react'\n\nexport function useOnClickOutside<T extends HTMLElement>(\n  node: RefObject<T | undefined>,\n  handler: undefined | (() => void),\n  ignoredNodes: Array<RefObject<T | undefined>> = [],\n) {\n  const handlerRef = useRef<undefined | (() => void)>(handler)\n\n  useEffect(() => {\n    handlerRef.current = handler\n  }, [handler])\n\n  useEffect(() => {\n    const handleClickOutside = (e: MouseEvent) => {\n      const nodeClicked = node.current?.contains(e.target as Node)\n      const ignoredNodeClicked = ignoredNodes.reduce(\n        (reducer, val) => reducer || !!val.current?.contains(e.target as Node),\n        false,\n      )\n\n      if ((nodeClicked || ignoredNodeClicked) ?? false) {\n        return\n      }\n\n      if (handlerRef.current) handlerRef.current()\n    }\n\n    document.addEventListener('mousedown', handleClickOutside)\n\n    return () => {\n      document.removeEventListener('mousedown', handleClickOutside)\n    }\n  }, [node, ignoredNodes])\n}\n"
  },
  {
    "path": "src/hooks/useParsedQueryString.ts",
    "content": "import { parse, ParsedQs } from 'qs'\nimport { useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nexport default function useParsedQueryString(): ParsedQs {\n  const { search } = useLocation()\n  return useMemo(\n    () => (search && search.length > 1 ? parse(search, { parseArrays: false, ignoreQueryPrefix: true }) : {}),\n    [search],\n  )\n}\n"
  },
  {
    "path": "src/hooks/usePrevious.ts",
    "content": "import { useEffect, useRef } from 'react'\n\n// modified from https://usehooks.com/usePrevious/\nexport default function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  const ref = useRef<T>()\n\n  // Store current value in ref\n  useEffect(() => {\n    ref.current = value\n  }, [value]) // Only re-run if value changes\n\n  // Return previous value (happens before update in useEffect above)\n  return ref.current\n}\n"
  },
  {
    "path": "src/hooks/useTheme.ts",
    "content": "import { ThemeContext } from 'styled-components'\nimport { useContext } from 'react'\n\nexport default function useTheme() {\n  return useContext(ThemeContext)\n}\n"
  },
  {
    "path": "src/hooks/useToggle.ts",
    "content": "import { useCallback, useState } from 'react'\n\nexport default function useToggle(initialState = false): [boolean, () => void] {\n  const [state, setState] = useState(initialState)\n  const toggle = useCallback(() => setState((state) => !state), [])\n  return [state, toggle]\n}\n"
  },
  {
    "path": "src/hooks/useToggledVersion.ts",
    "content": "import useParsedQueryString from './useParsedQueryString'\n\nexport enum Version {\n  v1 = 'v1',\n  v2 = 'v2',\n}\n\nexport const DEFAULT_VERSION: Version = Version.v2\n\nexport default function useToggledVersion(): Version {\n  const { use } = useParsedQueryString()\n  if (!use || typeof use !== 'string') return Version.v2\n  if (use.toLowerCase() === 'v1') return Version.v1\n  return DEFAULT_VERSION\n}\n"
  },
  {
    "path": "src/hooks/useWindowSize.ts",
    "content": "import { useEffect, useState } from 'react'\n\nconst isClient = typeof window === 'object'\n\nfunction getSize() {\n  return {\n    width: isClient ? window.innerWidth : undefined,\n    height: isClient ? window.innerHeight : undefined,\n  }\n}\n\n// https://usehooks.com/useWindowSize/\nexport function useWindowSize() {\n  const [windowSize, setWindowSize] = useState(getSize)\n\n  useEffect(() => {\n    function handleResize() {\n      setWindowSize(getSize())\n    }\n\n    if (isClient) {\n      window.addEventListener('resize', handleResize)\n      return () => {\n        window.removeEventListener('resize', handleResize)\n      }\n    }\n    return undefined\n  }, [])\n\n  return windowSize\n}\n"
  },
  {
    "path": "src/i18n.ts",
    "content": "import i18next from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport XHR from 'i18next-xhr-backend'\nimport LanguageDetector from 'i18next-browser-languagedetector'\n\ni18next\n  .use(XHR)\n  .use(LanguageDetector)\n  .use(initReactI18next)\n  .init({\n    backend: {\n      loadPath: `./locales/{{lng}}.json`,\n    },\n    react: {\n      useSuspense: true,\n    },\n    fallbackLng: 'en',\n    preload: ['en'],\n    keySeparator: false,\n    interpolation: { escapeValue: false },\n  })\n\nexport default i18next\n"
  },
  {
    "path": "src/index.tsx",
    "content": "import 'inter-ui'\nimport React, { StrictMode } from 'react'\nimport { createRoot } from 'react-dom/client'\nimport { Provider } from 'react-redux'\nimport { HashRouter } from 'react-router-dom'\nimport './i18n'\nimport App from './pages/App'\nimport store from './state'\nimport UserUpdater from './state/user/updater'\nimport ProtocolUpdater from './state/protocol/updater'\nimport TokenUpdater from './state/tokens/updater'\nimport PoolUpdater from './state/pools/updater'\nimport { OriginApplication, initializeAnalytics } from '@uniswap/analytics'\nimport ApplicationUpdater from './state/application/updater'\nimport ListUpdater from './state/lists/updater'\nimport ThemeProvider, { FixedGlobalStyle, ThemedGlobalStyle } from './theme'\nimport { ApolloProvider } from '@apollo/client/react'\nimport { client } from 'apollo/client'\nimport { SharedEventName } from '@uniswap/analytics-events'\n\n// Actual key is set by proxy server\nconst AMPLITUDE_DUMMY_KEY = '00000000000000000000000000000000'\ninitializeAnalytics(AMPLITUDE_DUMMY_KEY, OriginApplication.INFO, {\n  proxyUrl: process.env.REACT_APP_AMPLITUDE_PROXY_URL,\n  defaultEventName: SharedEventName.PAGE_VIEWED,\n  debug: true,\n})\n\nfunction Updaters() {\n  return (\n    <>\n      <ListUpdater />\n      <UserUpdater />\n      <ProtocolUpdater />\n      <TokenUpdater />\n      <PoolUpdater />\n      <ApplicationUpdater />\n    </>\n  )\n}\n\nconst container = document.getElementById('root')\nconst root = createRoot(container!)\nroot.render(\n  <StrictMode>\n    <FixedGlobalStyle />\n    <ApolloProvider client={client}>\n      <Provider store={store}>\n        <Updaters />\n        <ThemeProvider>\n          <ThemedGlobalStyle />\n          <HashRouter>\n            <App />\n          </HashRouter>\n        </ThemeProvider>\n      </Provider>\n    </ApolloProvider>\n  </StrictMode>,\n)\n"
  },
  {
    "path": "src/pages/App.tsx",
    "content": "import React, { Suspense, useState, useEffect } from 'react'\r\nimport { Route, Routes, useLocation } from 'react-router-dom'\r\nimport styled from 'styled-components'\r\nimport Header from '../components/Header'\r\nimport URLWarning from '../components/Header/URLWarning'\r\nimport Popups from '../components/Popups'\r\nimport DarkModeQueryParamReader from '../theme/DarkModeQueryParamReader'\r\nimport Home from './Home'\r\nimport PoolsOverview from './Pool/PoolsOverview'\r\nimport TokensOverview from './Token/TokensOverview'\r\nimport TopBar from 'components/Header/TopBar'\r\nimport { RedirectInvalidToken } from './Token/redirects'\r\nimport { LocalLoader } from 'components/Loader'\r\nimport PoolPage from './Pool/PoolPage'\r\nimport { ExternalLink, TYPE } from 'theme'\r\nimport { useActiveNetworkVersion, useSubgraphStatus } from 'state/application/hooks'\r\nimport { DarkGreyCard } from 'components/Card'\r\nimport { SUPPORTED_NETWORK_VERSIONS, EthereumNetworkInfo, OptimismNetworkInfo } from 'constants/networks'\r\nimport { Link } from 'rebass'\r\n\r\nconst AppWrapper = styled.div`\r\n  display: flex;\r\n  flex-flow: column;\r\n  align-items: center;\r\n  overflow-x: hidden;\r\n  min-height: 100vh;\r\n`\r\n\r\nconst HeaderWrapper = styled.div`\r\n  ${({ theme }) => theme.flexColumnNoWrap}\r\n  width: 100%;\r\n  position: fixed;\r\n  justify-content: space-between;\r\n  z-index: 2;\r\n`\r\n\r\nconst BodyWrapper = styled.div<{ $warningActive?: boolean }>`\r\n  display: flex;\r\n  flex-direction: column;\r\n  width: 100%;\r\n  padding-top: 40px;\r\n  margin-top: ${({ $warningActive }) => ($warningActive ? '140px' : '100px')};\r\n  align-items: center;\r\n  flex: 1;\r\n  overflow-y: auto;\r\n  overflow-x: hidden;\r\n  z-index: 1;\r\n\r\n  > * {\r\n    max-width: 1200px;\r\n  }\r\n\r\n  @media (max-width: 1080px) {\r\n    padding-top: 2rem;\r\n    margin-top: 140px;\r\n  }\r\n`\r\n\r\nconst Marginer = styled.div`\r\n  margin-top: 5rem;\r\n`\r\n\r\nconst Hide1080 = styled.div`\r\n  @media (max-width: 1080px) {\r\n    display: none;\r\n  }\r\n`\r\n\r\nconst BannerWrapper = styled.div`\r\n  width: 100%;\r\n  display: flex;\r\n  justify-content: center;\r\n`\r\n\r\nconst WarningBanner = styled.div`\r\n  background-color: ${({ theme }) => theme.bg3};\r\n  padding: 1rem;\r\n  color: white;\r\n  font-size: 14px;\r\n  width: 100%;\r\n  text-align: center;\r\n  font-weight: 500;\r\n`\r\n\r\nconst UrlBanner = styled.div`\r\n  background-color: ${({ theme }) => theme.pink1};\r\n  padding: 1rem 0.75rem;\r\n  color: white;\r\n  font-size: 14px;\r\n  width: 100%;\r\n  text-align: center;\r\n  font-weight: 500;\r\n`\r\n\r\nconst Decorator = styled.span`\r\n  text-decoration: underline;\r\n  color: white;\r\n`\r\n\r\nconst BLOCK_DIFFERENCE_THRESHOLD = 30\r\n\r\nexport default function App() {\r\n  // pretend load buffer\r\n  const [loading, setLoading] = useState(true)\r\n  useEffect(() => {\r\n    setTimeout(() => setLoading(false), 1300)\r\n  }, [])\r\n\r\n  // update network based on route\r\n  // TEMP - find better way to do this\r\n  const location = useLocation()\r\n  const [activeNetwork, setActiveNetwork] = useActiveNetworkVersion()\r\n  useEffect(() => {\r\n    if (location.pathname === '/') {\r\n      setActiveNetwork(EthereumNetworkInfo)\r\n    } else {\r\n      SUPPORTED_NETWORK_VERSIONS.map((n) => {\r\n        if (location.pathname.includes(n.route.toLocaleLowerCase())) {\r\n          setActiveNetwork(n)\r\n        }\r\n      })\r\n    }\r\n  }, [location.pathname, setActiveNetwork])\r\n\r\n  // subgraph health\r\n  const [subgraphStatus] = useSubgraphStatus()\r\n\r\n  const showNotSyncedWarning =\r\n    subgraphStatus.headBlock && subgraphStatus.syncedBlock && activeNetwork === OptimismNetworkInfo\r\n      ? subgraphStatus.headBlock - subgraphStatus.syncedBlock > BLOCK_DIFFERENCE_THRESHOLD\r\n      : false\r\n\r\n  return (\r\n    <Suspense fallback={null}>\r\n      <DarkModeQueryParamReader />\r\n      {loading ? (\r\n        <LocalLoader fill={true} />\r\n      ) : (\r\n        <AppWrapper>\r\n          <URLWarning />\r\n          <HeaderWrapper>\r\n            {showNotSyncedWarning && (\r\n              <BannerWrapper>\r\n                <WarningBanner>\r\n                  {`Warning: \r\n                  Data has only synced to  block ${subgraphStatus.syncedBlock} (out of ${subgraphStatus.headBlock}). Please check back soon.`}\r\n                </WarningBanner>\r\n              </BannerWrapper>\r\n            )}\r\n            <BannerWrapper>\r\n              <UrlBanner>\r\n                {`info.uniswap.org is being deprecated on June 11th. Explore the new combined V2 and V3 analytics at `}\r\n                <Link href={'https://app.uniswap.org/explore'}>\r\n                  <Decorator>app.uniswap.org</Decorator>\r\n                </Link>\r\n              </UrlBanner>\r\n            </BannerWrapper>\r\n            <Hide1080>\r\n              <TopBar />\r\n            </Hide1080>\r\n            <Header />\r\n          </HeaderWrapper>\r\n          {subgraphStatus.available === false ? (\r\n            <AppWrapper>\r\n              <BodyWrapper>\r\n                <DarkGreyCard style={{ maxWidth: '340px' }}>\r\n                  <TYPE.label>\r\n                    The Graph hosted network which provides data for this site is temporarily experiencing issues. Check\r\n                    current status{' '}\r\n                    <ExternalLink href=\"https://thegraph.com/hosted-service/subgraph/uniswap/uniswap-v3\">\r\n                      here.\r\n                    </ExternalLink>\r\n                  </TYPE.label>\r\n                </DarkGreyCard>\r\n              </BodyWrapper>\r\n            </AppWrapper>\r\n          ) : (\r\n            <BodyWrapper $warningActive={showNotSyncedWarning}>\r\n              <Popups />\r\n              <Routes>\r\n                <Route path=\"/:networkID?/pools/:address\" element={<PoolPage />} />\r\n                <Route path=\"/:networkID?/pools\" element={<PoolsOverview />} />\r\n                <Route path=\"/:networkID?/tokens/:address\" element={<RedirectInvalidToken />} />\r\n                <Route path=\"/:networkID?/tokens\" element={<TokensOverview />} />\r\n                <Route path=\"/:networkID?\" element={<Home />} />\r\n              </Routes>\r\n              <Marginer />\r\n            </BodyWrapper>\r\n          )}\r\n        </AppWrapper>\r\n      )}\r\n    </Suspense>\r\n  )\r\n}\r\n"
  },
  {
    "path": "src/pages/Home/index.tsx",
    "content": "import React, { useState, useEffect, useMemo } from 'react'\nimport styled from 'styled-components'\nimport { AutoColumn } from 'components/Column'\nimport { TYPE } from 'theme'\nimport { ResponsiveRow, RowBetween, RowFixed } from 'components/Row'\nimport LineChart from 'components/LineChart/alt'\nimport useTheme from 'hooks/useTheme'\nimport { useProtocolChartData, useProtocolData, useProtocolTransactions } from 'state/protocol/hooks'\nimport { DarkGreyCard } from 'components/Card'\nimport { formatDollarAmount } from 'utils/numbers'\nimport Percent from 'components/Percent'\nimport { HideMedium, HideSmall, StyledInternalLink } from '../../theme/components'\nimport TokenTable from 'components/tokens/TokenTable'\nimport PoolTable from 'components/pools/PoolTable'\nimport { PageWrapper, ThemedBackgroundGlobal } from 'pages/styled'\nimport { unixToDate } from 'utils/date'\nimport BarChart from 'components/BarChart/alt'\nimport { useAllPoolData } from 'state/pools/hooks'\nimport { notEmpty } from 'utils'\nimport TransactionsTable from '../../components/TransactionsTable'\nimport { useAllTokenData } from 'state/tokens/hooks'\nimport { MonoSpace } from 'components/shared'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { useTransformedVolumeData } from 'hooks/chart'\nimport { SmallOptionButton } from 'components/Button'\nimport { VolumeWindow } from 'types'\nimport { Trace } from '@uniswap/analytics'\n\nconst ChartWrapper = styled.div`\n  width: 49%;\n\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    width: 100%;\n  `};\n`\n\nexport default function Home() {\n  useEffect(() => {\n    window.scrollTo(0, 0)\n  }, [])\n\n  const theme = useTheme()\n\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  const [protocolData] = useProtocolData()\n  const [transactions] = useProtocolTransactions()\n\n  const [volumeHover, setVolumeHover] = useState<number | undefined>()\n  const [liquidityHover, setLiquidityHover] = useState<number | undefined>()\n  const [leftLabel, setLeftLabel] = useState<string | undefined>()\n  const [rightLabel, setRightLabel] = useState<string | undefined>()\n\n  // Hot fix to remove errors in TVL data while subgraph syncs.\n  const [chartData] = useProtocolChartData()\n\n  useEffect(() => {\n    setLiquidityHover(undefined)\n    setVolumeHover(undefined)\n  }, [activeNetwork])\n\n  // get all the pool datas that exist\n  const allPoolData = useAllPoolData()\n  const poolDatas = useMemo(() => {\n    return Object.values(allPoolData)\n      .map((p) => p.data)\n      .filter(notEmpty)\n  }, [allPoolData])\n\n  // if hover value undefined, reset to current day value\n  useEffect(() => {\n    if (volumeHover === undefined && protocolData) {\n      setVolumeHover(protocolData.volumeUSD)\n    }\n  }, [protocolData, volumeHover])\n  useEffect(() => {\n    if (liquidityHover === undefined && protocolData) {\n      setLiquidityHover(protocolData.tvlUSD)\n    }\n  }, [liquidityHover, protocolData])\n\n  const formattedTvlData = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.tvlUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  const formattedVolumeData = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.volumeUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  const weeklyVolumeData = useTransformedVolumeData(chartData, 'week')\n  const monthlyVolumeData = useTransformedVolumeData(chartData, 'month')\n\n  const allTokens = useAllTokenData()\n\n  const formattedTokens = useMemo(() => {\n    return Object.values(allTokens)\n      .map((t) => t.data)\n      .filter(notEmpty)\n  }, [allTokens])\n\n  const [volumeWindow, setVolumeWindow] = useState(VolumeWindow.weekly)\n\n  const tvlValue = useMemo(() => {\n    if (liquidityHover) {\n      return formatDollarAmount(liquidityHover, 2, true)\n    }\n    return formatDollarAmount(protocolData?.tvlUSD, 2, true)\n  }, [liquidityHover, protocolData?.tvlUSD])\n\n  return (\n    <Trace page={'home-page'} shouldLogImpression>\n      <PageWrapper>\n        <ThemedBackgroundGlobal $backgroundColor={activeNetwork.bgColor} />\n        <AutoColumn $gap=\"16px\">\n          <TYPE.main>Uniswap Overview</TYPE.main>\n          <ResponsiveRow>\n            <ChartWrapper>\n              <LineChart\n                data={formattedTvlData}\n                height={220}\n                minHeight={332}\n                color={activeNetwork.primaryColor}\n                value={liquidityHover}\n                label={leftLabel}\n                setValue={setLiquidityHover}\n                setLabel={setLeftLabel}\n                topLeft={\n                  <AutoColumn $gap=\"4px\">\n                    <TYPE.mediumHeader fontSize=\"16px\">TVL</TYPE.mediumHeader>\n                    <TYPE.largeHeader fontSize=\"32px\">\n                      <MonoSpace>{tvlValue} </MonoSpace>\n                    </TYPE.largeHeader>\n                    <TYPE.main fontSize=\"12px\" height=\"14px\">\n                      {leftLabel ? <MonoSpace>{leftLabel} (UTC)</MonoSpace> : null}\n                    </TYPE.main>\n                  </AutoColumn>\n                }\n              />\n            </ChartWrapper>\n            <ChartWrapper>\n              <BarChart\n                height={220}\n                minHeight={332}\n                data={\n                  volumeWindow === VolumeWindow.monthly\n                    ? monthlyVolumeData\n                    : volumeWindow === VolumeWindow.weekly\n                    ? weeklyVolumeData\n                    : formattedVolumeData\n                }\n                color={theme?.blue1}\n                setValue={setVolumeHover}\n                setLabel={setRightLabel}\n                value={volumeHover}\n                label={rightLabel}\n                activeWindow={volumeWindow}\n                topRight={\n                  <RowFixed style={{ marginLeft: '-40px', marginTop: '8px' }}>\n                    <SmallOptionButton\n                      $active={volumeWindow === VolumeWindow.daily}\n                      onClick={() => setVolumeWindow(VolumeWindow.daily)}\n                    >\n                      D\n                    </SmallOptionButton>\n                    <SmallOptionButton\n                      $active={volumeWindow === VolumeWindow.weekly}\n                      style={{ marginLeft: '8px' }}\n                      onClick={() => setVolumeWindow(VolumeWindow.weekly)}\n                    >\n                      W\n                    </SmallOptionButton>\n                    <SmallOptionButton\n                      $active={volumeWindow === VolumeWindow.monthly}\n                      style={{ marginLeft: '8px' }}\n                      onClick={() => setVolumeWindow(VolumeWindow.monthly)}\n                    >\n                      M\n                    </SmallOptionButton>\n                  </RowFixed>\n                }\n                topLeft={\n                  <AutoColumn $gap=\"4px\">\n                    <TYPE.mediumHeader fontSize=\"16px\">Volume 24H</TYPE.mediumHeader>\n                    <TYPE.largeHeader fontSize=\"32px\">\n                      <MonoSpace> {formatDollarAmount(volumeHover, 2)}</MonoSpace>\n                    </TYPE.largeHeader>\n                    <TYPE.main fontSize=\"12px\" height=\"14px\">\n                      {rightLabel ? <MonoSpace>{rightLabel} (UTC)</MonoSpace> : null}\n                    </TYPE.main>\n                  </AutoColumn>\n                }\n              />\n            </ChartWrapper>\n          </ResponsiveRow>\n          <HideSmall>\n            <DarkGreyCard>\n              <RowBetween>\n                <RowFixed>\n                  <RowFixed mr=\"20px\">\n                    <TYPE.main mr=\"4px\">Volume 24H: </TYPE.main>\n                    <TYPE.label mr=\"4px\">{formatDollarAmount(protocolData?.volumeUSD)}</TYPE.label>\n                    <Percent value={protocolData?.volumeUSDChange} wrap={true} />\n                  </RowFixed>\n                  <RowFixed mr=\"20px\">\n                    <TYPE.main mr=\"4px\">Fees 24H: </TYPE.main>\n                    <TYPE.label mr=\"4px\">{formatDollarAmount(protocolData?.feesUSD)}</TYPE.label>\n                    <Percent value={protocolData?.feeChange} wrap={true} />\n                  </RowFixed>\n                  <HideMedium>\n                    <RowFixed mr=\"20px\">\n                      <TYPE.main mr=\"4px\">TVL: </TYPE.main>\n                      <TYPE.label mr=\"4px\">{formatDollarAmount(protocolData?.tvlUSD)}</TYPE.label>\n                      <TYPE.main></TYPE.main>\n                      <Percent value={protocolData?.tvlUSDChange} wrap={true} />\n                    </RowFixed>\n                  </HideMedium>\n                </RowFixed>\n              </RowBetween>\n            </DarkGreyCard>\n          </HideSmall>\n          <RowBetween>\n            <TYPE.main>Top Tokens</TYPE.main>\n            <StyledInternalLink to=\"tokens\">Explore</StyledInternalLink>\n          </RowBetween>\n          <TokenTable tokenDatas={formattedTokens} />\n          <RowBetween>\n            <TYPE.main>Top Pools</TYPE.main>\n            <StyledInternalLink to=\"pools\">Explore</StyledInternalLink>\n          </RowBetween>\n          <PoolTable poolDatas={poolDatas} />\n          <RowBetween>\n            <TYPE.main>Transactions</TYPE.main>\n          </RowBetween>\n          {transactions ? <TransactionsTable transactions={transactions} color={activeNetwork.primaryColor} /> : null}\n        </AutoColumn>\n      </PageWrapper>\n    </Trace>\n  )\n}\n"
  },
  {
    "path": "src/pages/Pool/PoolPage.tsx",
    "content": "import React, { useMemo, useState, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { useColor } from 'hooks/useColor'\nimport { ThemedBackground, PageWrapper } from 'pages/styled'\nimport { ExplorerDataType, feeTierPercent, getExplorerLink, isAddress } from 'utils'\nimport { AutoColumn } from 'components/Column'\nimport { RowBetween, RowFixed, AutoRow } from 'components/Row'\nimport { TYPE, StyledInternalLink } from 'theme'\nimport Loader, { LocalLoader } from 'components/Loader'\nimport { ExternalLink, Download } from 'react-feather'\nimport { ExternalLink as StyledExternalLink } from '../../theme/components'\nimport useTheme from 'hooks/useTheme'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { formatDollarAmount, formatAmount } from 'utils/numbers'\nimport Percent from 'components/Percent'\nimport { ButtonPrimary, ButtonGray, SavedIcon } from 'components/Button'\nimport { DarkGreyCard, GreyCard, GreyBadge } from 'components/Card'\nimport { usePoolDatas, usePoolChartData, usePoolTransactions } from 'state/pools/hooks'\nimport { unixToDate } from 'utils/date'\nimport { ToggleWrapper, ToggleElementFree } from 'components/Toggle/index'\nimport BarChart from 'components/BarChart/alt'\nimport DoubleCurrencyLogo from 'components/DoubleLogo'\nimport TransactionTable from 'components/TransactionsTable'\nimport { useSavedPools } from 'state/user/hooks'\nimport DensityChart from 'components/DensityChart'\nimport { MonoSpace } from 'components/shared'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { networkPrefix } from 'utils/networkPrefix'\nimport { EthereumNetworkInfo } from 'constants/networks'\nimport { GenericImageWrapper } from 'components/Logo'\nimport { Navigate, useParams } from 'react-router-dom'\nimport { Trace } from '@uniswap/analytics'\nimport { InterfacePageName } from '@uniswap/analytics-events'\nimport { ChainId } from '@uniswap/sdk-core'\n\nconst ContentLayout = styled.div`\n  display: grid;\n  grid-template-columns: 300px 1fr;\n  grid-gap: 1em;\n\n  @media screen and (max-width: 800px) {\n    grid-template-columns: 1fr;\n    grid-template-rows: 1fr 1fr;\n  }\n`\n\nconst TokenButton = styled(GreyCard)`\n  padding: 8px 12px;\n  border-radius: 10px;\n  :hover {\n    cursor: pointer;\n    opacity: 0.6;\n  }\n`\n\nconst ResponsiveRow = styled(RowBetween)`\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    flex-direction: column;\n    align-items: flex-start;\n    row-gap: 24px;\n    width: 100%:\n  `};\n`\n\nconst ToggleRow = styled(RowBetween)`\n  @media screen and (max-width: 600px) {\n    flex-direction: column;\n  }\n`\n\nenum ChartView {\n  VOL,\n  PRICE,\n  DENSITY,\n  FEES,\n}\n\nexport default function PoolPageWrapper() {\n  const { address } = useParams<{ address: string }>()\n  if (!address || !isAddress(address)) {\n    return <Navigate to={`/`} replace />\n  }\n  return <PoolPage address={address} />\n}\n\nfunction PoolPage({ address }: { address: string }) {\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  useEffect(() => {\n    window.scrollTo(0, 0)\n  }, [])\n\n  // theming\n  const backgroundColor = useColor()\n  const theme = useTheme()\n\n  // token data\n  const poolData = usePoolDatas([address])[0]\n  const chartData = usePoolChartData(address)\n  const transactions = usePoolTransactions(address)\n\n  const [view, setView] = useState(ChartView.VOL)\n  const [latestValue, setLatestValue] = useState<number | undefined>()\n  const [valueLabel, setValueLabel] = useState<string | undefined>()\n\n  const formattedTvlData = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.totalValueLockedUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  const formattedVolumeData = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.volumeUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  const formattedFeesUSD = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.feesUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  //watchlist\n  const [savedPools, addSavedPool] = useSavedPools()\n\n  return (\n    <Trace page={InterfacePageName.POOL_PAGE} shouldLogImpression>\n      <PageWrapper>\n        <ThemedBackground $backgroundColor={backgroundColor} />\n        {poolData ? (\n          <AutoColumn $gap=\"32px\">\n            <RowBetween>\n              <AutoRow $gap=\"4px\">\n                <StyledInternalLink to={networkPrefix(activeNetwork)}>\n                  <TYPE.main>{`Home > `}</TYPE.main>\n                </StyledInternalLink>\n                <StyledInternalLink to={networkPrefix(activeNetwork) + 'pools'}>\n                  <TYPE.label>{` Pools `}</TYPE.label>\n                </StyledInternalLink>\n                <TYPE.main>{` > `}</TYPE.main>\n                <TYPE.label>{` ${poolData.token0.symbol} / ${poolData.token1.symbol} ${feeTierPercent(\n                  poolData.feeTier,\n                )} `}</TYPE.label>\n              </AutoRow>\n              <RowFixed gap=\"10px\" align=\"center\">\n                <SavedIcon fill={savedPools.includes(address)} onClick={() => addSavedPool(address)} />\n                <StyledExternalLink href={getExplorerLink(ChainId.MAINNET, address, ExplorerDataType.ADDRESS)}>\n                  <ExternalLink stroke={theme?.text2} size={'17px'} style={{ marginLeft: '12px' }} />\n                </StyledExternalLink>\n              </RowFixed>\n            </RowBetween>\n            <ResponsiveRow align=\"flex-end\">\n              <AutoColumn $gap=\"lg\">\n                <RowFixed>\n                  <DoubleCurrencyLogo address0={poolData.token0.address} address1={poolData.token1.address} size={24} />\n                  <TYPE.label\n                    ml=\"8px\"\n                    mr=\"8px\"\n                    fontSize=\"24px\"\n                  >{` ${poolData.token0.symbol} / ${poolData.token1.symbol} `}</TYPE.label>\n                  <GreyBadge>{feeTierPercent(poolData.feeTier)}</GreyBadge>\n                  {activeNetwork === EthereumNetworkInfo ? null : (\n                    <GenericImageWrapper src={activeNetwork.imageURL} style={{ marginLeft: '8px' }} size={'26px'} />\n                  )}\n                </RowFixed>\n                <ResponsiveRow>\n                  <StyledInternalLink to={networkPrefix(activeNetwork) + 'tokens/' + poolData.token0.address}>\n                    <TokenButton>\n                      <RowFixed>\n                        <CurrencyLogo address={poolData.token0.address} size={'20px'} />\n                        <TYPE.label fontSize=\"16px\" ml=\"4px\" style={{ whiteSpace: 'nowrap' }} width={'fit-content'}>\n                          {`1 ${poolData.token0.symbol} =  ${formatAmount(poolData.token1Price, 4)} ${\n                            poolData.token1.symbol\n                          }`}\n                        </TYPE.label>\n                      </RowFixed>\n                    </TokenButton>\n                  </StyledInternalLink>\n                  <StyledInternalLink to={networkPrefix(activeNetwork) + 'tokens/' + poolData.token1.address}>\n                    <TokenButton ml=\"10px\">\n                      <RowFixed>\n                        <CurrencyLogo address={poolData.token1.address} size={'20px'} />\n                        <TYPE.label fontSize=\"16px\" ml=\"4px\" style={{ whiteSpace: 'nowrap' }} width={'fit-content'}>\n                          {`1 ${poolData.token1.symbol} =  ${formatAmount(poolData.token0Price, 4)} ${\n                            poolData.token0.symbol\n                          }`}\n                        </TYPE.label>\n                      </RowFixed>\n                    </TokenButton>\n                  </StyledInternalLink>\n                </ResponsiveRow>\n              </AutoColumn>\n              {activeNetwork !== EthereumNetworkInfo ? null : (\n                <RowFixed>\n                  <StyledExternalLink\n                    href={`https://app.uniswap.org/#/add/${poolData.token0.address}/${poolData.token1.address}/${poolData.feeTier}`}\n                  >\n                    <ButtonGray width=\"170px\" mr=\"12px\" style={{ height: '44px' }}>\n                      <RowBetween>\n                        <Download size={24} />\n                        <div style={{ display: 'flex', alignItems: 'center' }}>Add Liquidity</div>\n                      </RowBetween>\n                    </ButtonGray>\n                  </StyledExternalLink>\n                  <StyledExternalLink\n                    href={`https://app.uniswap.org/#/swap?inputCurrency=${poolData.token0.address}&outputCurrency=${poolData.token1.address}`}\n                  >\n                    <ButtonPrimary width=\"100px\" style={{ height: '44px' }}>\n                      Trade\n                    </ButtonPrimary>\n                  </StyledExternalLink>\n                </RowFixed>\n              )}\n            </ResponsiveRow>\n            <ContentLayout>\n              <DarkGreyCard>\n                <AutoColumn $gap=\"lg\">\n                  <GreyCard padding=\"16px\">\n                    <AutoColumn $gap=\"md\">\n                      <TYPE.main>Total Tokens Locked</TYPE.main>\n                      <RowBetween>\n                        <RowFixed>\n                          <CurrencyLogo address={poolData.token0.address} size={'20px'} />\n                          <TYPE.label fontSize=\"14px\" ml=\"8px\">\n                            {poolData.token0.symbol}\n                          </TYPE.label>\n                        </RowFixed>\n                        <TYPE.label fontSize=\"14px\">{formatAmount(poolData.tvlToken0)}</TYPE.label>\n                      </RowBetween>\n                      <RowBetween>\n                        <RowFixed>\n                          <CurrencyLogo address={poolData.token1.address} size={'20px'} />\n                          <TYPE.label fontSize=\"14px\" ml=\"8px\">\n                            {poolData.token1.symbol}\n                          </TYPE.label>\n                        </RowFixed>\n                        <TYPE.label fontSize=\"14px\">{formatAmount(poolData.tvlToken1)}</TYPE.label>\n                      </RowBetween>\n                    </AutoColumn>\n                  </GreyCard>\n                  <AutoColumn $gap=\"4px\">\n                    <TYPE.main fontWeight={400}>TVL</TYPE.main>\n                    <TYPE.label fontSize=\"24px\">{formatDollarAmount(poolData.tvlUSD)}</TYPE.label>\n                    <Percent value={poolData.tvlUSDChange} />\n                  </AutoColumn>\n                  <AutoColumn $gap=\"4px\">\n                    <TYPE.main fontWeight={400}>Volume 24h</TYPE.main>\n                    <TYPE.label fontSize=\"24px\">{formatDollarAmount(poolData.volumeUSD)}</TYPE.label>\n                    <Percent value={poolData.volumeUSDChange} />\n                  </AutoColumn>\n                  <AutoColumn $gap=\"4px\">\n                    <TYPE.main fontWeight={400}>24h Fees</TYPE.main>\n                    <TYPE.label fontSize=\"24px\">\n                      {formatDollarAmount(poolData.volumeUSD * (poolData.feeTier / 1000000))}\n                    </TYPE.label>\n                  </AutoColumn>\n                </AutoColumn>\n              </DarkGreyCard>\n              <DarkGreyCard>\n                <ToggleRow align=\"flex-start\">\n                  <AutoColumn>\n                    <TYPE.label fontSize=\"24px\" height=\"30px\">\n                      <MonoSpace>\n                        {latestValue\n                          ? formatDollarAmount(latestValue)\n                          : view === ChartView.VOL\n                          ? formatDollarAmount(formattedVolumeData[formattedVolumeData.length - 1]?.value)\n                          : view === ChartView.DENSITY\n                          ? ''\n                          : formatDollarAmount(formattedTvlData[formattedTvlData.length - 1]?.value)}{' '}\n                      </MonoSpace>\n                    </TYPE.label>\n                    <TYPE.main height=\"20px\" fontSize=\"12px\">\n                      {valueLabel ? <MonoSpace>{valueLabel} (UTC)</MonoSpace> : ''}\n                    </TYPE.main>\n                  </AutoColumn>\n                  <ToggleWrapper width=\"240px\">\n                    <ToggleElementFree\n                      isActive={view === ChartView.VOL}\n                      fontSize=\"12px\"\n                      onClick={() => (view === ChartView.VOL ? setView(ChartView.DENSITY) : setView(ChartView.VOL))}\n                    >\n                      Volume\n                    </ToggleElementFree>\n                    <ToggleElementFree\n                      isActive={view === ChartView.DENSITY}\n                      fontSize=\"12px\"\n                      onClick={() => (view === ChartView.DENSITY ? setView(ChartView.VOL) : setView(ChartView.DENSITY))}\n                    >\n                      Liquidity\n                    </ToggleElementFree>\n                    <ToggleElementFree\n                      isActive={view === ChartView.FEES}\n                      fontSize=\"12px\"\n                      onClick={() => (view === ChartView.FEES ? setView(ChartView.VOL) : setView(ChartView.FEES))}\n                    >\n                      Fees\n                    </ToggleElementFree>\n                  </ToggleWrapper>\n                </ToggleRow>\n                {view === ChartView.VOL ? (\n                  <BarChart\n                    data={formattedVolumeData}\n                    color={backgroundColor}\n                    minHeight={340}\n                    setValue={setLatestValue}\n                    setLabel={setValueLabel}\n                    value={latestValue}\n                    label={valueLabel}\n                  />\n                ) : view === ChartView.FEES ? (\n                  <BarChart\n                    data={formattedFeesUSD}\n                    color={backgroundColor}\n                    minHeight={340}\n                    setValue={setLatestValue}\n                    setLabel={setValueLabel}\n                    value={latestValue}\n                    label={valueLabel}\n                  />\n                ) : (\n                  <DensityChart address={address} />\n                )}\n              </DarkGreyCard>\n            </ContentLayout>\n            <TYPE.main fontSize=\"24px\">Transactions</TYPE.main>\n            <DarkGreyCard>\n              {transactions ? <TransactionTable transactions={transactions} /> : <LocalLoader fill={false} />}\n            </DarkGreyCard>\n          </AutoColumn>\n        ) : (\n          <Loader />\n        )}\n      </PageWrapper>\n    </Trace>\n  )\n}\n"
  },
  {
    "path": "src/pages/Pool/PoolsOverview.tsx",
    "content": "import React, { useEffect, useMemo } from 'react'\nimport { PageWrapper } from 'pages/styled'\nimport { AutoColumn } from 'components/Column'\nimport { TYPE } from 'theme'\nimport PoolTable from 'components/pools/PoolTable'\nimport { useAllPoolData, usePoolDatas } from 'state/pools/hooks'\nimport { notEmpty } from 'utils'\nimport { useSavedPools } from 'state/user/hooks'\nimport { DarkGreyCard } from 'components/Card'\nimport { Trace } from '@uniswap/analytics'\n// import TopPoolMovers from 'components/pools/TopPoolMovers'\n\nexport default function PoolPage() {\n  useEffect(() => {\n    window.scrollTo(0, 0)\n  }, [])\n\n  // get all the pool datas that exist\n  const allPoolData = useAllPoolData()\n  const poolDatas = useMemo(() => {\n    return Object.values(allPoolData)\n      .map((p) => p.data)\n      .filter(notEmpty)\n  }, [allPoolData])\n\n  const [savedPools] = useSavedPools()\n  const watchlistPools = usePoolDatas(savedPools)\n\n  return (\n    <Trace page=\"pools-overview-page\" shouldLogImpression>\n      <PageWrapper>\n        <AutoColumn $gap=\"lg\">\n          <TYPE.main>Your Watchlist</TYPE.main>\n          {watchlistPools.length > 0 ? (\n            <PoolTable poolDatas={watchlistPools} />\n          ) : (\n            <DarkGreyCard>\n              <TYPE.main>Saved pools will appear here</TYPE.main>\n            </DarkGreyCard>\n          )}\n          <TYPE.main>All Pools</TYPE.main>\n          <PoolTable poolDatas={poolDatas} />\n        </AutoColumn>\n      </PageWrapper>\n    </Trace>\n  )\n}\n"
  },
  {
    "path": "src/pages/Protocol/index.tsx",
    "content": "import React from 'react'\n\nexport default function Protocol() {\n  return <div></div>\n}\n"
  },
  {
    "path": "src/pages/Token/TokenPage.tsx",
    "content": "import React, { useMemo, useState, useEffect } from 'react'\nimport {\n  useTokenData,\n  usePoolsForToken,\n  useTokenChartData,\n  useTokenPriceData,\n  useTokenTransactions,\n} from 'state/tokens/hooks'\nimport styled from 'styled-components'\nimport { useColor } from 'hooks/useColor'\nimport { ThemedBackground, PageWrapper } from 'pages/styled'\nimport { shortenAddress, getExplorerLink, currentTimestamp, ExplorerDataType } from 'utils'\nimport { AutoColumn } from 'components/Column'\nimport { RowBetween, RowFixed, AutoRow, RowFlat } from 'components/Row'\nimport { TYPE, StyledInternalLink } from 'theme'\nimport Loader, { LocalLoader } from 'components/Loader'\nimport { ExternalLink, Download } from 'react-feather'\nimport { ExternalLink as StyledExternalLink } from '../../theme/components'\nimport useTheme from 'hooks/useTheme'\nimport CurrencyLogo from 'components/CurrencyLogo'\nimport { formatDollarAmount } from 'utils/numbers'\nimport Percent from 'components/Percent'\nimport { ButtonPrimary, ButtonGray, SavedIcon } from 'components/Button'\nimport { DarkGreyCard, LightGreyCard } from 'components/Card'\nimport { usePoolDatas } from 'state/pools/hooks'\nimport PoolTable from 'components/pools/PoolTable'\nimport LineChart from 'components/LineChart/alt'\nimport { unixToDate } from 'utils/date'\nimport { ToggleWrapper, ToggleElementFree } from 'components/Toggle/index'\nimport BarChart from 'components/BarChart/alt'\nimport CandleChart from 'components/CandleChart'\nimport TransactionTable from 'components/TransactionsTable'\nimport { useSavedTokens } from 'state/user/hooks'\nimport { ONE_HOUR_SECONDS, TimeWindow } from 'constants/intervals'\nimport { MonoSpace } from 'components/shared'\nimport dayjs from 'dayjs'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\nimport { networkPrefix } from 'utils/networkPrefix'\nimport { EthereumNetworkInfo } from 'constants/networks'\nimport { GenericImageWrapper } from 'components/Logo'\nimport { useCMCLink } from 'hooks/useCMCLink'\nimport CMCLogo from '../../assets/images/cmc.png'\nimport { useParams } from 'react-router-dom'\nimport { Trace } from '@uniswap/analytics'\nimport { ChainId } from '@uniswap/sdk-core'\n\nconst PriceText = styled(TYPE.label)`\n  font-size: 36px;\n  line-height: 0.8;\n`\n\nconst ContentLayout = styled.div`\n  margin-top: 16px;\n  display: grid;\n  grid-template-columns: 260px 1fr;\n  grid-gap: 1em;\n\n  @media screen and (max-width: 800px) {\n    grid-template-columns: 1fr;\n    grid-template-rows: 1fr 1fr;\n  }\n`\n\nconst ResponsiveRow = styled(RowBetween)`\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    flex-direction: column;\n    align-items: flex-start;\n    row-gap: 24px;\n    width: 100%:\n  `};\n`\n\nconst StyledCMCLogo = styled.img`\n  height: 16px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n`\n\nenum ChartView {\n  TVL,\n  VOL,\n  PRICE,\n}\n\nconst DEFAULT_TIME_WINDOW = TimeWindow.WEEK\n\nexport default function TokenPage() {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const { address } = useParams<{ address?: string }>()\n\n  const formattedAddress = address?.toLowerCase() ?? ''\n  // theming\n  const backgroundColor = useColor(formattedAddress)\n  const theme = useTheme()\n\n  // scroll on page view\n  useEffect(() => {\n    window.scrollTo(0, 0)\n  }, [])\n\n  const tokenData = useTokenData(formattedAddress)\n  const poolsForToken = usePoolsForToken(formattedAddress)\n  const poolDatas = usePoolDatas(poolsForToken ?? [])\n  const transactions = useTokenTransactions(formattedAddress)\n  const chartData = useTokenChartData(formattedAddress)\n\n  // check for link to CMC\n  const cmcLink = useCMCLink(formattedAddress)\n\n  // format for chart component\n  const formattedTvlData = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.totalValueLockedUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  const formattedVolumeData = useMemo(() => {\n    if (chartData) {\n      return chartData.map((day) => {\n        return {\n          time: unixToDate(day.date),\n          value: day.volumeUSD,\n        }\n      })\n    } else {\n      return []\n    }\n  }, [chartData])\n\n  // chart labels\n  const [view, setView] = useState(ChartView.PRICE)\n  const [latestValue, setLatestValue] = useState<number | undefined>()\n  const [valueLabel, setValueLabel] = useState<string | undefined>()\n  const [timeWindow] = useState(DEFAULT_TIME_WINDOW)\n\n  // pricing data\n  const priceData = useTokenPriceData(formattedAddress, ONE_HOUR_SECONDS, timeWindow)\n  const adjustedToCurrent = useMemo(() => {\n    if (priceData && tokenData && priceData.length > 0) {\n      const adjusted = Object.assign([], priceData)\n      adjusted.push({\n        time: currentTimestamp() / 1000,\n        open: priceData[priceData.length - 1].close,\n        close: tokenData?.priceUSD,\n        high: tokenData?.priceUSD,\n        low: priceData[priceData.length - 1].close,\n      })\n      return adjusted\n    } else {\n      return undefined\n    }\n  }, [priceData, tokenData])\n\n  // watchlist\n  const [savedTokens, addSavedToken] = useSavedTokens()\n\n  return (\n    <Trace page=\"token-page\" shouldLogImpression>\n      <PageWrapper>\n        <ThemedBackground $backgroundColor={backgroundColor} />\n        {tokenData ? (\n          !tokenData.exists ? (\n            <LightGreyCard style={{ textAlign: 'center' }}>\n              No pool has been created with this token yet. Create one\n              <StyledExternalLink\n                style={{ marginLeft: '4px' }}\n                href={`https://app.uniswap.org/#/add/${formattedAddress}`}\n              >\n                here.\n              </StyledExternalLink>\n            </LightGreyCard>\n          ) : (\n            <AutoColumn $gap=\"32px\">\n              <AutoColumn $gap=\"32px\">\n                <RowBetween>\n                  <AutoRow $gap=\"4px\">\n                    <StyledInternalLink to={networkPrefix(activeNetwork)}>\n                      <TYPE.main>{`Home > `}</TYPE.main>\n                    </StyledInternalLink>\n                    <StyledInternalLink to={networkPrefix(activeNetwork) + 'tokens'}>\n                      <TYPE.label>{` Tokens `}</TYPE.label>\n                    </StyledInternalLink>\n                    <TYPE.main>{` > `}</TYPE.main>\n                    <TYPE.label>{` ${tokenData.symbol} `}</TYPE.label>\n                    <StyledExternalLink\n                      href={getExplorerLink(ChainId.MAINNET, formattedAddress, ExplorerDataType.ADDRESS)}\n                    >\n                      <TYPE.main>{` (${shortenAddress(formattedAddress)}) `}</TYPE.main>\n                    </StyledExternalLink>\n                  </AutoRow>\n                  <RowFixed align=\"center\" justify=\"center\">\n                    <SavedIcon\n                      fill={savedTokens.includes(formattedAddress)}\n                      onClick={() => addSavedToken(formattedAddress)}\n                    />\n                    {cmcLink && (\n                      <StyledExternalLink href={cmcLink} style={{ marginLeft: '12px' }}>\n                        <StyledCMCLogo src={CMCLogo} />\n                      </StyledExternalLink>\n                    )}\n                    <StyledExternalLink\n                      href={getExplorerLink(ChainId.MAINNET, formattedAddress, ExplorerDataType.ADDRESS)}\n                    >\n                      <ExternalLink stroke={theme?.text2} size={'17px'} style={{ marginLeft: '12px' }} />\n                    </StyledExternalLink>\n                  </RowFixed>\n                </RowBetween>\n                <ResponsiveRow align=\"flex-end\">\n                  <AutoColumn $gap=\"md\">\n                    <RowFixed gap=\"lg\">\n                      <CurrencyLogo address={formattedAddress} />\n                      <TYPE.label ml={'10px'} fontSize=\"20px\">\n                        {tokenData.name}\n                      </TYPE.label>\n                      <TYPE.main ml={'6px'} fontSize=\"20px\">\n                        ({tokenData.symbol})\n                      </TYPE.main>\n                      {activeNetwork === EthereumNetworkInfo ? null : (\n                        <GenericImageWrapper src={activeNetwork.imageURL} style={{ marginLeft: '8px' }} size={'26px'} />\n                      )}\n                    </RowFixed>\n                    <RowFlat style={{ marginTop: '8px' }}>\n                      <PriceText mr=\"10px\"> {formatDollarAmount(tokenData.priceUSD)}</PriceText>\n                      (<Percent value={tokenData.priceUSDChange} />)\n                    </RowFlat>\n                  </AutoColumn>\n                  {activeNetwork !== EthereumNetworkInfo ? null : (\n                    <RowFixed>\n                      <StyledExternalLink href={`https://app.uniswap.org/#/add/${formattedAddress}`}>\n                        <ButtonGray width=\"170px\" mr=\"12px\" height={'100%'} style={{ height: '44px' }}>\n                          <RowBetween>\n                            <Download size={24} />\n                            <div style={{ display: 'flex', alignItems: 'center' }}>Add Liquidity</div>\n                          </RowBetween>\n                        </ButtonGray>\n                      </StyledExternalLink>\n                      <StyledExternalLink href={`https://app.uniswap.org/#/swap?inputCurrency=${formattedAddress}`}>\n                        <ButtonPrimary width=\"100px\" bgColor={backgroundColor} style={{ height: '44px' }}>\n                          Trade\n                        </ButtonPrimary>\n                      </StyledExternalLink>\n                    </RowFixed>\n                  )}\n                </ResponsiveRow>\n              </AutoColumn>\n              <ContentLayout>\n                <DarkGreyCard>\n                  <AutoColumn $gap=\"lg\">\n                    <AutoColumn $gap=\"4px\">\n                      <TYPE.main fontWeight={400}>TVL</TYPE.main>\n                      <TYPE.label fontSize=\"24px\">{formatDollarAmount(tokenData.tvlUSD)}</TYPE.label>\n                      <Percent value={tokenData.tvlUSDChange} />\n                    </AutoColumn>\n                    <AutoColumn $gap=\"4px\">\n                      <TYPE.main fontWeight={400}>24h Trading Vol</TYPE.main>\n                      <TYPE.label fontSize=\"24px\">{formatDollarAmount(tokenData.volumeUSD)}</TYPE.label>\n                      <Percent value={tokenData.volumeUSDChange} />\n                    </AutoColumn>\n                    <AutoColumn $gap=\"4px\">\n                      <TYPE.main fontWeight={400}>7d Trading Vol</TYPE.main>\n                      <TYPE.label fontSize=\"24px\">{formatDollarAmount(tokenData.volumeUSDWeek)}</TYPE.label>\n                    </AutoColumn>\n                    <AutoColumn $gap=\"4px\">\n                      <TYPE.main fontWeight={400}>24h Fees</TYPE.main>\n                      <TYPE.label fontSize=\"24px\">{formatDollarAmount(tokenData.feesUSD)}</TYPE.label>\n                    </AutoColumn>\n                  </AutoColumn>\n                </DarkGreyCard>\n                <DarkGreyCard>\n                  <RowBetween align=\"flex-start\">\n                    <AutoColumn>\n                      <RowFixed>\n                        <TYPE.label fontSize=\"24px\" height=\"30px\">\n                          <MonoSpace>\n                            {latestValue\n                              ? formatDollarAmount(latestValue, 2)\n                              : view === ChartView.VOL\n                              ? formatDollarAmount(formattedVolumeData[formattedVolumeData.length - 1]?.value)\n                              : view === ChartView.TVL\n                              ? formatDollarAmount(formattedTvlData[formattedTvlData.length - 1]?.value)\n                              : formatDollarAmount(tokenData.priceUSD, 2)}\n                          </MonoSpace>\n                        </TYPE.label>\n                      </RowFixed>\n                      <TYPE.main height=\"20px\" fontSize=\"12px\">\n                        {valueLabel ? (\n                          <MonoSpace>{valueLabel} (UTC)</MonoSpace>\n                        ) : (\n                          <MonoSpace>{dayjs.utc().format('MMM D, YYYY')}</MonoSpace>\n                        )}\n                      </TYPE.main>\n                    </AutoColumn>\n                    <ToggleWrapper width=\"180px\">\n                      <ToggleElementFree\n                        isActive={view === ChartView.VOL}\n                        fontSize=\"12px\"\n                        onClick={() => (view === ChartView.VOL ? setView(ChartView.TVL) : setView(ChartView.VOL))}\n                      >\n                        Volume\n                      </ToggleElementFree>\n                      <ToggleElementFree\n                        isActive={view === ChartView.TVL}\n                        fontSize=\"12px\"\n                        onClick={() => (view === ChartView.TVL ? setView(ChartView.PRICE) : setView(ChartView.TVL))}\n                      >\n                        TVL\n                      </ToggleElementFree>\n                      <ToggleElementFree\n                        isActive={view === ChartView.PRICE}\n                        fontSize=\"12px\"\n                        onClick={() => setView(ChartView.PRICE)}\n                      >\n                        Price\n                      </ToggleElementFree>\n                    </ToggleWrapper>\n                  </RowBetween>\n                  {view === ChartView.TVL ? (\n                    <LineChart\n                      data={formattedTvlData}\n                      color={backgroundColor}\n                      minHeight={340}\n                      value={latestValue}\n                      label={valueLabel}\n                      setValue={setLatestValue}\n                      setLabel={setValueLabel}\n                    />\n                  ) : view === ChartView.VOL ? (\n                    <BarChart\n                      data={formattedVolumeData}\n                      color={backgroundColor}\n                      minHeight={340}\n                      value={latestValue}\n                      label={valueLabel}\n                      setValue={setLatestValue}\n                      setLabel={setValueLabel}\n                    />\n                  ) : view === ChartView.PRICE ? (\n                    adjustedToCurrent ? (\n                      <CandleChart\n                        data={adjustedToCurrent}\n                        setValue={setLatestValue}\n                        setLabel={setValueLabel}\n                        color={backgroundColor}\n                      />\n                    ) : (\n                      <LocalLoader fill={false} />\n                    )\n                  ) : null}\n                </DarkGreyCard>\n              </ContentLayout>\n              <TYPE.main>Pools</TYPE.main>\n              <DarkGreyCard>\n                <PoolTable poolDatas={poolDatas} />\n              </DarkGreyCard>\n              <TYPE.main>Transactions</TYPE.main>\n              <DarkGreyCard>\n                {transactions ? (\n                  <TransactionTable transactions={transactions} color={backgroundColor} />\n                ) : (\n                  <LocalLoader fill={false} />\n                )}\n              </DarkGreyCard>\n            </AutoColumn>\n          )\n        ) : (\n          <Loader />\n        )}\n      </PageWrapper>\n    </Trace>\n  )\n}\n"
  },
  {
    "path": "src/pages/Token/TokensOverview.tsx",
    "content": "import React, { useMemo, useEffect } from 'react'\nimport { PageWrapper } from 'pages/styled'\nimport { AutoColumn } from 'components/Column'\nimport { TYPE, HideSmall } from 'theme'\nimport TokenTable from 'components/tokens/TokenTable'\nimport { useAllTokenData, useTokenDatas } from 'state/tokens/hooks'\nimport { notEmpty } from 'utils'\nimport { useSavedTokens } from 'state/user/hooks'\nimport { DarkGreyCard } from 'components/Card'\nimport TopTokenMovers from 'components/tokens/TopTokenMovers'\nimport { Trace } from '@uniswap/analytics'\n\nexport default function TokensOverview() {\n  useEffect(() => {\n    window.scrollTo(0, 0)\n  }, [])\n\n  const allTokens = useAllTokenData()\n\n  const formattedTokens = useMemo(() => {\n    return Object.values(allTokens)\n      .map((t) => t.data)\n      .filter(notEmpty)\n  }, [allTokens])\n\n  const [savedTokens] = useSavedTokens()\n  const watchListTokens = useTokenDatas(savedTokens)\n\n  return (\n    <Trace page=\"tokens-overview-page\" shouldLogImpression>\n      <PageWrapper>\n        <AutoColumn $gap=\"lg\">\n          <TYPE.main>Your Watchlist</TYPE.main>\n          {savedTokens.length > 0 ? (\n            <TokenTable tokenDatas={watchListTokens} />\n          ) : (\n            <DarkGreyCard>\n              <TYPE.main>Saved tokens will appear here</TYPE.main>\n            </DarkGreyCard>\n          )}\n          <HideSmall>\n            <DarkGreyCard style={{ paddingTop: '12px' }}>\n              <AutoColumn $gap=\"md\">\n                <TYPE.mediumHeader fontSize=\"16px\">Top Movers</TYPE.mediumHeader>\n                <TopTokenMovers />\n              </AutoColumn>\n            </DarkGreyCard>\n          </HideSmall>\n          <TYPE.main>All Tokens</TYPE.main>\n          <TokenTable tokenDatas={formattedTokens} />\n        </AutoColumn>\n      </PageWrapper>\n    </Trace>\n  )\n}\n"
  },
  {
    "path": "src/pages/Token/redirects.tsx",
    "content": "import React from 'react'\nimport TokenPage from './TokenPage'\nimport { isAddress } from 'ethers'\nimport { Navigate, useParams } from 'react-router-dom'\n\nexport function RedirectInvalidToken() {\n  const { address } = useParams<{ address?: string }>()\n\n  if (!address || !isAddress(address)) {\n    return <Navigate to={`/`} replace />\n  }\n  return <TokenPage />\n}\n"
  },
  {
    "path": "src/pages/Wallets/index.tsx",
    "content": "import React from 'react'\n\nexport default function Wallets() {\n  return <div></div>\n}\n"
  },
  {
    "path": "src/pages/styled.ts",
    "content": "import styled from 'styled-components'\n\nexport const PageWrapper = styled.div`\n  width: 90%;\n`\n\nexport const ThemedBackground = styled.div<{ $backgroundColor: string }>`\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  pointer-events: none;\n  max-width: 100vw !important;\n  height: 200vh;\n  mix-blend-mode: color;\n  background: ${({ $backgroundColor }) =>\n    `radial-gradient(50% 50% at 50% 50%, ${$backgroundColor} 0%, rgba(255, 255, 255, 0) 100%)`};\n  transform: translateY(-176vh);\n`\n\nexport const ThemedBackgroundGlobal = styled.div<{ $backgroundColor: string }>`\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  pointer-events: none;\n  max-width: 100vw !important;\n  height: 200vh;\n  mix-blend-mode: color;\n  background: ${({ $backgroundColor }) =>\n    `radial-gradient(50% 50% at 50% 50%, ${$backgroundColor} 0%, rgba(255, 255, 255, 0) 100%)`};\n  transform: translateY(-150vh);\n`\n"
  },
  {
    "path": "src/react-app-env.d.ts",
    "content": "/// <reference types=\"react-scripts\" />\n\ndeclare module 'jazzicon' {\n  export default function (diameter: number, seed: number): HTMLElement\n}\n\ndeclare module 'fortmatic'\n\ninterface Window {\n  ethereum?: {\n    // set by the Coinbase Wallet mobile dapp browser\n    isCoinbaseWallet?: true\n    // set by the Brave browser when using built-in wallet\n    isBraveWallet?: true\n    // set by the MetaMask browser extension (also set by Brave browser when using built-in wallet)\n    isMetaMask?: true\n    // set by the Rabby browser extension\n    isRabby?: true\n    // set by the Trust Wallet browser extension\n    isTrust?: true\n    // set by the Ledger Extension Web 3 browser extension\n    isLedgerConnect?: true\n    on?: (...args: any[]) => void\n    removeListener?: (...args: any[]) => void\n    autoRefreshOnNetworkChange?: boolean\n  }\n  web3?: any\n}\n\ndeclare module 'content-hash' {\n  declare function decode(x: string): string\n  declare function getCodec(x: string): string\n}\n\ndeclare module 'multihashes' {\n  declare function decode(buff: Uint8Array): { code: number; name: string; length: number; digest: Uint8Array }\n  declare function toB58String(hash: Uint8Array): string\n}\n"
  },
  {
    "path": "src/state/application/actions.ts",
    "content": "import { createAction } from '@reduxjs/toolkit'\nimport { TokenList } from '@uniswap/token-lists'\nimport { NetworkInfo } from 'constants/networks'\n\nexport type PopupContent = {\n  listUpdate: {\n    listUrl: string\n    oldList: TokenList\n    newList: TokenList\n    auto: boolean\n  }\n}\n\nexport enum ApplicationModal {\n  WALLET,\n  SETTINGS,\n  MENU,\n}\n\nexport const updateBlockNumber = createAction<{ chainId: number; blockNumber: number }>('application/updateBlockNumber')\nexport const setOpenModal = createAction<ApplicationModal | null>('application/setOpenModal')\nexport const addPopup = createAction<{ key?: string; removeAfterMs?: number | null; content: PopupContent }>(\n  'application/addPopup',\n)\nexport const removePopup = createAction<{ key: string }>('application/removePopup')\nexport const updateSubgraphStatus = createAction<{\n  available: boolean | null\n  syncedBlock: number | undefined\n  headBlock: number | undefined\n}>('application/updateSubgraphStatus')\nexport const updateActiveNetworkVersion = createAction<{ activeNetworkVersion: NetworkInfo }>(\n  'application/updateActiveNetworkVersion',\n)\n"
  },
  {
    "path": "src/state/application/hooks.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport {\n  arbitrumBlockClient,\n  arbitrumClient,\n  blockClient,\n  client,\n  optimismClient,\n  optimismBlockClient,\n  polygonBlockClient,\n  polygonClient,\n  celoClient,\n  celoBlockClient,\n  bscClient,\n  bscBlockClient,\n  avalancheClient,\n  avalancheBlockClient,\n  baseBlockClient,\n  baseClient,\n} from 'apollo/client'\nimport { NetworkInfo, SupportedNetwork } from 'constants/networks'\nimport { useCallback, useMemo } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { AppDispatch, AppState } from '../index'\nimport {\n  addPopup,\n  ApplicationModal,\n  PopupContent,\n  removePopup,\n  setOpenModal,\n  updateActiveNetworkVersion,\n  updateSubgraphStatus,\n} from './actions'\n\nexport function useBlockNumber(): number | undefined {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const chainId = activeNetwork.chainId\n\n  return useSelector((state: AppState) => state.application.blockNumber[chainId ?? -1])\n}\n\nexport function useModalOpen(modal: ApplicationModal): boolean {\n  const openModal = useSelector((state: AppState) => state.application.openModal)\n  return openModal === modal\n}\n\nexport function useToggleModal(modal: ApplicationModal): () => void {\n  const open = useModalOpen(modal)\n  const dispatch = useDispatch<AppDispatch>()\n  return useCallback(() => dispatch(setOpenModal(open ? null : modal)), [dispatch, modal, open])\n}\n\nexport function useOpenModal(modal: ApplicationModal): () => void {\n  const dispatch = useDispatch<AppDispatch>()\n  return useCallback(() => dispatch(setOpenModal(modal)), [dispatch, modal])\n}\n\nexport function useCloseModals(): () => void {\n  const dispatch = useDispatch<AppDispatch>()\n  return useCallback(() => dispatch(setOpenModal(null)), [dispatch])\n}\n\nexport function useWalletModalToggle(): () => void {\n  return useToggleModal(ApplicationModal.WALLET)\n}\n\nexport function useToggleSettingsMenu(): () => void {\n  return useToggleModal(ApplicationModal.SETTINGS)\n}\n\n// returns a function that allows adding a popup\nexport function useAddPopup(): (content: PopupContent, key?: string) => void {\n  const dispatch = useDispatch()\n\n  return useCallback(\n    (content: PopupContent, key?: string) => {\n      dispatch(addPopup({ content, key }))\n    },\n    [dispatch],\n  )\n}\n\n// returns a function that allows removing a popup via its key\nexport function useRemovePopup(): (key: string) => void {\n  const dispatch = useDispatch()\n  return useCallback(\n    (key: string) => {\n      dispatch(removePopup({ key }))\n    },\n    [dispatch],\n  )\n}\n\n// get the list of active popups\nexport function useActivePopups(): AppState['application']['popupList'] {\n  const list = useSelector((state: AppState) => state.application.popupList)\n  return useMemo(() => list.filter((item) => item.show), [list])\n}\n\n// returns a function that allows adding a popup\nexport function useSubgraphStatus(): [\n  {\n    available: boolean | null\n    syncedBlock: number | undefined\n    headBlock: number | undefined\n  },\n  (available: boolean | null, syncedBlock: number | undefined, headBlock: number | undefined) => void,\n] {\n  const dispatch = useDispatch()\n  const status = useSelector((state: AppState) => state.application.subgraphStatus)\n\n  const update = useCallback(\n    (available: boolean | null, syncedBlock: number | undefined, headBlock: number | undefined) => {\n      dispatch(updateSubgraphStatus({ available, syncedBlock, headBlock }))\n    },\n    [dispatch],\n  )\n  return [status, update]\n}\n\n// returns a function that allows adding a popup\nexport function useActiveNetworkVersion(): [NetworkInfo, (activeNetworkVersion: NetworkInfo) => void] {\n  const dispatch = useDispatch()\n  const activeNetwork = useSelector((state: AppState) => state.application.activeNetworkVersion)\n  const update = useCallback(\n    (activeNetworkVersion: NetworkInfo) => {\n      dispatch(updateActiveNetworkVersion({ activeNetworkVersion }))\n    },\n    [dispatch],\n  )\n  return [activeNetwork, update]\n}\n\n// get the apollo client related to the active network\nexport function useDataClient(): ApolloClient<NormalizedCacheObject> {\n  const [activeNetwork] = useActiveNetworkVersion()\n  switch (activeNetwork.id) {\n    case SupportedNetwork.ETHEREUM:\n      return client\n    case SupportedNetwork.ARBITRUM:\n      return arbitrumClient\n    case SupportedNetwork.OPTIMISM:\n      return optimismClient\n    case SupportedNetwork.POLYGON:\n      return polygonClient\n    case SupportedNetwork.CELO:\n      return celoClient\n    case SupportedNetwork.BNB:\n      return bscClient\n    case SupportedNetwork.AVALANCHE:\n      return avalancheClient\n    case SupportedNetwork.BASE:\n      return baseClient\n    default:\n      return client\n  }\n}\n\n// get the apollo client related to the active network for fetching blocks\nexport function useBlockClient(): ApolloClient<NormalizedCacheObject> {\n  const [activeNetwork] = useActiveNetworkVersion()\n  switch (activeNetwork.id) {\n    case SupportedNetwork.ETHEREUM:\n      return blockClient\n    case SupportedNetwork.ARBITRUM:\n      return arbitrumBlockClient\n    case SupportedNetwork.OPTIMISM:\n      return optimismBlockClient\n    case SupportedNetwork.POLYGON:\n      return polygonBlockClient\n    case SupportedNetwork.CELO:\n      return celoBlockClient\n    case SupportedNetwork.BNB:\n      return bscBlockClient\n    case SupportedNetwork.AVALANCHE:\n      return avalancheBlockClient\n    case SupportedNetwork.BASE:\n      return baseBlockClient\n    default:\n      return blockClient\n  }\n}\n\n// Get all required subgraph clients\nexport function useClients(): {\n  dataClient: ApolloClient<NormalizedCacheObject>\n  blockClient: ApolloClient<NormalizedCacheObject>\n} {\n  const dataClient = useDataClient()\n  const blockClient = useBlockClient()\n  return {\n    dataClient,\n    blockClient,\n  }\n}\n"
  },
  {
    "path": "src/state/application/reducer.ts",
    "content": "import { createReducer, nanoid } from '@reduxjs/toolkit'\nimport { NetworkInfo } from 'constants/networks'\nimport {\n  addPopup,\n  PopupContent,\n  removePopup,\n  updateBlockNumber,\n  updateSubgraphStatus,\n  ApplicationModal,\n  setOpenModal,\n  updateActiveNetworkVersion,\n} from './actions'\nimport { EthereumNetworkInfo } from '../../constants/networks'\n\ntype PopupList = Array<{ key: string; show: boolean; content: PopupContent; removeAfterMs: number | null }>\n\nexport interface ApplicationState {\n  readonly blockNumber: { readonly [chainId: number]: number }\n  readonly popupList: PopupList\n  readonly openModal: ApplicationModal | null\n  readonly subgraphStatus: {\n    available: boolean | null\n    syncedBlock: number | undefined\n    headBlock: number | undefined\n  }\n  readonly activeNetworkVersion: NetworkInfo\n}\n\nconst initialState: ApplicationState = {\n  blockNumber: {},\n  popupList: [],\n  openModal: null,\n  subgraphStatus: {\n    available: null,\n    syncedBlock: undefined,\n    headBlock: undefined,\n  },\n  activeNetworkVersion: EthereumNetworkInfo,\n}\n\nexport default createReducer(initialState, (builder) =>\n  builder\n    .addCase(updateBlockNumber, (state, action) => {\n      const { chainId, blockNumber } = action.payload\n      if (typeof state.blockNumber[chainId] !== 'number') {\n        state.blockNumber[chainId] = blockNumber\n      } else {\n        state.blockNumber[chainId] = Math.max(blockNumber, state.blockNumber[chainId])\n      }\n    })\n    .addCase(setOpenModal, (state, action) => {\n      state.openModal = action.payload\n    })\n    .addCase(addPopup, (state, { payload: { content, key, removeAfterMs = 15000 } }) => {\n      state.popupList = (key ? state.popupList.filter((popup) => popup.key !== key) : state.popupList).concat([\n        {\n          key: key || nanoid(),\n          show: true,\n          content,\n          removeAfterMs,\n        },\n      ])\n    })\n    .addCase(removePopup, (state, { payload: { key } }) => {\n      state.popupList.forEach((p) => {\n        if (p.key === key) {\n          p.show = false\n        }\n      })\n    })\n    .addCase(updateSubgraphStatus, (state, { payload: { available, syncedBlock, headBlock } }) => {\n      state.subgraphStatus = {\n        available,\n        syncedBlock,\n        headBlock,\n      }\n    })\n    .addCase(updateActiveNetworkVersion, (state, { payload: { activeNetworkVersion } }) => {\n      state.activeNetworkVersion = activeNetworkVersion\n    }),\n)\n"
  },
  {
    "path": "src/state/application/updater.ts",
    "content": "import { useEffect } from 'react'\nimport { useSubgraphStatus } from './hooks'\nimport { useFetchedSubgraphStatus } from '../../data/application'\n\nexport default function Updater(): null {\n  // subgraph status\n  const [status, updateStatus] = useSubgraphStatus()\n  const { available, syncedBlock: newSyncedBlock, headBlock } = useFetchedSubgraphStatus()\n\n  const syncedBlock = status.syncedBlock\n\n  useEffect(() => {\n    if (status.available === null && available !== null) {\n      updateStatus(available, syncedBlock, headBlock)\n    }\n    if (!status.syncedBlock || (status.syncedBlock !== newSyncedBlock && syncedBlock)) {\n      updateStatus(status.available, newSyncedBlock, headBlock)\n    }\n  }, [available, headBlock, newSyncedBlock, status.available, status.syncedBlock, syncedBlock, updateStatus])\n\n  return null\n}\n"
  },
  {
    "path": "src/state/global/actions.ts",
    "content": "import { createAction } from '@reduxjs/toolkit'\n\n// fired once when the app reloads but before the app renders\n// allows any updates to be applied to store data loaded from localStorage\nexport const updateVersion = createAction<void>('global/updateVersion')\n"
  },
  {
    "path": "src/state/index.ts",
    "content": "import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'\nimport { save, load } from 'redux-localstorage-simple'\n\nimport application from './application/reducer'\nimport { updateVersion } from './global/actions'\nimport user from './user/reducer'\nimport lists from './lists/reducer'\nimport protocol from './protocol/reducer'\nimport tokens from './tokens/reducer'\nimport pools from './pools/reducer'\n\nconst PERSISTED_KEYS: string[] = ['user', 'lists']\n\nconst store = configureStore({\n  reducer: {\n    application,\n    user,\n    lists,\n    protocol,\n    tokens,\n    pools,\n  },\n  middleware: [...getDefaultMiddleware({ thunk: false, immutableCheck: false }), save({ states: PERSISTED_KEYS })],\n  preloadedState: load({ states: PERSISTED_KEYS }),\n})\n\nstore.dispatch(updateVersion())\n\nexport default store\n\nexport type AppState = ReturnType<typeof store.getState>\nexport type AppDispatch = typeof store.dispatch\n"
  },
  {
    "path": "src/state/lists/actions.ts",
    "content": "import { ActionCreatorWithPayload, createAction } from '@reduxjs/toolkit'\nimport { TokenList, Version } from '@uniswap/token-lists'\n\nexport const fetchTokenList: Readonly<{\n  pending: ActionCreatorWithPayload<{ url: string; requestId: string }>\n  fulfilled: ActionCreatorWithPayload<{ url: string; tokenList: TokenList; requestId: string }>\n  rejected: ActionCreatorWithPayload<{ url: string; errorMessage: string; requestId: string }>\n}> = {\n  pending: createAction('lists/fetchTokenList/pending'),\n  fulfilled: createAction('lists/fetchTokenList/fulfilled'),\n  rejected: createAction('lists/fetchTokenList/rejected'),\n}\n// add and remove from list options\nexport const addList = createAction<string>('lists/addList')\nexport const removeList = createAction<string>('lists/removeList')\n\n// select which lists to search across from loaded lists\nexport const enableList = createAction<string>('lists/enableList')\nexport const disableList = createAction<string>('lists/disableList')\n\n// versioning\nexport const acceptListUpdate = createAction<string>('lists/acceptListUpdate')\nexport const rejectVersionUpdate = createAction<Version>('lists/rejectVersionUpdate')\n"
  },
  {
    "path": "src/state/lists/hooks.ts",
    "content": "import { UNSUPPORTED_LIST_URLS } from './../../constants/lists'\nimport DEFAULT_TOKEN_LIST from '@uniswap/default-token-list'\nimport { Tags, TokenList } from '@uniswap/token-lists'\nimport { useMemo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { AppState } from '../index'\nimport sortByListPriority from 'utils/listSort'\nimport UNSUPPORTED_TOKEN_LIST from '../../constants/tokenLists/uniswap-v2-unsupported.tokenlist.json'\n// import { useFetchListCallback } from 'hooks/useFetchListCallback'\nimport { WrappedTokenInfo } from './wrappedTokenInfo'\n\ntype TagDetails = Tags[keyof Tags]\nexport interface TagInfo extends TagDetails {\n  id: string\n}\n\nexport type TokenAddressMap = Readonly<{\n  [chainId: number]: Readonly<{\n    [tokenAddress: string]: { token: WrappedTokenInfo; list: TokenList }\n  }>\n}>\n\ntype Mutable<T> = {\n  -readonly [P in keyof T]: Mutable<T[P]>\n}\n\nconst listCache: WeakMap<TokenList, TokenAddressMap> | null =\n  typeof WeakMap !== 'undefined' ? new WeakMap<TokenList, TokenAddressMap>() : null\n\nfunction listToTokenMap(list: TokenList): TokenAddressMap {\n  const result = listCache?.get(list)\n  if (result) return result\n\n  const map = list.tokens.reduce<Mutable<TokenAddressMap>>((tokenMap, tokenInfo) => {\n    const token = new WrappedTokenInfo(tokenInfo, list)\n    if (tokenMap[token.chainId]?.[token.address] !== undefined) {\n      return tokenMap\n    }\n    if (!tokenMap[token.chainId]) tokenMap[token.chainId] = {}\n    tokenMap[token.chainId][token.address] = {\n      token,\n      list,\n    }\n    return tokenMap\n  }, {}) as TokenAddressMap\n  listCache?.set(list, map)\n  return map\n}\n\nconst TRANSFORMED_DEFAULT_TOKEN_LIST = listToTokenMap(DEFAULT_TOKEN_LIST)\n\nexport function useAllLists(): {\n  readonly [url: string]: {\n    readonly current: TokenList | null\n    readonly pendingUpdate: TokenList | null\n    readonly loadingRequestId: string | null\n    readonly error: string | null\n  }\n} {\n  return useSelector<AppState, AppState['lists']['byUrl']>((state) => state.lists.byUrl)\n}\n\n/**\n * Combine the tokens in map2 with the tokens on map1, where tokens on map1 take precedence\n * @param map1 the base token map\n * @param map2 the map of additioanl tokens to add to the base map\n */\nexport function combineMaps(map1: TokenAddressMap, map2: TokenAddressMap): TokenAddressMap {\n  const chainIds = Object.keys(\n    Object.keys(map1)\n      .concat(Object.keys(map2))\n      .reduce<{ [chainId: string]: true }>((memo, value) => {\n        memo[value] = true\n        return memo\n      }, {}),\n  ).map((id) => parseInt(id))\n\n  return chainIds.reduce<Mutable<TokenAddressMap>>((memo, chainId) => {\n    memo[chainId] = {\n      ...map2[chainId],\n      // map1 takes precedence\n      ...map1[chainId],\n    }\n    return memo\n  }, {}) as TokenAddressMap\n}\n\n// merge tokens contained within lists from urls\nfunction useCombinedTokenMapFromUrls(urls: string[] | undefined): TokenAddressMap {\n  const lists = useAllLists()\n  return useMemo(() => {\n    if (!urls) return {}\n    return (\n      urls\n        .slice()\n        // sort by priority so top priority goes last\n        .sort(sortByListPriority)\n        .reduce((allTokens, currentUrl) => {\n          const current = lists[currentUrl]?.current\n          if (!current) return allTokens\n          try {\n            return combineMaps(allTokens, listToTokenMap(current))\n          } catch (error) {\n            console.error('Could not show token list due to error', error)\n            return allTokens\n          }\n        }, {})\n    )\n  }, [lists, urls])\n}\n\n// filter out unsupported lists\nexport function useActiveListUrls(): string[] | undefined {\n  return useSelector<AppState, AppState['lists']['activeListUrls']>((state) => state.lists.activeListUrls)?.filter(\n    (url) => !UNSUPPORTED_LIST_URLS.includes(url),\n  )\n}\n\nexport function useInactiveListUrls(): string[] {\n  const lists = useAllLists()\n  const allActiveListUrls = useActiveListUrls()\n  return Object.keys(lists).filter((url) => !allActiveListUrls?.includes(url) && !UNSUPPORTED_LIST_URLS.includes(url))\n}\n\n// get all the tokens from active lists, combine with local default tokens\nexport function useCombinedActiveList(): TokenAddressMap {\n  const activeListUrls = useActiveListUrls()\n  const activeTokens = useCombinedTokenMapFromUrls(activeListUrls)\n  return combineMaps(activeTokens, TRANSFORMED_DEFAULT_TOKEN_LIST)\n}\n\n// all tokens from inactive lists\nexport function useCombinedInactiveList(): TokenAddressMap {\n  const allInactiveListUrls: string[] = useInactiveListUrls()\n  return useCombinedTokenMapFromUrls(allInactiveListUrls)\n}\n\n// list of tokens not supported on interface, used to show warnings and prevent swaps and adds\nexport function useUnsupportedTokenList(): TokenAddressMap {\n  // get hard coded unsupported tokens\n  const localUnsupportedListMap = listToTokenMap(UNSUPPORTED_TOKEN_LIST)\n\n  // get any loaded unsupported tokens\n  const loadedUnsupportedListMap = useCombinedTokenMapFromUrls(UNSUPPORTED_LIST_URLS)\n\n  // format into one token address map\n  return combineMaps(localUnsupportedListMap, loadedUnsupportedListMap)\n}\n\nexport function useIsListActive(url: string): boolean {\n  const activeListUrls = useActiveListUrls()\n  return Boolean(activeListUrls?.includes(url))\n}\n"
  },
  {
    "path": "src/state/lists/reducer.test.ts",
    "content": "import { DEFAULT_ACTIVE_LIST_URLS } from './../../constants/lists'\nimport { createStore, Store } from 'redux'\nimport { DEFAULT_LIST_OF_LISTS } from '../../constants/lists'\nimport { updateVersion } from '../global/actions'\nimport { fetchTokenList, acceptListUpdate, addList, removeList, enableList } from './actions'\nimport reducer, { ListsState } from './reducer'\n\nconst STUB_TOKEN_LIST = {\n  name: '',\n  timestamp: '',\n  version: { major: 1, minor: 1, patch: 1 },\n  tokens: [],\n}\n\nconst PATCHED_STUB_LIST = {\n  ...STUB_TOKEN_LIST,\n  version: { ...STUB_TOKEN_LIST.version, patch: STUB_TOKEN_LIST.version.patch + 1 },\n}\nconst MINOR_UPDATED_STUB_LIST = {\n  ...STUB_TOKEN_LIST,\n  version: { ...STUB_TOKEN_LIST.version, minor: STUB_TOKEN_LIST.version.minor + 1 },\n}\nconst MAJOR_UPDATED_STUB_LIST = {\n  ...STUB_TOKEN_LIST,\n  version: { ...STUB_TOKEN_LIST.version, major: STUB_TOKEN_LIST.version.major + 1 },\n}\n\ndescribe('list reducer', () => {\n  let store: Store<ListsState>\n\n  beforeEach(() => {\n    store = createStore(reducer, {\n      byUrl: {},\n      activeListUrls: undefined,\n    })\n  })\n\n  describe('fetchTokenList', () => {\n    describe('pending', () => {\n      it('sets pending', () => {\n        store.dispatch(fetchTokenList.pending({ requestId: 'request-id', url: 'fake-url' }))\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              loadingRequestId: 'request-id',\n              current: null,\n              pendingUpdate: null,\n            },\n          },\n          selectedListUrl: undefined,\n        })\n      })\n\n      it('does not clear current list', () => {\n        store = createStore(reducer, {\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              pendingUpdate: null,\n              loadingRequestId: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n\n        store.dispatch(fetchTokenList.pending({ requestId: 'request-id', url: 'fake-url' }))\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: 'request-id',\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n    })\n\n    describe('fulfilled', () => {\n      it('saves the list', () => {\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: STUB_TOKEN_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n\n      it('does not save the list in pending if current is same', () => {\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: STUB_TOKEN_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: STUB_TOKEN_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n\n      it('does not save to current if list is newer patch version', () => {\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: STUB_TOKEN_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: PATCHED_STUB_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: PATCHED_STUB_LIST,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n      it('does not save to current if list is newer minor version', () => {\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: STUB_TOKEN_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: MINOR_UPDATED_STUB_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: MINOR_UPDATED_STUB_LIST,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n      it('does not save to pending if list is newer major version', () => {\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: STUB_TOKEN_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n\n        store.dispatch(\n          fetchTokenList.fulfilled({ tokenList: MAJOR_UPDATED_STUB_LIST, requestId: 'request-id', url: 'fake-url' }),\n        )\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: MAJOR_UPDATED_STUB_LIST,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n    })\n\n    describe('rejected', () => {\n      it('no-op if not loading', () => {\n        store.dispatch(fetchTokenList.rejected({ requestId: 'request-id', errorMessage: 'abcd', url: 'fake-url' }))\n        expect(store.getState()).toEqual({\n          byUrl: {},\n          activeListUrls: undefined,\n        })\n      })\n\n      it('sets the error if loading', () => {\n        store = createStore(reducer, {\n          byUrl: {\n            'fake-url': {\n              error: null,\n              current: null,\n              loadingRequestId: 'request-id',\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n        store.dispatch(fetchTokenList.rejected({ requestId: 'request-id', errorMessage: 'abcd', url: 'fake-url' }))\n        expect(store.getState()).toEqual({\n          byUrl: {\n            'fake-url': {\n              error: 'abcd',\n              current: null,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n      })\n    })\n  })\n\n  describe('addList', () => {\n    it('adds the list key to byUrl', () => {\n      store.dispatch(addList('list-id'))\n      expect(store.getState()).toEqual({\n        byUrl: {\n          'list-id': {\n            error: null,\n            current: null,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: undefined,\n      })\n    })\n    it('no op for existing list', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: undefined,\n      })\n      store.dispatch(addList('fake-url'))\n      expect(store.getState()).toEqual({\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: undefined,\n      })\n    })\n  })\n\n  describe('acceptListUpdate', () => {\n    it('swaps pending update into current', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n        },\n        activeListUrls: undefined,\n      })\n      store.dispatch(acceptListUpdate('fake-url'))\n      expect(store.getState()).toEqual({\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: PATCHED_STUB_LIST,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: undefined,\n      })\n    })\n  })\n\n  describe('removeList', () => {\n    it('deletes the list key', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n        },\n        activeListUrls: undefined,\n      })\n      store.dispatch(removeList('fake-url'))\n      expect(store.getState()).toEqual({\n        byUrl: {},\n        activeListUrls: undefined,\n      })\n    })\n    it('Removes from active lists if active list is removed', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n        },\n        activeListUrls: ['fake-url'],\n      })\n      store.dispatch(removeList('fake-url'))\n      expect(store.getState()).toEqual({\n        byUrl: {},\n        activeListUrls: [],\n      })\n    })\n  })\n\n  describe('enableList', () => {\n    it('enables a list url', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n        },\n        activeListUrls: undefined,\n      })\n      store.dispatch(enableList('fake-url'))\n      expect(store.getState()).toEqual({\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n        },\n        activeListUrls: ['fake-url'],\n      })\n    })\n    it('adds to url keys if not present already on enable', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n        },\n        activeListUrls: undefined,\n      })\n      store.dispatch(enableList('fake-url-invalid'))\n      expect(store.getState()).toEqual({\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: STUB_TOKEN_LIST,\n            loadingRequestId: null,\n            pendingUpdate: PATCHED_STUB_LIST,\n          },\n          'fake-url-invalid': {\n            error: null,\n            current: null,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: ['fake-url-invalid'],\n      })\n    })\n    it('enable works if list already added', () => {\n      store = createStore(reducer, {\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: null,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: undefined,\n      })\n      store.dispatch(enableList('fake-url'))\n      expect(store.getState()).toEqual({\n        byUrl: {\n          'fake-url': {\n            error: null,\n            current: null,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          },\n        },\n        activeListUrls: ['fake-url'],\n      })\n    })\n  })\n\n  describe('updateVersion', () => {\n    describe('never initialized', () => {\n      beforeEach(() => {\n        store = createStore(reducer, {\n          byUrl: {\n            'https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n            'https://unpkg.com/@uniswap/default-token-list@latest': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n        })\n        store.dispatch(updateVersion())\n      })\n\n      it('clears the current lists', () => {\n        expect(\n          store.getState().byUrl['https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json'],\n        ).toBeUndefined()\n        expect(store.getState().byUrl['https://unpkg.com/@uniswap/default-token-list@latest']).toBeUndefined()\n      })\n\n      it('puts in all the new lists', () => {\n        expect(Object.keys(store.getState().byUrl)).toEqual(DEFAULT_LIST_OF_LISTS)\n      })\n      it('all lists are empty', () => {\n        const s = store.getState()\n        Object.keys(s.byUrl).forEach((url) => {\n          expect(s.byUrl[url]).toEqual({\n            error: null,\n            current: null,\n            loadingRequestId: null,\n            pendingUpdate: null,\n          })\n        })\n      })\n      it('sets initialized lists', () => {\n        expect(store.getState().lastInitializedDefaultListOfLists).toEqual(DEFAULT_LIST_OF_LISTS)\n      })\n      it('sets selected list', () => {\n        expect(store.getState().activeListUrls).toEqual(DEFAULT_ACTIVE_LIST_URLS)\n      })\n    })\n    describe('initialized with a different set of lists', () => {\n      beforeEach(() => {\n        store = createStore(reducer, {\n          byUrl: {\n            'https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n            'https://unpkg.com/@uniswap/default-token-list@latest': {\n              error: null,\n              current: STUB_TOKEN_LIST,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            },\n          },\n          activeListUrls: undefined,\n          lastInitializedDefaultListOfLists: ['https://unpkg.com/@uniswap/default-token-list@latest'],\n        })\n        store.dispatch(updateVersion())\n      })\n\n      it('does not remove lists not in last initialized list of lists', () => {\n        expect(\n          store.getState().byUrl['https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json'],\n        ).toEqual({\n          error: null,\n          current: STUB_TOKEN_LIST,\n          loadingRequestId: null,\n          pendingUpdate: null,\n        })\n      })\n      it('removes lists in the last initialized list of lists', () => {\n        expect(store.getState().byUrl['https://unpkg.com/@uniswap/default-token-list@latest']).toBeUndefined()\n      })\n\n      it('each of those initialized lists is empty', () => {\n        const byUrl = store.getState().byUrl\n        // note we don't expect the uniswap default list to be prepopulated\n        // this is ok.\n        Object.keys(byUrl).forEach((url) => {\n          if (url !== 'https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json') {\n            expect(byUrl[url]).toEqual({\n              error: null,\n              current: null,\n              loadingRequestId: null,\n              pendingUpdate: null,\n            })\n          }\n        })\n      })\n\n      it('sets initialized lists', () => {\n        expect(store.getState().lastInitializedDefaultListOfLists).toEqual(DEFAULT_LIST_OF_LISTS)\n      })\n      it('sets default list to selected list', () => {\n        expect(store.getState().activeListUrls).toEqual(DEFAULT_ACTIVE_LIST_URLS)\n      })\n    })\n  })\n})\n"
  },
  {
    "path": "src/state/lists/reducer.ts",
    "content": "import { DEFAULT_ACTIVE_LIST_URLS, UNSUPPORTED_LIST_URLS } from './../../constants/lists'\nimport { createReducer } from '@reduxjs/toolkit'\nimport { getVersionUpgrade, VersionUpgrade } from '@uniswap/token-lists'\nimport { TokenList } from '@uniswap/token-lists/dist/types'\nimport { DEFAULT_LIST_OF_LISTS } from '../../constants/lists'\nimport { updateVersion } from '../global/actions'\nimport { acceptListUpdate, addList, fetchTokenList, removeList, enableList, disableList } from './actions'\n\nexport interface ListsState {\n  readonly byUrl: {\n    readonly [url: string]: {\n      readonly current: TokenList | null\n      readonly pendingUpdate: TokenList | null\n      readonly loadingRequestId: string | null\n      readonly error: string | null\n    }\n  }\n  // this contains the default list of lists from the last time the updateVersion was called, i.e. the app was reloaded\n  readonly lastInitializedDefaultListOfLists?: string[]\n\n  // currently active lists\n  readonly activeListUrls: string[] | undefined\n}\n\ntype ListState = ListsState['byUrl'][string]\n\nconst NEW_LIST_STATE: ListState = {\n  error: null,\n  current: null,\n  loadingRequestId: null,\n  pendingUpdate: null,\n}\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] extends ReadonlyArray<infer U> ? U[] : T[P] }\n\nconst initialState: ListsState = {\n  lastInitializedDefaultListOfLists: DEFAULT_LIST_OF_LISTS,\n  byUrl: {\n    ...DEFAULT_LIST_OF_LISTS.concat(UNSUPPORTED_LIST_URLS).reduce<Mutable<ListsState['byUrl']>>((memo, listUrl) => {\n      memo[listUrl] = NEW_LIST_STATE\n      return memo\n    }, {}),\n  },\n  activeListUrls: DEFAULT_ACTIVE_LIST_URLS,\n}\n\nexport default createReducer(initialState, (builder) =>\n  builder\n    .addCase(fetchTokenList.pending, (state, { payload: { requestId, url } }) => {\n      const current = state.byUrl[url]?.current ?? null\n      const pendingUpdate = state.byUrl[url]?.pendingUpdate ?? null\n      state.byUrl[url] = {\n        current,\n        pendingUpdate,\n        loadingRequestId: requestId,\n        error: null,\n      }\n    })\n    .addCase(fetchTokenList.fulfilled, (state, { payload: { requestId, tokenList, url } }) => {\n      const current = state.byUrl[url]?.current\n      const loadingRequestId = state.byUrl[url]?.loadingRequestId\n\n      // no-op if update does nothing\n      if (current) {\n        const upgradeType = getVersionUpgrade(current.version, tokenList.version)\n\n        if (upgradeType === VersionUpgrade.NONE) return\n        if (loadingRequestId === null || loadingRequestId === requestId) {\n          state.byUrl[url] = {\n            ...state.byUrl[url],\n            loadingRequestId: null,\n            error: null,\n            current: current,\n            pendingUpdate: tokenList,\n          }\n        }\n      } else {\n        // activate if on default active\n        if (DEFAULT_ACTIVE_LIST_URLS.includes(url)) {\n          state.activeListUrls?.push(url)\n        }\n\n        state.byUrl[url] = {\n          ...state.byUrl[url],\n          loadingRequestId: null,\n          error: null,\n          current: tokenList,\n          pendingUpdate: null,\n        }\n      }\n    })\n    .addCase(fetchTokenList.rejected, (state, { payload: { url, requestId, errorMessage } }) => {\n      if (state.byUrl[url]?.loadingRequestId !== requestId) {\n        // no-op since it's not the latest request\n        return\n      }\n\n      state.byUrl[url] = {\n        ...state.byUrl[url],\n        loadingRequestId: null,\n        error: errorMessage,\n        current: null,\n        pendingUpdate: null,\n      }\n    })\n    .addCase(addList, (state, { payload: url }) => {\n      if (!state.byUrl[url]) {\n        state.byUrl[url] = NEW_LIST_STATE\n      }\n    })\n    .addCase(removeList, (state, { payload: url }) => {\n      if (state.byUrl[url]) {\n        delete state.byUrl[url]\n      }\n      // remove list from active urls if needed\n      if (state.activeListUrls && state.activeListUrls.includes(url)) {\n        state.activeListUrls = state.activeListUrls.filter((u) => u !== url)\n      }\n    })\n    .addCase(enableList, (state, { payload: url }) => {\n      if (!state.byUrl[url]) {\n        state.byUrl[url] = NEW_LIST_STATE\n      }\n\n      if (state.activeListUrls && !state.activeListUrls.includes(url)) {\n        state.activeListUrls.push(url)\n      }\n\n      if (!state.activeListUrls) {\n        state.activeListUrls = [url]\n      }\n    })\n    .addCase(disableList, (state, { payload: url }) => {\n      if (state.activeListUrls && state.activeListUrls.includes(url)) {\n        state.activeListUrls = state.activeListUrls.filter((u) => u !== url)\n      }\n    })\n    .addCase(acceptListUpdate, (state, { payload: url }) => {\n      if (!state.byUrl[url]?.pendingUpdate) {\n        throw new Error('accept list update called without pending update')\n      }\n      state.byUrl[url] = {\n        ...state.byUrl[url],\n        pendingUpdate: null,\n        current: state.byUrl[url].pendingUpdate,\n      }\n    })\n    .addCase(updateVersion, (state) => {\n      // state loaded from localStorage, but new lists have never been initialized\n      if (!state.lastInitializedDefaultListOfLists) {\n        state.byUrl = initialState.byUrl\n        state.activeListUrls = initialState.activeListUrls\n      } else if (state.lastInitializedDefaultListOfLists) {\n        const lastInitializedSet = state.lastInitializedDefaultListOfLists.reduce<Set<string>>(\n          (s, l) => s.add(l),\n          new Set(),\n        )\n        const newListOfListsSet = DEFAULT_LIST_OF_LISTS.reduce<Set<string>>((s, l) => s.add(l), new Set())\n\n        DEFAULT_LIST_OF_LISTS.forEach((listUrl) => {\n          if (!lastInitializedSet.has(listUrl)) {\n            state.byUrl[listUrl] = NEW_LIST_STATE\n          }\n        })\n\n        state.lastInitializedDefaultListOfLists.forEach((listUrl) => {\n          if (!newListOfListsSet.has(listUrl)) {\n            delete state.byUrl[listUrl]\n          }\n        })\n      }\n\n      state.lastInitializedDefaultListOfLists = DEFAULT_LIST_OF_LISTS\n\n      // if no active lists, activate defaults\n      if (!state.activeListUrls) {\n        state.activeListUrls = DEFAULT_ACTIVE_LIST_URLS\n\n        // for each list on default list, initialize if needed\n        DEFAULT_ACTIVE_LIST_URLS.map((listUrl: string) => {\n          if (!state.byUrl[listUrl]) {\n            state.byUrl[listUrl] = NEW_LIST_STATE\n          }\n          return true\n        })\n      }\n    }),\n)\n"
  },
  {
    "path": "src/state/lists/updater.ts",
    "content": "import { getVersionUpgrade, minVersionBump, VersionUpgrade } from '@uniswap/token-lists'\nimport { OPTIMISM_LIST, UNSUPPORTED_LIST_URLS } from 'constants/lists'\nimport { useCallback, useEffect } from 'react'\nimport { useAllLists } from 'state/lists/hooks'\nimport { useFetchListCallback } from '../../hooks/useFetchListCallback'\nimport useInterval from '../../hooks/useInterval'\nimport useIsWindowVisible from '../../hooks/useIsWindowVisible'\nimport { acceptListUpdate, enableList } from './actions'\nimport { useActiveListUrls } from './hooks'\nimport { useAppDispatch } from 'hooks/useAppDispatch'\n\nexport default function Updater(): null {\n  const dispatch = useAppDispatch()\n  const isWindowVisible = useIsWindowVisible()\n\n  // get all loaded lists, and the active urls\n  const lists = useAllLists()\n  const activeListUrls = useActiveListUrls()\n\n  const fetchList = useFetchListCallback()\n  const fetchAllListsCallback = useCallback(() => {\n    if (!isWindowVisible) return\n    Object.keys(lists).forEach((url) =>\n      fetchList(url).catch((error) => console.debug('interval list fetching error', error)),\n    )\n  }, [fetchList, isWindowVisible, lists])\n\n  dispatch(enableList(OPTIMISM_LIST))\n\n  // fetch all lists every 10 minutes, but only after we initialize library\n  useInterval(fetchAllListsCallback, 1000 * 60 * 10)\n\n  // whenever a list is not loaded and not loading, try again to load it\n  useEffect(() => {\n    Object.keys(lists).forEach((listUrl) => {\n      const list = lists[listUrl]\n      if (!list.current && !list.loadingRequestId && !list.error) {\n        fetchList(listUrl).catch((error) => console.debug('list added fetching error', error))\n      }\n    })\n  }, [dispatch, fetchList, lists])\n\n  // if any lists from unsupported lists are loaded, check them too (in case new updates since last visit)\n  useEffect(() => {\n    UNSUPPORTED_LIST_URLS.forEach((listUrl) => {\n      const list = lists[listUrl]\n      if (!list || (!list.current && !list.loadingRequestId && !list.error)) {\n        fetchList(listUrl).catch((error) => console.debug('list added fetching error', error))\n      }\n    })\n  }, [dispatch, fetchList, lists])\n\n  // automatically update lists if versions are minor/patch\n  useEffect(() => {\n    Object.keys(lists).forEach((listUrl) => {\n      const list = lists[listUrl]\n      if (list.current && list.pendingUpdate) {\n        const bump = getVersionUpgrade(list.current.version, list.pendingUpdate.version)\n        switch (bump) {\n          case VersionUpgrade.NONE:\n            throw new Error('unexpected no version bump')\n          case VersionUpgrade.PATCH:\n          case VersionUpgrade.MINOR:\n            const min = minVersionBump(list.current.tokens, list.pendingUpdate.tokens)\n            // automatically update minor/patch as long as bump matches the min update\n            if (bump >= min) {\n              dispatch(acceptListUpdate(listUrl))\n            } else {\n              console.error(\n                `List at url ${listUrl} could not automatically update because the version bump was only PATCH/MINOR while the update had breaking changes and should have been MAJOR`,\n              )\n            }\n            break\n\n          // update any active or inactive lists\n          case VersionUpgrade.MAJOR:\n            dispatch(acceptListUpdate(listUrl))\n        }\n      }\n    })\n  }, [dispatch, lists, activeListUrls])\n\n  return null\n}\n"
  },
  {
    "path": "src/state/lists/wrappedTokenInfo.ts",
    "content": "import { Currency, Token } from '@uniswap/sdk-core'\nimport { Tags, TokenInfo, TokenList } from '@uniswap/token-lists'\n\nimport { isAddress } from '../../utils'\n\ntype TagDetails = Tags[keyof Tags]\ninterface TagInfo extends TagDetails {\n  id: string\n}\n/**\n * Token instances created from token info on a token list.\n */\nexport class WrappedTokenInfo implements Token {\n  public readonly isNative = false\n  public readonly isToken = true\n  public readonly list: TokenList\n\n  public readonly tokenInfo: TokenInfo\n\n  constructor(tokenInfo: TokenInfo, list: TokenList) {\n    this.tokenInfo = tokenInfo\n    this.list = list\n  }\n\n  private _checksummedAddress: string | null = null\n\n  public get address(): string {\n    if (this._checksummedAddress) return this._checksummedAddress\n    const checksummedAddress = isAddress(this.tokenInfo.address)\n    if (!checksummedAddress) throw new Error(`Invalid token address: ${this.tokenInfo.address}`)\n    return (this._checksummedAddress = checksummedAddress)\n  }\n\n  public get chainId(): number {\n    return this.tokenInfo.chainId\n  }\n\n  public get decimals(): number {\n    return this.tokenInfo.decimals\n  }\n\n  public get name(): string {\n    return this.tokenInfo.name\n  }\n\n  public get symbol(): string {\n    return this.tokenInfo.symbol\n  }\n\n  public get logoURI(): string | undefined {\n    return this.tokenInfo.logoURI\n  }\n\n  private _tags: TagInfo[] | null = null\n  public get tags(): TagInfo[] {\n    if (this._tags !== null) return this._tags\n    if (!this.tokenInfo.tags) return (this._tags = [])\n    const listTags = this.list.tags\n    if (!listTags) return (this._tags = [])\n\n    return (this._tags = this.tokenInfo.tags.map((tagId) => {\n      return {\n        ...listTags[tagId],\n        id: tagId,\n      }\n    }))\n  }\n\n  equals(other: Currency): boolean {\n    return other.chainId === this.chainId && other.isToken && other.address.toLowerCase() === this.address.toLowerCase()\n  }\n\n  sortsBefore(other: Token): boolean {\n    if (this.equals(other)) throw new Error('Addresses should not be equal')\n    return this.address.toLowerCase() < other.address.toLowerCase()\n  }\n\n  public get wrapped(): Token {\n    return this\n  }\n}\n"
  },
  {
    "path": "src/state/pools/actions.ts",
    "content": "import { TickProcessed } from './../../data/pools/tickData'\nimport { createAction } from '@reduxjs/toolkit'\nimport { PoolData, PoolChartEntry } from './reducer'\nimport { Transaction } from 'types'\nimport { SupportedNetwork } from 'constants/networks'\n\n// protocol wide info\nexport const updatePoolData = createAction<{ pools: PoolData[]; networkId: SupportedNetwork }>('pools/updatePoolData')\n\n// add pool address to byAddress\nexport const addPoolKeys = createAction<{ poolAddresses: string[]; networkId: SupportedNetwork }>('pool/addPoolKeys')\n\nexport const updatePoolChartData = createAction<{\n  poolAddress: string\n  chartData: PoolChartEntry[]\n  networkId: SupportedNetwork\n}>('pool/updatePoolChartData')\n\nexport const updatePoolTransactions = createAction<{\n  poolAddress: string\n  transactions: Transaction[]\n  networkId: SupportedNetwork\n}>('pool/updatePoolTransactions')\n\nexport const updateTickData = createAction<{\n  poolAddress: string\n  tickData:\n    | {\n        ticksProcessed: TickProcessed[]\n        feeTier: string\n        tickSpacing: number\n        activeTickIdx: number\n      }\n    | undefined\n  networkId: SupportedNetwork\n}>('pool/updateTickData')\n"
  },
  {
    "path": "src/state/pools/hooks.ts",
    "content": "import { addPoolKeys, updatePoolChartData, updatePoolTransactions, updateTickData } from 'state/pools/actions'\nimport { AppState, AppDispatch } from './../index'\nimport { useCallback, useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { PoolData, PoolChartEntry } from './reducer'\nimport { updatePoolData } from './actions'\nimport { notEmpty } from 'utils'\nimport { fetchPoolChartData } from 'data/pools/chartData'\nimport { Transaction } from 'types'\nimport { fetchPoolTransactions } from 'data/pools/transactions'\nimport { PoolTickData } from 'data/pools/tickData'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\n\nexport function useAllPoolData(): {\n  [address: string]: { data: PoolData | undefined; lastUpdated: number | undefined }\n} {\n  const [network] = useActiveNetworkVersion()\n  return useSelector((state: AppState) => state.pools.byAddress[network.id] ?? {})\n}\n\nexport function useUpdatePoolData(): (pools: PoolData[]) => void {\n  const dispatch = useDispatch<AppDispatch>()\n  const [network] = useActiveNetworkVersion()\n  return useCallback(\n    (pools: PoolData[]) => dispatch(updatePoolData({ pools, networkId: network.id })),\n    [dispatch, network.id],\n  )\n}\n\nexport function useAddPoolKeys(): (addresses: string[]) => void {\n  const dispatch = useDispatch<AppDispatch>()\n  const [network] = useActiveNetworkVersion()\n  return useCallback(\n    (poolAddresses: string[]) => dispatch(addPoolKeys({ poolAddresses, networkId: network.id })),\n    [dispatch, network.id],\n  )\n}\n\nexport function usePoolDatas(poolAddresses: string[]): PoolData[] {\n  const allPoolData = useAllPoolData()\n  const addPoolKeys = useAddPoolKeys()\n\n  const untrackedAddresses = poolAddresses.reduce((accum: string[], address) => {\n    if (!Object.keys(allPoolData).includes(address)) {\n      accum.push(address)\n    }\n    return accum\n  }, [])\n\n  useEffect(() => {\n    if (untrackedAddresses) {\n      addPoolKeys(untrackedAddresses)\n    }\n    return\n  }, [addPoolKeys, untrackedAddresses])\n\n  // filter for pools with data\n  const poolsWithData = poolAddresses\n    .map((address) => {\n      const poolData = allPoolData[address]?.data\n      return poolData ?? undefined\n    })\n    .filter(notEmpty)\n\n  return poolsWithData\n}\n\n/**\n * Get top pools addresses that token is included in\n * If not loaded, fetch and store\n * @param address\n */\nexport function usePoolChartData(address: string): PoolChartEntry[] | undefined {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  const pool = useSelector((state: AppState) => state.pools.byAddress[activeNetwork.id]?.[address])\n  const chartData = pool?.chartData\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  useEffect(() => {\n    async function fetch() {\n      const { error, data } = await fetchPoolChartData(address, dataClient)\n      if (!error && data) {\n        dispatch(updatePoolChartData({ poolAddress: address, chartData: data, networkId: activeNetwork.id }))\n      }\n      if (error) {\n        setError(error)\n      }\n    }\n    if (!chartData && !error) {\n      fetch()\n    }\n  }, [address, dispatch, error, chartData, dataClient, activeNetwork.id])\n\n  // return data\n  return chartData\n}\n\n/**\n * Get all transactions on pool\n * @param address\n */\nexport function usePoolTransactions(address: string): Transaction[] | undefined {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const pool = useSelector((state: AppState) => state.pools.byAddress[activeNetwork.id]?.[address])\n  const transactions = pool?.transactions\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  useEffect(() => {\n    async function fetch() {\n      const { error, data } = await fetchPoolTransactions(address, dataClient)\n      if (error) {\n        setError(true)\n      } else if (data) {\n        dispatch(updatePoolTransactions({ poolAddress: address, transactions: data, networkId: activeNetwork.id }))\n      }\n    }\n    if (!transactions && !error) {\n      fetch()\n    }\n  }, [address, dispatch, error, transactions, dataClient, activeNetwork.id])\n\n  // return data\n  return transactions\n}\n\nexport function usePoolTickData(\n  address: string,\n): [PoolTickData | undefined, (poolAddress: string, tickData: PoolTickData) => void] {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const pool = useSelector((state: AppState) => state.pools.byAddress[activeNetwork.id]?.[address])\n  const tickData = pool.tickData\n\n  const setPoolTickData = useCallback(\n    (address: string, tickData: PoolTickData) =>\n      dispatch(updateTickData({ poolAddress: address, tickData, networkId: activeNetwork.id })),\n    [activeNetwork.id, dispatch],\n  )\n\n  return [tickData, setPoolTickData]\n}\n"
  },
  {
    "path": "src/state/pools/reducer.ts",
    "content": "import { currentTimestamp } from './../../utils/index'\nimport { updatePoolData, addPoolKeys, updatePoolChartData, updatePoolTransactions, updateTickData } from './actions'\nimport { createReducer } from '@reduxjs/toolkit'\nimport { SerializedToken } from 'state/user/actions'\nimport { Transaction } from 'types'\nimport { PoolTickData } from 'data/pools/tickData'\nimport { SupportedNetwork } from 'constants/networks'\n\nexport interface Pool {\n  address: string\n  token0: SerializedToken\n  token1: SerializedToken\n}\n\nexport interface PoolData {\n  // basic token info\n  address: string\n  feeTier: number\n\n  token0: {\n    name: string\n    symbol: string\n    address: string\n    decimals: number\n    derivedETH: number\n  }\n\n  token1: {\n    name: string\n    symbol: string\n    address: string\n    decimals: number\n    derivedETH: number\n  }\n\n  // for tick math\n  liquidity: number\n  sqrtPrice: number\n  tick: number\n\n  // volume\n  volumeUSD: number\n  volumeUSDChange: number\n  volumeUSDWeek: number\n\n  // liquidity\n  tvlUSD: number\n  tvlUSDChange: number\n\n  // prices\n  token0Price: number\n  token1Price: number\n\n  // token amounts\n  tvlToken0: number\n  tvlToken1: number\n}\n\nexport type PoolChartEntry = {\n  date: number\n  volumeUSD: number\n  totalValueLockedUSD: number\n  feesUSD: number\n}\n\nexport interface PoolsState {\n  // analytics data from\n  byAddress: {\n    [networkId: string]: {\n      [address: string]: {\n        data: PoolData | undefined\n        chartData: PoolChartEntry[] | undefined\n        transactions: Transaction[] | undefined\n        lastUpdated: number | undefined\n        tickData: PoolTickData | undefined\n      }\n    }\n  }\n}\n\nexport const initialState: PoolsState = {\n  byAddress: {\n    [SupportedNetwork.ETHEREUM]: {},\n    [SupportedNetwork.ARBITRUM]: {},\n    [SupportedNetwork.OPTIMISM]: {},\n    [SupportedNetwork.POLYGON]: {},\n    [SupportedNetwork.CELO]: {},\n    [SupportedNetwork.BNB]: {},\n    [SupportedNetwork.AVALANCHE]: {},\n    [SupportedNetwork.BASE]: {},\n  },\n}\n\nexport default createReducer(initialState, (builder) =>\n  builder\n    .addCase(updatePoolData, (state, { payload: { pools, networkId } }) => {\n      pools.map(\n        (poolData) =>\n          (state.byAddress[networkId][poolData.address] = {\n            ...state.byAddress[networkId][poolData.address],\n            data: poolData,\n            lastUpdated: currentTimestamp(),\n          }),\n      )\n    })\n    // add address to byAddress keys if not included yet\n    .addCase(addPoolKeys, (state, { payload: { poolAddresses, networkId } }) => {\n      poolAddresses.map((address) => {\n        if (!state.byAddress[networkId][address]) {\n          state.byAddress[networkId][address] = {\n            data: undefined,\n            chartData: undefined,\n            transactions: undefined,\n            lastUpdated: undefined,\n            tickData: undefined,\n          }\n        }\n      })\n    })\n    .addCase(updatePoolChartData, (state, { payload: { poolAddress, chartData, networkId } }) => {\n      state.byAddress[networkId][poolAddress] = { ...state.byAddress[networkId][poolAddress], chartData: chartData }\n    })\n    .addCase(updatePoolTransactions, (state, { payload: { poolAddress, transactions, networkId } }) => {\n      state.byAddress[networkId][poolAddress] = { ...state.byAddress[networkId][poolAddress], transactions }\n    })\n    .addCase(updateTickData, (state, { payload: { poolAddress, tickData, networkId } }) => {\n      state.byAddress[networkId][poolAddress] = { ...state.byAddress[networkId][poolAddress], tickData }\n    }),\n)\n"
  },
  {
    "path": "src/state/pools/updater.ts",
    "content": "import { useUpdatePoolData, useAllPoolData, useAddPoolKeys } from './hooks'\nimport { useEffect, useMemo } from 'react'\nimport { useTopPoolAddresses } from 'data/pools/topPools'\nimport { usePoolDatas } from 'data/pools/poolData'\nimport { POOL_HIDE } from '../../constants'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\n\nexport default function Updater(): null {\n  // updaters\n  const [currentNetwork] = useActiveNetworkVersion()\n  const updatePoolData = useUpdatePoolData()\n  const addPoolKeys = useAddPoolKeys()\n\n  // data\n  const allPoolData = useAllPoolData()\n  const { loading, error, addresses } = useTopPoolAddresses()\n\n  // add top pools on first load\n  useEffect(() => {\n    if (addresses && !error && !loading) {\n      addPoolKeys(addresses)\n    }\n  }, [addPoolKeys, addresses, error, loading])\n\n  // load data for pools we need to hide\n  useEffect(() => {\n    addPoolKeys(POOL_HIDE[currentNetwork.id])\n  }, [addPoolKeys, currentNetwork.id])\n\n  // detect for which addresses we havent loaded pool data yet\n  const unfetchedPoolAddresses = useMemo(() => {\n    return Object.keys(allPoolData).reduce((accum: string[], key) => {\n      const poolData = allPoolData[key]\n      if (!poolData.data || !poolData.lastUpdated) {\n        accum.push(key)\n      }\n      return accum\n    }, [])\n  }, [allPoolData])\n\n  // update unloaded pool entries with fetched data\n  const { error: poolDataError, loading: poolDataLoading, data: poolDatas } = usePoolDatas(unfetchedPoolAddresses)\n\n  useEffect(() => {\n    if (poolDatas && !poolDataError && !poolDataLoading) {\n      updatePoolData(Object.values(poolDatas))\n    }\n  }, [poolDataError, poolDataLoading, poolDatas, updatePoolData])\n\n  return null\n}\n"
  },
  {
    "path": "src/state/protocol/actions.ts",
    "content": "import { ProtocolData } from './reducer'\nimport { createAction } from '@reduxjs/toolkit'\nimport { ChartDayData, Transaction } from 'types'\nimport { SupportedNetwork } from 'constants/networks'\n\n// protocol wide info\nexport const updateProtocolData = createAction<{ protocolData: ProtocolData; networkId: SupportedNetwork }>(\n  'protocol/updateProtocolData',\n)\nexport const updateChartData = createAction<{ chartData: ChartDayData[]; networkId: SupportedNetwork }>(\n  'protocol/updateChartData',\n)\nexport const updateTransactions = createAction<{ transactions: Transaction[]; networkId: SupportedNetwork }>(\n  'protocol/updateTransactions',\n)\n"
  },
  {
    "path": "src/state/protocol/hooks.ts",
    "content": "import { updateProtocolData, updateChartData, updateTransactions } from './actions'\nimport { AppState, AppDispatch } from './../index'\nimport { ProtocolData } from './reducer'\nimport { useCallback } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { ChartDayData, Transaction } from 'types'\nimport { useActiveNetworkVersion } from 'state/application/hooks'\n\nexport function useProtocolData(): [ProtocolData | undefined, (protocolData: ProtocolData) => void] {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const protocolData: ProtocolData | undefined = useSelector(\n    (state: AppState) => state.protocol[activeNetwork.id]?.data,\n  )\n\n  const dispatch = useDispatch<AppDispatch>()\n  const setProtocolData: (protocolData: ProtocolData) => void = useCallback(\n    (protocolData: ProtocolData) => dispatch(updateProtocolData({ protocolData, networkId: activeNetwork.id })),\n    [activeNetwork.id, dispatch],\n  )\n  return [protocolData, setProtocolData]\n}\n\nexport function useProtocolChartData(): [ChartDayData[] | undefined, (chartData: ChartDayData[]) => void] {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const chartData: ChartDayData[] | undefined = useSelector(\n    (state: AppState) => state.protocol[activeNetwork.id]?.chartData,\n  )\n\n  const dispatch = useDispatch<AppDispatch>()\n  const setChartData: (chartData: ChartDayData[]) => void = useCallback(\n    (chartData: ChartDayData[]) => dispatch(updateChartData({ chartData, networkId: activeNetwork.id })),\n    [activeNetwork.id, dispatch],\n  )\n  return [chartData, setChartData]\n}\n\nexport function useProtocolTransactions(): [Transaction[] | undefined, (transactions: Transaction[]) => void] {\n  const [activeNetwork] = useActiveNetworkVersion()\n  const transactions: Transaction[] | undefined = useSelector(\n    (state: AppState) => state.protocol[activeNetwork.id]?.transactions,\n  )\n  const dispatch = useDispatch<AppDispatch>()\n  const setTransactions: (transactions: Transaction[]) => void = useCallback(\n    (transactions: Transaction[]) => dispatch(updateTransactions({ transactions, networkId: activeNetwork.id })),\n    [activeNetwork.id, dispatch],\n  )\n  return [transactions, setTransactions]\n}\n"
  },
  {
    "path": "src/state/protocol/reducer.ts",
    "content": "import { currentTimestamp } from './../../utils/index'\nimport { updateProtocolData, updateChartData, updateTransactions } from './actions'\nimport { createReducer } from '@reduxjs/toolkit'\nimport { ChartDayData, Transaction } from 'types'\nimport { SupportedNetwork } from 'constants/networks'\n\nexport interface ProtocolData {\n  // volume\n  volumeUSD: number\n  volumeUSDChange: number\n\n  // in range liquidity\n  tvlUSD: number\n  tvlUSDChange: number\n\n  // fees\n  feesUSD: number\n  feeChange: number\n\n  // transactions\n  txCount: number\n  txCountChange: number\n}\n\nexport interface ProtocolState {\n  [networkId: string]: {\n    // timestamp for last updated fetch\n    readonly lastUpdated: number | undefined\n    // overview data\n    readonly data: ProtocolData | undefined\n    readonly chartData: ChartDayData[] | undefined\n    readonly transactions: Transaction[] | undefined\n  }\n}\n\nconst DEFAULT_INITIAL_STATE = {\n  data: undefined,\n  chartData: undefined,\n  transactions: undefined,\n  lastUpdated: undefined,\n}\n\nexport const initialState: ProtocolState = {\n  [SupportedNetwork.ETHEREUM]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.ARBITRUM]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.OPTIMISM]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.POLYGON]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.CELO]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.BNB]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.AVALANCHE]: DEFAULT_INITIAL_STATE,\n  [SupportedNetwork.BASE]: DEFAULT_INITIAL_STATE,\n}\n\nexport default createReducer(initialState, (builder) =>\n  builder\n    .addCase(updateProtocolData, (state, { payload: { protocolData, networkId } }) => {\n      state[networkId].data = protocolData\n      // mark when last updated\n      state[networkId].lastUpdated = currentTimestamp()\n    })\n    .addCase(updateChartData, (state, { payload: { chartData, networkId } }) => {\n      state[networkId].chartData = chartData\n    })\n    .addCase(updateTransactions, (state, { payload: { transactions, networkId } }) => {\n      state[networkId].transactions = transactions\n    }),\n)\n"
  },
  {
    "path": "src/state/protocol/updater.ts",
    "content": "import { useProtocolData, useProtocolChartData, useProtocolTransactions } from './hooks'\nimport { useEffect } from 'react'\nimport { useFetchProtocolData } from 'data/protocol/overview'\nimport { useFetchGlobalChartData } from 'data/protocol/chart'\nimport { fetchTopTransactions } from 'data/protocol/transactions'\nimport { useClients } from 'state/application/hooks'\n\nexport default function Updater(): null {\n  // client for data fetching\n  const { dataClient } = useClients()\n\n  const [protocolData, updateProtocolData] = useProtocolData()\n  const { data: fetchedProtocolData, error, loading } = useFetchProtocolData()\n\n  const [chartData, updateChartData] = useProtocolChartData()\n  const { data: fetchedChartData, error: chartError } = useFetchGlobalChartData()\n\n  const [transactions, updateTransactions] = useProtocolTransactions()\n\n  // update overview data if available and not set\n  useEffect(() => {\n    if (protocolData === undefined && fetchedProtocolData && !loading && !error) {\n      updateProtocolData(fetchedProtocolData)\n    }\n  }, [error, fetchedProtocolData, loading, protocolData, updateProtocolData])\n\n  // update global chart data if available and not set\n  useEffect(() => {\n    if (chartData === undefined && fetchedChartData && !chartError) {\n      updateChartData(fetchedChartData)\n    }\n  }, [chartData, chartError, fetchedChartData, updateChartData])\n\n  useEffect(() => {\n    async function fetch() {\n      const data = await fetchTopTransactions(dataClient)\n      if (data) {\n        updateTransactions(data)\n      }\n    }\n    if (!transactions) {\n      fetch()\n    }\n  }, [transactions, updateTransactions, dataClient])\n\n  return null\n}\n"
  },
  {
    "path": "src/state/tokens/actions.ts",
    "content": "import { createAction } from '@reduxjs/toolkit'\nimport { TokenData, TokenChartEntry } from './reducer'\nimport { PriceChartEntry, Transaction } from 'types'\nimport { SupportedNetwork } from 'constants/networks'\n\n// protocol wide info\nexport const updateTokenData = createAction<{ tokens: TokenData[]; networkId: SupportedNetwork }>(\n  'tokens/updateTokenData',\n)\n\n// add token address to byAddress\nexport const addTokenKeys = createAction<{ tokenAddresses: string[]; networkId: SupportedNetwork }>(\n  'tokens/addTokenKeys',\n)\n\n// add list of pools token is in\nexport const addPoolAddresses = createAction<{\n  tokenAddress: string\n  poolAddresses: string[]\n  networkId: SupportedNetwork\n}>('tokens/addPoolAddresses')\n\n// tvl and volume data over time\nexport const updateChartData = createAction<{\n  tokenAddress: string\n  chartData: TokenChartEntry[]\n  networkId: SupportedNetwork\n}>('tokens/updateChartData')\n\n// transactions\nexport const updateTransactions = createAction<{\n  tokenAddress: string\n  transactions: Transaction[]\n  networkId: SupportedNetwork\n}>('tokens/updateTransactions')\n\n// price data at arbitrary intervals\nexport const updatePriceData = createAction<{\n  tokenAddress: string\n  secondsInterval: number\n  priceData: PriceChartEntry[] | undefined\n  oldestFetchedTimestamp: number\n  networkId: SupportedNetwork\n}>('tokens/updatePriceData')\n"
  },
  {
    "path": "src/state/tokens/hooks.ts",
    "content": "import { AppState, AppDispatch } from './../index'\nimport { TokenData, TokenChartEntry } from './reducer'\nimport { useCallback, useEffect, useState, useMemo } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport {\n  updateTokenData,\n  addTokenKeys,\n  addPoolAddresses,\n  updateChartData,\n  updatePriceData,\n  updateTransactions,\n} from './actions'\nimport { isAddress } from 'ethers'\nimport { fetchPoolsForToken } from 'data/tokens/poolsForToken'\nimport { fetchTokenChartData } from 'data/tokens/chartData'\nimport { fetchTokenPriceData } from 'data/tokens/priceData'\nimport { fetchTokenTransactions } from 'data/tokens/transactions'\nimport { PriceChartEntry, Transaction } from 'types'\nimport { notEmpty } from 'utils'\nimport dayjs, { OpUnitType } from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport { useActiveNetworkVersion, useClients } from 'state/application/hooks'\n// format dayjs with the libraries that we need\ndayjs.extend(utc)\n\nexport function useAllTokenData(): {\n  [address: string]: { data: TokenData | undefined; lastUpdated: number | undefined }\n} {\n  const [activeNetwork] = useActiveNetworkVersion()\n  return useSelector((state: AppState) => state.tokens.byAddress[activeNetwork.id] ?? {})\n}\n\nexport function useUpdateTokenData(): (tokens: TokenData[]) => void {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n\n  return useCallback(\n    (tokens: TokenData[]) => {\n      dispatch(updateTokenData({ tokens, networkId: activeNetwork.id }))\n    },\n    [activeNetwork.id, dispatch],\n  )\n}\n\nexport function useAddTokenKeys(): (addresses: string[]) => void {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  return useCallback(\n    (tokenAddresses: string[]) => dispatch(addTokenKeys({ tokenAddresses, networkId: activeNetwork.id })),\n    [activeNetwork.id, dispatch],\n  )\n}\n\nexport function useTokenDatas(addresses: string[] | undefined): TokenData[] | undefined {\n  const allTokenData = useAllTokenData()\n  const addTokenKeys = useAddTokenKeys()\n\n  // if token not tracked yet track it\n  addresses?.map((a) => {\n    if (!allTokenData[a]) {\n      addTokenKeys([a])\n    }\n  })\n\n  const data = useMemo(() => {\n    if (!addresses) {\n      return []\n    }\n    return addresses\n      .map((a) => {\n        return allTokenData[a]?.data\n      })\n      .filter(notEmpty) as TokenData[]\n  }, [addresses, allTokenData])\n\n  return data\n}\n\nexport function useTokenData(address: string | undefined): TokenData | undefined {\n  const allTokenData = useAllTokenData()\n  const addTokenKeys = useAddTokenKeys()\n\n  // if invalid address return\n  if (!address || !isAddress(address)) {\n    return undefined\n  }\n\n  // if token not tracked yet track it\n  if (!allTokenData[address]) {\n    addTokenKeys([address])\n  }\n\n  // return data\n  return allTokenData[address]?.data\n}\n\n/**\n * Get top pools addresses that token is included in\n * If not loaded, fetch and store\n * @param address\n */\nexport function usePoolsForToken(address: string): string[] | undefined {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const token = useSelector((state: AppState) => state.tokens.byAddress[activeNetwork.id]?.[address])\n  const poolsForToken = token.poolAddresses\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  useEffect(() => {\n    async function fetch() {\n      const { loading, error, addresses } = await fetchPoolsForToken(address, dataClient)\n      if (!loading && !error && addresses) {\n        dispatch(addPoolAddresses({ tokenAddress: address, poolAddresses: addresses, networkId: activeNetwork.id }))\n      }\n      if (error) {\n        setError(error)\n      }\n    }\n    if (!poolsForToken && !error) {\n      fetch()\n    }\n  }, [address, dispatch, error, poolsForToken, dataClient, activeNetwork.id])\n\n  // return data\n  return poolsForToken\n}\n\n/**\n * Get top pools addresses that token is included in\n * If not loaded, fetch and store\n * @param address\n */\nexport function useTokenChartData(address: string): TokenChartEntry[] | undefined {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const token = useSelector((state: AppState) => state.tokens.byAddress[activeNetwork.id]?.[address])\n  const chartData = token.chartData\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  useEffect(() => {\n    async function fetch() {\n      const { error, data } = await fetchTokenChartData(address, dataClient)\n      if (!error && data) {\n        dispatch(updateChartData({ tokenAddress: address, chartData: data, networkId: activeNetwork.id }))\n      }\n      if (error) {\n        setError(error)\n      }\n    }\n    if (!chartData && !error) {\n      fetch()\n    }\n  }, [address, dispatch, error, chartData, dataClient, activeNetwork.id])\n\n  // return data\n  return chartData\n}\n\n/**\n * Get top pools addresses that token is included in\n * If not loaded, fetch and store\n * @param address\n */\nexport function useTokenPriceData(\n  address: string,\n  interval: number,\n  timeWindow: OpUnitType,\n): PriceChartEntry[] | undefined {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const token = useSelector((state: AppState) => state.tokens.byAddress[activeNetwork.id]?.[address])\n  const priceData = token.priceData[interval]\n  const [error, setError] = useState(false)\n  const { dataClient, blockClient } = useClients()\n\n  // construct timestamps and check if we need to fetch more data\n  const oldestTimestampFetched = token.priceData.oldestFetchedTimestamp\n  const utcCurrentTime = dayjs()\n  const startTimestamp = utcCurrentTime.subtract(1, timeWindow).startOf('hour').unix()\n\n  useEffect(() => {\n    async function fetch() {\n      const { data, error: fetchingError } = await fetchTokenPriceData(\n        address,\n        interval,\n        startTimestamp,\n        dataClient,\n        blockClient,\n      )\n      if (data) {\n        dispatch(\n          updatePriceData({\n            tokenAddress: address,\n            secondsInterval: interval,\n            priceData: data,\n            oldestFetchedTimestamp: startTimestamp,\n            networkId: activeNetwork.id,\n          }),\n        )\n      }\n      if (fetchingError) {\n        setError(true)\n      }\n    }\n\n    if (!priceData && !error) {\n      fetch()\n    }\n  }, [\n    activeNetwork.id,\n    address,\n    blockClient,\n    dataClient,\n    dispatch,\n    error,\n    interval,\n    oldestTimestampFetched,\n    priceData,\n    startTimestamp,\n    timeWindow,\n  ])\n\n  // return data\n  return priceData\n}\n\n/**\n * Get top pools addresses that token is included in\n * If not loaded, fetch and store\n * @param address\n */\nexport function useTokenTransactions(address: string): Transaction[] | undefined {\n  const dispatch = useDispatch<AppDispatch>()\n  const [activeNetwork] = useActiveNetworkVersion()\n  const token = useSelector((state: AppState) => state.tokens.byAddress[activeNetwork.id]?.[address])\n  const transactions = token.transactions\n  const [error, setError] = useState(false)\n  const { dataClient } = useClients()\n\n  useEffect(() => {\n    async function fetch() {\n      const { error, data } = await fetchTokenTransactions(address, dataClient)\n      if (error) {\n        setError(true)\n      } else if (data) {\n        dispatch(updateTransactions({ tokenAddress: address, transactions: data, networkId: activeNetwork.id }))\n      }\n    }\n    if (!transactions && !error) {\n      fetch()\n    }\n  }, [activeNetwork.id, address, dataClient, dispatch, error, transactions])\n\n  // return data\n  return transactions\n}\n"
  },
  {
    "path": "src/state/tokens/reducer.ts",
    "content": "import { currentTimestamp } from './../../utils/index'\nimport {\n  updateTokenData,\n  addTokenKeys,\n  addPoolAddresses,\n  updateChartData,\n  updatePriceData,\n  updateTransactions,\n} from './actions'\nimport { createReducer } from '@reduxjs/toolkit'\nimport { PriceChartEntry, Transaction } from 'types'\nimport { SupportedNetwork } from 'constants/networks'\n\nexport type TokenData = {\n  // token is in some pool on uniswap\n  exists: boolean\n\n  // basic token info\n  name: string\n  symbol: string\n  address: string\n\n  // volume\n  volumeUSD: number\n  volumeUSDChange: number\n  volumeUSDWeek: number\n  txCount: number\n\n  //fees\n  feesUSD: number\n\n  // tvl\n  tvlToken: number\n  tvlUSD: number\n  tvlUSDChange: number\n\n  priceUSD: number\n  priceUSDChange: number\n  priceUSDChangeWeek: number\n}\n\nexport interface TokenChartEntry {\n  date: number\n  volumeUSD: number\n  totalValueLockedUSD: number\n}\n\nexport interface TokensState {\n  // analytics data from\n  byAddress: {\n    [networkId: string]: {\n      [address: string]: {\n        data: TokenData | undefined\n        poolAddresses: string[] | undefined\n        chartData: TokenChartEntry[] | undefined\n        priceData: {\n          oldestFetchedTimestamp?: number | undefined\n          [secondsInterval: number]: PriceChartEntry[] | undefined\n        }\n        transactions: Transaction[] | undefined\n        lastUpdated: number | undefined\n      }\n    }\n  }\n}\n\nexport const initialState: TokensState = {\n  byAddress: {\n    [SupportedNetwork.ETHEREUM]: {},\n    [SupportedNetwork.ARBITRUM]: {},\n    [SupportedNetwork.OPTIMISM]: {},\n    [SupportedNetwork.POLYGON]: {},\n    [SupportedNetwork.CELO]: {},\n    [SupportedNetwork.BNB]: {},\n    [SupportedNetwork.AVALANCHE]: {},\n    [SupportedNetwork.BASE]: {},\n  },\n}\n\nexport default createReducer(initialState, (builder) =>\n  builder\n    .addCase(updateTokenData, (state, { payload: { tokens, networkId } }) => {\n      tokens.map(\n        (tokenData) =>\n          (state.byAddress[networkId][tokenData.address] = {\n            ...state.byAddress[networkId][tokenData.address],\n            data: tokenData,\n            lastUpdated: currentTimestamp(),\n          }),\n      )\n    }) // add address to byAddress keys if not included yet\n    .addCase(addTokenKeys, (state, { payload: { tokenAddresses, networkId } }) => {\n      tokenAddresses.map((address) => {\n        if (!state.byAddress[networkId][address]) {\n          state.byAddress[networkId][address] = {\n            poolAddresses: undefined,\n            data: undefined,\n            chartData: undefined,\n            priceData: {},\n            transactions: undefined,\n            lastUpdated: undefined,\n          }\n        }\n      })\n    })\n    // add list of pools the token is included in\n    .addCase(addPoolAddresses, (state, { payload: { tokenAddress, poolAddresses, networkId } }) => {\n      state.byAddress[networkId][tokenAddress] = { ...state.byAddress[networkId][tokenAddress], poolAddresses }\n    })\n    // add list of pools the token is included in\n    .addCase(updateChartData, (state, { payload: { tokenAddress, chartData, networkId } }) => {\n      state.byAddress[networkId][tokenAddress] = { ...state.byAddress[networkId][tokenAddress], chartData }\n    })\n    // add list of pools the token is included in\n    .addCase(updateTransactions, (state, { payload: { tokenAddress, transactions, networkId } }) => {\n      state.byAddress[networkId][tokenAddress] = { ...state.byAddress[networkId][tokenAddress], transactions }\n    })\n    // update historical price volume based on interval size\n    .addCase(\n      updatePriceData,\n      (state, { payload: { tokenAddress, secondsInterval, priceData, oldestFetchedTimestamp, networkId } }) => {\n        state.byAddress[networkId][tokenAddress] = {\n          ...state.byAddress[networkId][tokenAddress],\n          priceData: {\n            ...state.byAddress[networkId][tokenAddress].priceData,\n            [secondsInterval]: priceData,\n            oldestFetchedTimestamp,\n          },\n        }\n      },\n    ),\n)\n"
  },
  {
    "path": "src/state/tokens/updater.ts",
    "content": "import { useAllTokenData, useUpdateTokenData, useAddTokenKeys } from './hooks'\nimport { useEffect, useMemo } from 'react'\nimport { useTopTokenAddresses } from '../../data/tokens/topTokens'\nimport { useFetchedTokenDatas } from 'data/tokens/tokenData'\n\nexport default function Updater(): null {\n  // updaters\n  const updateTokenDatas = useUpdateTokenData()\n  const addTokenKeys = useAddTokenKeys()\n\n  // intitial data\n  const allTokenData = useAllTokenData()\n  const { loading, error, addresses } = useTopTokenAddresses()\n\n  // add top pools on first load\n  useEffect(() => {\n    if (addresses && !error && !loading) {\n      addTokenKeys(addresses)\n    }\n  }, [addTokenKeys, addresses, error, loading])\n\n  // detect for which addresses we havent loaded token data yet\n  const unfetchedTokenAddresses = useMemo(() => {\n    return Object.keys(allTokenData).reduce((accum: string[], key) => {\n      const tokenData = allTokenData[key]\n      if (!tokenData || !tokenData.data || !tokenData.lastUpdated) {\n        accum.push(key)\n      }\n      return accum\n    }, [])\n  }, [allTokenData])\n\n  // update unloaded pool entries with fetched data\n  const {\n    error: tokenDataError,\n    loading: tokenDataLoading,\n    data: tokenDatas,\n  } = useFetchedTokenDatas(unfetchedTokenAddresses)\n\n  useEffect(() => {\n    if (tokenDatas && !tokenDataError && !tokenDataLoading) {\n      updateTokenDatas(Object.values(tokenDatas))\n    }\n  }, [tokenDataError, tokenDataLoading, tokenDatas, updateTokenDatas])\n\n  return null\n}\n"
  },
  {
    "path": "src/state/user/actions.ts",
    "content": "import { createAction } from '@reduxjs/toolkit'\n\nexport interface SerializedToken {\n  chainId: number\n  address: string\n  decimals: number\n  symbol?: string\n  name?: string\n}\n\nexport interface SerializedPair {\n  token0: SerializedToken\n  token1: SerializedToken\n}\n\nexport const updateMatchesDarkMode = createAction<{ matchesDarkMode: boolean }>('user/updateMatchesDarkMode')\nexport const updateUserDarkMode = createAction<{ userDarkMode: boolean }>('user/updateUserDarkMode')\nexport const addSerializedToken = createAction<{ serializedToken: SerializedToken }>('user/addSerializedToken')\nexport const removeSerializedToken = createAction<{ chainId: number; address: string }>('user/removeSerializedToken')\nexport const addSavedToken = createAction<{ address: string }>('user/addSavedToken')\nexport const addSavedPool = createAction<{ address: string }>('user/addSavedPool')\nexport const addSerializedPair = createAction<{ serializedPair: SerializedPair }>('user/addSerializedPair')\nexport const removeSerializedPair = createAction<{ chainId: number; tokenAAddress: string; tokenBAddress: string }>(\n  'user/removeSerializedPair',\n)\nexport const toggleURLWarning = createAction<void>('app/toggleURLWarning')\n"
  },
  {
    "path": "src/state/user/hooks.tsx",
    "content": "import { Token } from '@uniswap/sdk-core'\nimport { useCallback } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { AppDispatch, AppState } from '../index'\nimport {\n  addSerializedToken,\n  removeSerializedToken,\n  SerializedToken,\n  updateUserDarkMode,\n  toggleURLWarning,\n  addSavedToken,\n  addSavedPool,\n} from './actions'\n\nfunction serializeToken(token: Token): SerializedToken {\n  return {\n    chainId: token.chainId,\n    address: token.address,\n    decimals: token.decimals,\n    symbol: token.symbol,\n    name: token.name,\n  }\n}\n\nexport function useIsDarkMode(): boolean {\n  return true\n}\n\nexport function useDarkModeManager(): [boolean, () => void] {\n  const dispatch = useDispatch<AppDispatch>()\n  const darkMode = true\n\n  const toggleSetDarkMode = useCallback(() => {\n    dispatch(updateUserDarkMode({ userDarkMode: !darkMode }))\n  }, [darkMode, dispatch])\n\n  return [darkMode, toggleSetDarkMode]\n}\n\nexport function useAddUserToken(): (token: Token) => void {\n  const dispatch = useDispatch<AppDispatch>()\n  return useCallback(\n    (token: Token) => {\n      dispatch(addSerializedToken({ serializedToken: serializeToken(token) }))\n    },\n    [dispatch],\n  )\n}\n\nexport function useSavedTokens(): [string[], (address: string) => void] {\n  const dispatch = useDispatch<AppDispatch>()\n  const savedTokens = useSelector((state: AppState) => state.user.savedTokens)\n  const updatedSavedTokens = useCallback(\n    (address: string) => {\n      dispatch(addSavedToken({ address }))\n    },\n    [dispatch],\n  )\n  return [savedTokens ?? [], updatedSavedTokens]\n}\n\nexport function useSavedPools(): [string[], (address: string) => void] {\n  const dispatch = useDispatch<AppDispatch>()\n  const savedPools = useSelector((state: AppState) => state.user.savedPools)\n  const updateSavedPools = useCallback(\n    (address: string) => {\n      dispatch(addSavedPool({ address }))\n    },\n    [dispatch],\n  )\n  return [savedPools ?? [], updateSavedPools]\n}\n\nexport function useRemoveUserAddedToken(): (chainId: number, address: string) => void {\n  const dispatch = useDispatch<AppDispatch>()\n  return useCallback(\n    (chainId: number, address: string) => {\n      dispatch(removeSerializedToken({ chainId, address }))\n    },\n    [dispatch],\n  )\n}\n\nexport function useURLWarningVisible(): boolean {\n  return useSelector((state: AppState) => state.user.URLWarningVisible)\n}\n\nexport function useURLWarningToggle(): () => void {\n  const dispatch = useDispatch()\n  return useCallback(() => dispatch(toggleURLWarning()), [dispatch])\n}\n"
  },
  {
    "path": "src/state/user/reducer.test.ts",
    "content": "import { createStore, Store } from 'redux'\nimport { updateVersion } from '../global/actions'\nimport reducer, { initialState, UserState } from './reducer'\n\ndescribe('swap reducer', () => {\n  let store: Store<UserState>\n\n  beforeEach(() => {\n    store = createStore(reducer, initialState)\n  })\n\n  describe('updateVersion', () => {\n    it('has no timestamp originally', () => {\n      expect(store.getState().lastUpdateVersionTimestamp).toBeUndefined()\n    })\n    it('sets the lastUpdateVersionTimestamp', () => {\n      const time = new Date().getTime()\n      store.dispatch(updateVersion())\n      expect(store.getState().lastUpdateVersionTimestamp).toBeGreaterThanOrEqual(time)\n    })\n  })\n})\n"
  },
  {
    "path": "src/state/user/reducer.ts",
    "content": "import { createReducer } from '@reduxjs/toolkit'\nimport { updateVersion } from '../global/actions'\nimport {\n  addSerializedPair,\n  addSerializedToken,\n  removeSerializedPair,\n  removeSerializedToken,\n  SerializedPair,\n  SerializedToken,\n  updateMatchesDarkMode,\n  updateUserDarkMode,\n  toggleURLWarning,\n  addSavedToken,\n  addSavedPool,\n} from './actions'\n\nconst currentTimestamp = () => new Date().getTime()\n\nexport interface UserState {\n  // the timestamp of the last updateVersion action\n  lastUpdateVersionTimestamp?: number\n\n  userDarkMode: boolean | null // the user's choice for dark mode or light mode\n  matchesDarkMode: boolean // whether the dark mode media query matches\n\n  tokens: {\n    [chainId: number]: {\n      [address: string]: SerializedToken\n    }\n  }\n\n  pairs: {\n    [chainId: number]: {\n      // keyed by token0Address:token1Address\n      [key: string]: SerializedPair\n    }\n  }\n\n  savedTokens: string[]\n  savedPools: string[]\n\n  timestamp: number\n  URLWarningVisible: boolean\n}\n\nfunction pairKey(token0Address: string, token1Address: string) {\n  return `${token0Address};${token1Address}`\n}\n\nexport const initialState: UserState = {\n  userDarkMode: true,\n  matchesDarkMode: false,\n  tokens: {},\n  pairs: {},\n  savedTokens: [],\n  savedPools: [],\n  timestamp: currentTimestamp(),\n  URLWarningVisible: true,\n}\n\nexport default createReducer(initialState, (builder) =>\n  builder\n    .addCase(updateVersion, (state) => {\n      state.lastUpdateVersionTimestamp = currentTimestamp()\n    })\n    .addCase(updateUserDarkMode, (state, action) => {\n      state.userDarkMode = action.payload.userDarkMode\n      state.timestamp = currentTimestamp()\n    })\n    .addCase(updateMatchesDarkMode, (state, action) => {\n      state.matchesDarkMode = action.payload.matchesDarkMode\n      state.timestamp = currentTimestamp()\n    })\n    .addCase(addSerializedToken, (state, { payload: { serializedToken } }) => {\n      state.tokens[serializedToken.chainId] = state.tokens[serializedToken.chainId] || {}\n      state.tokens[serializedToken.chainId][serializedToken.address] = serializedToken\n      state.timestamp = currentTimestamp()\n    })\n    .addCase(removeSerializedToken, (state, { payload: { address, chainId } }) => {\n      state.tokens[chainId] = state.tokens[chainId] || {}\n      delete state.tokens[chainId][address]\n      state.timestamp = currentTimestamp()\n    })\n    .addCase(addSavedToken, (state, { payload: { address } }) => {\n      if (!state.savedTokens || !state.savedTokens.includes(address)) {\n        const newTokens = state.savedTokens ?? []\n        newTokens.push(address)\n        state.savedTokens = newTokens\n      }\n      // toggle for delete\n      else if (state.savedTokens && state.savedTokens.includes(address)) {\n        const newTokens = state.savedTokens.filter((x) => x !== address)\n        state.savedTokens = newTokens\n      }\n    })\n    .addCase(addSavedPool, (state, { payload: { address } }) => {\n      if (!state.savedPools || !state.savedPools.includes(address)) {\n        const newPools = state.savedPools ?? []\n        newPools.push(address)\n        state.savedPools = newPools\n      } else if (state.savedPools && state.savedPools.includes(address)) {\n        const newPools = state.savedPools.filter((x) => x !== address)\n        state.savedPools = newPools\n      }\n    })\n    .addCase(addSerializedPair, (state, { payload: { serializedPair } }) => {\n      if (\n        serializedPair.token0.chainId === serializedPair.token1.chainId &&\n        serializedPair.token0.address !== serializedPair.token1.address\n      ) {\n        const chainId = serializedPair.token0.chainId\n        state.pairs[chainId] = state.pairs[chainId] || {}\n        state.pairs[chainId][pairKey(serializedPair.token0.address, serializedPair.token1.address)] = serializedPair\n      }\n      state.timestamp = currentTimestamp()\n    })\n    .addCase(removeSerializedPair, (state, { payload: { chainId, tokenAAddress, tokenBAddress } }) => {\n      if (state.pairs[chainId]) {\n        // just delete both keys if either exists\n        delete state.pairs[chainId][pairKey(tokenAAddress, tokenBAddress)]\n        delete state.pairs[chainId][pairKey(tokenBAddress, tokenAAddress)]\n      }\n      state.timestamp = currentTimestamp()\n    })\n    .addCase(toggleURLWarning, (state) => {\n      state.URLWarningVisible = !state.URLWarningVisible\n    }),\n)\n"
  },
  {
    "path": "src/state/user/updater.tsx",
    "content": "import { useEffect } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { AppDispatch } from '../index'\nimport { updateMatchesDarkMode } from './actions'\n\nexport default function Updater(): null {\n  const dispatch = useDispatch<AppDispatch>()\n\n  // keep dark mode in sync with the system\n  useEffect(() => {\n    const darkHandler = (match: MediaQueryListEvent) => {\n      dispatch(updateMatchesDarkMode({ matchesDarkMode: match.matches }))\n    }\n\n    const match = window?.matchMedia('(prefers-color-scheme: dark)')\n    dispatch(updateMatchesDarkMode({ matchesDarkMode: match.matches }))\n\n    if (match?.addListener) {\n      match?.addListener(darkHandler)\n    } else if (match?.addEventListener) {\n      match?.addEventListener('change', darkHandler)\n    }\n\n    return () => {\n      if (match?.removeListener) {\n        match?.removeListener(darkHandler)\n      } else if (match?.removeEventListener) {\n        match?.removeEventListener('change', darkHandler)\n      }\n    }\n  }, [dispatch])\n\n  return null\n}\n"
  },
  {
    "path": "src/theme/DarkModeQueryParamReader.tsx",
    "content": "import { useEffect } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\nimport { parse } from 'qs'\nimport { AppDispatch } from '../state'\nimport { updateUserDarkMode } from '../state/user/actions'\n\nexport default function DarkModeQueryParamReader(): null {\n  const dispatch = useDispatch<AppDispatch>()\n  const { search } = useLocation()\n\n  useEffect(() => {\n    if (!search) return\n    if (search.length < 2) return\n\n    const parsed = parse(search, {\n      parseArrays: false,\n      ignoreQueryPrefix: true,\n    })\n\n    const theme = parsed.theme\n\n    if (typeof theme !== 'string') return\n\n    if (theme.toLowerCase() === 'light') {\n      dispatch(updateUserDarkMode({ userDarkMode: false }))\n    } else if (theme.toLowerCase() === 'dark') {\n      dispatch(updateUserDarkMode({ userDarkMode: true }))\n    }\n  }, [dispatch, search])\n\n  return null\n}\n"
  },
  {
    "path": "src/theme/components.tsx",
    "content": "import React, { HTMLProps, useCallback } from 'react'\nimport { Link } from 'react-router-dom'\nimport styled, { keyframes } from 'styled-components'\nimport { darken } from 'polished'\nimport { ArrowLeft, X, ExternalLink as LinkIconFeather, Trash } from 'react-feather'\n\nexport const ButtonText = styled.button`\n  outline: none;\n  border: none;\n  font-size: inherit;\n  padding: 0;\n  margin: 0;\n  background: none;\n  cursor: pointer;\n\n  :hover {\n    opacity: 0.7;\n  }\n\n  :focus {\n    text-decoration: underline;\n  }\n`\n\nexport const Button = styled.button.attrs<{ warning: boolean; backgroundColor: string }>(({ warning, theme }) => ({\n  backgroundColor: warning ? theme.red1 : theme.primary1,\n}))`\n  padding: 1rem 2rem 1rem 2rem;\n  border-radius: 3rem;\n  cursor: pointer;\n  user-select: none;\n  font-size: 1rem;\n  border: none;\n  outline: none;\n  background-color: ${({ backgroundColor }) => backgroundColor};\n  color: ${({ theme }) => theme.white};\n  width: 100%;\n\n  :hover,\n  :focus {\n    background-color: ${({ backgroundColor }) => darken(0.05, backgroundColor)};\n  }\n\n  :active {\n    background-color: ${({ backgroundColor }) => darken(0.1, backgroundColor)};\n  }\n\n  :disabled {\n    background-color: ${({ theme }) => theme.bg1};\n    color: ${({ theme }) => theme.text4};\n    cursor: auto;\n  }\n`\n\nexport const CloseIcon = styled(X)<{ onClick: () => void }>`\n  cursor: pointer;\n`\n\n// for wrapper react feather icons\nexport const IconWrapper = styled.div<{ stroke?: string; size?: string; marginRight?: string; marginLeft?: string }>`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: ${({ size }) => size ?? '20px'};\n  height: ${({ size }) => size ?? '20px'};\n  margin-right: ${({ marginRight }) => marginRight ?? 0};\n  margin-left: ${({ marginLeft }) => marginLeft ?? 0};\n  & > * {\n    stroke: ${({ theme, stroke }) => stroke ?? theme.blue1};\n  }\n`\n\n// A button that triggers some onClick result, but looks like a link.\nexport const LinkStyledButton = styled.button<{ disabled?: boolean }>`\n  border: none;\n  text-decoration: none;\n  background: none;\n\n  cursor: ${({ disabled }) => (disabled ? 'default' : 'pointer')};\n  color: ${({ theme, disabled }) => (disabled ? theme.text2 : theme.primary1)};\n  font-weight: 500;\n\n  :hover {\n    text-decoration: ${({ disabled }) => (disabled ? null : 'underline')};\n  }\n\n  :focus {\n    outline: none;\n    text-decoration: ${({ disabled }) => (disabled ? null : 'underline')};\n  }\n\n  :active {\n    text-decoration: none;\n  }\n`\n\n// An internal link from the react-router-dom library that is correctly styled\nexport const StyledInternalLink = styled(Link)<{ fontSize?: string }>`\n  text-decoration: none;\n  cursor: pointer;\n  color: inherit;\n  font-weight: 500;\n  font-size: ${({ fontSize }) => fontSize ?? '16px'};\n\n  :hover {\n    text-decoration: none;\n  }\n\n  :focus {\n    outline: none;\n    text-decoration: none;\n  }\n\n  :active {\n    text-decoration: none;\n  }\n`\n\nconst StyledLink = styled.a`\n  text-decoration: none;\n  cursor: pointer;\n  color: ${({ theme }) => theme.primary1};\n  font-weight: 500;\n  display: inline;\n  flex-direction: center;\n  align-items: center;\n  display: flex;\n\n  :hover {\n    text-decoration: underline;\n    text-decoration: none;\n    opacity: 0.7;\n  }\n\n  :focus {\n    outline: none;\n    text-decoration: none;\n  }\n\n  :active {\n    outline: none;\n    text-decoration: none;\n  }\n`\n\nconst LinkIconWrapper = styled.a`\n  text-decoration: none;\n  cursor: pointer;\n  align-items: center;\n  justify-content: center;\n  display: flex;\n\n  :hover {\n    text-decoration: none;\n    opacity: 0.7;\n  }\n\n  :focus {\n    outline: none;\n    text-decoration: none;\n  }\n\n  :active {\n    text-decoration: none;\n  }\n`\n\nexport const LinkIcon = styled(LinkIconFeather)`\n  height: 16px;\n  width: 18px;\n  margin-left: 10px;\n  stroke: ${({ theme }) => theme.blue1};\n`\n\nexport const TrashIcon = styled(Trash)`\n  height: 16px;\n  width: 18px;\n  margin-left: 10px;\n  stroke: ${({ theme }) => theme.text3};\n\n  cursor: pointer;\n  align-items: center;\n  justify-content: center;\n  display: flex;\n\n  :hover {\n    opacity: 0.7;\n  }\n`\n\nconst rotateImg = keyframes`\n  0% {\n    transform: perspective(1000px) rotateY(0deg);\n  }\n\n  100% {\n    transform: perspective(1000px) rotateY(360deg);\n  }\n`\n\nexport const UniTokenAnimated = styled.img`\n  animation: ${rotateImg} 5s cubic-bezier(0.83, 0, 0.17, 1) infinite;\n  padding: 2rem 0 0 0;\n  filter: drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.15));\n`\n\n/**\n * Outbound link that handles firing google analytics events\n */\nexport function ExternalLink({\n  target = '_blank',\n  href,\n  rel = 'noopener noreferrer',\n  ...rest\n}: Omit<HTMLProps<HTMLAnchorElement>, 'as' | 'ref' | 'onClick'> & { href: string }) {\n  const handleClick = useCallback(\n    (event: React.MouseEvent<HTMLAnchorElement>) => {\n      // don't prevent default, don't redirect if it's a new tab\n      if (target === '_blank' || event.ctrlKey || event.metaKey) {\n      } else {\n        event.preventDefault()\n      }\n    },\n    [target],\n  )\n  return <StyledLink target={target} rel={rel} href={href} onClick={handleClick} {...rest} />\n}\n\nexport function ExternalLinkIcon({\n  target = '_blank',\n  href,\n  rel = 'noopener noreferrer',\n  ...rest\n}: Omit<HTMLProps<HTMLAnchorElement>, 'as' | 'ref' | 'onClick'> & { href: string }) {\n  const handleClick = useCallback(\n    (event: React.MouseEvent<HTMLAnchorElement>) => {\n      // don't prevent default, don't redirect if it's a new tab\n      if (target === '_blank' || event.ctrlKey || event.metaKey) {\n      } else {\n        event.preventDefault()\n      }\n    },\n    [target],\n  )\n  return (\n    <LinkIconWrapper target={target} rel={rel} href={href} onClick={handleClick} {...rest}>\n      <LinkIcon />\n    </LinkIconWrapper>\n  )\n}\n\nconst rotate = keyframes`\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n`\n\nexport const Spinner = styled.img`\n  animation: 2s ${rotate} linear infinite;\n  width: 16px;\n  height: 16px;\n`\n\nconst BackArrowLink = styled(StyledInternalLink)`\n  color: ${({ theme }) => theme.text1};\n`\nexport function BackArrow({ to }: { to: string }) {\n  return (\n    <BackArrowLink to={to}>\n      <ArrowLeft />\n    </BackArrowLink>\n  )\n}\n\nexport const CustomLightSpinner = styled(Spinner)<{ size: string }>`\n  height: ${({ size }) => size};\n  width: ${({ size }) => size};\n`\n\nexport const OnlyMedium = styled.span`\n  ${({ theme }) => theme.mediaWidth.upToMedium`\n    display: none;\n  `};\n`\n\nexport const HideMedium = styled.span`\n  ${({ theme }) => theme.mediaWidth.upToMedium`\n    display: none;\n  `};\n`\n\nexport const HideSmall = styled.span`\n  ${({ theme }) => theme.mediaWidth.upToSmall`\n    display: none;\n  `};\n`\n\nexport const HideExtraSmall = styled.span`\n  ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n    display: none;\n  `};\n`\n\nexport const ExtraSmallOnly = styled.span`\n  display: none;\n  ${({ theme }) => theme.mediaWidth.upToExtraSmall`\n    display: block;\n  `};\n`\n"
  },
  {
    "path": "src/theme/index.tsx",
    "content": "import React, { useMemo } from 'react'\nimport styled, {\n  ThemeProvider as StyledComponentsThemeProvider,\n  createGlobalStyle,\n  css,\n  DefaultTheme,\n} from 'styled-components'\nimport { useIsDarkMode } from '../state/user/hooks'\nimport { Text, TextProps } from 'rebass'\nimport { Colors } from './styled'\n\nexport * from './components'\n\nexport const MEDIA_WIDTHS = {\n  upToExtraSmall: 500,\n  upToSmall: 720,\n  upToMedium: 960,\n  upToLarge: 1280,\n}\n\nconst mediaWidthTemplates: { [width in keyof typeof MEDIA_WIDTHS]: typeof css } = Object.keys(MEDIA_WIDTHS).reduce(\n  (accumulator, size) => {\n    ;(accumulator as any)[size] = (a: any, b: any, c: any) => css`\n      @media (max-width: ${(MEDIA_WIDTHS as any)[size]}px) {\n        ${css(a, b, c)}\n      }\n    `\n    return accumulator\n  },\n  {},\n) as any\n\nconst white = '#FFFFFF'\nconst black = '#000000'\n\nexport function colors(darkMode: boolean): Colors {\n  return {\n    // base\n    white,\n    black,\n\n    // text\n    text1: darkMode ? '#FFFFFF' : '#000000',\n    text2: darkMode ? '#C3C5CB' : '#565A69',\n    text3: darkMode ? '#6C7284' : '#888D9B',\n    text4: darkMode ? '#565A69' : '#C3C5CB',\n    text5: darkMode ? '#2C2F36' : '#EDEEF2',\n\n    // backgrounds / greys\n    bg0: darkMode ? '#191B1F' : '#F7F8FA',\n    bg1: darkMode ? '#1F2128' : '#FFFFFF',\n    bg2: darkMode ? '#2C2F36' : '#F7F8FA',\n    bg3: darkMode ? '#40444F' : '#EDEEF2',\n    bg4: darkMode ? '#565A69' : '#CED0D9',\n    bg5: darkMode ? '#6C7284' : '#888D9B',\n\n    //specialty colors\n    modalBG: darkMode ? 'rgba(0,0,0,.425)' : 'rgba(0,0,0,0.3)',\n    advancedBG: darkMode ? 'rgba(0,0,0,0.1)' : 'rgba(255,255,255,0.6)',\n\n    //primary colors\n    primary1: darkMode ? '#2172E5' : '#ff007a',\n    primary2: darkMode ? '#3680E7' : '#FF8CC3',\n    primary3: darkMode ? '#4D8FEA' : '#FF99C9',\n    primary4: darkMode ? '#376bad70' : '#F6DDE8',\n    primary5: darkMode ? '#153d6f70' : '#FDEAF1',\n\n    // color text\n    primaryText1: darkMode ? '#6da8ff' : '#ff007a',\n\n    // secondary colors\n    secondary1: darkMode ? '#2172E5' : '#ff007a',\n    secondary2: darkMode ? '#17000b26' : '#F6DDE8',\n    secondary3: darkMode ? '#17000b26' : '#FDEAF1',\n\n    // other\n    pink1: '#ff007a',\n    red1: '#FD4040',\n    red2: '#F82D3A',\n    red3: '#D60000',\n    green1: '#27AE60',\n    yellow1: '#FFE270',\n    yellow2: '#F3841E',\n    yellow3: '#F3B71E',\n    blue1: '#2172E5',\n    blue2: '#5199FF',\n\n    // dont wanna forget these blue yet\n    // blue4: darkMode ? '#153d6f70' : '#C4D9F8',\n    // blue5: darkMode ? '#153d6f70' : '#EBF4FF',\n  }\n}\n\nexport function theme(darkMode: boolean): DefaultTheme {\n  return {\n    ...colors(darkMode),\n\n    grids: {\n      sm: 8,\n      md: 12,\n      lg: 24,\n    },\n\n    //shadows\n    shadow1: darkMode ? '#000' : '#2F80ED',\n\n    // media queries\n    mediaWidth: mediaWidthTemplates,\n\n    // css snippets\n    flexColumnNoWrap: css`\n      display: flex;\n      flex-flow: column nowrap;\n    `,\n    flexRowNoWrap: css`\n      display: flex;\n      flex-flow: row nowrap;\n    `,\n  }\n}\n\nexport default function ThemeProvider({ children }: { children: React.ReactNode }) {\n  const darkMode = useIsDarkMode()\n\n  const themeObject = useMemo(() => theme(darkMode), [darkMode])\n\n  return <StyledComponentsThemeProvider theme={themeObject}>{children}</StyledComponentsThemeProvider>\n}\n\nconst TextWrapper = styled(Text)<{ color: keyof Colors }>`\n  color: ${({ color, theme }) => (theme as any)[color]};\n`\n\nexport const TYPE = {\n  main(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'text2'} {...props} />\n  },\n  link(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'primary1'} {...props} />\n  },\n  label(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'text1'} {...props} />\n  },\n  black(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'text1'} {...props} />\n  },\n  white(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'white'} {...props} />\n  },\n  body(props: TextProps) {\n    return <TextWrapper fontWeight={400} fontSize={16} color={'text1'} {...props} />\n  },\n  largeHeader(props: TextProps) {\n    return <TextWrapper fontWeight={600} fontSize={24} color={'text1'} {...props} />\n  },\n  mediumHeader(props: TextProps) {\n    return <TextWrapper fontWeight={500} fontSize={20} color={'text3'} {...props} />\n  },\n  subHeader(props: TextProps) {\n    return <TextWrapper fontWeight={400} fontSize={14} {...props} />\n  },\n  small(props: TextProps) {\n    return <TextWrapper fontWeight={500} fontSize={11} {...props} />\n  },\n  blue(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'blue1'} {...props} />\n  },\n  yellow(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'yellow3'} {...props} />\n  },\n  darkGray(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'text3'} {...props} />\n  },\n  gray(props: TextProps) {\n    return <TextWrapper fontWeight={500} color={'bg3'} {...props} />\n  },\n  italic(props: TextProps) {\n    return <TextWrapper fontWeight={500} fontSize={12} fontStyle={'italic'} color={'text2'} {...props} />\n  },\n  error({ error, ...props }: { error: boolean } & TextProps) {\n    return <TextWrapper fontWeight={500} color={error ? 'red1' : 'text2'} {...props} />\n  },\n}\n\nexport const FixedGlobalStyle = createGlobalStyle`\nhtml, input, textarea, button {\n  font-family: 'Inter', sans-serif;\n  font-display: fallback;\n}\n@supports (font-variation-settings: normal) {\n  html, input, textarea, button {\n    font-family: 'Inter var', sans-serif;\n  }\n}\n\nhtml,\nbody {\n  margin: 0;\n  padding: 0;\n}\n\n a {\n   color: ${colors(false).blue1}; \n }\n\n* {\n  box-sizing: border-box;\n}\n\nbutton {\n  user-select: none;\n}\n\nhtml {\n  font-size: 16px;\n  font-variant: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  font-feature-settings: 'ss01' on, 'ss02' on, 'cv01' on, 'cv03' on;\n  \n}\n`\n\nexport const ThemedGlobalStyle = createGlobalStyle`\nhtml {\n  color: ${({ theme }) => theme.text1};\n  background-color: ${({ theme }) => theme.bg1};\n}\n\n.three-line-legend-dark {\n\twidth: 100%;\n\theight: 70px;\n\tposition: absolute;\n\tpadding: 8px;\n\tfont-size: 12px;\n\tcolor: white;\n\tbackground-color: transparent;\n\ttext-align: left;\n\tz-index: 10;\n  pointer-events: none;\n}\n\n.tv-lightweight-charts{\n  width: 100% !important;\n  \n  & > * {\n    width: 100% !important;\n  }\n}\n\nbody {\n  min-height: 100vh;\n  background-position: 0 -30vh;\n  background-repeat: no-repeat;\n\n}\n`\n"
  },
  {
    "path": "src/theme/rebass.d.ts",
    "content": "import { InterpolationWithTheme } from '@emotion/core'\nimport {\n  BoxProps as BoxP,\n  ButtonProps as ButtonP,\n  FlexProps as FlexP,\n  LinkProps as LinkP,\n  TextProps as TextP,\n} from 'rebass'\n\ndeclare module 'rebass' {\n  interface BoxProps extends BoxP {\n    css?: InterpolationWithTheme<any>\n  }\n  interface ButtonProps extends ButtonP {\n    css?: InterpolationWithTheme<any>\n  }\n  interface FlexProps extends FlexP {\n    css?: InterpolationWithTheme<any>\n  }\n  interface LinkProps extends LinkP {\n    css?: InterpolationWithTheme<any>\n  }\n  interface TextProps extends TextP {\n    css?: InterpolationWithTheme<any>\n  }\n}\n\ndeclare global {\n  namespace JSX {\n    interface IntrinsicAttributes {\n      css?: InterpolationWithTheme<any>\n    }\n  }\n}\n"
  },
  {
    "path": "src/theme/styled.d.ts",
    "content": "import { FlattenSimpleInterpolation, ThemedCssFunction } from 'styled-components'\n\nexport type Color = string\nexport interface Colors {\n  // base\n  white: Color\n  black: Color\n\n  // text\n  text1: Color\n  text2: Color\n  text3: Color\n  text4: Color\n  text5: Color\n\n  // backgrounds / greys\n  bg0: Color\n  bg1: Color\n  bg2: Color\n  bg3: Color\n  bg4: Color\n  bg5: Color\n\n  modalBG: Color\n  advancedBG: Color\n\n  //blues\n  primary1: Color\n  primary2: Color\n  primary3: Color\n  primary4: Color\n  primary5: Color\n\n  primaryText1: Color\n\n  // pinks\n  secondary1: Color\n  secondary2: Color\n  secondary3: Color\n\n  // other\n  pink1: Color\n  red1: Color\n  red2: Color\n  red3: Color\n  green1: Color\n  yellow1: Color\n  yellow2: Color\n  yellow3: Color\n  blue1: Color\n  blue2: Color\n}\n\nexport interface Grids {\n  sm: number\n  md: number\n  lg: number\n}\n\ndeclare module 'styled-components' {\n  export interface DefaultTheme extends Colors {\n    grids: Grids\n\n    // shadows\n    shadow1: string\n\n    // media queries\n    mediaWidth: {\n      upToExtraSmall: ThemedCssFunction<DefaultTheme>\n      upToSmall: ThemedCssFunction<DefaultTheme>\n      upToMedium: ThemedCssFunction<DefaultTheme>\n      upToLarge: ThemedCssFunction<DefaultTheme>\n    }\n\n    // css snippets\n    flexColumnNoWrap: FlattenSimpleInterpolation\n    flexRowNoWrap: FlattenSimpleInterpolation\n  }\n}\n"
  },
  {
    "path": "src/types/index.ts",
    "content": "export interface Block {\n  number: number\n  timestamp: string\n}\n\nexport enum VolumeWindow {\n  daily,\n  weekly,\n  monthly,\n}\n\nexport interface ChartDayData {\n  date: number\n  volumeUSD: number\n  tvlUSD: number\n}\n\nexport interface GenericChartEntry {\n  time: string\n  value: number\n}\n\nexport enum TransactionType {\n  SWAP,\n  MINT,\n  BURN,\n}\n\nexport type Transaction = {\n  type: TransactionType\n  hash: string\n  timestamp: string\n  sender: string\n  token0Symbol: string\n  token1Symbol: string\n  token0Address: string\n  token1Address: string\n  amountUSD: number\n  amountToken0: number\n  amountToken1: number\n}\n\n/**\n * Formatted type for Candlestick charts\n */\nexport type PriceChartEntry = {\n  time: number // unix timestamp\n  open: number\n  close: number\n  high: number\n  low: number\n}\n"
  },
  {
    "path": "src/utils/chunkArray.test.ts",
    "content": "import chunkArray from './chunkArray'\n\ndescribe('#chunkArray', () => {\n  it('size 1', () => {\n    expect(chunkArray([1, 2, 3], 1)).toEqual([[1], [2], [3]])\n  })\n  it('size 0 throws', () => {\n    expect(() => chunkArray([1, 2, 3], 0)).toThrow('maxChunkSize must be gte 1')\n  })\n  it('size gte items', () => {\n    expect(chunkArray([1, 2, 3], 3)).toEqual([[1, 2, 3]])\n    expect(chunkArray([1, 2, 3], 4)).toEqual([[1, 2, 3]])\n  })\n  it('size exact half', () => {\n    expect(chunkArray([1, 2, 3, 4], 2)).toEqual([\n      [1, 2],\n      [3, 4],\n    ])\n  })\n  it('evenly distributes', () => {\n    const chunked = chunkArray([...Array(100).keys()], 40)\n\n    expect(chunked).toEqual([\n      [...Array(34).keys()],\n      [...Array(34).keys()].map((i) => i + 34),\n      [...Array(32).keys()].map((i) => i + 68),\n    ])\n\n    expect(chunked[0][0]).toEqual(0)\n    expect(chunked[2][31]).toEqual(99)\n  })\n})\n"
  },
  {
    "path": "src/utils/chunkArray.ts",
    "content": "// chunks array into chunks of maximum size\n// evenly distributes items among the chunks\nexport default function chunkArray<T>(items: T[], maxChunkSize: number): T[][] {\n  if (maxChunkSize < 1) throw new Error('maxChunkSize must be gte 1')\n  if (items.length <= maxChunkSize) return [items]\n\n  const numChunks: number = Math.ceil(items.length / maxChunkSize)\n  const chunkSize = Math.ceil(items.length / numChunks)\n\n  return [...Array(numChunks).keys()].map((ix) => items.slice(ix * chunkSize, ix * chunkSize + chunkSize))\n}\n"
  },
  {
    "path": "src/utils/contenthashToUri.test.skip.ts",
    "content": "import contenthashToUri, { hexToUint8Array } from './contenthashToUri'\n\n// this test is skipped for now because importing CID results in\n// TypeError: TextDecoder is not a constructor\n\ndescribe('#contenthashToUri', () => {\n  it('1inch.tokens.eth contenthash', () => {\n    expect(contenthashToUri('0xe3010170122013e051d1cfff20606de36845d4fe28deb9861a319a5bc8596fa4e610e8803918')).toEqual(\n      'ipfs://QmPgEqyV3m8SB52BS2j2mJpu9zGprhj2BGCHtRiiw2fdM1',\n    )\n  })\n  it('uniswap.eth contenthash', () => {\n    expect(contenthashToUri('0xe5010170000f6170702e756e69737761702e6f7267')).toEqual('ipns://app.uniswap.org')\n  })\n})\n\ndescribe('#hexToUint8Array', () => {\n  it('common case', () => {\n    expect(hexToUint8Array('0x010203fdfeff')).toEqual(new Uint8Array([1, 2, 3, 253, 254, 255]))\n  })\n})\n"
  },
  {
    "path": "src/utils/contenthashToUri.ts",
    "content": "import CID from 'cids'\nimport { getCodec, rmPrefix } from 'multicodec'\nimport { decode, toB58String } from 'multihashes'\n\nexport function hexToUint8Array(hex: string): Uint8Array {\n  hex = hex.startsWith('0x') ? hex.substr(2) : hex\n  if (hex.length % 2 !== 0) throw new Error('hex must have length that is multiple of 2')\n  const arr = new Uint8Array(hex.length / 2)\n  for (let i = 0; i < arr.length; i++) {\n    arr[i] = parseInt(hex.substr(i * 2, 2), 16)\n  }\n  return arr\n}\n\nconst UTF_8_DECODER = new TextDecoder()\n\n/**\n * Returns the URI representation of the content hash for supported codecs\n * @param contenthash to decode\n */\nexport default function contenthashToUri(contenthash: string): string {\n  const buff = hexToUint8Array(contenthash)\n  const codec = getCodec(buff as Buffer) // the typing is wrong for @types/multicodec\n  switch (codec) {\n    case 'ipfs-ns': {\n      const data = rmPrefix(buff as Buffer)\n      const cid = new CID(data)\n      return `ipfs://${toB58String(cid.multihash)}`\n    }\n    case 'ipns-ns': {\n      const data = rmPrefix(buff as Buffer)\n      const cid = new CID(data)\n      const multihash = decode(cid.multihash)\n      if (multihash.name === 'identity') {\n        return `ipns://${UTF_8_DECODER.decode(multihash.digest).trim()}`\n      } else {\n        return `ipns://${toB58String(cid.multihash)}`\n      }\n    }\n    default:\n      throw new Error(`Unrecognized codec: ${codec}`)\n  }\n}\n"
  },
  {
    "path": "src/utils/currencyId.ts",
    "content": "import { Currency } from '@uniswap/sdk-core'\n\nexport function currencyId(currency: Currency): string {\n  if (currency.isNative) return 'ETH'\n  if (currency.isToken) return currency.address\n  throw new Error('invalid currency')\n}\n"
  },
  {
    "path": "src/utils/data.ts",
    "content": "/**\n * gets the amoutn difference plus the % change in change itself (second order change)\n * @param {*} valueNow\n * @param {*} value24HoursAgo\n * @param {*} value48HoursAgo\n */\nexport const get2DayChange = (valueNow: string, value24HoursAgo: string, value48HoursAgo: string): [number, number] => {\n  // get volume info for both 24 hour periods\n  const currentChange = parseFloat(valueNow) - parseFloat(value24HoursAgo)\n  const previousChange = parseFloat(value24HoursAgo) - parseFloat(value48HoursAgo)\n  const adjustedPercentChange = ((currentChange - previousChange) / previousChange) * 100\n  if (isNaN(adjustedPercentChange) || !isFinite(adjustedPercentChange)) {\n    return [currentChange, 0]\n  }\n  return [currentChange, adjustedPercentChange]\n}\n\n/**\n * get standard percent change between two values\n * @param {*} valueNow\n * @param {*} value24HoursAgo\n */\nexport const getPercentChange = (valueNow: string | undefined, value24HoursAgo: string | undefined): number => {\n  if (valueNow && value24HoursAgo) {\n    const change = ((parseFloat(valueNow) - parseFloat(value24HoursAgo)) / parseFloat(value24HoursAgo)) * 100\n    if (isFinite(change)) return change\n  }\n  return 0\n}\n"
  },
  {
    "path": "src/utils/date.ts",
    "content": "import dayjs from 'dayjs'\n\nexport function unixToDate(unix: number, format = 'YYYY-MM-DD'): string {\n  return dayjs.unix(unix).utc().format(format)\n}\n\nexport const formatTime = (unix: string, buffer?: number) => {\n  const now = dayjs()\n  const timestamp = dayjs.unix(parseInt(unix)).add(buffer ?? 0, 'minute')\n\n  const inSeconds = now.diff(timestamp, 'second')\n  const inMinutes = now.diff(timestamp, 'minute')\n  const inHours = now.diff(timestamp, 'hour')\n  const inDays = now.diff(timestamp, 'day')\n\n  if (inMinutes < 1) {\n    return 'recently'\n  }\n\n  if (inHours >= 24) {\n    return `${inDays} ${inDays === 1 ? 'day' : 'days'} ago`\n  } else if (inMinutes >= 60) {\n    return `${inHours} ${inHours === 1 ? 'hour' : 'hours'} ago`\n  } else if (inSeconds >= 60) {\n    return `${inMinutes} ${inMinutes === 1 ? 'minute' : 'minutes'} ago`\n  } else {\n    return `${inSeconds} ${inSeconds === 1 ? 'second' : 'seconds'} ago`\n  }\n}\n"
  },
  {
    "path": "src/utils/getLibrary.ts",
    "content": "import { Web3Provider } from '@ethersproject/providers'\n\nexport default function getLibrary(provider: any): Web3Provider {\n  const library = new Web3Provider(provider, 'any')\n  library.pollingInterval = 15000\n  return library\n}\n"
  },
  {
    "path": "src/utils/getTokenList.ts",
    "content": "import { TokenList } from '@uniswap/token-lists'\nimport schema from '@uniswap/token-lists/src/tokenlist.schema.json'\nimport Ajv from 'ajv'\nimport uriToHttp from './uriToHttp'\n\nconst tokenListValidator = new Ajv({ allErrors: true }).compile(schema)\n\n/**\n * Contains the logic for resolving a list URL to a validated token list\n * @param listUrl list url\n * @param resolveENSContentHash resolves an ens name to a contenthash\n */\nexport default async function getTokenList(listUrl: string): Promise<TokenList> {\n  const urls = uriToHttp(listUrl)\n\n  for (let i = 0; i < urls.length; i++) {\n    const url = urls[i]\n    const isLast = i === urls.length - 1\n    let response\n    try {\n      response = await fetch(url)\n    } catch (error) {\n      console.debug('Failed to fetch list', listUrl, error)\n      if (isLast) throw new Error(`Failed to download list ${listUrl}`)\n      continue\n    }\n\n    if (!response.ok) {\n      if (isLast) throw new Error(`Failed to download list ${listUrl}`)\n      continue\n    }\n\n    const json = await response.json()\n    if (!tokenListValidator(json)) {\n      const validationErrors: string =\n        tokenListValidator.errors?.reduce<string>((memo, error) => {\n          const add = `${error.dataPath} ${error.message ?? ''}`\n          return memo.length > 0 ? `${memo}; ${add}` : `${add}`\n        }, '') ?? 'unknown error'\n      throw new Error(`Token list failed validation: ${validationErrors}`)\n    }\n    return json\n  }\n  throw new Error('Unrecognized list URL protocol.')\n}\n"
  },
  {
    "path": "src/utils/index.ts",
    "content": "import { getAddress } from '@ethersproject/address'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { AddressZero } from '@ethersproject/constants'\nimport { Contract } from '@ethersproject/contracts'\nimport { JsonRpcSigner, Web3Provider } from '@ethersproject/providers'\nimport { ChainId, Currency, CurrencyAmount, Fraction, Percent, Token } from '@uniswap/sdk-core'\n\nimport JSBI from 'jsbi'\nimport { TokenAddressMap } from '../state/lists/hooks'\n\n// returns the checksummed address if the address is valid, otherwise returns false\nexport function isAddress(value: any): string | false {\n  try {\n    return getAddress(value)\n  } catch {\n    return false\n  }\n}\n\nconst BLOCK_EXPLORER_PREFIXES: { [chainId: number]: string } = {\n  [ChainId.MAINNET]: 'https://etherscan.io',\n  [ChainId.GOERLI]: 'https://goerli.etherscan.io',\n  [ChainId.SEPOLIA]: 'https://sepolia.etherscan.io',\n  [ChainId.ARBITRUM_ONE]: 'https://arbiscan.io',\n  [ChainId.ARBITRUM_GOERLI]: 'https://goerli.arbiscan.io',\n  [ChainId.OPTIMISM]: 'https://optimistic.etherscan.io',\n  [ChainId.OPTIMISM_GOERLI]: 'https://goerli-optimism.etherscan.io',\n  [ChainId.POLYGON]: 'https://polygonscan.com',\n  [ChainId.POLYGON_MUMBAI]: 'https://mumbai.polygonscan.com',\n  [ChainId.CELO]: 'https://celoscan.io',\n  [ChainId.CELO_ALFAJORES]: 'https://alfajores-blockscout.celo-testnet.org',\n  [ChainId.BNB]: 'https://bscscan.com',\n  [ChainId.AVALANCHE]: 'https://snowtrace.io',\n  [ChainId.BASE]: 'https://basescan.org',\n}\n\nexport enum ExplorerDataType {\n  TRANSACTION = 'transaction',\n  TOKEN = 'token',\n  ADDRESS = 'address',\n  BLOCK = 'block',\n  NATIVE = 'native',\n}\n\n/**\n * Return the explorer link for the given data and data type\n * @param chainId the ID of the chain for which to return the data\n * @param data the data to return a link for\n * @param type the type of the data\n */\nexport function getExplorerLink(chainId: number, data: string, type: ExplorerDataType): string {\n  const prefix = BLOCK_EXPLORER_PREFIXES[chainId] ?? 'https://etherscan.io'\n\n  switch (type) {\n    case ExplorerDataType.TRANSACTION:\n      return `${prefix}/tx/${data}`\n\n    case ExplorerDataType.TOKEN:\n      return `${prefix}/token/${data}`\n\n    case ExplorerDataType.BLOCK:\n      return `${prefix}/block/${data}`\n\n    case ExplorerDataType.ADDRESS:\n      return `${prefix}/address/${data}`\n    default:\n      return `${prefix}`\n  }\n}\n\nexport const currentTimestamp = () => new Date().getTime()\n\n// shorten the checksummed version of the input address to have 0x + 4 characters at start and end\nexport function shortenAddress(address: string, chars = 4): string {\n  const parsed = isAddress(address)\n  if (!parsed) {\n    throw Error(`Invalid 'address' parameter '${address}'.`)\n  }\n  return `${parsed.substring(0, chars + 2)}...${parsed.substring(42 - chars)}`\n}\n\n// add 10%\nexport function calculateGasMargin(value: BigNumber): BigNumber {\n  return value.mul(BigNumber.from(10000).add(BigNumber.from(1000))).div(BigNumber.from(10000))\n}\n\n// converts a basis points value to a sdk percent\nexport function basisPointsToPercent(num: number): Percent {\n  return new Percent(JSBI.BigInt(num), JSBI.BigInt(10000))\n}\n\nconst ONE = new Fraction(1, 1)\nexport function calculateSlippageAmount(value: CurrencyAmount<Currency>, slippage: Percent): [JSBI, JSBI] {\n  if (slippage.lessThan(0) || slippage.greaterThan(ONE)) throw new Error('Unexpected slippage')\n  return [value.multiply(ONE.subtract(slippage)).quotient, value.multiply(ONE.add(slippage)).quotient]\n}\n// account is not optional\nexport function getSigner(library: Web3Provider, account: string): JsonRpcSigner {\n  return library.getSigner(account).connectUnchecked()\n}\n\n// account is optional\nexport function getProviderOrSigner(library: Web3Provider, account?: string): Web3Provider | JsonRpcSigner {\n  return account ? getSigner(library, account) : library\n}\n\n// account is optional\nexport function getContract(address: string, ABI: any, library: Web3Provider, account?: string): Contract {\n  if (!isAddress(address) || address === AddressZero) {\n    throw Error(`Invalid 'address' parameter '${address}'.`)\n  }\n\n  return new Contract(address, ABI, getProviderOrSigner(library, account) as any)\n}\n\nexport function escapeRegExp(string: string): string {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\nexport function isTokenOnList(tokenAddressMap: TokenAddressMap, token?: Token): boolean {\n  return Boolean(token?.isToken && tokenAddressMap[token.chainId]?.[token.address])\n}\n\nexport function feeTierPercent(fee: number): string {\n  return (fee / 10000).toPrecision(1) + '%'\n}\n\nexport function notEmpty<TValue>(value: TValue | null | undefined): value is TValue {\n  return value !== null && value !== undefined\n}\n"
  },
  {
    "path": "src/utils/isZero.ts",
    "content": "/**\n * Returns true if the string value is zero in hex\n * @param hexNumberString\n */\nexport default function isZero(hexNumberString: string) {\n  return /^0x0*$/.test(hexNumberString)\n}\n"
  },
  {
    "path": "src/utils/listSort.ts",
    "content": "import { DEFAULT_LIST_OF_LISTS } from './../constants/lists'\n\n// use ordering of default list of lists to assign priority\nexport default function sortByListPriority(urlA: string, urlB: string) {\n  const first = DEFAULT_LIST_OF_LISTS.includes(urlA) ? DEFAULT_LIST_OF_LISTS.indexOf(urlA) : Number.MAX_SAFE_INTEGER\n  const second = DEFAULT_LIST_OF_LISTS.includes(urlB) ? DEFAULT_LIST_OF_LISTS.indexOf(urlB) : Number.MAX_SAFE_INTEGER\n\n  // need reverse order to make sure mapping includes top priority last\n  if (first < second) return 1\n  else if (first > second) return -1\n  return 0\n}\n"
  },
  {
    "path": "src/utils/listVersionLabel.ts",
    "content": "import { Version } from '@uniswap/token-lists'\n\nexport default function listVersionLabel(version: Version): string {\n  return `v${version.major}.${version.minor}.${version.patch}`\n}\n"
  },
  {
    "path": "src/utils/networkPrefix.ts",
    "content": "import { EthereumNetworkInfo, NetworkInfo } from 'constants/networks'\n\nexport function networkPrefix(activeNewtork: NetworkInfo) {\n  const isEthereum = activeNewtork === EthereumNetworkInfo\n  if (isEthereum) {\n    return '/'\n  }\n  const prefix = '/' + activeNewtork.route.toLocaleLowerCase() + '/'\n  return prefix\n}\n"
  },
  {
    "path": "src/utils/numbers.ts",
    "content": "import numbro from 'numbro'\n\n// using a currency library here in case we want to add more in future\nexport const formatDollarAmount = (num: number | undefined, digits = 2, round = true) => {\n  if (num === 0) return '$0.00'\n  if (!num) return '-'\n  if (num < 0.001 && digits <= 3) {\n    return '<$0.001'\n  }\n\n  return numbro(num).formatCurrency({\n    average: round,\n    mantissa: num > 1000 ? 2 : digits,\n    abbreviations: {\n      million: 'M',\n      billion: 'B',\n    },\n  })\n}\n\n// using a currency library here in case we want to add more in future\nexport const formatAmount = (num: number | undefined, digits = 2) => {\n  if (num === 0) return '0'\n  if (!num) return '-'\n  if (num < 0.001) {\n    return '<0.001'\n  }\n  return numbro(num).format({\n    average: true,\n    mantissa: num > 1000 ? 2 : digits,\n    abbreviations: {\n      million: 'M',\n      billion: 'B',\n    },\n  })\n}\n"
  },
  {
    "path": "src/utils/parseENSAddress.test.ts",
    "content": "import { parseENSAddress } from './parseENSAddress'\n\ndescribe('parseENSAddress', () => {\n  it('test cases', () => {\n    expect(parseENSAddress('hello.eth')).toEqual({ ensName: 'hello.eth', ensPath: undefined })\n    expect(parseENSAddress('hello.eth/')).toEqual({ ensName: 'hello.eth', ensPath: '/' })\n    expect(parseENSAddress('hello.world.eth/')).toEqual({ ensName: 'hello.world.eth', ensPath: '/' })\n    expect(parseENSAddress('hello.world.eth/abcdef')).toEqual({ ensName: 'hello.world.eth', ensPath: '/abcdef' })\n    expect(parseENSAddress('abso.lutely')).toEqual(undefined)\n    expect(parseENSAddress('abso.lutely.eth')).toEqual({ ensName: 'abso.lutely.eth', ensPath: undefined })\n    expect(parseENSAddress('eth')).toEqual(undefined)\n    expect(parseENSAddress('eth/hello-world')).toEqual(undefined)\n    expect(parseENSAddress('hello-world.eth')).toEqual({ ensName: 'hello-world.eth', ensPath: undefined })\n    expect(parseENSAddress('-prefix-dash.eth')).toEqual(undefined)\n    expect(parseENSAddress('suffix-dash-.eth')).toEqual(undefined)\n    expect(parseENSAddress('it.eth')).toEqual({ ensName: 'it.eth', ensPath: undefined })\n    expect(parseENSAddress('only-single--dash.eth')).toEqual(undefined)\n  })\n})\n"
  },
  {
    "path": "src/utils/parseENSAddress.ts",
    "content": "const ENS_NAME_REGEX = /^(([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+)eth(\\/.*)?$/\n\nexport function parseENSAddress(ensAddress: string): { ensName: string; ensPath: string | undefined } | undefined {\n  const match = ensAddress.match(ENS_NAME_REGEX)\n  if (!match) return undefined\n  return { ensName: `${match[1].toLowerCase()}eth`, ensPath: match[4] }\n}\n"
  },
  {
    "path": "src/utils/queries.ts",
    "content": "import { ApolloClient, NormalizedCacheObject } from '@apollo/client'\nimport dayjs from 'dayjs'\n\n/**\n * Used to get large amounts of data when\n * @param query\n * @param localClient\n * @param vars - any variables that are passed in every query\n * @param values - the keys that are used as the values to map over if\n * @param skipCount - amount of entities to skip per query\n */\nexport async function splitQuery<Type extends object>(\n  query: any,\n  client: ApolloClient<NormalizedCacheObject>,\n  vars: any[],\n  values: any[],\n  skipCount = 1000,\n) {\n  let fetchedData = {} as Type\n  let allFound = false\n  let skip = 0\n  try {\n    while (!allFound) {\n      let end = values.length\n      if (skip + skipCount < values.length) {\n        end = skip + skipCount\n      }\n      const sliced = values.slice(skip, end)\n      const result = await client.query<Type>({\n        query: query(...vars, sliced),\n        fetchPolicy: 'network-only',\n      })\n      fetchedData = {\n        ...fetchedData,\n        ...result.data,\n      }\n      if (Object.keys(result.data).length < skipCount || skip + skipCount > values.length) {\n        allFound = true\n      } else {\n        skip += skipCount\n      }\n    }\n    return fetchedData\n  } catch (e) {\n    console.log(e)\n    return undefined\n  }\n}\n\nexport function useDeltaTimestamps(): [number, number, number] {\n  const utcCurrentTime = dayjs()\n  const t1 = utcCurrentTime.subtract(1, 'day').startOf('minute').unix()\n  const t2 = utcCurrentTime.subtract(2, 'day').startOf('minute').unix()\n  const tWeek = utcCurrentTime.subtract(1, 'week').startOf('minute').unix()\n  return [t1, t2, tWeek]\n}\n"
  },
  {
    "path": "src/utils/resolveENSContentHash.ts",
    "content": "import { Contract } from '@ethersproject/contracts'\nimport { Provider } from '@ethersproject/abstract-provider'\nimport { namehash } from 'ethers'\n\nconst REGISTRAR_ABI = [\n  {\n    constant: true,\n    inputs: [\n      {\n        name: 'node',\n        type: 'bytes32',\n      },\n    ],\n    name: 'resolver',\n    outputs: [\n      {\n        name: 'resolverAddress',\n        type: 'address',\n      },\n    ],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n]\nconst REGISTRAR_ADDRESS = '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e'\n\nconst RESOLVER_ABI = [\n  {\n    constant: true,\n    inputs: [\n      {\n        internalType: 'bytes32',\n        name: 'node',\n        type: 'bytes32',\n      },\n    ],\n    name: 'contenthash',\n    outputs: [\n      {\n        internalType: 'bytes',\n        name: '',\n        type: 'bytes',\n      },\n    ],\n    payable: false,\n    stateMutability: 'view',\n    type: 'function',\n  },\n]\n\n// cache the resolver contracts since most of them are the public resolver\nfunction resolverContract(resolverAddress: string, provider: Provider): Contract {\n  return new Contract(resolverAddress, RESOLVER_ABI, provider)\n}\n\n/**\n * Fetches and decodes the result of an ENS contenthash lookup on mainnet to a URI\n * @param ensName to resolve\n * @param provider provider to use to fetch the data\n */\nexport default async function resolveENSContentHash(ensName: string, provider: Provider): Promise<string> {\n  const ensRegistrarContract = new Contract(REGISTRAR_ADDRESS, REGISTRAR_ABI, provider)\n  const hash = namehash(ensName)\n  const resolverAddress = await ensRegistrarContract.resolver(hash)\n  return resolverContract(resolverAddress, provider).contenthash(hash)\n}\n"
  },
  {
    "path": "src/utils/retry.test.ts",
    "content": "import { retry, RetryableError } from './retry'\n\ndescribe('retry', () => {\n  function makeFn<T>(fails: number, result: T, retryable = true): () => Promise<T> {\n    return async () => {\n      if (fails > 0) {\n        fails--\n        throw retryable ? new RetryableError('failure') : new Error('bad failure')\n      }\n      return result\n    }\n  }\n\n  it('fails for non-retryable error', async () => {\n    await expect(retry(makeFn(1, 'abc', false), { n: 3, maxWait: 0, minWait: 0 }).promise).rejects.toThrow(\n      'bad failure',\n    )\n  })\n\n  it('works after one fail', async () => {\n    await expect(retry(makeFn(1, 'abc'), { n: 3, maxWait: 0, minWait: 0 }).promise).resolves.toEqual('abc')\n  })\n\n  it('works after two fails', async () => {\n    await expect(retry(makeFn(2, 'abc'), { n: 3, maxWait: 0, minWait: 0 }).promise).resolves.toEqual('abc')\n  })\n\n  it('throws if too many fails', async () => {\n    await expect(retry(makeFn(4, 'abc'), { n: 3, maxWait: 0, minWait: 0 }).promise).rejects.toThrow('failure')\n  })\n\n  it('cancel causes promise to reject', async () => {\n    const { promise, cancel } = retry(makeFn(2, 'abc'), { n: 3, minWait: 100, maxWait: 100 })\n    cancel()\n    await expect(promise).rejects.toThrow('Cancelled')\n  })\n\n  it('cancel no-op after complete', async () => {\n    const { promise, cancel } = retry(makeFn(0, 'abc'), { n: 3, minWait: 100, maxWait: 100 })\n    // defer\n    setTimeout(cancel, 0)\n    await expect(promise).resolves.toEqual('abc')\n  })\n\n  async function checkTime(fn: () => Promise<any>, min: number, max: number) {\n    const time = new Date().getTime()\n    await fn()\n    const diff = new Date().getTime() - time\n    expect(diff).toBeGreaterThanOrEqual(min)\n    expect(diff).toBeLessThanOrEqual(max)\n  }\n\n  it('waits random amount of time between min and max', async () => {\n    const promises = []\n    for (let i = 0; i < 10; i++) {\n      promises.push(\n        checkTime(\n          () => expect(retry(makeFn(4, 'abc'), { n: 3, maxWait: 100, minWait: 50 }).promise).rejects.toThrow('failure'),\n          150,\n          400,\n        ),\n      )\n    }\n    await Promise.all(promises)\n  })\n})\n"
  },
  {
    "path": "src/utils/retry.ts",
    "content": "function wait(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nfunction waitRandom(min: number, max: number): Promise<void> {\n  return wait(min + Math.round(Math.random() * Math.max(0, max - min)))\n}\n\n/**\n * This error is thrown if the function is cancelled before completing\n */\nexport class CancelledError extends Error {\n  constructor() {\n    super('Cancelled')\n  }\n}\n\n/**\n * Throw this error if the function should retry\n */\nexport class RetryableError extends Error {}\n\n/**\n * Retries the function that returns the promise until the promise successfully resolves up to n retries\n * @param fn function to retry\n * @param n how many times to retry\n * @param minWait min wait between retries in ms\n * @param maxWait max wait between retries in ms\n */\nexport function retry<T>(\n  fn: () => Promise<T>,\n  { n, minWait, maxWait }: { n: number; minWait: number; maxWait: number },\n): { promise: Promise<T>; cancel: () => void } {\n  let completed = false\n  let rejectCancelled: (error: Error) => void\n  const promise = new Promise<T>(async (resolve, reject) => {\n    rejectCancelled = reject\n    while (true) {\n      let result: T\n      try {\n        result = await fn()\n        if (!completed) {\n          resolve(result)\n          completed = true\n        }\n        break\n      } catch (error) {\n        if (completed) {\n          break\n        }\n        if (n <= 0 || !(error instanceof RetryableError)) {\n          reject(error)\n          completed = true\n          break\n        }\n        n--\n      }\n      await waitRandom(minWait, maxWait)\n    }\n  })\n  return {\n    promise,\n    cancel: () => {\n      if (completed) return\n      completed = true\n      rejectCancelled(new CancelledError())\n    },\n  }\n}\n"
  },
  {
    "path": "src/utils/tokens.ts",
    "content": "import { Token } from '@uniswap/sdk-core'\nimport { CeloNetworkInfo, NetworkInfo, PolygonNetworkInfo } from 'constants/networks'\nimport { CELO_ADDRESS, MATIC_ADDRESS, WETH_ADDRESSES } from '../constants'\n\nexport interface SerializedToken {\n  chainId: number\n  address: string\n  decimals: number\n  symbol?: string\n  name?: string\n}\n\nexport function serializeToken(token: Token): SerializedToken {\n  return {\n    chainId: token.chainId,\n    address: token.address,\n    decimals: token.decimals,\n    symbol: token.symbol,\n    name: token.name,\n  }\n}\n\nexport function formatTokenSymbol(address: string, symbol: string, activeNetwork?: NetworkInfo) {\n  // dumb catch for matic\n  if (address === MATIC_ADDRESS && activeNetwork === PolygonNetworkInfo) {\n    return 'MATIC'\n  }\n\n  // dumb catch for Celo\n  if (address === CELO_ADDRESS && activeNetwork === CeloNetworkInfo) {\n    return 'CELO'\n  }\n\n  if (WETH_ADDRESSES.includes(address)) {\n    return 'ETH'\n  }\n  return symbol\n}\n\nexport function formatTokenName(address: string, name: string, activeNetwork?: NetworkInfo) {\n  // dumb catch for matic\n  if (address === MATIC_ADDRESS && activeNetwork === PolygonNetworkInfo) {\n    return 'MATIC'\n  }\n\n  // dumb catch for Celo\n  if (address === CELO_ADDRESS && activeNetwork === CeloNetworkInfo) {\n    return 'CELO'\n  }\n\n  if (WETH_ADDRESSES.includes(address)) {\n    return 'Ether'\n  }\n  return name\n}\n"
  },
  {
    "path": "src/utils/uriToHttp.test.ts",
    "content": "import uriToHttp from './uriToHttp'\n\ndescribe('uriToHttp', () => {\n  it('returns .eth.link for ens names', () => {\n    expect(uriToHttp('t2crtokens.eth')).toEqual([])\n  })\n  it('returns https first for http', () => {\n    expect(uriToHttp('http://test.com')).toEqual(['https://test.com', 'http://test.com'])\n  })\n  it('returns https for https', () => {\n    expect(uriToHttp('https://test.com')).toEqual(['https://test.com'])\n  })\n  it('returns ipfs gateways for ipfs:// urls', () => {\n    expect(uriToHttp('ipfs://QmV8AfDE8GFSGQvt3vck8EwAzsPuNTmtP8VcQJE3qxRPaZ')).toEqual([\n      'https://cloudflare-ipfs.com/ipfs/QmV8AfDE8GFSGQvt3vck8EwAzsPuNTmtP8VcQJE3qxRPaZ/',\n      'https://ipfs.io/ipfs/QmV8AfDE8GFSGQvt3vck8EwAzsPuNTmtP8VcQJE3qxRPaZ/',\n    ])\n  })\n  it('returns ipns gateways for ipns:// urls', () => {\n    expect(uriToHttp('ipns://app.uniswap.org')).toEqual([\n      'https://cloudflare-ipfs.com/ipns/app.uniswap.org/',\n      'https://ipfs.io/ipns/app.uniswap.org/',\n    ])\n  })\n  it('returns empty array for invalid scheme', () => {\n    expect(uriToHttp('blah:test')).toEqual([])\n  })\n})\n"
  },
  {
    "path": "src/utils/uriToHttp.ts",
    "content": "/**\n * Given a URI that may be ipfs, ipns, http, or https protocol, return the fetch-able http(s) URLs for the same content\n * @param uri to convert to fetch-able http url\n */\nexport default function uriToHttp(uri: string): string[] {\n  const protocol = uri.split(':')[0].toLowerCase()\n  switch (protocol) {\n    case 'https':\n      return [uri]\n    case 'http':\n      return ['https' + uri.substr(4), uri]\n    case 'ipfs':\n      const hash = uri.match(/^ipfs:(\\/\\/)?(.*)$/i)?.[2]\n      return [`https://cloudflare-ipfs.com/ipfs/${hash}/`, `https://ipfs.io/ipfs/${hash}/`]\n    case 'ipns':\n      const name = uri.match(/^ipns:(\\/\\/)?(.*)$/i)?.[2]\n      return [`https://cloudflare-ipfs.com/ipns/${name}/`, `https://ipfs.io/ipns/${name}/`]\n    default:\n      return []\n  }\n}\n"
  },
  {
    "path": "src/utils/useDebouncedChangeHandler.tsx",
    "content": "import { useCallback, useEffect, useRef, useState } from 'react'\n\n/**\n * Easy way to debounce the handling of a rapidly changing value, e.g. a changing slider input\n * @param value value that is rapidly changing\n * @param onChange change handler that should receive the debounced updates to the value\n * @param debouncedMs how long we should wait for changes to be applied\n */\nexport default function useDebouncedChangeHandler<T>(\n  value: T,\n  onChange: (newValue: T) => void,\n  debouncedMs = 100,\n): [T, (value: T) => void] {\n  const [inner, setInner] = useState<T>(() => value)\n  const timer = useRef<ReturnType<typeof setTimeout>>()\n\n  const onChangeInner = useCallback(\n    (newValue: T) => {\n      setInner(newValue)\n      if (timer.current) {\n        clearTimeout(timer.current)\n      }\n      timer.current = setTimeout(() => {\n        onChange(newValue)\n        timer.current = undefined\n      }, debouncedMs)\n    },\n    [debouncedMs, onChange],\n  )\n\n  useEffect(() => {\n    if (timer.current) {\n      clearTimeout(timer.current)\n      timer.current = undefined\n    }\n    setInner(value)\n  }, [value])\n\n  return [inner, onChangeInner]\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"alwaysStrict\": true,\n    \"strictNullChecks\": true,\n    \"noUnusedLocals\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitAny\": true,\n    \"noImplicitThis\": true,\n    \"noImplicitReturns\": true,\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"downlevelIteration\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"types\": [\n      \"react-spring\",\n      \"jest\"\n    ],\n    \"baseUrl\": \"src\"\n  },\n  \"exclude\": [\n    \"node_modules\",\n    \"cypress\"\n  ],\n  \"include\": [\n    \"./src/**/*.ts\",\n    \"./src/**/*.tsx\",\n    \"src/components/Confetti/index.js\"\n  ]\n}\n"
  }
]