{
    "_format": "hh-sol-artifact-1",
    "contractName": "GlvReader",
    "sourceName": "contracts/reader/GlvReader.sol",
    "abi": [
      {
        "inputs": [],
        "name": "EmptyMarketTokenSupply",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "glv",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "market",
            "type": "address"
          }
        ],
        "name": "GlvNegativeMarketPoolValue",
        "type": "error"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getAccountGlvDeposits",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "callbackContract",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "uiFeeReceiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "market",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "initialLongToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "initialShortToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address[]",
                    "name": "longTokenSwapPath",
                    "type": "address[]"
                  },
                  {
                    "internalType": "address[]",
                    "name": "shortTokenSwapPath",
                    "type": "address[]"
                  }
                ],
                "internalType": "struct GlvDeposit.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "marketTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialLongTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialShortTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minGlvTokens",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "executionFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "callbackGasLimit",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvDeposit.Numbers",
                "name": "numbers",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "shouldUnwrapNativeToken",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "isMarketTokenDeposit",
                    "type": "bool"
                  }
                ],
                "internalType": "struct GlvDeposit.Flags",
                "name": "flags",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvDeposit.Props[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "account",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getAccountGlvWithdrawals",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "market",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "callbackContract",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "uiFeeReceiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address[]",
                    "name": "longTokenSwapPath",
                    "type": "address[]"
                  },
                  {
                    "internalType": "address[]",
                    "name": "shortTokenSwapPath",
                    "type": "address[]"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "glvTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minLongTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minShortTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "executionFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "callbackGasLimit",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Numbers",
                "name": "numbers",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "shouldUnwrapNativeToken",
                    "type": "bool"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Flags",
                "name": "flags",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvWithdrawal.Props[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "glv",
            "type": "address"
          }
        ],
        "name": "getGlv",
        "outputs": [
          {
            "components": [
              {
                "internalType": "address",
                "name": "glvToken",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "longToken",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "shortToken",
                "type": "address"
              }
            ],
            "internalType": "struct Glv.Props",
            "name": "",
            "type": "tuple"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          }
        ],
        "name": "getGlvBySalt",
        "outputs": [
          {
            "components": [
              {
                "internalType": "address",
                "name": "glvToken",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "longToken",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "shortToken",
                "type": "address"
              }
            ],
            "internalType": "struct Glv.Props",
            "name": "",
            "type": "tuple"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "key",
            "type": "bytes32"
          }
        ],
        "name": "getGlvDeposit",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "callbackContract",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "uiFeeReceiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "market",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "initialLongToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "initialShortToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address[]",
                    "name": "longTokenSwapPath",
                    "type": "address[]"
                  },
                  {
                    "internalType": "address[]",
                    "name": "shortTokenSwapPath",
                    "type": "address[]"
                  }
                ],
                "internalType": "struct GlvDeposit.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "marketTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialLongTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialShortTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minGlvTokens",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "executionFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "callbackGasLimit",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvDeposit.Numbers",
                "name": "numbers",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "shouldUnwrapNativeToken",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "isMarketTokenDeposit",
                    "type": "bool"
                  }
                ],
                "internalType": "struct GlvDeposit.Flags",
                "name": "flags",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvDeposit.Props",
            "name": "",
            "type": "tuple"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getGlvDeposits",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "callbackContract",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "uiFeeReceiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "market",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "initialLongToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "initialShortToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address[]",
                    "name": "longTokenSwapPath",
                    "type": "address[]"
                  },
                  {
                    "internalType": "address[]",
                    "name": "shortTokenSwapPath",
                    "type": "address[]"
                  }
                ],
                "internalType": "struct GlvDeposit.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "marketTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialLongTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialShortTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minGlvTokens",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "executionFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "callbackGasLimit",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvDeposit.Numbers",
                "name": "numbers",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "shouldUnwrapNativeToken",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "isMarketTokenDeposit",
                    "type": "bool"
                  }
                ],
                "internalType": "struct GlvDeposit.Flags",
                "name": "flags",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvDeposit.Props[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "glv",
            "type": "address"
          }
        ],
        "name": "getGlvInfo",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glvToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "longToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "shortToken",
                    "type": "address"
                  }
                ],
                "internalType": "struct Glv.Props",
                "name": "glv",
                "type": "tuple"
              },
              {
                "internalType": "address[]",
                "name": "markets",
                "type": "address[]"
              }
            ],
            "internalType": "struct GlvReader.GlvInfo",
            "name": "",
            "type": "tuple"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getGlvInfoList",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glvToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "longToken",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "shortToken",
                    "type": "address"
                  }
                ],
                "internalType": "struct Glv.Props",
                "name": "glv",
                "type": "tuple"
              },
              {
                "internalType": "address[]",
                "name": "markets",
                "type": "address[]"
              }
            ],
            "internalType": "struct GlvReader.GlvInfo[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "key",
            "type": "bytes32"
          }
        ],
        "name": "getGlvShift",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "fromMarket",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "toMarket",
                    "type": "address"
                  }
                ],
                "internalType": "struct GlvShift.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "marketTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minMarketTokens",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvShift.Numbers",
                "name": "numbers",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvShift.Props",
            "name": "",
            "type": "tuple"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getGlvShifts",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "fromMarket",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "toMarket",
                    "type": "address"
                  }
                ],
                "internalType": "struct GlvShift.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "marketTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minMarketTokens",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvShift.Numbers",
                "name": "numbers",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvShift.Props[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "address[]",
            "name": "marketAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "min",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "max",
                "type": "uint256"
              }
            ],
            "internalType": "struct Price.Props[]",
            "name": "indexTokenPrices",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "min",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "max",
                "type": "uint256"
              }
            ],
            "internalType": "struct Price.Props",
            "name": "longTokenPrice",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "min",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "max",
                "type": "uint256"
              }
            ],
            "internalType": "struct Price.Props",
            "name": "shortTokenPrice",
            "type": "tuple"
          },
          {
            "internalType": "address",
            "name": "glv",
            "type": "address"
          },
          {
            "internalType": "bool",
            "name": "maximize",
            "type": "bool"
          }
        ],
        "name": "getGlvTokenPrice",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "address[]",
            "name": "marketAddresses",
            "type": "address[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "min",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "max",
                "type": "uint256"
              }
            ],
            "internalType": "struct Price.Props[]",
            "name": "indexTokenPrices",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "min",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "max",
                "type": "uint256"
              }
            ],
            "internalType": "struct Price.Props",
            "name": "longTokenPrice",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "min",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "max",
                "type": "uint256"
              }
            ],
            "internalType": "struct Price.Props",
            "name": "shortTokenPrice",
            "type": "tuple"
          },
          {
            "internalType": "address",
            "name": "glv",
            "type": "address"
          },
          {
            "internalType": "bool",
            "name": "maximize",
            "type": "bool"
          }
        ],
        "name": "getGlvValue",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "key",
            "type": "bytes32"
          }
        ],
        "name": "getGlvWithdrawal",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "market",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "callbackContract",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "uiFeeReceiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address[]",
                    "name": "longTokenSwapPath",
                    "type": "address[]"
                  },
                  {
                    "internalType": "address[]",
                    "name": "shortTokenSwapPath",
                    "type": "address[]"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "glvTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minLongTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minShortTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "executionFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "callbackGasLimit",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Numbers",
                "name": "numbers",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "shouldUnwrapNativeToken",
                    "type": "bool"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Flags",
                "name": "flags",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvWithdrawal.Props",
            "name": "",
            "type": "tuple"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getGlvWithdrawals",
        "outputs": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "address",
                    "name": "glv",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "market",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "callbackContract",
                    "type": "address"
                  },
                  {
                    "internalType": "address",
                    "name": "uiFeeReceiver",
                    "type": "address"
                  },
                  {
                    "internalType": "address[]",
                    "name": "longTokenSwapPath",
                    "type": "address[]"
                  },
                  {
                    "internalType": "address[]",
                    "name": "shortTokenSwapPath",
                    "type": "address[]"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Addresses",
                "name": "addresses",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "glvTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minLongTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "minShortTokenAmount",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "updatedAtTime",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "executionFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "callbackGasLimit",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Numbers",
                "name": "numbers",
                "type": "tuple"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "shouldUnwrapNativeToken",
                    "type": "bool"
                  }
                ],
                "internalType": "struct GlvWithdrawal.Flags",
                "name": "flags",
                "type": "tuple"
              }
            ],
            "internalType": "struct GlvWithdrawal.Props[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "contract DataStore",
            "name": "dataStore",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "start",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "end",
            "type": "uint256"
          }
        ],
        "name": "getGlvs",
        "outputs": [
          {
            "components": [
              {
                "internalType": "address",
                "name": "glvToken",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "longToken",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "shortToken",
                "type": "address"
              }
            ],
            "internalType": "struct Glv.Props[]",
            "name": "",
            "type": "tuple[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      }
    ]
  }
  