diff --git a/.env b/.env index 8fc971b28..b66b837db 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ -VEGA_SIM_VEGA_TAG=c47229607908487b0d4fb31ec733435b994ff97a +VEGA_SIM_VEGA_TAG=0e9ea16c03e9ee5a83031ebab7aa37ce6b72e65a VEGA_SIM_CONSOLE_TAG=develop VEGA_DEFAULT_KEY_NAME='Key 1' VEGA_SIM_NETWORKS_INTERNAL_TAG=main -VEGA_SIM_NETWORKS_TAG=develop +VEGA_SIM_NETWORKS_TAG=master diff --git a/Jenkinsfile b/Jenkinsfile index 9d9912f8c..e203617a5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,7 +13,7 @@ pipeline { timeout(time: 50, unit: 'MINUTES') } parameters { - string( name: 'VEGA_VERSION', defaultValue: 'c47229607908487b0d4fb31ec733435b994ff97a', + string( name: 'VEGA_VERSION', defaultValue: '0e9ea16c03e9ee5a83031ebab7aa37ce6b72e65a', description: 'Git branch, tag or hash of the vegaprotocol/vega repository') string( name: 'JENKINS_SHARED_LIB_BRANCH', defaultValue: 'main', description: 'Git branch, tag or hash of the vegaprotocol/jenkins-shared-library repository') diff --git a/devops/example_tokens.json b/devops/example_tokens.json new file mode 100644 index 000000000..f7bfec4b5 --- /dev/null +++ b/devops/example_tokens.json @@ -0,0 +1,3 @@ +{ + "EXAMPLE_WALLET_NAME_1": "TOKEN_1" +} diff --git a/devops/scenario.py b/devops/scenario.py index 179dda5d6..41c78b83e 100644 --- a/devops/scenario.py +++ b/devops/scenario.py @@ -105,10 +105,12 @@ def _get_historic_price_process( price_process = get_historic_price_series( product_id=self.simulation_args.coinbase_code, granularity=self.simulation_args.granularity, - interpolation=f"{self.simulation_args.step_length_seconds}S" - if self.simulation_args.step_length_seconds - < self.simulation_args.granularity.value - else self.simulation_args.granularity.value, + interpolation=( + f"{self.simulation_args.step_length_seconds}S" + if self.simulation_args.step_length_seconds + < self.simulation_args.granularity.value + else self.simulation_args.granularity.value + ), start=str(start), end=str(end), ) @@ -136,10 +138,8 @@ def configure_agents( # Setup agent for proposing and settling the market market_manager = ConfigurableMarketManager( proposal_wallet_name=MARKET_CREATOR_AGENT.wallet_name, - proposal_wallet_pass=MARKET_CREATOR_AGENT.wallet_pass, proposal_key_name=MARKET_CREATOR_AGENT.key_name, termination_wallet_name=MARKET_SETTLER_AGENT.wallet_name, - termination_wallet_pass=MARKET_SETTLER_AGENT.wallet_pass, termination_key_name=MARKET_SETTLER_AGENT.key_name, market_config=MarketConfig(), market_name=self.market_manager_args.market_name, @@ -154,7 +154,6 @@ def configure_agents( # Setup agent for proving a market for traders market_maker = ExponentialShapedMarketMaker( wallet_name=MARKET_MAKER_AGENT.wallet_name, - wallet_pass=MARKET_MAKER_AGENT.wallet_pass, key_name=MARKET_MAKER_AGENT.key_name, market_name=self.market_manager_args.market_name, asset_name=self.market_manager_args.asset_name, @@ -178,7 +177,6 @@ def configure_agents( auction_pass_agents = [ OpenAuctionPass( wallet_name=party.wallet_name, - wallet_pass=party.wallet_pass, key_name=party.key_name, market_name=self.market_manager_args.market_name, asset_name=self.market_manager_args.asset_name, @@ -194,7 +192,6 @@ def configure_agents( random_market_order_traders = [ MarketOrderTrader( wallet_name=party.wallet_name, - wallet_pass=party.wallet_pass, key_name=party.key_name, market_name=self.market_manager_args.market_name, asset_name=self.market_manager_args.asset_name, @@ -211,7 +208,6 @@ def configure_agents( momentum_market_order_traders = [ MomentumTrader( wallet_name=party.wallet_name, - wallet_pass=party.wallet_pass, key_name=party.key_name, market_name=self.market_manager_args.market_name, asset_name=self.market_manager_args.asset_name, @@ -228,7 +224,6 @@ def configure_agents( sensitive_market_order_traders = [ PriceSensitiveMarketOrderTrader( wallet_name=party.wallet_name, - wallet_pass=party.wallet_pass, key_name=party.key_name, market_name=self.market_manager_args.market_name, asset_name=self.market_manager_args.asset_name, diff --git a/examples/nullchain.py b/examples/nullchain.py index 939cb6d5a..419d506f7 100644 --- a/examples/nullchain.py +++ b/examples/nullchain.py @@ -35,7 +35,7 @@ store_transactions=True, ) as vega: for wallet in wallets: - vega.create_wallet(wallet.name, wallet.passphrase) + vega.create_key(wallet.name) vega.mint( MM_WALLET.name, @@ -77,16 +77,16 @@ vega.create_simple_market( market_name="BTC:DAI_Mar22", - proposal_wallet=MM_WALLET.name, + proposal_key=MM_WALLET.name, settlement_asset_id=tdai_id, - termination_wallet=TERMINATE_WALLET.name, + termination_key=TERMINATE_WALLET.name, market_decimals=5, ) vega.wait_for_total_catchup() market_id = vega.all_markets()[0].id vega.submit_liquidity( - wallet_name=MM_WALLET.name, + key_name=MM_WALLET.name, market_id=market_id, commitment_amount=10000, fee=0.001, @@ -95,7 +95,7 @@ is_amendment=False, ) vega.submit_order( - trading_wallet=MM_WALLET.name, + trading_key=MM_WALLET.name, market_id=market_id, time_in_force="TIME_IN_FORCE_GTC", order_type="TYPE_LIMIT", @@ -104,7 +104,7 @@ price=100, ) vega.submit_order( - trading_wallet=MM_WALLET2.name, + trading_key=MM_WALLET2.name, market_id=market_id, time_in_force="TIME_IN_FORCE_GTC", order_type="TYPE_LIMIT", @@ -193,7 +193,7 @@ # ) to_cancel = vega.submit_order( - trading_wallet=MM_WALLET.name, + trading_key=MM_WALLET.name, market_id=market_id, time_in_force="TIME_IN_FORCE_GTC", order_type="TYPE_LIMIT", @@ -206,7 +206,7 @@ vega.cancel_order(MM_WALLET.name, market_id, to_cancel) vega.submit_order( - trading_wallet=MM_WALLET.name, + trading_key=MM_WALLET.name, market_id=market_id, time_in_force="TIME_IN_FORCE_GTC", order_type="TYPE_LIMIT", @@ -216,7 +216,7 @@ wait=True, ) vega.submit_simple_liquidity( - wallet_name=MM_WALLET.name, + key_name=MM_WALLET.name, market_id=market_id, commitment_amount=5000, fee=0.002, @@ -233,7 +233,7 @@ input("Pausing to observe the market, press Enter to continue.") vega.settle_market( - settlement_wallet=TERMINATE_WALLET.name, + settlement_key=TERMINATE_WALLET.name, settlement_price=100, market_id=market_id, ) diff --git a/parameter_results/TauScalingFactor/TauScalingFactor.ipynb b/parameter_results/TauScalingFactor/TauScalingFactor.ipynb index 79e6d620f..75b8f6636 100644 --- a/parameter_results/TauScalingFactor/TauScalingFactor.ipynb +++ b/parameter_results/TauScalingFactor/TauScalingFactor.ipynb @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "5e230b76", "metadata": {}, "outputs": [], @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "78ca09ea", "metadata": {}, "outputs": [], @@ -68,21 +68,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "3516be4e", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABRcAAAImCAYAAADJxL3DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACWB0lEQVR4nOzdd3hUZfr/8c+ZmSRAQkJvShNQ1oIF7AioaLBgWXsDfu5iA8uqK5ZFUFhxlaK4rLrrLrp+7XUtiLKuXUQRxK6IQUC6SEIoycyc5/dHMiczkwBzTiZMyft1XVwkJ2dOnimZc8997ud+LGOMEQAAAAAAAAC45Ev1AAAAAAAAAABkJpKLAAAAAAAAADwhuQgAAAAAAADAE5KLAAAAAAAAADwhuQgAAAAAAADAE5KLAAAAAAAAADwhuQgAAAAAAADAE5KLAAAAAAAAADwhuQgAAAAAAADAE5KLAAAAAAAAADxJm+RiZWWlNmzYUGt7OBxWaWlpCkYEAAAAZA7iaQAAkAppk1y87bbbdNZZZ8Vse+GFF9SyZUu1bNlSAwYM0Pr161M0OqBhLV26VJZlafLkyakeSqP39NNPq1WrViovL3e2devWTSNGjEjdoDywLEvjx49P9TDq5YEHHlCXLl1UUVGR6qEAQEYgnkZjRSydPoil08fs2bNVUFCgdevWpXooaATSJrn4xhtv6OKLL3a+r6ys1MiRIzVy5Ei98847CoVCGjt2bApHiGz38MMPy7IsWZal999/v9bPjTHq3LmzLMvSySefnIIRJu7xxx/XPffck/D+lZWVuvfee3XggQeqsLBQLVq00D777KNLLrlE3377rbPfhx9+qPHjx2vjxo2ex/a3v/1NDz/8sOfb78zLL78sn8+n1atXx2w/44wzdOKJJ+7wtuFwWOPGjdOVV16pgoKC7e739ddfa/z48Vq6dGkyhuzZrFmzMjbo+fDDD9W/f381a9ZMHTp00FVXXRUThErSiBEjVFlZqQcffDBFowSAzEI8jVQiliaWJpbeNd544w397ne/07777iu/369u3brVud+QIUPUs2dPTZo0adcOEI2TSRMtW7Y0n3/+ufP9f//7X9O0aVNTUVFhjDHmnXfeMV26dEnV8NAIzJw500gyTZo0MZdffnmtn7/11ltGksnLyzMnnXRSUn93SUmJkWTuvvvupBzvpJNOMl27dk14/5NPPtn4/X5z4YUXmhkzZph77rnHXHbZZWb33Xc3M2fOdPa7++67jSRTUlLieWz77LOPGThwoOfb78yll15q+vXrF7OtsrLSNG/e3Pz1r3/d4W1feOEFY1mWWbFiRcz2bdu2mcrKSuf7Z555xkgyb731VtLG7cWoUaPM9t7Gt27daoLB4C4eUWIWLlxomjRpYg488EBz//33m1tuucXk5eWZIUOG1Nr3hhtuMF27djW2badgpACQWYinkUrE0sTSxNK7xvDhw02TJk3MEUccYXbfffcdvlb/9re/mWbNmpmysrJdN0A0SoHUpDRrCwaDat68ufP9Rx99pIMOOki5ubmSpO7du2vNmjWpGh4akRNPPFHPPPOMpk+frkCg5k/k8ccfV9++fZM6nci2bVVWVibteF588skneuWVV/TnP/9ZN998c8zP/vrXv9brymoqzJo1K6ZqQ5Lee+89bdq0SSeddNIObztz5kwdeeSR2m233WK25+XlJX2cddm8ebPy8/OTcqwmTZok5TgN4eabb1bLli319ttvq7CwUFLVdJmRI0fqjTfe0PHHH+/se/bZZ+uuu+7SW2+9pWOOOSZVQwaAjEA8jXRALF2DWLoKsXRy3XHHHfrHP/6hnJwcnXzyyfryyy+3u+8ZZ5yhK6+8Us8880yt5xVIprSZFt25c2d98sknzvevvfaaBg4c6Hy/Zs0atWzZMhVDQyNz3nnn6ZdfftGcOXOcbZWVlXr22Wd1/vnn13mbyZMn64gjjlDr1q3VtGlT9e3bV88++2yt/SzL0ujRo/XYY49pn332UV5enmbPnl3nMY0xuuSSS5Sbm6vnn3/e2f5///d/6tu3r5o2bapWrVrp3HPP1fLly52fDxo0SK+++qp++uknZ2rK9krlJWnJkiWSpCOPPLLWz/x+v1q3bi1JGj9+vP74xz9KqvpwEjl2ZDrDzJkzdcwxx6hdu3bKy8vT3nvvrfvvvz/meN26ddNXX32ld955x7n9oEGDnJ9v3LhR11xzjTp37qy8vDz17NlTf/nLX2Tb9nbHH+2LL77Q8uXLawU+r776qvbee+8dPg7btm3T7NmzNXjw4Fo/i+4T8/DDDzv9rI4++mjnfrz99tvO/q+99pqOOuoo5efnq3nz5jrppJP01VdfxRxzxIgRKigo0JIlS3TiiSeqefPmuuCCCyRVBXBnnXWWunTpory8PHXu3Fl/+MMftHXr1pjbz5gxQ5KcMViW5fy8rj4xCxcu1AknnKDCwkIVFBTo2GOP1UcffRSzT2RK0wcffKBrr71Wbdu2VX5+vk4//fSk9GspKyvTnDlzdOGFFzqJRUkaNmyYCgoK9PTTT8fs37dvX7Vq1Ur/+c9/6v27ASDbEU8jHRBL1yCWrhk3sXRyYmlJ6tSpk3JychLat127durTpw+xNBpc2lQunn322brqqqu0fPlyffPNN/r4449j3kzffPNNHXDAAakbIBqNbt266fDDD9cTTzyhE044QVLVCa60tFTnnnuupk+fXus29957r0455RRdcMEFqqys1JNPPqmzzjpLr7zySq2T8//+9z89/fTTGj16tNq0aVPnSTocDuviiy/WU089pRdeeME5xp///GeNHTtWZ599tn7/+99r3bp1uu+++zRgwAAtXLhQLVq00C233KLS0lKtWLFC06ZNk6Qd9jzp2rWrJOmxxx7TkUceGXOFOdpvf/tbff/993riiSc0bdo0tWnTRpLUtm1bSdL999+vffbZR6eccooCgYBefvllXXHFFbJtW6NGjZIk3XPPPU4PlltuuUWS1L59e0nSli1bNHDgQP3888+69NJL1aVLF3344Ye66aabtGrVqoT63syaNUvt2rVTv379am3fWW+fTz/9VJWVlTrooIN2uN+AAQN01VVXafr06br55pv1m9/8RpKc/x999FENHz5cxcXF+stf/qItW7bo/vvvV//+/bVw4cKY5zsUCqm4uFj9+/fX5MmT1axZM0nSM888oy1btujyyy9X69at9fHHH+u+++7TihUr9Mwzz0iSLr30Uq1cuVJz5szRo48+utPH5quvvtJRRx2lwsJC3XDDDcrJydGDDz6oQYMG6Z133tGhhx4as/+VV16pli1baty4cVq6dKnuuecejR49Wk899ZSzT3l5ubZt27bT352Tk6OioiJJVUFrKBSq9Rzl5ubqgAMO0MKFC2vd/qCDDtIHH3yw098DAI0d8TTSAbE0sfSOEEvXL5b2om/fvnrxxRc93x5ISKrnZUds27bNjBw50rRt29Z07drVPPzwwzE/f/nll82HH36YotGhMYj0ifnkk0/MX//6V9O8eXOzZcsWY4wxZ511ljn66KONMcZ07dq1Vp+YyH4RlZWVZt999zXHHHNMzHZJxufzma+++ipme3SfmGAwaM455xzTtGlT8/rrrzv7LF261Pj9fvPnP/855rZffPGFCQQCMdvd9ImxbdsMHDjQSDLt27c35513npkxY4b56aefau27oz4x8Y+BMcYUFxebPfbYI2bb9vrETJgwweTn55vvv/8+ZvuNN95o/H6/WbZs2U7vy1FHHWWGDx8es+3HH39MqKfLQw89ZCSZL774otbPunbtGnPc7fWJ2bRpk2nRooUZOXJkzPbVq1eboqKimO3Dhw83ksyNN95Y6/fV9VhOmjTJWJYV87zsqE+MJDNu3Djn+9NOO83k5uaaJUuWONtWrlxpmjdvbgYMGOBsi/wdDB48OKbP4R/+8Afj9/vNxo0ba92Hnf2Lfr4jj927775ba8xnnXWW6dChQ63tl1xyiWnatGmd9xMAUIN4GqlELE0sTSzd8LF0vEReq3fccYeRZNasWbPD/YD6SJtp0Xl5efr73/+uJ554QldccYU2b94cs8rYySefrMMPPzyFI0RjcvbZZ2vr1q165ZVXtGnTJr3yyivbncYhSU2bNnW+/vXXX1VaWqqjjjpKCxYsqLXvwIEDtffee9d5nMrKSucq7axZs2J6zz3//POybVtnn3221q9f7/zr0KGDevXqpbfeesvTfbUsS6+//romTpyoli1b6oknntCoUaPUtWtXnXPOOQn3iYl+DEpLS7V+/XoNHDhQP/74o0pLS3d6+2eeeUZHHXWUWrZsGXP/Bg8erHA4rHfffXeHt9+4caPmzp1b5zSOoqIi9e/ff4e3/+WXXySpXtPF5syZo40bN+q8886LuQ9+v1+HHnponc/R5ZdfXmtb9GO5efNmrV+/XkcccYSMMXVW9u1MOBzWG2+8odNOO0177LGHs71jx446//zz9f7776usrCzmNpdccknM1JCjjjpK4XBYP/30k7Pthhtu0Jw5c3b6b8qUKc5tItNR6uq906RJk5jpKhEtW7bU1q1btWXLFtf3HQAaE+JppAtiaWJpL4ildx5LexF5TpLZ7xSIlzbTojdv3qwTTjhBc+fOVceOHbVy5Uo1b95c/fr107PPPluvMmDArbZt22rw4MF6/PHHtWXLFoXDYZ155pnb3f+VV17RxIkT9dlnn6miosLZHn1Ciejevft2jzNp0iSVl5frtddei+mfIkmLFy+WMUa9evWq87aJ9t2oS15enm655RbdcsstWrVqld555x3de++9evrpp5WTk6P/+7//2+kxPvjgA40bN05z586tlQQqLS3d6d/w4sWL9fnnnztTQ+KtXbt2h7d//fXXJSkmiJSqAqLjjz9+u1NU4hljEtqvLosXL5ak7S48Et1jUJICgYB23333WvstW7ZMt956q1566SX9+uuvMT9LJLiMt27dOm3ZskV77bVXrZ/95je/kW3bWr58ufbZZx9ne5cuXWL2iwQl0ePZe++9txvcb08k2Iv+O4nYtm1bTDAYEXlO6vp7AgDUIJ5GuiCWJpb2gli6YRBLY1dIm+TiLbfcovLyci1ZskThcFh9+vTR2rVrdfbZZ+u6667TQw89lOohopE5//zzNXLkSK1evVonnHCCWrRoUed+7733nk455RQNGDBAf/vb39SxY0fl5ORo5syZevzxx2vtX1fyJKK4uFizZ8/WXXfdpUGDBsWsUmbbtizL0muvvSa/31/rtjvqBeNGx44dde655+qMM87QPvvso6effloPP/zwDgOKJUuW6Nhjj1Xv3r01depUde7cWbm5uZo1a5amTZuWUBNp27Z13HHH6YYbbqjz53vuuecObz9r1iwdeeSRMYHXli1b9Pbbb9dqhl2XSLPtX3/9tc4gJRGR+/noo4+qQ4cOtX4e/xjm5eXJ54stIA+HwzruuOO0YcMGjRkzRr1791Z+fr5+/vlnjRgxIuGG3PVV12tMig0YS0tL66w0jJebm6tWrVpJqnp9SdKqVatq7bdq1Sp16tSp1vZff/1VzZo12+HfDgCAeBrphViaWNotYum6RcfSXkQSmpE+n0BDSJvk4nPPPad//etf6tKli3788UdJVVePbr31VhUXF6d4dGiMTj/9dF166aX66KOPYhrvxnvuuefUpEkTvf766zFTPWfOnOn6dx522GG67LLLdPLJJ+uss87SCy+84JxEe/ToIWOMunfvvtPgIBlXpXJyctSnTx8tXrzYmTKyveO+/PLLqqio0EsvvRRzla6uqQvbO0aPHj1UXl5e5wpzO2OM0ezZs3X99dfHbP/f//6niooKp5n4jvTu3VuSVFJSov3222+H++7oPkhVq7J5uR9S1YIn33//vR555BENGzbM2R694uLOxhGvbdu2atasmb777rtaP/v222/l8/nUuXNn12O9+uqr9cgjj+x0v4EDBzorAO67774KBAKaP3++zj77bGefyspKffbZZzHbIkpKSpwm3wCA7SOeRjohliaW3h5i6SpeYmkvSkpK1KZNm+1WtQLJkDY9F9etW1fnm3xhYWGd0+eAhlZQUKD7779f48eP19ChQ7e7n9/vl2VZCofDzralS5d6XpFr8ODBevLJJzV79mxddNFFztW13/72t/L7/brttttqTTcwxjh9TiQpPz8/4ZL/xYsXa9myZbW2R/qutGzZ0jkR5efnOz+LFrkyF38lrq6gMD8/v87eM2effbbmzp3rTMmIH0soFNruffjkk0+0du3aWj1iZs2apX79+jmr6O1I3759lZubq/nz5+903+09DsXFxSosLNQdd9yhYDBY63br1q3b6bHreiyNMbr33nsTHkddxzz++OP1n//8R0uXLnW2r1mzRo8//rj69+9fa5pJIrz0iSkqKtLgwYP1f//3f9q0aZOz/dFHH1V5ebnOOuusWr9nwYIFOuKII1yPDwAaG+JppBNiaWLp7SGWrrKrei5++umn9NtFg0ubysUOHTro559/VteuXWO2P/jgg+rXr1+KRoXGbvjw4Tvd56STTtLUqVM1ZMgQnX/++Vq7dq1mzJihnj176vPPP/f0e0877TTNnDlTw4YNU2FhoR588EH16NFDEydO1E033aSlS5fqtNNOU/PmzVVSUqIXXnhBl1xyiXO1sW/fvnrqqad07bXX6uCDD1ZBQcF2g7pFixbp/PPP1wknnKCjjjpKrVq10s8//6xHHnlEK1eu1D333OOcpPv27SupatrVueeeq5ycHA0dOlTHH3+8cnNzNXToUF166aUqLy/XP/7xD7Vr167W9Ne+ffvq/vvv18SJE9WzZ0+1a9dOxxxzjP74xz/qpZde0sknn6wRI0aob9++2rx5s7744gs9++yzWrp06XZL+V999VV169atVs+SWbNm6f/9v/+X0GPepEkTHX/88frvf/+r22+/fYf7HnDAAfL7/frLX/6i0tJS5eXl6ZhjjlG7du10//3366KLLtJBBx2kc889V23bttWyZcv06quv6sgjj9Rf//rXHR67d+/e6tGjh66//nr9/PPPKiws1HPPPVerX4xU83xcddVVKi4ult/v17nnnlvncSdOnKg5c+aof//+uuKKKxQIBPTggw+qoqJCd911V0KPUTyvfWL+/Oc/64gjjtDAgQN1ySWXaMWKFZoyZYqOP/54DRkyJGbfTz/9VBs2bNCpp57qaYwA0JgQTyPdEEsTS9eFWLqK11j6888/10svvSRJ+uGHH1RaWqqJEydKkvbff/+Y1+ratWv1+eefa9SoUZ7GCCRs1y1MvWMXXXSRueWWW4wxxixZssQEAgHTs2dP07ZtW7No0aIUjw6NwcyZM40k88knn+xwv65du5qTTjopZts///lP06tXL5OXl2d69+5tZs6cacaNG2fi/8QkmVGjRtU6ZklJiZFk7r777pjtf/vb34wkc/311zvbnnvuOdO/f3+Tn59v8vPzTe/evc2oUaPMd9995+xTXl5uzj//fNOiRQsjyXTt2nW792fNmjXmzjvvNAMHDjQdO3Y0gUDAtGzZ0hxzzDHm2WefrbX/hAkTzG677WZ8Pp+RZEpKSowxxrz00kumT58+pkmTJqZbt27mL3/5i/nXv/4Vs48xxqxevdqcdNJJpnnz5kaSGThwoPOzTZs2mZtuusn07NnT5ObmmjZt2pgjjjjCTJ482VRWVm73PvTr189cccUVMdu+/PJLI8l8/PHH271dvOeff95YlmWWLVsWs71r165m+PDhMdv+8Y9/mD322MP4/X4jybz11lvOz9566y1TXFxsioqKTJMmTUyPHj3MiBEjzPz58519hg8fbvLz8+scx9dff20GDx5sCgoKTJs2bczIkSPNokWLjCQzc+ZMZ79QKGSuvPJK07ZtW2NZVszrTZIZN25czHEXLFhgiouLTUFBgWnWrJk5+uijzYcffhizz/b+Dt56661a97M+3nvvPXPEEUeYJk2amLZt25pRo0aZsrKyWvuNGTPGdOnSxdi2nZTfCwDZjHgaqUQsTSxNLL1rYunI76jrX/zjfP/995tmzZrVGWcDyWQZU4/lnJLo559/1po1a3TQQQdpw4YNuvvuu9WjRw+deeaZ223+CwBr1qxRx44d9corr+jEE090tt91112aOnWqVq1alXA/lXA4rL333ltnn322JkyY0FBDRoIqKirUrVs33Xjjjbr66qtTPRwASHvE0wDcIpbObgceeKAGDRqkadOmpXooyHJpk1zcnm3btumpp55KqKQeQOPz/fff6/HHH9eYMWNiVg98+umnFQ6Hdd5557k63lNPPaXLL79cy5YtS9qqgfDmgQce0B133KHFixfHNHgHALhDPA1ge4ils9fs2bN15pln6scff1S7du1SPRxkubRJLlZWVuq5557T0qVLVVlZ6WwvLy/XlClTNG7cOEly/gcAAABQg3gaAACkQtokF88++2zNnj1b3bt3dxreSlIoFNJXX32l/fffX8YYLVy4MIWjBAAAANIT8TQAAEiFtEkutmrVSm+99Zb233//mO3r1q1T+/btZdt2ikYGAAAApD/iaQAAkAq+VA8gorS0VLvvvnut7caYhBvIAgAAAI0V8TQAAEiFtEkuzpw5U82bN6+1vaioSDNnzkzBiAAAAIDMQTwNAABSIW2mRW/P+vXrdfDBB6ukpCTVQwEAAAAyDvE0AABoSGmTXHzllVd03XXXaenSpQoGg9vdL75XTEVFhSoqKmJ+vmHDBrVu3ZrpHwAANGLGGG3atEmdOnWSz5c2kzWABkM8DQAAksVNLB3YRWPaqeuuu07HHXecjj322JjV7UpLSzV8+HC9+OKLdd5u0qRJuu2223bRKAEAQKZZvnx5nX3ogGxDPA0AAJItkVg6bSoXc3NztXz5crVv3z5m+9q1a9WhQ4ftrm4Xf6W1tLRUXbp00fLly1VYWNigYwYAAOmrrKxMnTt31saNG1VUVJTq4QANjngaAAAki5tYOm0qF3fffXfl5eXV2u73+9WtW7ft3i4vL6/O2xUWFhIMAQAApnWi0SCeBgAAyZZILJ02ycUff/yxzu2tW7fe7s8AAAAAVCGeBgAAqZA2yUU3fV7GjRvXgCMBAAAAMg/xNAAASIW0SS7+5z//SWg/YwzBEAAAABCHeBoAAKRC2iQXFyxYkOohAADqwRijUCikcDic6qGgkfD7/QoEAvRUBKoRTwNAZguHwwoGg6keBhqRnJwc+f3+eh8nbZKL0dauXauCggI1a9Ys1UMBACSgsrJSq1at0pYtW1I9FDQyzZo1U8eOHZWbm5vqoQBphXgaADJLeXm5VqxYIWNMqoeCRsSyLO2+++4qKCio13HSKrn4z3/+U+PGjdPKlSslST169ND48eN1wQUXpHhkAIDtsW1bJSUl8vv96tSpk3Jzc6kkQ4MzxqiyslLr1q1TSUmJevXqJZ/Pl+phASlHPA0AmSccDmvFihVq1qyZ2rZtSyyNXcIYo3Xr1mnFihXq1atXvSoY0ya5+OSTT+rqq6/WTTfdpB49euj3v/+9Jk6cqOuuu05bt27V73//+1QPEQBQh8rKStm2rc6dO1Mhg12qadOmysnJ0U8//aTKyko1adIk1UMCUop4GgAyUzAYlDFGbdu2VdOmTVM9HDQibdu21dKlSxUMBrMjuXjXXXdp0qRJuvLKK/Xjjz/Ksiydc845atKkiW666SaCIQBIc1SNIRV43QE1iKcBILNRsYhdLVmvubSJyL/55hsNGTKk1vYDDjhAJSUlKRgRAAAAkDmIpwEAQCqkTXIxPz9fFRUVtbYvXLhQ3bt3T8GIAAAAgMxBPA0AAFIhbZKL++23n+bPn+98HwqF9Oc//1kjR47UlVdemcKRAQCQud59910NHTpUnTp1kmVZevHFF1M9JAANhHgaAIDkIpZOTNokF6+55hr9+uuvkiS/36+WLVvqtdde09SpU3X55ZeneHQAACTGGKNQKJTqYTg2b96s/fffXzNmzEj1UAA0MOJpAECmI5bOTGmTXDz11FP1hz/8QZLUtWtXrVy5Uu+//74uuuiiFI8MAJCtBg0apNGjR2v06NEqKipSmzZtNHbsWBljnH0effRR9evXT82bN1eHDh10/vnna+3atc7P3377bVmWpddee019+/ZVXl6e3n//fS1ZskSnnnqq2rdvr4KCAh188MH673//G/P7u3XrpokTJ2rYsGEqKChQ165d9dJLL2ndunU69dRTVVBQoD59+sRUIrl1wgknaOLEiTr99NM9HwNAZiCeBgDsSsTSiEib5KJUlRH+xz/+oWuvvVbXXnut/v73v2vz5s2pHhYAwCVjjLZUhlLyLzqYScQjjzyiQCCgjz/+WPfee6+mTp2qhx56yPl5MBjUhAkTtGjRIr344otaunSpRowYUes4N954o+68805988036tOnj8rLy3XiiSfqzTff1MKFCzVkyBANHTpUy5Yti7ndtGnTdOSRR2rhwoU66aSTdNFFF2nYsGG68MILtWDBAvXo0UPDhg1z7teyZctUUFCww3933HGH+ycNQFYgngaAzEcsTSydaSzj9pXTQD7++GMNHTpUxhj16dNHkvT555/Lsiy9/PLLOuSQQxI6TllZmYqKilRaWqrCwsKGHDIAQNK2bdtUUlKi7t27q0mTJpKkLZUh7X3r6ykZz9e3F6tZbiChfQcNGqS1a9fqq6++kmVZkqoCm5deeklff/11nbeZP3++Dj74YG3atEkFBQV6++23dfTRR+vFF1/U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4om69NJLJUm33nqr7r//fh188ME666yzJEljxozR4YcfrjVr1qhDhw7q1KmTPvvssx3ep1atWiV8/1evXi1Jat++fcz29u3bOz9bvXq12rVrF/PzQCCgVq1aOfsAAAAgSYiliaUzDMlFAECjdthhh8myLOf7ww8/XFOmTFE4HJbf79enn36q8ePHa9GiRfr1119l27akqquee++9t3O76CuRklReXq7x48fr1Vdf1apVqxQKhbR169ZaV1v79OnjfB0JSvbbb79a29auXasOHTooEAioZ8+eSbr3AAAAgHfE0pBILgIAGkJOs6qrnqn63UmyefNmFRcXq7i4WI899pjatm2rZcuWqbi4WJWVlTH75ufHXuG9/vrrNWfOHE2ePFk9e/ZU06ZNdeaZZ9a6XU5OjvN1JDCra9v2ArG63Hzzzbr55psTuo8dOnSQJK1Zs0YdO3Z0tq9Zs0YHHHCAs090bxxJCoVC2rBhg3N7AAAAJAmxNLF0hiG5CABIPstyNZ0ileL7nHz00Ufq1auX/H6/vv32W/3yyy+688471blzZ0lKuCH0Bx98oBEjRjjNn8vLy7V06dJ6jzfZUzm6d++uDh066M0333QCoLKyMs2bN0+XX365pKor0Bs3btSnn36qvn37SpL+97//ybZtHXrooZ7uBwAAALaDWJpYOsOQXAQANGrLli3Ttddeq0svvVQLFizQfffdpylTpkiSunTpotzcXN1333267LLL9OWXX2rChAkJHbdXr156/vnnNXToUFmWpbFjxzpXTOvD7VSO8vJy/fDDD873JSUl+uyzz9SqVSt16dJFlmXpmmuu0cSJE9WrVy91795dY8eOVadOnXTaaadJkn7zm99oyJAhGjlypB544AEFg0GNHj1a5557rjp1SlE/IAAAAKQcsTSxtERyEQDQyA0bNkxbt27VIYccIr/fr6uvvlqXXHKJJKlt27Z6+OGHdfPNN2v69Ok66KCDNHnyZJ1yyik7Pe7UqVN18cUX64gjjlCbNm00ZswYlZWVNfTdqWX+/Pk6+uijne+vvfZaSdLw4cP18MMPS5JuuOEGbd68WZdccok2btyo/v37a/bs2WrSpIlzu8cee0yjR4/WscceK5/PpzPOOEPTp0/fpfcFAAAA6YVYmlhakixjXK4znubKyspUVFSk0tJSFRYWpno4AJD1tm3bppKS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2d61a9eEbl9WVqaioiKVlpaqsLCwXmMBAACZi5gA6aihY2mJeBoAANSfm3jAdeWiMUaWZdXavmLFChUVFbk9nOPbb7/VxRdfrI8++ihmu2VZMsbUCo4AAACATNNQsbREPA0AAFIj4eTigQceKMuyZFmWjj32WAUCNTcNh8MqKSnRkCFDPA/k97//vXJzczVr1ix17NixzqALAAAAyEQNHUtLxNMAACA1Ek4unnbaaZKkzz77TMXFxSooKHB+lpubq27duumMM87wPJDPPvtM8+fPV+/evT0fAwAAAEhHDR1LR45NPA0AAHa1hJOL48aNkyR169ZN55xzjpo0aZLUgey1115as2YNwRAAAACyTkPH0hLxNAAASA2f2xsMHz68QYKhu+66S2PGjNGcOXO0fv16lZaWxvwDAAAAMl1DxdIS8TQAAEgN16tFh8NhTZs2TU8//bSWLVumysrKmJ9v2LDB00D8fr/zdV1DSrQBNavbAQAAiZgA6amhYmmJeBoAACRPg64Wfdttt+mhhx7Sddddpz/96U+65ZZbtHTpUr344ou69dZbPQ/6rbfe8nxbAAAAIBM0VCwtEU8DAIDUcF252KNHD02fPl0nnXSSmjdvrs8++8zZ9tFHH+nxxx9vqLEmhCutAABAIiZAekr3WFribwcAALiLB1z3XFy9erX2228/SVJBQYHTv+Xkk0/Wq6++6mG4Vf785z87ja4lafbs2Tr11FM1evRobdy40fNxAQAAgHTRULG0RDwNAABSw3Vycffdd9eqVaskVV15feONNyRJn3zyifLy8jwP5IknnlDfvn0lSb/88ovOOOMMtW3bVnPnztWoUaM8HxcAAABIFw0VS0vE0wAAIDVc91w8/fTT9eabb+rQQw/VlVdeqQsvvFD//Oc/tWzZMv3hD3/wPJClS5dqn332kSTNmjVLe+65px566CEtXLhQxcXFno8LAAAApIuGiqUl4mkAAJAarpOLd955p/P1Oeeco65du+rDDz9Ur169NHToUM8Dadq0qbZt2yZJmjNnjo4//nhJUuvWrVVeXu75uAAAAEC6aKhYWiKeBgAAqeE6ufjuu+/qiCOOUCBQddPDDjtMhx12mEKhkN59910NGDDA00COOuoo3XTTTTr55JP17LPP6s0335Qk/fDDD+rcubOnYwIAAADppKFiaYl4GgAApIbrnotHH320NmzYUGt7aWmpjj76aM8DmTZtmtavX68bbrhBo0eP1uGHHy5J2rp1q26++WbPxwUAAADSRUPF0hLxNAAASA3XlYvGGFmWVWv7L7/8ovz8fM8DiUwJiXfSSSd5PiYAAACQThoqlpaIpwEAQGoknFz87W9/K0myLEsjRoyIWc0uHA7r888/1xFHHOHql//0008J79u1a1dXxwYAAADSRUPE0hLxNAAASL2Ek4tFRUWSqq62Nm/eXE2bNnV+lpubq8MOO0wjR4509cv32GMP5+qtMWaH+9q27erYAAAAQLpoiFhaIp4GAACpl3BycebMmZKkbt266frrr6/3tA1JWrhwofP1N998oxtvvFGjRo3SYYcdJkn66KOPdN999+muu+6q9+8CAAAAUqUhYmmJeBoAAKSeZXZ2iXMn3nnnHW3evFmHH364WrZs6fk4hx12mG688UaddtppMdtffPFF3X333frggw8SOk5ZWZmKiopUWlqqwsJCz+MBAACZjZgAmSBZsbREPA0AAJLHTTyQcOXiX/7yF5WXl2vChAmSqqZ0nHDCCXrjjTckSe3atdObb76pffbZx9OgFy1apN/85je1tv/mN7/RggULPB0TAAAASAcNHUtLxNMAACA1fInu+NRTT2nfffd1vn/22Wf17rvv6r333tP69evVr18/3XbbbZ4H0rNnT02dOlXhcNjZFg6HNWXKFPXs2dPzcQEAAIBUa+hYWiKeBgAAqZFw5WJJSYn69OnjfD9r1iydeeaZOvLIIyVJf/rTn3TWWWd5HsiMGTM0dOhQzZ49W3379pUkzZ8/X6WlpXr55Zc9HxcAAABItYaOpSXiaQAAkBoJVy6GQiHl5eU538+dO1dHHHGE832nTp20fv16zwMZMGCASkpKdNVVV6lly5Zq2bKlrrrqKi1dulQDBgzwfFwAAAAg1Ro6lpaIpwEAQGokXLnYo0cPvfvuu9pjjz20bNkyff/99zFByooVK9S6det6DaZVq1a67rrr6nUMAAAAIN3silhaIp4GAAC7XsLJxVGjRmn06NF677339NFHH+nwww/X3nvv7fz8f//7nw488MB6DWbVqlWaMWOGFixYoIKCAu2///4aPXq0ioqK6nVcAAAAIJV2RSwtEU8DAIBdL+Fp0SNHjtT06dO1YcMGDRgwQM8991zMz1euXKmLL77Y80CWLFmiAw88UM8//7zy8/P1n//8R++//7723HNPffnll56PCwAAAKRaQ8fSEvE0AABIDcsYY1I9CEk688wz5fP59OSTT+qnn35Snz59tGnTJo0dO1affvqpZs2aldBxysrKVFRUpNLSUhUWFjbwqAEAQLoiJkBjQzwNAACSxU08kHDlYkN76623dMMNN8jn8yk63zls2DC99957271dRUWFysrKYv6lo6nzp+rcV87VttA2SdKYZz/XuX+fq7CdFrldYNcrWyn99RBp3oOpHgm8em+K9LfDpS0bUj0S1NPLS17W0BeG6seNPyZ8m3dXvKsTnjtJR09/RPe/vaQBRwcgUZkUT3+1ZL5O/Me+mvTYiIRvs6lyk8586Uzd/9n9DTcwAGggP5b+qCHPDdEhjx2im9+7OSnH/Gr9Vzr2mWN1yGOH6I55dyTlmNE+mvF7fTfxUFVWbHN92y3BLTrr5bN0yGOH6PxXz1dluFKSdOnf+6vfzP1U/OzxrmJPSfp13SqV3N5Hc/891vV40t2aFUv00+37at6TkxK+zTfzXtfWcW21eELfBhxZYtImuVhRUaFWrVrV2r5lyxbl5+dv93aTJk1SUVGR869z584NOUzPXvnxFX31y1dasrHqA9gLC3/WRz9u0MqNW1M8MiBFls2V1n8nffl8qkcCr754Tlr7tfTzglSPBPU056c5Wlq2VPNWz0v4Nv9b9j+tKF+mnysX6uVFKxtwdAASlUnx9DuLntbyXEsLNn+W8G2+/uVrfffrd5pVklgFJgCkk09WfaKfy3/W1tBWvfzjy0rGJNIPV36otVvWamtoq1758ZUkjDLWb9bN0l6hb/XzD4tc3/b7X7/Xtxu+1dbQVn2x/guVlJbIDoc1N3ejKnzSys2rXMWekrTsi3fU3f5J7X5K/n1NteWL/qeu9nI1X5L4fQsHK9TUqlTABBtwZIlJm+Ri165dtXjx4phtK1as0JgxY3T88cdv93Y33XSTSktLnX/Lly9v6KF6EjZhSVLIhKr+t+3q/6lcRCNlh6v/D6V2HPAu8tzxHGa8yDkqHPm7dHEbWTZV+ECayKR4Ohyu+iBkK/H3j8h7lPP+AwAZJJILiEjGe1n0Md3EcYnym6q8RTjkPt4PxX1GCJmQQuGQjGU529yO2a4ehy8bzwNh9/fNDlWfSy1/gwzJjbRJLg4ZMkRPPfWU8/2WLVvUpUsXBYNBTZs2bbu3y8vLU2FhYcy/dBS0q570kB2SbRtFPoeFwnYKRwWkUPWHCtmpv8oCj2yew2wRCf7ig8BEbiPZCtqcy4B0kEnxdCQ2DrtILtZcpOeiFoDMUyvZloT3suhjNMR7Y0BVx7TD7uP9+GRqyA5pa+XmWtvcMNXj8Cv7zgO2h/tmIudSK9AgY3LDdXLx4osv1qZNm2pt37x5c71WuJsyZYr++c9/SpI6duyoWbNm6fvvv9ebb76p1q1bez5uunCutNrhmGpFKhfRaDlVb1l41amxoHIxa0TOUfFBYCK3sawwlYuACw0VS0uZFU/b1e83YctFcrH6fNMQ1TkA0NDiKxWTUbkY/X7YEFXdflVdQI5UyLkR/14dtsOqDMb2bnQTe0qSbVO5GC1SyWkrAysXH3nkEW3dWrtP4NatW/Xvf/+7XoOxqstjmzZtquLiYvXs2bNex0snzrRoO+RMiZbEBzI0XiSmMl8kYAjzHGa6SGDn5gO7EwxatkJhzmVAohoylpYyJ54O25EPRC5uY9xfCAGAdNHQlYthE05KH8cIY9vKsared20P8X78/QubsCqClbHbXF4sMtVJTn8WJhdN9ePld3GOi1RypsO06IRrJ8vKymSMkTFGmzZtUpMmTZyfhcNhzZo1S+3atfM8kGOOOWaHfwhvvfWW52OnA2fKmQnFVCsGmRaNxipysvFQYo804Uxt50Nepos+R7m9jSw75qIZgLo1dCwtZVY87VQheqhcZFo0gEwUn0hLxntZfLViyISUY+XU+7iSFA6HnISRHarc4b51iY8rg3ZQlcHNO9xnZ5wEnLIwuVj92crn4r5FplLbvtRPi054BC1atJBlWbIsS3vuuWetn1uWpdtuu83zQA444ICY74PBoD7//HN9/vnnGjZsmOfjpgNjTEyz/HBUhQeVi2i0qFzMfDyHWSO6dUfCt3GCWRZ0ARLR0LG0lFnxdGRatJtLE05CMgsrVgBkvwZZ0CW+OtAOK8eXnORiKBSsSS56qFysa1p0MFS/ysXIjKlsTC7Kw5RvU/14ZFTl4ltvvSVjjI455hg999xzatWqlfOz3Nxcde3aVZ06dfI8kKlTp9a5fcKECSovL/d83HQQ/SYSMqGYxvdBppKhsaLqLfM5yUWqTzOdl0USIvtaVphzGZCAho6lpcyKpyPTokNULgJoJBpkWnQdi6YkSyhqCrOnBV3quL8Vwa073GdnItV9gSxc0CWSKAy4STpXPx4mDRZ0SXgEAwcOlCSVlJSoS5cuTj+Xhnb++efrkEMO0V/+8pdd8vsaQkyTVTu28T3VHmi0qHrLfCzKkzW8TIt2zm0WlYtAIlIVS0vpGU+HTViyvPVcZEEXAJmorkq+pB8ziZXd4VBNXGi8VC7WsYBNZVzPRc/Tok0WtuSxvUyLTp/KRdcLunTt2lXvv/++LrzwQh1xxBH6+eefJUmPPvqo3n///aQP8MMPP1Rubm7Sj7srRWfjg3YwpvF9kD5VaKzouZj5Is8dz2HG81INFHQqVsP0DwZc2NWxtJSe8XQ4UjHtIscafSEkmYsWAMCuUKsHoal/DB0fuwWTOKMoFKxwvvayWnRdlYuVofpVLiqLKxcjU75d3bfqx89kUs/FiOeee04XXXSRLrjgAi1YsEAVFVUvuNLSUt1xxx2aNWuWp4GcfvrpMd8bY7Rq1SrNnz9ft956q6djpovojH3YhGMWdAkzlQyNFVVvmY/q06zhpRrIObdRuQi40lCxtJRZ8bRd/R7ipXIx8nUgDaaBAUCi6uqPWO9jxvdxTOJnq+g+i8ZD0rLWlG0TUjBUv+pNU72/39XZI0N4WKzGpNG0aNeVixMnTtQDDzygf/zjH8rJqWkUeuSRR2rBggWeB9KyZcuYf23atNGxxx6rN954Q+PGjfN83HQQffUgZIcUiqrwYIVNNFpOz0Wq3jKSHZZUnVDiOcx49VstuuqiGVVEQGIaKpaWMiuerk/lYvzXAJAJGqTnYvwxXU4z3uGxoyoXTbIqF4PbYre5HW+4alp1jhWWybZcSvVnKlc9F6sf44xaLTriu+++04ABA2ptLyoq0saNGz0P5F//+pfn26a7+J6L0ZWLIao90FhR9ZbZop83qk8zXuQ85SbIjVQQWZZdfQyjgH/X9ZADMlVDxdJSZsXTkcrFsBJ/34h+j2LFaACZpq4ehPU+ZgP0cYyIWSHaw2e2usYWCsf1XHR73OjcSjikgC+9Wn7Uh+VUZWZm5aLrEXTo0EE//PCDunXrFrP9/fff1x577FGvwRhj9N///lfffPONJKl379467rjjdmnD64YQv1p0dM/FENOi0VjRczGzRT9vPIcZrz6rRUcmNYZso0Dqe0kDaa8hY2kpc+LpyIdqKhcBNBaZt1p0TYyfrNWiK0MVO9xnp6JnhQYrFcjJpuRipJ+k+8rFjOy5OHLkSF199dX617/+JcuytHLlSs2dO1fXX3+9xo4d63kgP/zwg0477TQtXrxYnTt3liQtX75ce+65p1544QX17NnT87FTLTpjH7JDMVOhqVxEo+WcSIxk25LPdZcGpJJdvyuZSC+RwM7NFfToadFV33M+AxLRULG0lFnxtF19YcK2LIVCQQUCOTu5Rex7FMlFAJkmvpIvGe9jtY6ZxGnRMQlFD2Otq+difOWi6+rN6ItMHqZqp7Xq+xawbBnblpXI5+PI45GJycUbb7xRtm3r2GOP1ZYtWzRgwADl5eXp+uuv15VXXul5IL/73e+022676c0331T79u0lSWvWrNFFF12kiy++WO+++67nY6daTOWiHYpd0CXb+gQAiYpPTmVRSXujEB3I0HMx43lZ0KUmuVg9LZpKfCAhDRVLS5kVT4ejKjMqQ5UJJRepXASQyWotvpKEadENsUhMRPQK0SbsIblYR+ViMD656HK8VnR7jFB2nQes6AtooaBycvN2fqNI5aKV+ulDrpOLoVBIt9xyi/74xz/qhx9+UHl5ufbee28VFBRo/fr1atOmjaeBfPzxx5o3b54TCElS+/btNXXqVB188MGejpku4vvDRE+FDvJhDI1VTA+PoCSSixklOqFIz8WM5yzo4qXnYnX1UZCLZUBCGiqWljIrng6bmveMiootatYkf6e3if5gTs9FAJkm06ZFh6MrAz0UE9TVYzJcz56L0cnF6AVnskFs4jSx5KIVqS5Ng8pF1/MQzz33XBljlJubq7333luHHHKICgoKtGbNGg0aNMjzQLp166bS0tJa2zdu3KgePXp4Pm462NG06DDTyNBYMa02s0U/Z/RczHjOgi6eVouuWdAFwM41VCwtZVY8HZkWLUkVcauHbk98TA0AmaRWlWFDVC4m8cJL9LToZFQuVi3oEvu5wfU07qhj2h7GlM6ik4vBYOUO9oxS/Xwb386r/xua6+TismXL9Pvf/z5m26pVqzRo0CD17t3b80CmT5+ua6+9Vq+//rrKyspUVlam119/XVdffbXuuecez8dNB/FTOKKnRQfDVHqgkYq++pVlJ4ZGoZ49WJA+jDGeFnRxgtfqnoucz4DENFQsLWVWPB2TXKzcmtBtYmLqJPYVA4BdIT7xF0xCa6H4acXJOGaEHapfvF9Xj8n4adFULtawos5rdoL9JJ3KRX/qKxddj2DWrFkaMGCArr32Wk2dOlUrV67U0Ucfrf33319PPvmk54EMGTJEknTCCSfEbLcsS8cff3zMNjvDpl7FNJ+OWy2aSg80WlQuZjZ6LmaN6HOUm6vdNcErlYuAGw0VS0uZFU97qlxkQRcAGawh+iM2RB/HiPou6BKf6AyZkHxx29yO18rqysWax8Jt5WI6TIt2PYK2bdvqjTfeUP/+/SVJr7zyig466CA99thj8tVjtdcXXnjB823TXfQfVdgOxyziwuqaaLRq9VxERqHnYtbwukBCJCC2nMpFzmdAIhoqlpYyK56O7rlYGXRfuZjMRQsAYFdokJ6LDXDMiJjqOQ9tkOIThyG7dnLRdeVi9GK5wez6DBlTuZhg4jSSbLXSYFq0p/Rm586dNWfOHB111FE67rjj9Oijj8qyrHoN5JRTTqnX7dNZfFVIdEIxxIcxNFZULmY2nr+sEXOOcvFhvWZaNJWLgFsNEUtLmRVP26p5z6gMJVahEb9IIgBkkroWOEn6MZN44cVEJQKtJEyLDtthheOSlK5Xi466v3aW9X33RS9aluB50XlefBmyWnTLli3rDHi2bNmil19+Wa1bt3a2bdiwwfNgtm7dqscee0wLFixQQUGB+vTpo3PPPVeBQOpLPOujVs/FqIRiKMOmeANJQ8/FzBau35VMpI/oc5SbPj01C7rQcxHYmV0VS0uZE0+HLQ+Vi8ZbpTUApIPMq1ysXzFB5D3bkiUjU+e0aLc9ImNWVE506nCG8MXctwR7LkbOi/4MqVzcFQ2g165dqwEDBmj9+vXq1auX5s+fr169emnSpEl6/fXXtfvuuzf4GBpK7dWio5OLVHqgkaLyLbPF9Fzk+ctkXiqBjDFR+1K5COzMrlpMJZPi6ejKxVCCFRqsFg0gk0Vipyb+JtoW3paUhaki74vJPGaECdevcjHyPt0k0ERbQ1sVskPyR7bZtrb5fO57LsZULmbXecAXPZvI5bTojOm5OHz4cElSKBTS448/ruLiYrVv3z6pAxkzZox22203zZ8/X+vWrVOfPn309ddf65JLLtF1112np556Kqm/b1eqXbkY1XORSg80VvRczGw2q0VnCy89F2MC1+rqIyrxge3bFbG0lFnxdDh6WnSCC7qwWjSATBZ5D8sL5FUlApNYuZjMY0bETDv28J7rjM2f5yQXA9WfIfKM0Ta5v1AUXfloJ3hhKlP4YlaLTmwl7Eiy1cq01aIDgYAuu+wyffPNN0kfyKxZs/Tcc8+poKBAa9eudbZfc801OvLII5P++3al6OCnVs9FKj3QWFG5mNl4/rKGl9Wio6uHIgu60EMY2LmGjKWlzIqnoysXg+EEey5Gx9Qs6AIgw0Qn26TkrhbtHDOJ/WhNVDGIp56L1WOJHpuzzZiYfRLlayyVi6HE7lskIWmlwbRo10vSHXLIIVq4cGHSB7Jp06Y6p2r4/f56r5yXarWmRUdVKzKNDI1WTHKKDwgZJ/r5o+diRvMyzTB2P6ZFA240VCwtZVY8HbaiFzhkWjSA7FcruZiERGBDJCwjjB2dXHR/3PixheyQwpFkaHVy0XXlYsyKytn1GcQn94vVZNy06GhXXHGFrrvuOq1YsUJ9+/ZVfn5+zM/79OnjaSC77babli5dqm7dujnbKisrNXHiRB111FGejpkudlS5GKTSA42VzYIgGS1McjhbBE3N31+iAV5MMFw9LTpIchFISEPF0lJmxdMxlYvBxKZ/MS0aQCaLr+Rzu5jJrjpmhAlF9Vz08J4bSXTmBWoSn2G7vsnFqARcKLs+Q8ZOi07svkVu40uDykXXycVzzz1XknTVVVc52yzLkjFGlmUpHPb2IfPYY4/VCy+8oEGDBkmqWumuZcuW6tKli2bPnu3pmOki+upB0A4qFHWlNkyPKjRWLAiS2WIqT7PrxN7YRJ+jEr2CHhO4WpHKRc5nQCIaKpaWMiuejr6XwQQvMka/R1G5CCDTOAuc+JtIStK06PhjJnFatGIqF92/50YuYEfGFjLVlYuW1MTztOiacZgs+wzij5kWnWhyMUN7LkpSSUlJQ4xDkydPVllZmSSpbdu2mjFjhnr06KFBgwYpEEj9A1Uf0R/CwnY4bhoIlR5opKI/SGTZiaFRYEGXrOFlQZfYnou2JEMlPpCghoqlpcyKp23LSLIkScGw+8pFei4CyDROlWF1JV8yV4t2jpnEuDx6tWhffSoXY6ZFhyVLyrOTUbmYXZ9B/NGJ0wQvujmVi4EMrFzs2rVrQ4xDBQUFKigokCQZY3TeeeepsLCwQX7XrhZ/lTWoqNWimUaGxoqei5mNnotZI2ZBlwT/FmsHwzY9F4EENVQsLWVWPB39bhNO8DwS/d7DtGgAmSZSdJSsykVjjPNemMxqSEd05aKHisjolaylqpjTrj6OU7nocrxeEnCZIqbnotvKRV8GJhcjvv76ay1btkyVlbENmE855RRPxwuHw5oyZYruvfderVq1SpLUsWNHXX311br++uvTrgm1GzFXWU045gNYiGlkaKxITmU2ei5mDS89zGoFglZYwTDnM8CNZMfSUmbF0+GYysUEV4umchFABqurkq9ex4tK+DnHTOKFl5jKxXqsFu1Mi65rQReX4/Wy6EmmiJ4WbSf4eEeSrVYmVi7++OOPOv300/XFF184/WGkql4xkjz3ifnjH/+oRx99VDfeeKMOPfRQSdLHH3+sO+64Q6tXr9bUqVM9HTcdxK9sFxTTooHYykWqDzIOPRezhpdp0bX2s6hcBBLVULG0lFnxdPS9DCV4HonvYw4AmSS+kq++icDoeKwhpkXHVi66P25dK1nbpupitNcFXaITcCacXZ8h/fWoXPRlYs/Fq6++Wt27d9ebb76p7t276+OPP9Yvv/yi6667TpMnT/Y8kJkzZ+rhhx/Wqaee6mzr37+/evTooREjRqRVMORW/BSOsGFaNEDPxQxHz8WsEXOOSjS5GB9gWmEulgEJaqhYWsqseDpsRX3tpXIxmYsWAMAuUFclXzKOl8xjxog6lpeei85iM4GqsQXtYM1j4DW5GH1pKssqFwNynziNVHL6/LkNMiY3XCcX586dq//9739q06aNfD6ffD6f+vfvr0mTJumqq67SwoULPQ3E5/Opd+/etbb37t077RpQuxVfFRKMmRbNhzE0UvRczGwx09pJLmay6EogIyPb2PJZO546GR8IWrI5nwEJaqhYWsqseNpT5SKrRQPIUMaYmgVdoir56iOmctFf09cwaWKSix56Lpq4ykUTll397h+pXEw09oyI7rloZ9lnEH9McjGxi26RSk5fGpzjXTdeCYfDat68uSSpTZs2WrlypaSq5tTfffed54FcfPHFmjp1asxUkHA4rMmTJ+viiy/2fNx0EN8fJqbnIj2q0FjRczGzxfRczK4Te2MT/wE9kQ/stXsu2vQQBhLUULG0lFnxdEzlYoLJxeip0PRcBJBJomd9RCr5kjotOkl9HKNZUZ/R/PVYLTq252JVvNgkpuAq8WPHVC5m2ey3QMxiNQn2XKx+PKxMnBa97777atGiRerevbsOPfRQ3XXXXcrN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1mtwyJAhqRlsGpk0aZIOPvhgNW/eXO3atdNpp52m7777Lmafbdu2adSoUWrdurUKCgp0xhlnaM2aNSkacfpI5LEbNGhQrdfdZZddlqIRp4f7779fffr0UWFhoQoLC3X44Yfrtddec37O6w3IHvy9e7ezx47zS2LuvPNOWZala665xtnG6y4xdT12vO5q29nnXF5v27ezx47X2/b9/PPPuvDCC9W6dWs1bdpU++23n+bPn+/8PJU5A5KLCXrqqad07bXXaty4cVqwYIH2339/FRcXa+3atakeWtrbZ599tGrVKuff+++/n+ohpaXNmzdr//3314wZM+r8+V133aXp06frgQce0Lx585Sfn6/i4mJt27ZtF480vezscZOkIUOGxLwGn3jiiV04wvT0zjvvaNSoUfroo480Z84cBYNBHX/88dq8ebOzzx/+8Ae9/PLLeuaZZ/TOO+9o5cqV+u1vf5vCUaeHRB47SRo5cmTM6+6uu+5K0YjTw+67764777xTn376qebPn69jjjlGp556qr766itJvN6AbMLfu3c7e+wkzi8788knn+jBBx9Unz59Yrbzutu57T12Eq+7uuzocy6vtx3bWY6A11ttv/76q4488kjl5OTotdde09dff60pU6aoZcuWzj4pzRkYJOSQQw4xo0aNcr4Ph8OmU6dOZtKkSSkcVfobN26c2X///VM9jIwjybzwwgvO97Ztmw4dOpi7777b2bZx40aTl5dnnnjiiRSMMD3FP27GGDN8+HBz6qmnpmQ8mWTt2rVGknnnnXeMMVWvr5ycHPPMM884+3zzzTdGkpk7d26qhpmW4h87Y4wZOHCgufrqq1M3qAzRsmVL89BDD/F6AxoB/t69izx2xnB+2ZlNmzaZXr16mTlz5sQ8Vrzudm57j50xvO7qsqPPubzedmxnOQJeb3UbM2aM6d+//3Z/nuqcAZWLCaisrNSnn36qwYMHO9t8Pp8GDx6suXPnpnBkmWHx4sXq1KmT9thjD11wwQVatmxZqoeUcUpKSrR69eqY12BRUZEOPfRQXoMJePvtt9WuXTvttddeuvzyy/XLL7+kekhpp7S0VJLUqlUrSdKnn36qYDAY85rr3bu3unTpwmsuTvxjF/HYY4+pTZs22nfffXXTTTdpy5YtqRheWgqHw3ryySe1efNmHX744bzegCzG37t38Y9dBOeX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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "experiment.plot_results(variables=[\"Market State\"])" ] @@ -99,21 +88,10 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "414938e1", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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IfG0J4mnJZ6WePrSx9Og9Vot+5mdjevv44cffrgo1xZ1R+V9a4W4zDVu3JhevXrxf//3fwwcOBDQfjjm5OQwfPhw5syZU+6c2bNnc/vttzNy5EiKi4v54osvuOeee1i+fHm5H2Dr1q3jq6++YuLEiYSFhVUY/DgcDsaMGcOXX37JkiVL3HW8+uqrTJkyhXvvvZe///3vpKWlMXfuXPr27csff/xBUFAQL774Ijk5OZw8eZJZs2YBYDabK73fVatW4XA4GD16dKVlRo8ezfr161m9ejV///vf3fs3btzIl19+yRNPPIGXlxcffPABt956K9u2baN9+/YApKSk0LNnT3dAFh4ezqpVqxg7diwWi4Unn3zS41qvv/46Op2OZ555hpycHN544w1GjhzJ1q1bK23f2TgcDmJjY+nRowdvvfUWa9eu5e2336ZZs2Y8+uijhIeHM2/ePB599FGGDRvGnXfeCUDHjh0B2L9/P9dddx3169fnueeew8/Pj6+++oo77riDb7/9lmHDhnlc77HHHiM8PJypU6e6nwh//vnnPPDAA8TGxjJz5kzy8/OZN28effr04Y8//nB/B+666y7279/P448/TuPGjUlNTWXNmjUkJCTQuHFj3n33XR5//HHMZjMvvvgiAJGRkef8DFauXMnNN9/sMSwiOTmZP/74g5dffvms5/72228oikKXLl3OWu7hhx/m9OnTrFmzhs8//7zC4wsXLuShhx7iiSeeID4+nvfee48//viDX3/9FaPR6C576NAh7rvvPh5++GHGjRtHq1atAG1Omnbt2nH77bdjMBhYtmwZjz32GE6nkwkTJgBU+zNytal79+7MmDGDlJQUZs+eza+//ur+N+Vyru+SS1ZWVpWCLl9fX3x9fQH4448/AOjWrZtHma5du6LT6fjjjz+4//773fvbtm2Lj48Pv/76a7nvoBBCCFHbJJ4uT+Jpiaclnr608XR1BQYG0qxZM3799Veeeuqp86pD1FGqEFeYBQsWqIC6fft29b333lP9/f3V/Px8VVVV9Z577lH79++vqqqqNmrUSB08eLDHua5yLsXFxWr79u3VG2+80WM/oOp0OnX//v0e++Pj41VAffPNN1Wbzab+7W9/U318fNQff/zRXeb48eOqXq9XX331VY9z9+7dqxoMBo/9gwcPVhs1alSl+37yySdVQP3jjz8q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dunSunVrFi1aVKUnrpW1rVmzZqxdu5brrrvunENmKrNs2TKKiopYunSpR6+BioZuVfUzatSoEaBNSn7mE/tDhw65j1dX9+7d3U+bz+bf//63e/VM1y83O3bs8Ah8d+zYgdPpLPfLj91uJzExkdtvv/282iiEEELUBImnS0k8LfG0xNNVdz7x9PmIj4+nU6dO532+qJtkDktxxTObzcybN49p06YxZMiQSsvp9XoURfF4AnT8+HG+//7787rugAED+OKLL1i9ejWjRo1yP+m688470ev1vPTSS+WejqqqSkZGhnvbz8+vynOQNGzYkIceeoi1a9cyb968csfnz5/PunXrGDt2LA0aNPA4tmXLFo85cxITE/nhhx+45ZZb0Ov16PV67rrrLr799lv27dtXru60tLQqtfFSc60sl52d7bE/IiKCfv368eGHH5KUlFTuvKq0PzY2loCAAF577TVsNluldeTn51NYWOhxrFmzZvj7+3sMi/Lz8yvXzsqsXLmSyMjIcitPr1y5slzQVZlevXqhqio7d+48Z1k/Pz+g/Od477334nA4mD59erlz7HZ7le7H9TS27Hc/Jyenwl9kqvoZdevWjYiICObPn+/xGa9atYoDBw5U+TM60/nMuXPjjTcSEhJS7t/gvHnz8PX1LdeWP//8k8LCQnr37n1ebRRCCCFqgsTTGomnJZ6WeLp6amIOy5ycHI4ePSrx9BVIeliKq0Jlwy7KGjx4MO+88w633norI0aMIDU1lffff5/mzZu7h35U1x133MGCBQsYPXo0AQEBfPjhhzRr1oxXXnmF559/nuPHj3PHHXfg7+9PfHw8S5YsYfz48TzzzDMAdO3alS+//JJJkybRvXt3zGbzWYPEWbNmcfDgQR577DFWr17tfvL7448/8sMPP3DDDTfw9ttvlzuvffv2xMbG8sQTT+Dl5cUHH3wAwEsvveQu8/rrr7N+/Xp69OjBuHHjaNu2LZmZmezatYu1a9eSmZl5Xp/RxeTj40Pbtm358ssvadmyJSEhIbRv35727dvz/vvv06dPHzp06MC4ceNo2rQpKSkpbNmyhZMnT7J79+6z1h0QEMC8efMYNWoU11xzDcOHDyc8PJyEhARWrFjBddddx3vvvcdff/3FTTfdxL333kvbtm0xGAwsWbKElJQUhg8f7q6va9euzJs3j1deeYXmzZsT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pYiIiIiIiIiIiKQNBSxFREREREREREQkbShgKSIiIiIiIiIiImlDAUsRERERERERERFJGwpYioiIiIiIiIiISNpQwFJERERERERERETShgKWIiIiIiIiIiIikjYUsBQREREREREREZG0oYCliIiIiIiIiIiIpA0FLEVERERERERERCRtKGApIiIiIiIiIiIiacMx0B3YX5imCYDP5xvgnoiIiMhA6RwHdI4LRGT3aCwtIiIisPvjaQUsd5Pf7wegqqpqgHsiIiIiA83v95Ofnz/Q3RDZb2gsLSIiIt3tajxtmJoisFvi8Tg1NTXk5uZiGMY+PbfP56OqqootW7aQl5e3T899oNO92zu6b3tP927v6L7tPd27vdNX9800Tfx+P4MGDcJmU2Udkd2lsXR60r3bO7pve0/3bu/ovu093bu905f3bXfH05phuZtsNhtDhgzp08/Iy8vTX6C9pHu3d3Tf9p7u3d7Rfdt7und7py/um2ZWiuw5jaXTm+7d3tF923u6d3tH923v6d7tnb66b7szntbUABEREREREREREUkbCliKiIiIiIiIiIhI2lDAMg243W5uvvlm3G73QHdlv6N7t3d03/ae7t3e0X3be7p3e0f3TeTgob/ve0/3bu/ovu093bu9o/u293Tv9k463DctuiMiIiIiIiIiIiJpQzMsRUREREREREREJG0oYCkiIiIiIiIiIiJpQwFLERERERERERERSRsKWIqIiIiIiIiIiEjaUMAyDdxzzz0MHz6cjIwMZs2axeLFiwe6S2ntJz/5CYZhpPwZP378QHcrLb3xxhuceeaZDBo0CMMw+M9//pOy3zRNfvzjH1NZWUlmZiZz5sxh7dq1A9PZNLKr+/bVr361x3fw1FNPHZjOppHbb7+dww8/nNzcXMrKyjj77LNZvXp1SptgMMi8efMoLi4mJyeH8847D4/HM0A9Th+7c++OP/74Ht+7b37zmwPU4/Rw7733MnXqVPLy8sjLy2P27Nk8//zzyf36vokcWPR3fu/s6r7p35fd8/Of/xzDMLjuuuuS2/Sd2z293Tt973q3q9919Z3r3a7um75vO7dt2zYuvvhiiouLyczMZMqUKXzwwQfJ/QMVN1DAcoA99thjzJ8/n5tvvpkPP/yQadOmMXfuXOrr6we6a2lt0qRJ1NbWJv+89dZbA92ltNTe3s60adO4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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "experiment.plot_results(variables=[\"Market Open Interest\"])" ] @@ -138,21 +116,10 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "ab7b688e", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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xdKCMps+ffo4J/0LL7wQzz33HJ577jn8+7//e9ax/exnP8O0adNw3HHHYdasWTj11FNx77334rLLLktb9+uvv8bFF1+McePGYebMmejZsyeuueYabNiwoU2fw4IFCzBu3DjXbPWePXvw2Wef4dxzz23xuR9++CEEQcCxxx7b4no33HCDU4Dcfv/PPfec6/Hf/va3+OEPf4g//elP+I//+A/MmzcP48ePTwumN23ahMsvvxzjxo3Dn/70JxxzzDEAzBo2gwcPxm233YaZM2di4MCB+OUvf+kEeQDwyCOP4NBDD8URRxzhjOH3v/991nHPnTsXl156KQKBAO69915cf/31eOWVV3DyySejvr7eta6u6xg/fjx69eqFhx56CKeeeipmzpyJJ5980rVeXV0d9u/f3+pfIpFwnvPZZ58BAEaPHu3a1qhRoyCKovO4zVFHHYVYLIYPPvgg63sjCIIgCKJ7QfE0xdM23TGezpWqqip897vfpXiaKA7FzlsniO5MLjV67rrrLrZv3z62Z88e9u6777Jjjz2WAWB///vfnXWvvvpqBoBt3bq11dcGwK677jq2b98+Vltby1auXMnOOOMMBoDNnDmTMcbYMcccw/r27csOHDjgPG/t2rVMFEU2ceJEZ1lVVRWbPHlyi6939dVXs8GDBzv3W6rRc8cdd7hq16xZs4YBYD/72c9c6910000MAFuyZImzbPDgwQwAW7ZsmbOstraWRSIR9pvf/KblD4Ux1tzczKLRKHv66addy5966ikWi8VYIpFo8flXXnkl69WrV9py+3vkt5utRs/777/PALB58+a5li9cuDBtuf1+Fy5cmLadTGMdP348O+yww1zLstXoWbp0KQPAli5dyhgz6yz17duX/eAHP3DVUHr99dcZADZt2jRnmb0v3n333a5tHnvssWzUqFGuZfZ7aO2P31cmT57MAoFA2pgZY6xPnz7ssssuS1v+ve99j51zzjkZn0MQBEEQRGlC8TTF0xRPty+e9lJeXt5izUvGGDvrrLPYkUce2eI6BNEZUM1LgigR7rjjDtxxxx3O/crKStx///2u2dW5c+fm1OXuqaeewlNPPeXcj0ajmDp1Km688Ubs3r0ba9aswc0334yamhpnnREjRmDcuHFYsGCBs6y6uhorV67Erl27MGDAgHa+w+zYrzV16lTX8t/85jd46KGH8MYbb+D00093lh911FE45ZRTnPt9+vTB8OHDsWXLllZfa8mSJZBlOa1G0YIFC3D66ae3WvvmwIEDrlqL7eHll19GVVUVxo0bh/379zvLR40ahYqKCixduhQ//elPneVDhw7F+PHj07bDj7WhoQGqquLUU0/FW2+9hYaGBlRVVeU0rlWrVjmuAb52z3nnnYcjjjgCb7zxBu666y7Xc7y1ik455RTXjDgAzJs3D8lkstXX52vrJJNJhMPhjOtFo9GM2+vZs6fr8yQIgiAIontB8TTF0xRPd6xWZc+ePdMynAiiEJB4SRAlwqRJk3DJJZdAFEVUV1fj+9//PiKRSIe2ef7552PKlCkQBAE9evTA97//fZSXlwMAvvnmGwDA8OHD05535JFH4q233kJzczPKy8vxwAMP4Oqrr8bAgQMxatQonHvuuZg4cWLeCjl/8803EEURhx9+uGt5//79UV1d7YzVZtCgQWnb6NmzZ1p9m0y88cYbGD16NPr16+csU1UVixYtwr333tum8TLG2rReNr766is0NDSgb9++GR+vra113R86dGjG9T744APccccdWLFiRVqKSHuCrZb2iSOOOALLly93LYtGo04tJptM38MPf/jDnMYBmIGkoigZH8tWYJ0x1uaaPgRBEARBdD0onqZ42obi6fZB8TRRLEi8JIgSYdiwYWlFqzvKoYcempdtXnrppTjllFPw6quv4u2338aDDz6I+++/H6+88kpeuyy29UQZCAQyLm9LELRgwQL8x3/8h2vZ8uXL0djY2Gp9HsCsmdSWoK4lDMNA3759MW/evIyPewOYTELd5s2bccYZZ+CII47Aww8/jIEDByIcDmPBggWYNWsWDMPo0BjbQrbvwcu+ffvaVHS8oqLC6YJ4yCGHQNd11NbWuoJSRVFw4MCBjI6Furo6DBs2rI2jJwiCIAiiq0HxNMXTNhRPt4+6ujr07t273c8niPZC4iVBEBkZPHgwALN4tZcvvvgCvXv3dmaVAVNM+uUvf4lf/vKXqK2txXHHHYc//vGPWYOtXGbsBg8eDMMw8NVXX+HII490lu/duxf19fXOWDvK+vXrsX379rQOiG+88QaOOuoop7tjSxxxxBGYN29em2Zis30G3/3ud7F48WL88Ic/bDWtJhv//Oc/Icsy5s+f75o5X7p0aZvH4YXfJ+zunDabNm1q9/dw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/vAHnH/++QCAZ599Fv369cNrr72Gyy67DBs3bsTChQvxySefYPTo0QCARx99FOeeey4eeughX88Ya9aFX5khoCEAaChikOAIVtZBMEfnZdwz2yxlES/t9ZgRdETLSDCAi0cdirik4QffMR08kiICsc4QL61xkvMyO9mcl91A8JWtgCMopte87LAY6Kl5uWZHHfY0Snjni72uGewNuxpx9g/6O87LSDCz8zLTeAJGSryUNCMtBco3dKGal/uT+/H0+qdx8fcuxtCqocUeTofhg+6yUATRkOhu2MOCuGTUoXh59beICJ6GPbrsOIXTnJeUNk4QncZpp53WYrMYQRBw99134+677866Tk1NDZ5//vnOGF5RUdPLwQEAZO6crEq5xYSaVSpJE8JAIAwDAkQwp5FPvth4cCMYGD4/8HmHtiMpGm4KvojtrC+a5StaXd+OSbrscTtbzUtPt/FoyNttPFvaeBgGg6txKQBAMKCwIMKCZjYMPe6qtFqWusdzVDLOS2vfmHL64QCA/176dV472TviZQvXa+GA27UaFk33o2qohRMvtXTxUuoEswcvXgbju9vkvLTrXha1pwZBtIGScl62xNatW7Fnzx6ceeaZzrKqqiqMGTMGK1asAACsWLEC1dXVjnAJAGeeeSZEUcTKlSszbleWZTQ2Nrr+ioFqHUzKDPMr04QiBglOt3FLHLEPhm0sGB331LyUsxy4HYcmC7nSMx66ZCSeuGoUvtPTDAwka7oyrycfwwAM2/HV9YW4dsFYBudlbvVPSxnbeRmyakvagZEgah0vXu9yXjY7wbCkGq4LhF31SVfauF3n0vV/FieoI14KKmTNx0177N91F5hEeH3z63j282cxb+O8Yg+lXexp3uOalbczAhgTEAuFTPHRlTYewHWnmCJthV2Dya55CSBspck5bgTLuSJR2jhBEEVAsZpZBDziLh9fanJuoqNhTcRrYgQQBCf1V5Hy67y0x9jRWLhC3oUpwX/gD8G/tqnmpR3vdNlyH1mcl1nTxlupealYviFB8MRdooomWM9ZdDvw6XOpxwaeCAD4kh3qHodd81JNpDf5KQbJemDV00DCXVpB1gz0w0EMEvbitOF9AADxfIqXVsxsOwwz4RUvI4GIs6zLOS+N1L4VURuQsMpPZat5CXBp40YXnYQgugxdRrzcs2cPAKBfv36u5f369XMe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sWPHQpIkPPzww6VuUtlywecmY+O1HTh6+uhSN6WyqGGRLkIIIYSQgcIdNt7AsPGyItB5aVC8rDQoXg4zgsLGmaSWDHdM00QymSx1Mxx6enowa9Ys3HXXXaVuSkVQp3N2u8/Ujip1CwghhBBCqgZdS0srdXRelhU5nZcqxctKgeLlMMMTNp7ibANJY5om9saTJfkzzcIrRi9YsADLly/H8uXL0djYiJaWFlx99dWe9/iv//ovHHbYYaivr0dbWxvOOOMM7Nixw1n/7LPPQpIkPP7445g9ezZ0Xccf/vAHvPPOOzjppJPQ2tqKuro6zJkzB7/97W89n7/vvvvihhtuwNlnn426ujpMmDABjzzyCD766COcdNJJqKurw8yZM7F+/fqif4vjjjsON9xwA0455ZSi34OQnFC8JIQQQggZMEIKw8bLFVWyfg/hvDRNE9FUFAC1kEqCZ9UwI6jaOMPGCQD0JlI4YNVvSvLZb17XgZpQ4Zej++67D0uXLsWLL76I9evXY9myZWhvb8d5550HAEgkErj++usxbdo07NixAytWrMCSJUvw2GOPed7n8ssvxy233IJJkyZhxIgReO+993D88cfjxhtvhK7r+MlPfoITTzwRmzdvRnt7u/O61atX49vf/jauvvpqrF69GmeddRbmz5+Pc889F9/73vewcuVKnH322XjjjTcgSRK2bduGAw44IOd3uvLKK3HllVf2Ya8R0g9GTSt1CwghhBBCqga385LVxssL4bxMmlakXcJIOOtY/6NyoHg5zAjJllAZT8URT8UBcLaBVB7jx4/H6tWrIUkSpk2bhtdffx2rV692xMtzzz3X2XbSpEm44447MGfOHHR3d6Ours5Zd9111+ELX/iC87y5uRmzZs1ynl9//fV46KGH8Mgjj2D58uXO8uOPPx7nn38+AGDVqlW4++67MWfOHCxevBgAsHLlSsybNw/bt29HW1sbxo4diw0bNuT8Ts3NzcXvEEIK5Sv/Cbz6P8Dnryp1SwghhBBCqgad1cbLFlmyfhsRNi5clwC1kEqCZ9UwwwkbN1iwh3iJaArevK6jZJ/dF4444ghIkuQ8nzdvHm699VakUikoioKXXnoJ11xzDV599VV8+umnMAwDADIckIcddpjnfbu7u3HNNdfg17/+NT788EMkk0n09vZi27Ztnu1mzpzpPG5tbQUAzJgx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pFx44YVmY2Oj+eyzz5offvih87d3715nmwsuuMBsb283n376aXP9+vXmvHnzzHnz5pWw1eVBvn23ZcsW87rrrjPXr19vbt261fzlL39pTpo0yTzqqKNK3PLScvnll5vPPfecuXXrVvO1114zL7/8clOSJPPJJ580TZPHGyHVBM/34sm173h/6Rv+isU87grHve943AWTb5zL4y07ufYdj7fsvPjii6aqquaNN95ovv322+b9999v1tTUmP/93//tbFNKzYDiZRlx5513mu3t7WYoFDIPP/xw8/nnny91k8qer371q+aYMWPMUChk7rPPPuZXv/pVc8uWLaVuVlnyzDPPmAAy/s455xzTNE3TMAzz6quvNltbW01d181jjjnG3Lx5c2kbXQbk2m979+41jz32WHPUqFGmpmnmhAkTzPPOO4+TDqYZuM8AmD/+8Y+dbXp7e81/+Zd/MUeMGGHW1NSYp5xyivnhhx+WrtFlQr59t23bNvOoo44ym5ubTV3XzSlTppiXXXaZuXv37tI2vMSce+655oQJE8xQKGSOGjXKPOaYYxwhwzR5vBFSTfB8L55c+473l77hFy953BWOe9/xuAsm3ziXx1t2cu07Hm+5+dWvfmUedNBBpq7r5vTp0817773Xs76UmoFkmqY5+P5OQgghhBBCCCGEEEII6RvMeUkIIYQQQgghhBBCCClLKF4SQgghhBBCCCGEEELKEoqXhBBCCCGEEEIIIYSQsoTiJSGEEEIIIYQQQgghpCyheEkIIYQQQgghhBBCCClLKF4SQgghhBBCCCGEEELKEoqXhBBCCCGEEEIIIYSQsoTiJSGEEEIIIYQQQgghpCyheEkIIVlYsmQJTj755FI3gxBCCCGEkIqDfWlCyEChlroBhBBSCiRJyrn+W9/6Fm6//XaYpjlELSKEEEIIIaQyYF+aEDKUSCavJoSQYUhnZ6fz+Kc//SlWrVqFzZs3O8vq6upQV1dXiqYRQgghhBBS1rAvTQgZShg2TggZlrS1tTl/jY2NkCTJs6yuri4j1GXBggX413/9V1xyySUYMWIEWltb8R//8R/o6enBP/3TP6G+vh5TpkzB448/7vmsjRs34rjjjkNdXR1aW1tx1lln4eOPPx7ib0wIIYQQQsjAwL40IWQooXhJCCF94L777kNLSwtefPFF/Ou//isuvPBCLF68GPPnz8fLL7+MY489FmeddRb27t0LANi1axc+//nP45BDDsH69evxxBNPYPv27fiHf/iHEn8TQgghhBBChhb2pQkhxUDxkhBC+sCsWbNw1VVXYerUqbjiiisQDofR0tKC8847D1OnTsWqVavwySef4LXXXgMA/OAHP8AhhxyCb3/725g+fToOOeQQ/OhHP8IzzzyDv/zlLyX+NoQQQgghhAwd7EsTQoqBBXsIIaQPzJw503msKApGjhyJGTNmOMtaW1sBADt27AAAvPrqq3jmmWcCc/6888472G+//Qa5xYQQQgghhJQH7EsTQoqB4iUhhPQBTdM8zyVJ8iwTlRcNwwAAdHd348QTT8R3v/vdjPcaM2bMILaUEEIIIYSQ8oJ9aUJIMVC8JISQQeTQQw/F//3f/2HfffeFqvKSSwghhBBCSKGwL00IAZjzkhBCBpWLLroIO3fuxOmnn44///nPeOedd/Cb3/wG//RP/4RUKlXq5hFCCCGEEFK2sC9NCAEoXhJCyKAyduxY/PGPf0QqlcKxxx6LGTNm4JJLLkFTUxNkmZdgQgghhBBCssG+NCEEACTTNM1SN4IQQgghhBBCCCGEEEL8cKqCEEIIIYQQQgghhPz/duxYAAAAAGCQv/U0dhRGsCQvAQAAAIAleQkAAAAALMlLAAAAAGBJXgIAAAAAS/ISAAAAAFiSlwAAAADAkrwEAAAAAJbkJQAAAACwJC8BAAAAgCV5CQAAAAAsBV5ufbN1t6bAAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "experiment.plot_results(variables=[\"LP: Position\"])" ] @@ -169,29 +136,26 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "ba41f9d2", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABR8AAAIjCAYAAACK3myEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3wU1drA8d/2TS+kQ0LoTXovCigYQFFQKeorzQs2bOgFQUGKylVREFS86r2CWC5gwUJRpCgo0nsvgdBSSK9b5/1jspssSSBAQijPl08+u3PmzMw5s7PL7LOnaBRFURBCCCGEEEIIIYQQQogKpq3qAgghhBBCCCGEEEIIIW5MEnwUQgghhBBCCCGEEEJUCgk+CiGEEEIIIYQQQgghKoUEH4UQQgghhBBCCCGEEJVCgo9CCCGEEEIIIYQQQohKIcFHIYQQQgghhBBCCCFEpZDgoxBCCCGEEEIIIYQQolJI8FEIIYQQQgghhBBCCFEpJPgohBBCCCGEEEIIIYSoFBJ8FDeNbt260a1bt0o9xvHjx9FoNMybN++ieYcNG0ZsbKxHmkajYfLkyZVStuudRqNh9OjRVV2Ma8rJkycxm838+eef7rTSrqtr3dV4b15v9u3bh16vZ8+ePVVdFCGEEKJCTZ48GY1GUyXHjo2NZdiwYRWyL/lucXPbtGkTRqOREydOuNOux3vainxP3ChWrFiBr68vKSkpVV2UG4oEH0WFmTdvHhqNhi1btpSZx/UfqOtPp9MRExND//792bFjx2Uf+0YNTP31119MnjyZjIyMCt1vt27dPF6H4n8HDhyo0GNdzO7du3nggQeoWbMmZrOZ6tWr07NnT+bMmXNVy1EV0tPT0ev1LFq0yCN9zpw5BAQEYLPZLrj91KlTad++PZ07dy4zT15eHpMnT2bt2rUVUeTLtm/fPiZPnszx48ertBzXi8aNG3PXXXcxadKkqi6KEEKIy1DV98XF//z9/enatStLly697H3ebOS7xaW5lr5blNfu3bvRaDRs2rTJI/2FF16gcePGF93+5Zdf5sEHH6RmzZpl5jlz5gyTJ0++ovdzRais1/1G1atXL+rWrcv06dOruig3FH1VF0DcnB588EH69OmDw+Fg//79zJ07l+XLl/P333/TokWLSjnmr7/+Win7La5mzZrk5+djMBgua/v8/Hz0+qK35V9//cWUKVMYNmwYgYGBFVRKVY0aNUr9QI2KiqrQ41zIX3/9Rffu3YmJiWHkyJFERERw8uRJ/v77b9577z2efvrpq1aWqvDLL7+g0Wi48847PdKXLl3KnXfeecHrKCUlhfnz5zN//nyP9E8++QSn0+lezsvLY8qUKQBV+kvsvn37mDJlCt26dSvxq/zVeG9ejx5//HH69OnD0aNHqVOnTlUXRwghRCWpjPvinj17MmTIEBRF4cSJE8ydO5e+ffuyfPly4uLiKrYCl+iVV17hpZdeqtIyVAT5buHpWvhucSmWLl1KWFgYbdu2LZHet2/fC267Y8cOfvvtN/766y+P9POviTNnzjBlyhRiY2Mr7TtueVzodT948CBarbRJO99jjz3Giy++yJQpU/Dz86vq4twQJPgoqkSrVq34v//7P/dy586dueeee5g7dy7//ve/K+WYRqOxUvZbnEajwWw2X/b2V7LtpQoICPB4DarC66+/TkBAAJs3by7xH2FycvJVL09ubi4+Pj5X7XjLli2jc+fOHnXPy8vj999/Z+7cuRfc9osvvkCv15e4Obrcm9NLVZHn6mq8N69HPXr0ICgoiPnz5zN16tSqLo4QQohKUhn3xfXr1/fY5/3330/jxo157733qjz4qNfrPQJi1yv5buHpWvhucSmWLVtG7969PYYAOHbsGAcPHuSjjz664LafffYZMTExdOjQwSP9at3TVuR9uMlkqpD93Gjuv/9+nn76aRYvXsyIESOqujg3BAlxi2vC7bffDkB8fLw77ezZsxw4cOCiXU/Lq7QxOE6dOkW/fv3w8fEhLCyM559/3t0arXg31bLGwjh/n2WNy7JkyRJuueUWzGYzt9xyC99//32pZSw+LsvkyZP55z//CUCtWrXcXReOHz9O165dad68ean7aNCgQYXcVFosFl599VXq1q2LyWQiOjqasWPHYrFYSuT94osvaN26NV5eXgQHBzN48GBOnjx50WMcPXqUJk2alPrLa1hYWKnbuM6lyWSiSZMmrFixwmP9iRMnePLJJ2nQoAFeXl5Uq1aNAQMGlOju6+oO9fvvv/Pkk08SFhZGjRo13OuXL1/Orbfeio+PD35+ftx1113s3bvXYx+JiYkMHz6cGjVqYDKZiIyM5N577y1X12Kn08mKFSu46667PNJXrVqFxWKhd+/eF9x+yZIltG/fHl9fX4/0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quWxfPjwYaBovKXzubq+mkwm3nzzTV544QXCw8Pp0KEDd999N0OGDPHoMlSaxMREtm3bVmISkaVLlxIeHk6bNm0uuL1L8bpdqiNHjqAoChMnTmTixIml5klOTqZ69eru5fPPFVz6+S6PEydOUK9evRJfcFzdtM8fW/H868J1o1D8uoiMjCQyMvKSy5KQkMCkSZP48ccfSwSZi9dvwIABjBkzhoULFzJhwgQURWHx4sX07t3bfc24yl23bl2P/ej1+jK/TLrO5/mfU0IIIW4clXFffO+99zJ69GisViubN2/mjTfeIC8vz+P/1vLe7x09ehStVnvB4FZ575/KMmjQICZMmMDp06epXr06a9euJTk5mUGDBnkcIzMzs8xxwV3lLev+OzQ09IoCRhcj3y2u3neLWrVqMWbMGN59912+/PJLbr31Vu655x7+7//+76Jdrl1DH5U23mObNm0uOPRRcVdyH+56vwwdOrTMPJmZmR7Xa2n34WlpaUyZMoX//e9/JSbrvJL78Pbt25dIL34fXrxrfnnuw2vXrk3t2rUvuSx79+7llVdeYfXq1WRlZXmsK16/QYMGMWvWLH788UceeughcnJyWLZsmXtIJle5oeR9eHBwcJmfC3IfXrEk+CiqRL169cr8z+laVNYHjsPhKNES7GqJi4sjPDycL774gttuu40vvviCiIiICjmvTqeTpk2b8u6775a6Pjo62p1Po9GwfPnyUs/D+ZOhXIjRaKRt27a0bduW+vXrM3z4cBYvXsyrr77qzlPWuS7+n//TTz/NZ599xnPPPUfHjh0JCAhAo9EwePDgEr8ggucvaq46gTpuUWlBxOIt1p577jn69u3LkiVL+OWXX5g4cSLTp09n9erVtGzZssy6Ll++HLPZXGJw9WXLltGrV6+L/gfnGgPqclpcurjq+eKLL5Y5iPj5/zmff67g0s93ZSjPdZGfn1/umzDX6+5wOOjZsydpaWmMGzeOhg0b4uPjw+nTpxk2bJhH/aKiorj11ltZtGgREyZM4O+//yYhIYE333zzCmpW9BoXH4dSCCHEjaUy7otr1Kjh3mefPn0ICQlh9OjRdO/e3d2isrz3e+VxKfdPpRk0aBDjx49n8eLFPPfccyxatIiAgAB69erlcYywsLASraNcygpsXYvku4Wny/lu8c477zBs2DB++OEHfv31V5555hmm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uUsa5uaOO+4gKiqKBQsWVEZxxVWSkZFBUFAQr732Gi+//LI7vWXLlnTr1o2ZM2dWYeluLDLmoxDXMUVR+M9//kPXrl1vqJuDG5XVamXQoEGldid/4403LnkMlVdffZXNmzfz559/VlQRRSUrKCgo0V3k888/Jy0tzeMLyf79+/n5559LHddKCCGEEKIy3MjfLdLS0nj++efp37+/R3pgYCCzZ8++5PG133jjDRYuXMiJEycqspiiEuXn55dIc42RWfw+fMWKFRw+fJjx48dfpZLdHGTMRyGuQ7m5ufz444+sWbOG3bt3uwcOF9c2o9HIq6++WiK9Xbt2tGvX7pL3FxMTU2LSG3Ft+/vvv3n++ecZMGAA1apVY9u2bfznP//hlltuYcCAAe58jRo1KjGQuhBCCCFEZbgZvluEhYUxefLkEunlmeyxNO3bt/eYMEhc+xYuXMi8efPo06cPvr6+rF+/nq+//po777yTzp07u/P16tXrouOniksnwUchrkMpKSk89NBDBAYGMmHCBO65556qLpIQohxiY2OJjo5m9uzZpKWlERwczJAhQ/jXv/6F0Wis6uIJIYQQ4iYk3y3EzaBZs2bo9XreeustsrKy3JPQlDaxlKh4MuajEEIIIYQQlSg2NrbUrnlPPvkkH3zwAQUFBbzwwgv873//w2KxEBcXx4cffkh4eLg7b0JCAk888QRr1qzB19eXoUOHMn36dPT6orYEa9euZcyYMezdu5fo6GheeeUVhg0b5nHMDz74gLfffpvExESaN2/OnDlzLqv1vRBCCCFEecmYj0IIIYQQQlSizZs3c/bsWfffypUrAdzDLTz//PP89NNPLF68mN9//50zZ85w3333ubd3OBzcddddWK1W/vrrL+bPn8+8efOYNGmSO098fDx33XUX3bt3Z8eOHTz33HP84x//4JdffnHnWbhwIWPGjOHVV19l27ZtNG/enLi4OJKTk6/SmRBCCCHEzUhaPgohhBBCCHEVPffcc/z8888cPnyYrKwsQkND+eqrr3jggQcAOHDgAI0aNWLDhg106NCB5cuXc/fdd3PmzBl3a8iPPvqIcePGkZKSgtFoZNy4cSxdupQ9e/a4jzN48GAyMjJYsWIFoI5R1rZtW95//30AnE4n0dHRPP3007z00ktX+SwIIYQQ4mZx04356HQ6OXPmDH5+fmg0mqou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L19+yddYLBbZ7XbnIzg4uA4jvrRzE84AAC7HMAydLDtpyqM6/yjq0aOHUlJSlJKSIn9/fwUFBWnSpElV9vH666+rc+fOatq0qex2uwYNGlTlC/ymTZtksVi0bt06xcbGytPTU59//rn27dunvn37Kjg4WL6+vurSpYs+/vjjKu/fqlUrzZgxQ0OGDJGvr68iIiK0du1aHTlyRH379pWvr6+io6OVmZlZ459F7969NWPGDPXv3/+i2w3D0IIFC/Tss8+qb9++io6O1muvvaZDhw45R0l+8803Wr9+vV555RXFxcXptttu06JFi/TWW2/p0KFDkqSVK1eqtLRUy5cv180336yBAwfq97//vebPn1/j2AHUTE3y77qy/N1pWvb3P+jp//dbPfLpw/rQ45C+97TIahh6pOV9CmkeYXaIAACgmky952NpaamysrI0YcIE5zqr1aqEhASlp6df8nXFxcWKiIiQw+FQp06dNHPmTN18880XbXvmzBmdOXPGuVxUVOS6A/gZio8AcHVOlZ9S3Btxprx3xqAM+bj7XHX7V199VSNHjtRXX32lzMxMJScnKzw8XKNGjZIklZWVafr06Wrbtq3y8vKUmpqqYcOG6YMPPqiyn2eeeUZz585V69at1axZMx08eFB9+vTR888/L09PT7322mtKSkrSnj17FB4e7nxdWlqaZs6cqUmTJiktLU2PPPKIunfvrhEjRmjOnDkaP368hgwZol27dslisSg7O1vt27e/7DFNnDhREydOvKrj379/v3JycpSQkOBc5+/vr7i4OKWnp2vgwIFKT09XQECAOnfu7GyTkJAgq9WqjIwM9e/fX+np6brjjjvk4eHhbJOYmKgXX3xRx48fV7Nmza4qHgC/TE3y77rMp/909C86abX+9C3FqhtKrbo76B51a99HsW3vqrX3BQAAtcfU4uPRo0dVUVFxwcjF4OBg7d69+6Kvadu2rZYvX67o6GgVFhZq7ty56t69u3bt2qXrr7/+gvazZs3StGnTaiX+nwvwbam2P1oVJL86eT8AQO0LCwtTWlqaLBaL2rZtq6+//lppaWnO4uOIESOcbVu3bq2FCxeqS5cuKi4ulq+vr3Pbc889p7vvPnePssDAQMXExDiXp0+frtWrV2vt2rVKSUlxru/Tp49Gjx4tSZo8ebKWLFmiLl266IEHHpAkjR8/XvHx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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "experiment.plot_results(variables=[\"LP: Liquidity Fee Shares\", \"LP: Received Liquidity Fees\"], iterations=[\"avg\"])" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73444af8-2ec9-46c8-9665-ef233bb0be99", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3.10.9 ('.venv': poetry)", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -205,7 +169,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.10.8" }, "vscode": { "interpreter": { diff --git a/poetry.lock b/poetry.lock index e7b198980..65709d495 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,5 +1,29 @@ # This file is automatically @generated by Poetry and should not be changed by hand. +[[package]] +name = "aiofiles" +version = "22.1.0" +description = "File support for asyncio." +category = "main" +optional = true +python-versions = ">=3.7,<4.0" +files = [ + {file = "aiofiles-22.1.0-py3-none-any.whl", hash = "sha256:1142fa8e80dbae46bb6339573ad4c8c0841358f79c6eb50a493dceca14621bad"}, + {file = "aiofiles-22.1.0.tar.gz", hash = "sha256:9107f1ca0b2a5553987a94a3c9959fe5b491fdf731389aa5b7b1bd0733e32de6"}, +] + +[[package]] +name = "aiosqlite" +version = "0.18.0" +description = "asyncio bridge to the standard sqlite3 module" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "aiosqlite-0.18.0-py3-none-any.whl", hash = "sha256:c3511b841e3a2c5614900ba1d179f366826857586f78abd75e7cbeb88e75a557"}, + {file = "aiosqlite-0.18.0.tar.gz", hash = "sha256:faa843ef5fb08bafe9a9b3859012d3d9d6f77ce3637899de20606b7fc39aa213"}, +] + [[package]] name = "anyio" version = "3.6.2" @@ -126,21 +150,22 @@ test = ["astroid", "pytest"] [[package]] name = "attrs" -version = "22.1.0" +version = "22.2.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, ] [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] [[package]] name = "babel" @@ -171,14 +196,14 @@ files = [ [[package]] name = "beautifulsoup4" -version = "4.11.1" +version = "4.11.2" description = "Screen-scraping library" category = "main" optional = true python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, - {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, + {file = "beautifulsoup4-4.11.2-py3-none-any.whl", hash = "sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39"}, + {file = "beautifulsoup4-4.11.2.tar.gz", hash = "sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"}, ] [package.dependencies] @@ -240,14 +265,14 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" -version = "5.0.1" +version = "6.0.0" description = "An easy safelist-based HTML-sanitizing tool." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"}, - {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"}, + {file = "bleach-6.0.0-py3-none-any.whl", hash = "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4"}, + {file = "bleach-6.0.0.tar.gz", hash = "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414"}, ] [package.dependencies] @@ -256,7 +281,6 @@ webencodings = "*" [package.extras] css = ["tinycss2 (>=1.1.0,<1.2)"] -dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"] [[package]] name = "certifi" @@ -349,19 +373,102 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.0.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" +python-versions = "*" files = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, + {file = "charset-normalizer-3.0.1.tar.gz", hash = "sha256:ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88600c72ef7587fe1708fd242b385b6ed4b8904976d5da0893e31df8b3480cb6"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c75ffc45f25324e68ab238cb4b5c0a38cd1c3d7f1fb1f72b5541de469e2247db"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db72b07027db150f468fbada4d85b3b2729a3db39178abf5c543b784c1254539"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62595ab75873d50d57323a91dd03e6966eb79c41fa834b7a1661ed043b2d404d"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff6f3db31555657f3163b15a6b7c6938d08df7adbfc9dd13d9d19edad678f1e8"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:772b87914ff1152b92a197ef4ea40efe27a378606c39446ded52c8f80f79702e"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70990b9c51340e4044cfc394a81f614f3f90d41397104d226f21e66de668730d"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:292d5e8ba896bbfd6334b096e34bffb56161c81408d6d036a7dfa6929cff8783"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2edb64ee7bf1ed524a1da60cdcd2e1f6e2b4f66ef7c077680739f1641f62f555"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:31a9ddf4718d10ae04d9b18801bd776693487cbb57d74cc3458a7673f6f34639"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:44ba614de5361b3e5278e1241fda3dc1838deed864b50a10d7ce92983797fa76"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:12db3b2c533c23ab812c2b25934f60383361f8a376ae272665f8e48b88e8e1c6"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c512accbd6ff0270939b9ac214b84fb5ada5f0409c44298361b2f5e13f9aed9e"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-win32.whl", hash = "sha256:502218f52498a36d6bf5ea77081844017bf7982cdbe521ad85e64cabee1b608b"}, + {file = "charset_normalizer-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:601f36512f9e28f029d9481bdaf8e89e5148ac5d89cffd3b05cd533eeb423b59"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0298eafff88c99982a4cf66ba2efa1128e4ddaca0b05eec4c456bbc7db691d8d"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8d0fc946c784ff7f7c3742310cc8a57c5c6dc31631269876a88b809dbeff3d3"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:87701167f2a5c930b403e9756fab1d31d4d4da52856143b609e30a1ce7160f3c"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e76c0f23218b8f46c4d87018ca2e441535aed3632ca134b10239dfb6dadd6b"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c0a590235ccd933d9892c627dec5bc7511ce6ad6c1011fdf5b11363022746c1"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c7fe7afa480e3e82eed58e0ca89f751cd14d767638e2550c77a92a9e749c317"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79909e27e8e4fcc9db4addea88aa63f6423ebb171db091fb4373e3312cb6d603"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ac7b6a045b814cf0c47f3623d21ebd88b3e8cf216a14790b455ea7ff0135d18"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:72966d1b297c741541ca8cf1223ff262a6febe52481af742036a0b296e35fa5a"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f9d0c5c045a3ca9bedfc35dca8526798eb91a07aa7a2c0fee134c6c6f321cbd7"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5995f0164fa7df59db4746112fec3f49c461dd6b31b841873443bdb077c13cfc"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4a8fcf28c05c1f6d7e177a9a46a1c52798bfe2ad80681d275b10dcf317deaf0b"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:761e8904c07ad053d285670f36dd94e1b6ab7f16ce62b9805c475b7aa1cffde6"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-win32.whl", hash = "sha256:71140351489970dfe5e60fc621ada3e0f41104a5eddaca47a7acb3c1b851d6d3"}, + {file = "charset_normalizer-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ab77acb98eba3fd2a85cd160851816bfce6871d944d885febf012713f06659c"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:84c3990934bae40ea69a82034912ffe5a62c60bbf6ec5bc9691419641d7d5c9a"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74292fc76c905c0ef095fe11e188a32ebd03bc38f3f3e9bcb85e4e6db177b7ea"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c95a03c79bbe30eec3ec2b7f076074f4281526724c8685a42872974ef4d36b72"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c39b0e3eac288fedc2b43055cfc2ca7a60362d0e5e87a637beac5d801ef478"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2c707231459e8a4028eabcd3cfc827befd635b3ef72eada84ab13b52e1574d"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93ad6d87ac18e2a90b0fe89df7c65263b9a99a0eb98f0a3d2e079f12a0735837"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:59e5686dd847347e55dffcc191a96622f016bc0ad89105e24c14e0d6305acbc6"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd6056167405314a4dc3c173943f11249fa0f1b204f8b51ed4bde1a9cd1834dc"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:083c8d17153ecb403e5e1eb76a7ef4babfc2c48d58899c98fcaa04833e7a2f9a"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:f5057856d21e7586765171eac8b9fc3f7d44ef39425f85dbcccb13b3ebea806c"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7eb33a30d75562222b64f569c642ff3dc6689e09adda43a082208397f016c39a"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-win32.whl", hash = "sha256:95dea361dd73757c6f1c0a1480ac499952c16ac83f7f5f4f84f0658a01b8ef41"}, + {file = "charset_normalizer-3.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:eaa379fcd227ca235d04152ca6704c7cb55564116f8bc52545ff357628e10602"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e45867f1f2ab0711d60c6c71746ac53537f1684baa699f4f668d4c6f6ce8e14"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cadaeaba78750d58d3cc6ac4d1fd867da6fc73c88156b7a3212a3cd4819d679d"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:911d8a40b2bef5b8bbae2e36a0b103f142ac53557ab421dc16ac4aafee6f53dc"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:503e65837c71b875ecdd733877d852adbc465bd82c768a067badd953bf1bc5a3"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a60332922359f920193b1d4826953c507a877b523b2395ad7bc716ddd386d866"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16a8663d6e281208d78806dbe14ee9903715361cf81f6d4309944e4d1e59ac5b"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a16418ecf1329f71df119e8a65f3aa68004a3f9383821edcb20f0702934d8087"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d9153257a3f70d5f69edf2325357251ed20f772b12e593f3b3377b5f78e7ef8"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02a51034802cbf38db3f89c66fb5d2ec57e6fe7ef2f4a44d070a593c3688667b"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2e396d70bc4ef5325b72b593a72c8979999aa52fb8bcf03f701c1b03e1166918"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:11b53acf2411c3b09e6af37e4b9005cba376c872503c8f28218c7243582df45d"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:0bf2dae5291758b6f84cf923bfaa285632816007db0330002fa1de38bfcb7154"}, + {file = "charset_normalizer-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2c03cc56021a4bd59be889c2b9257dae13bf55041a3372d3295416f86b295fb5"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:024e606be3ed92216e2b6952ed859d86b4cfa52cd5bc5f050e7dc28f9b43ec42"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4b0d02d7102dd0f997580b51edc4cebcf2ab6397a7edf89f1c73b586c614272c"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:358a7c4cb8ba9b46c453b1dd8d9e431452d5249072e4f56cfda3149f6ab1405e"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81d6741ab457d14fdedc215516665050f3822d3e56508921cc7239f8c8e66a58"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b8af03d2e37866d023ad0ddea594edefc31e827fee64f8de5611a1dbc373174"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cf4e8ad252f7c38dd1f676b46514f92dc0ebeb0db5552f5f403509705e24753"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e696f0dd336161fca9adbb846875d40752e6eba585843c768935ba5c9960722b"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c22d3fe05ce11d3671297dc8973267daa0f938b93ec716e12e0f6dee81591dc1"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:109487860ef6a328f3eec66f2bf78b0b72400280d8f8ea05f69c51644ba6521a"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37f8febc8ec50c14f3ec9637505f28e58d4f66752207ea177c1d67df25da5aed"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f97e83fa6c25693c7a35de154681fcc257c1c41b38beb0304b9c4d2d9e164479"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a152f5f33d64a6be73f1d30c9cc82dfc73cec6477ec268e7c6e4c7d23c2d2291"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:39049da0ffb96c8cbb65cbf5c5f3ca3168990adf3551bd1dee10c48fce8ae820"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-win32.whl", hash = "sha256:4457ea6774b5611f4bed5eaa5df55f70abde42364d498c5134b7ef4c6958e20e"}, + {file = "charset_normalizer-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:e62164b50f84e20601c1ff8eb55620d2ad25fb81b59e3cd776a1902527a788af"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8eade758719add78ec36dc13201483f8e9b5d940329285edcd5f70c0a9edbd7f"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8499ca8f4502af841f68135133d8258f7b32a53a1d594aa98cc52013fff55678"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3fc1c4a2ffd64890aebdb3f97e1278b0cc72579a08ca4de8cd2c04799a3a22be"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00d3ffdaafe92a5dc603cb9bd5111aaa36dfa187c8285c543be562e61b755f6b"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2ac1b08635a8cd4e0cbeaf6f5e922085908d48eb05d44c5ae9eabab148512ca"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6f45710b4459401609ebebdbcfb34515da4fc2aa886f95107f556ac69a9147e"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae1de54a77dc0d6d5fcf623290af4266412a7c4be0b1ff7444394f03f5c54e3"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b590df687e3c5ee0deef9fc8c547d81986d9a1b56073d82de008744452d6541"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab5de034a886f616a5668aa5d098af2b5385ed70142090e2a31bcbd0af0fdb3d"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9cb3032517f1627cc012dbc80a8ec976ae76d93ea2b5feaa9d2a5b8882597579"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:608862a7bf6957f2333fc54ab4399e405baad0163dc9f8d99cb236816db169d4"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f438ae3532723fb6ead77e7c604be7c8374094ef4ee2c5e03a3a17f1fca256c"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:356541bf4381fa35856dafa6a965916e54bed415ad8a24ee6de6e37deccf2786"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-win32.whl", hash = "sha256:39cf9ed17fe3b1bc81f33c9ceb6ce67683ee7526e65fde1447c772afc54a1bb8"}, + {file = "charset_normalizer-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:0a11e971ed097d24c534c037d298ad32c6ce81a45736d31e0ff0ad37ab437d59"}, + {file = "charset_normalizer-3.0.1-py3-none-any.whl", hash = "sha256:7e189e2e1d3ed2f4aebabd2d5b0f931e883676e51c7624826e0a4e5fe8a0bf24"}, ] -[package.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "click" version = "8.1.3" @@ -409,92 +516,78 @@ test = ["pytest"] [[package]] name = "contourpy" -version = "1.0.6" +version = "1.0.7" description = "Python library for calculating contours of 2D quadrilateral grids" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "contourpy-1.0.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:613c665529899b5d9fade7e5d1760111a0b011231277a0d36c49f0d3d6914bd6"}, - {file = "contourpy-1.0.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78ced51807ccb2f45d4ea73aca339756d75d021069604c2fccd05390dc3c28eb"}, - {file = "contourpy-1.0.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3b1bd7577c530eaf9d2bc52d1a93fef50ac516a8b1062c3d1b9bcec9ebe329b"}, - {file = "contourpy-1.0.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8834c14b8c3dd849005e06703469db9bf96ba2d66a3f88ecc539c9a8982e0ee"}, - {file = "contourpy-1.0.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4052a8a4926d4468416fc7d4b2a7b2a3e35f25b39f4061a7e2a3a2748c4fc48"}, - {file = "contourpy-1.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c0e1308307a75e07d1f1b5f0f56b5af84538a5e9027109a7bcf6cb47c434e72"}, - {file = "contourpy-1.0.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fc4e7973ed0e1fe689435842a6e6b330eb7ccc696080dda9a97b1a1b78e41db"}, - {file = "contourpy-1.0.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e8d09d96219ace6cb596506fb9b64ea5f270b2fb9121158b976d88871fcfd1"}, - {file = "contourpy-1.0.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f33da6b5d19ad1bb5e7ad38bb8ba5c426d2178928bc2b2c44e8823ea0ecb6ff3"}, - {file = "contourpy-1.0.6-cp310-cp310-win32.whl", hash = "sha256:12a7dc8439544ed05c6553bf026d5e8fa7fad48d63958a95d61698df0e00092b"}, - {file = "contourpy-1.0.6-cp310-cp310-win_amd64.whl", hash = "sha256:eadad75bf91897f922e0fb3dca1b322a58b1726a953f98c2e5f0606bd8408621"}, - {file = "contourpy-1.0.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:913bac9d064cff033cf3719e855d4f1db9f1c179e0ecf3ba9fdef21c21c6a16a"}, - {file = "contourpy-1.0.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46deb310a276cc5c1fd27958e358cce68b1e8a515fa5a574c670a504c3a3fe30"}, - {file = "contourpy-1.0.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b64f747e92af7da3b85631a55d68c45a2d728b4036b03cdaba4bd94bcc85bd6f"}, - {file = "contourpy-1.0.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50627bf76abb6ba291ad08db583161939c2c5fab38c38181b7833423ab9c7de3"}, - {file = "contourpy-1.0.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:358f6364e4873f4d73360b35da30066f40387dd3c427a3e5432c6b28dd24a8fa"}, - {file = "contourpy-1.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c78bfbc1a7bff053baf7e508449d2765964d67735c909b583204e3240a2aca45"}, - {file = "contourpy-1.0.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e43255a83835a129ef98f75d13d643844d8c646b258bebd11e4a0975203e018f"}, - {file = "contourpy-1.0.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:375d81366afd547b8558c4720337218345148bc2fcffa3a9870cab82b29667f2"}, - {file = "contourpy-1.0.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b98c820608e2dca6442e786817f646d11057c09a23b68d2b3737e6dcb6e4a49b"}, - {file = "contourpy-1.0.6-cp311-cp311-win32.whl", hash = "sha256:0e4854cc02006ad6684ce092bdadab6f0912d131f91c2450ce6dbdea78ee3c0b"}, - {file = "contourpy-1.0.6-cp311-cp311-win_amd64.whl", hash = "sha256:d2eff2af97ea0b61381828b1ad6cd249bbd41d280e53aea5cccd7b2b31b8225c"}, - {file = "contourpy-1.0.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5b117d29433fc8393b18a696d794961464e37afb34a6eeb8b2c37b5f4128a83e"}, - {file = "contourpy-1.0.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:341330ed19074f956cb20877ad8d2ae50e458884bfa6a6df3ae28487cc76c768"}, - {file = "contourpy-1.0.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:371f6570a81dfdddbb837ba432293a63b4babb942a9eb7aaa699997adfb53278"}, - {file = "contourpy-1.0.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9447c45df407d3ecb717d837af3b70cfef432138530712263730783b3d016512"}, - {file = "contourpy-1.0.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:730c27978a0003b47b359935478b7d63fd8386dbb2dcd36c1e8de88cbfc1e9de"}, - {file = "contourpy-1.0.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:da1ef35fd79be2926ba80fbb36327463e3656c02526e9b5b4c2b366588b74d9a"}, - {file = "contourpy-1.0.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd2bc0c8f2e8de7dd89a7f1c10b8844e291bca17d359373203ef2e6100819edd"}, - {file = "contourpy-1.0.6-cp37-cp37m-win32.whl", hash = "sha256:3a1917d3941dd58732c449c810fa7ce46cc305ce9325a11261d740118b85e6f3"}, - {file = "contourpy-1.0.6-cp37-cp37m-win_amd64.whl", hash = "sha256:06ca79e1efbbe2df795822df2fa173d1a2b38b6e0f047a0ec7903fbca1d1847e"}, - {file = "contourpy-1.0.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e626cefff8491bce356221c22af5a3ea528b0b41fbabc719c00ae233819ea0bf"}, - {file = "contourpy-1.0.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dbe6fe7a1166b1ddd7b6d887ea6fa8389d3f28b5ed3f73a8f40ece1fc5a3d340"}, - {file = "contourpy-1.0.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e13b31d1b4b68db60b3b29f8e337908f328c7f05b9add4b1b5c74e0691180109"}, - {file = "contourpy-1.0.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79d239fc22c3b8d9d3de492aa0c245533f4f4c7608e5749af866949c0f1b1b9"}, - {file = "contourpy-1.0.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e8e686a6db92a46111a1ee0ee6f7fbfae4048f0019de207149f43ac1812cf95"}, - {file = "contourpy-1.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acd2bd02f1a7adff3a1f33e431eb96ab6d7987b039d2946a9b39fe6fb16a1036"}, - {file = "contourpy-1.0.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:03d1b9c6b44a9e30d554654c72be89af94fab7510b4b9f62356c64c81cec8b7d"}, - {file = "contourpy-1.0.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b48d94386f1994db7c70c76b5808c12e23ed7a4ee13693c2fc5ab109d60243c0"}, - {file = "contourpy-1.0.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:208bc904889c910d95aafcf7be9e677726df9ef71e216780170dbb7e37d118fa"}, - {file = "contourpy-1.0.6-cp38-cp38-win32.whl", hash = "sha256:444fb776f58f4906d8d354eb6f6ce59d0a60f7b6a720da6c1ccb839db7c80eb9"}, - {file = "contourpy-1.0.6-cp38-cp38-win_amd64.whl", hash = "sha256:9bc407a6af672da20da74823443707e38ece8b93a04009dca25856c2d9adadb1"}, - {file = "contourpy-1.0.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:aa4674cf3fa2bd9c322982644967f01eed0c91bb890f624e0e0daf7a5c3383e9"}, - {file = "contourpy-1.0.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6f56515e7c6fae4529b731f6c117752247bef9cdad2b12fc5ddf8ca6a50965a5"}, - {file = "contourpy-1.0.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:344cb3badf6fc7316ad51835f56ac387bdf86c8e1b670904f18f437d70da4183"}, - {file = "contourpy-1.0.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b1e66346acfb17694d46175a0cea7d9036f12ed0c31dfe86f0f405eedde2bdd"}, - {file = "contourpy-1.0.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8468b40528fa1e15181cccec4198623b55dcd58306f8815a793803f51f6c474a"}, - {file = "contourpy-1.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dedf4c64185a216c35eb488e6f433297c660321275734401760dafaeb0ad5c2"}, - {file = "contourpy-1.0.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:494efed2c761f0f37262815f9e3c4bb9917c5c69806abdee1d1cb6611a7174a0"}, - {file = "contourpy-1.0.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:75a2e638042118118ab39d337da4c7908c1af74a8464cad59f19fbc5bbafec9b"}, - {file = "contourpy-1.0.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a628bba09ba72e472bf7b31018b6281fd4cc903f0888049a3724afba13b6e0b8"}, - {file = "contourpy-1.0.6-cp39-cp39-win32.whl", hash = "sha256:e1739496c2f0108013629aa095cc32a8c6363444361960c07493818d0dea2da4"}, - {file = "contourpy-1.0.6-cp39-cp39-win_amd64.whl", hash = "sha256:a457ee72d9032e86730f62c5eeddf402e732fdf5ca8b13b41772aa8ae13a4563"}, - {file = "contourpy-1.0.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d912f0154a20a80ea449daada904a7eb6941c83281a9fab95de50529bfc3a1da"}, - {file = "contourpy-1.0.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4081918147fc4c29fad328d5066cfc751da100a1098398742f9f364be63803fc"}, - {file = "contourpy-1.0.6-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0537cc1195245bbe24f2913d1f9211b8f04eb203de9044630abd3664c6cc339c"}, - {file = "contourpy-1.0.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcd556c8fc37a342dd636d7eef150b1399f823a4462f8c968e11e1ebeabee769"}, - {file = "contourpy-1.0.6-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f6ca38dd8d988eca8f07305125dec6f54ac1c518f1aaddcc14d08c01aebb6efc"}, - {file = "contourpy-1.0.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c1baa49ab9fedbf19d40d93163b7d3e735d9cd8d5efe4cce9907902a6dad391f"}, - {file = "contourpy-1.0.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:211dfe2bd43bf5791d23afbe23a7952e8ac8b67591d24be3638cabb648b3a6eb"}, - {file = "contourpy-1.0.6-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38c6536c2d71ca2f7e418acaf5bca30a3af7f2a2fa106083c7d738337848dbe"}, - {file = "contourpy-1.0.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b1ee48a130da4dd0eb8055bbab34abf3f6262957832fd575e0cab4979a15a41"}, - {file = "contourpy-1.0.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5641927cc5ae66155d0c80195dc35726eae060e7defc18b7ab27600f39dd1fe7"}, - {file = "contourpy-1.0.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ee394502026d68652c2824348a40bf50f31351a668977b51437131a90d777ea"}, - {file = "contourpy-1.0.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b97454ed5b1368b66ed414c754cba15b9750ce69938fc6153679787402e4cdf"}, - {file = "contourpy-1.0.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0236875c5a0784215b49d00ebbe80c5b6b5d5244b3655a36dda88105334dea17"}, - {file = "contourpy-1.0.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c593aeff7a0171f639da92cb86d24954bbb61f8a1b530f74eb750a14685832"}, - {file = "contourpy-1.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9b0e7fe7f949fb719b206548e5cde2518ffb29936afa4303d8a1c4db43dcb675"}, - {file = "contourpy-1.0.6.tar.gz", hash = "sha256:6e459ebb8bb5ee4c22c19cc000174f8059981971a33ce11e17dddf6aca97a142"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"}, + {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"}, + {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"}, + {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"}, + {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"}, + {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"}, + {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"}, + {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"}, + {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"}, + {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"}, ] [package.dependencies] numpy = ">=1.16" [package.extras] -bokeh = ["bokeh", "selenium"] -docs = ["docutils (<0.18)", "sphinx (<=5.2.0)", "sphinx-rtd-theme"] -test = ["Pillow", "flake8", "isort", "matplotlib", "pytest"] -test-minimal = ["pytest"] -test-no-codebase = ["Pillow", "matplotlib", "pytest"] +bokeh = ["bokeh", "chromedriver", "selenium"] +docs = ["furo", "sphinx-copybutton"] +mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"] +test = ["Pillow", "matplotlib", "pytest"] +test-no-images = ["pytest"] [[package]] name = "cycler" @@ -510,30 +603,29 @@ files = [ [[package]] name = "debugpy" -version = "1.6.4" +version = "1.6.6" description = "An implementation of the Debug Adapter Protocol for Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "debugpy-1.6.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6ae238943482c78867ac707c09122688efb700372b617ffd364261e5e41f7a2f"}, - {file = "debugpy-1.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a39e7da178e1f22f4bc04b57f085e785ed1bcf424aaf318835a1a7129eefe35"}, - {file = "debugpy-1.6.4-cp310-cp310-win32.whl", hash = "sha256:143f79d0798a9acea21cd1d111badb789f19d414aec95fa6389cfea9485ddfb1"}, - {file = "debugpy-1.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:563f148f94434365ec0ce94739c749aabf60bf67339e68a9446499f3582d62f3"}, - {file = "debugpy-1.6.4-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:1caee68f7e254267df908576c0d0938f8f88af16383f172cb9f0602e24c30c01"}, - {file = "debugpy-1.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e2a83d31a16b83666f19fa06d97b2cc311af88e6266590579737949971a17e"}, - {file = "debugpy-1.6.4-cp37-cp37m-win32.whl", hash = "sha256:82229790442856962aec4767b98ba2559fe0998f897e9f21fb10b4fd24b6c436"}, - {file = "debugpy-1.6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:67edf033f9e512958f7b472975ff9d9b7ff64bf4440f6f6ae44afdc66b89e6b6"}, - {file = "debugpy-1.6.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4ab5e938925e5d973f567d6ef32751b17d10f3be3a8c4d73c52f53e727f69bf1"}, - {file = "debugpy-1.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8df268e9f72fc06efc2e75e8dc8e2b881d6a397356faec26efb2ee70b6863b7"}, - {file = "debugpy-1.6.4-cp38-cp38-win32.whl", hash = "sha256:86bd25f38f8b6c5d430a5e2931eebbd5f580c640f4819fcd236d0498790c7204"}, - {file = "debugpy-1.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:62ba4179b372a62abf9c89b56997d70a4100c6dea6c2a4e0e4be5f45920b3253"}, - {file = "debugpy-1.6.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d2968e589bda4e485a9c61f113754a28e48d88c5152ed8e0b2564a1fadbe50a5"}, - {file = "debugpy-1.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e62b8034ede98932b92268669318848a0d42133d857087a3b9cec03bb844c615"}, - {file = "debugpy-1.6.4-cp39-cp39-win32.whl", hash = "sha256:3d9c31baf64bf959a593996c108e911c5a9aa1693a296840e5469473f064bcec"}, - {file = "debugpy-1.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:ea4bf208054e6d41749f17612066da861dff10102729d32c85b47f155223cf2b"}, - {file = "debugpy-1.6.4-py2.py3-none-any.whl", hash = "sha256:e886a1296cd20a10172e94788009ce74b759e54229ebd64a43fa5c2b4e62cd76"}, - {file = "debugpy-1.6.4.zip", hash = "sha256:d5ab9bd3f4e7faf3765fd52c7c43c074104ab1e109621dc73219099ed1a5399d"}, + {file = "debugpy-1.6.6-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:0ea1011e94416e90fb3598cc3ef5e08b0a4dd6ce6b9b33ccd436c1dffc8cd664"}, + {file = "debugpy-1.6.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dff595686178b0e75580c24d316aa45a8f4d56e2418063865c114eef651a982e"}, + {file = "debugpy-1.6.6-cp310-cp310-win32.whl", hash = "sha256:87755e173fcf2ec45f584bb9d61aa7686bb665d861b81faa366d59808bbd3494"}, + {file = "debugpy-1.6.6-cp310-cp310-win_amd64.whl", hash = "sha256:72687b62a54d9d9e3fb85e7a37ea67f0e803aaa31be700e61d2f3742a5683917"}, + {file = "debugpy-1.6.6-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:78739f77c58048ec006e2b3eb2e0cd5a06d5f48c915e2fc7911a337354508110"}, + {file = "debugpy-1.6.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23c29e40e39ad7d869d408ded414f6d46d82f8a93b5857ac3ac1e915893139ca"}, + {file = "debugpy-1.6.6-cp37-cp37m-win32.whl", hash = "sha256:7aa7e103610e5867d19a7d069e02e72eb2b3045b124d051cfd1538f1d8832d1b"}, + {file = "debugpy-1.6.6-cp37-cp37m-win_amd64.whl", hash = "sha256:f6383c29e796203a0bba74a250615ad262c4279d398e89d895a69d3069498305"}, + {file = "debugpy-1.6.6-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:23363e6d2a04d726bbc1400bd4e9898d54419b36b2cdf7020e3e215e1dcd0f8e"}, + {file = "debugpy-1.6.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b5d1b13d7c7bf5d7cf700e33c0b8ddb7baf030fcf502f76fc061ddd9405d16c"}, + {file = "debugpy-1.6.6-cp38-cp38-win32.whl", hash = "sha256:70ab53918fd907a3ade01909b3ed783287ede362c80c75f41e79596d5ccacd32"}, + {file = "debugpy-1.6.6-cp38-cp38-win_amd64.whl", hash = "sha256:c05349890804d846eca32ce0623ab66c06f8800db881af7a876dc073ac1c2225"}, + {file = "debugpy-1.6.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a771739902b1ae22a120dbbb6bd91b2cae6696c0e318b5007c5348519a4211c6"}, + {file = "debugpy-1.6.6-cp39-cp39-win32.whl", hash = "sha256:549ae0cb2d34fc09d1675f9b01942499751d174381b6082279cf19cdb3c47cbe"}, + {file = "debugpy-1.6.6-cp39-cp39-win_amd64.whl", hash = "sha256:de4a045fbf388e120bb6ec66501458d3134f4729faed26ff95de52a754abddb1"}, + {file = "debugpy-1.6.6-py2.py3-none-any.whl", hash = "sha256:be596b44448aac14eb3614248c91586e2bc1728e020e82ef3197189aae556115"}, + {file = "debugpy-1.6.6.zip", hash = "sha256:b9c2130e1c632540fbf9c2c88341493797ddf58016e7cba02e311de9b0a96b67"}, ] [[package]] @@ -578,28 +670,16 @@ wrapt = ">=1.10,<2" [package.extras] dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bump2version (<1)", "configparser (<5)", "importlib-metadata (<3)", "importlib-resources (<4)", "sphinx (<2)", "sphinxcontrib-websupport (<2)", "tox", "zipp (<2)"] -[[package]] -name = "entrypoints" -version = "0.4" -description = "Discover and load entry points from installed packages." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, - {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, -] - [[package]] name = "exceptiongroup" -version = "1.0.4" +version = "1.1.0" description = "Backport of PEP 654 (exception groups)" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"}, - {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"}, + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, ] [package.extras] @@ -707,14 +787,14 @@ files = [ [[package]] name = "googleapis-common-protos" -version = "1.57.0" +version = "1.58.0" description = "Common protobufs used in Google APIs" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.57.0.tar.gz", hash = "sha256:27a849d6205838fb6cc3c1c21cb9800707a661bb21c6ce7fb13e99eb1f8a0c46"}, - {file = "googleapis_common_protos-1.57.0-py2.py3-none-any.whl", hash = "sha256:a9f4a1d7f6d9809657b7f1316a1aa527f6664891531bcfcc13b6696e685f443c"}, + {file = "googleapis-common-protos-1.58.0.tar.gz", hash = "sha256:c727251ec025947d545184ba17e3578840fc3a24a0516a020479edab660457df"}, + {file = "googleapis_common_protos-1.58.0-py2.py3-none-any.whl", hash = "sha256:ca3befcd4580dab6ad49356b46bf165bb68ff4b32389f028f1abd7c10ab9519a"}, ] [package.dependencies] @@ -883,14 +963,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "5.2.0" +version = "6.0.0" description = "Read metadata from Python packages" category = "main" -optional = true +optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-5.2.0-py3-none-any.whl", hash = "sha256:0eafa39ba42bf225fc00e67f701d71f85aead9f878569caf13c3724f704b970f"}, - {file = "importlib_metadata-5.2.0.tar.gz", hash = "sha256:404d48d62bba0b7a77ff9d405efd91501bef2e67ff4ace0bed40a0cf28c3c7cd"}, + {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, + {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, ] [package.dependencies] @@ -915,34 +995,35 @@ files = [ [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] [[package]] name = "ipykernel" -version = "6.19.2" +version = "6.21.1" description = "IPython Kernel for Jupyter" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.19.2-py3-none-any.whl", hash = "sha256:1374a55c57ca7a7286c3d8b15799cd76e1a2381b6b1fea99c494b955988926b6"}, - {file = "ipykernel-6.19.2.tar.gz", hash = "sha256:1ab68d3d3654196266baa93990055413e167263ffbe4cfe834f871bcd3d3506d"}, + {file = "ipykernel-6.21.1-py3-none-any.whl", hash = "sha256:1a04bb359212e23e46adc0116ec82ea128c1e5bd532fde4fbe679787ff36f0cf"}, + {file = "ipykernel-6.21.1.tar.gz", hash = "sha256:a0f8eece39cab1ee352c9b59ec67bbe44d8299f8238e4c16ff7f4cf0052d3378"}, ] [package.dependencies] appnope = {version = "*", markers = "platform_system == \"Darwin\""} comm = ">=0.1.1" -debugpy = ">=1.0" +debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -953,21 +1034,21 @@ traitlets = ">=5.4.0" [package.extras] cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt"] -lint = ["black (>=22.6.0)", "mdformat (>0.7)", "ruff (>=0.0.156)"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov", "pytest-timeout"] -typing = ["mypy (>=0.990)"] [[package]] name = "ipython" -version = "8.7.0" +version = "8.10.0" description = "IPython: Productive Interactive Computing" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "ipython-8.7.0-py3-none-any.whl", hash = "sha256:352042ddcb019f7c04e48171b4dd78e4c4bb67bf97030d170e154aac42b656d9"}, - {file = "ipython-8.7.0.tar.gz", hash = "sha256:882899fe78d5417a0aa07f995db298fa28b58faeba2112d2e3a4c95fe14bb738"}, + {file = "ipython-8.10.0-py3-none-any.whl", hash = "sha256:b38c31e8fc7eff642fc7c597061fff462537cf2314e3225a19c906b7b0d8a345"}, + {file = "ipython-8.10.0.tar.gz", hash = "sha256:b13a1d6c1f5818bd388db53b7107d17454129a70de2b87481d555daede5eb49e"}, ] [package.dependencies] @@ -979,13 +1060,13 @@ jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} pickleshare = "*" -prompt-toolkit = ">=3.0.11,<3.1.0" +prompt-toolkit = ">=3.0.30,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5" [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.20)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] @@ -995,7 +1076,7 @@ notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.20)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] [[package]] name = "ipython-genutils" @@ -1011,14 +1092,14 @@ files = [ [[package]] name = "ipywidgets" -version = "7.7.2" +version = "7.7.3" description = "IPython HTML widgets for Jupyter" category = "main" optional = true python-versions = "*" files = [ - {file = "ipywidgets-7.7.2-py2.py3-none-any.whl", hash = "sha256:3d47a7826cc6e2644d7cb90db26699451f8b42379cf63b761431b63d19984ca2"}, - {file = "ipywidgets-7.7.2.tar.gz", hash = "sha256:449ab8e7872d0f388ee5c5b3666b9d6af5e5618a5749fd62652680be37dff2af"}, + {file = "ipywidgets-7.7.3-py2.py3-none-any.whl", hash = "sha256:c537a31feb4717d42b2331c9201a5c08e214693ca7439563fd4f1b64705312b9"}, + {file = "ipywidgets-7.7.3.tar.gz", hash = "sha256:b41ca84d2742e39f2a730a13ea0dd619fca62e56cfac88c8f08989fb00a54fa8"}, ] [package.dependencies] @@ -1087,14 +1168,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "json5" -version = "0.9.10" +version = "0.9.11" description = "A Python implementation of the JSON5 data format." category = "main" optional = true python-versions = "*" files = [ - {file = "json5-0.9.10-py2.py3-none-any.whl", hash = "sha256:993189671e7412e9cdd8be8dc61cf402e8e579b35f1d1bb20ae6b09baa78bbce"}, - {file = "json5-0.9.10.tar.gz", hash = "sha256:ad9f048c5b5a4c3802524474ce40a622fae789860a86f10cc4f7e5f9cf9b46ab"}, + {file = "json5-0.9.11-py2.py3-none-any.whl", hash = "sha256:1aa54b80b5e507dfe31d12b7743a642e2ffa6f70bf73b8e3d7d1d5fba83d99bd"}, + {file = "json5-0.9.11.tar.gz", hash = "sha256:4f1e196acc55b83985a51318489f345963c7ba84aa37607e49073066c562e99b"}, ] [package.extras] @@ -1163,61 +1244,63 @@ qtconsole = "*" [[package]] name = "jupyter-client" -version = "7.4.8" +version = "8.0.2" description = "Jupyter protocol implementation and client libraries" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyter_client-7.4.8-py3-none-any.whl", hash = "sha256:d4a67ae86ee014bcb96bd8190714f6af921f2b0f52f4208b086aa5acfd9f8d65"}, - {file = "jupyter_client-7.4.8.tar.gz", hash = "sha256:109a3c33b62a9cf65aa8325850a0999a795fac155d9de4f7555aef5f310ee35a"}, + {file = "jupyter_client-8.0.2-py3-none-any.whl", hash = "sha256:c53731eb590b68839b0ce04bf46ff8c4f03278f5d9fe5c3b0f268a57cc2bd97e"}, + {file = "jupyter_client-8.0.2.tar.gz", hash = "sha256:47ac9f586dbcff4d79387ec264faf0fdeb5f14845fa7345fd7d1e378f8096011"}, ] [package.dependencies] -entrypoints = "*" -jupyter-core = ">=4.9.2" -nest-asyncio = ">=1.5.4" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" -traitlets = "*" +traitlets = ">=5.3" [package.extras] -doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["codecov", "coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" -version = "6.4.4" +version = "6.5.0" description = "Jupyter terminal console" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "jupyter_console-6.4.4-py3-none-any.whl", hash = "sha256:756df7f4f60c986e7bc0172e4493d3830a7e6e75c08750bbe59c0a5403ad6dee"}, - {file = "jupyter_console-6.4.4.tar.gz", hash = "sha256:172f5335e31d600df61613a97b7f0352f2c8250bbd1092ef2d658f77249f89fb"}, + {file = "jupyter_console-6.5.0-py3-none-any.whl", hash = "sha256:87826ab6c8c418731fd78f14ec504df735e79554e35784d0a6379018bb3ef9d7"}, + {file = "jupyter_console-6.5.0.tar.gz", hash = "sha256:67e68f1da16bc3f6f78ed846dd5543ec0679369f8504734f10bfd206faae39ea"}, ] [package.dependencies] -ipykernel = "*" +ipykernel = ">=6.14" ipython = "*" jupyter-client = ">=7.0.0" -prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +prompt-toolkit = ">=3.0.30" pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" [package.extras] -test = ["pexpect"] +test = ["pexpect", "pytest"] [[package]] name = "jupyter-core" -version = "5.1.0" +version = "5.2.0" description = "Jupyter core package. A base package on which Jupyter projects rely." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.1.0-py3-none-any.whl", hash = "sha256:f5740d99606958544396914b08e67b668f45e7eff99ab47a7f4bcead419c02f4"}, - {file = "jupyter_core-5.1.0.tar.gz", hash = "sha256:a5ae7c09c55c0b26f692ec69323ba2b62e8d7295354d20f6cd57b749de4a05bf"}, + {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, + {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, ] [package.dependencies] @@ -1226,7 +1309,7 @@ pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "sphinxcontrib-github-alt", "traitlets"] +docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] @@ -1253,18 +1336,18 @@ test = ["click", "coverage", "pre-commit", "pytest (>=6.1.0)", "pytest-asyncio ( [[package]] name = "jupyter-server" -version = "2.0.1" +version = "2.2.1" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.0.1-py3-none-any.whl", hash = "sha256:3bc09974a5290249de6924a614933e6f4f3d6d11f3061423a9f4e0271064a8b3"}, - {file = "jupyter_server-2.0.1.tar.gz", hash = "sha256:6e71268380ad7e4f2d9dda2f3e51a4fd4d1997b5390d5acdb74c7a195cfe4c00"}, + {file = "jupyter_server-2.2.1-py3-none-any.whl", hash = "sha256:854fb7d49f6b7f545d4f8354172b004dcda887ba0699def7112daf785ba3c9ce"}, + {file = "jupyter_server-2.2.1.tar.gz", hash = "sha256:5afb8a0cdfee37d02d69bdf470ae9cbb1dee5d4788f9bc6cc8e54bd8c83fb096"}, ] [package.dependencies] -anyio = ">=3.1.0,<4" +anyio = ">=3.1.0" argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=7.4.4" @@ -1284,21 +1367,39 @@ traitlets = ">=5.6.0" websocket-client = "*" [package.extras] -docs = ["docutils (<0.20)", "ipykernel", "jinja2", "jupyter-client", "jupyter-server", "mistune (<1.0.0)", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxemoji", "tornado"] -lint = ["black (>=22.6.0)", "mdformat (>0.7)", "ruff (>=0.0.156)"] +docs = ["docutils (<0.20)", "ipykernel", "jinja2", "jupyter-client", "jupyter-server", "mistune (<1.0.0)", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] test = ["ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"] -typing = ["mypy (>=0.990)"] + +[[package]] +name = "jupyter-server-fileid" +version = "0.6.0" +description = "" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "jupyter_server_fileid-0.6.0-py3-none-any.whl", hash = "sha256:ac36436611b281cebbb5b9936a6f4850271bb411e13a287780a022dd0d2c3bf7"}, + {file = "jupyter_server_fileid-0.6.0.tar.gz", hash = "sha256:a12209bdef4f2f9d57051b7556a089299fb9f26b501f643946854220c955be14"}, +] + +[package.dependencies] +jupyter-events = ">=0.5.0,<0.6.0" +jupyter-server = ">=1.15,<3" + +[package.extras] +cli = ["click"] +test = ["jupyter-server[test] (>=1.15,<3)", "pytest", "pytest-cov"] [[package]] name = "jupyter-server-terminals" -version = "0.4.3" +version = "0.4.4" description = "A Jupyter Server Extension Providing Terminals." category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "jupyter_server_terminals-0.4.3-py3-none-any.whl", hash = "sha256:ec67d3f1895d25cfb586a87a50b8eee13b709898a4afd721058e551e0a0f480d"}, - {file = "jupyter_server_terminals-0.4.3.tar.gz", hash = "sha256:8421438d95a1f1f6994c48dd5dc10ad167ea7c196972bb5d1d7a9da1e30fde02"}, + {file = "jupyter_server_terminals-0.4.4-py3-none-any.whl", hash = "sha256:75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36"}, + {file = "jupyter_server_terminals-0.4.4.tar.gz", hash = "sha256:57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d"}, ] [package.dependencies] @@ -1306,19 +1407,58 @@ pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} terminado = ">=0.8.3" [package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxemoji", "tornado"] +docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] +[[package]] +name = "jupyter-server-ydoc" +version = "0.6.1" +description = "A Jupyter Server Extension Providing Y Documents." +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "jupyter_server_ydoc-0.6.1-py3-none-any.whl", hash = "sha256:18275ff1ce7e93bbda2301ca066273b3951fc50b0d9c8fc33788374134ad7920"}, + {file = "jupyter_server_ydoc-0.6.1.tar.gz", hash = "sha256:ab10864708c81fa41ab9f2ed3626b54ff6926eaf14545d1d439714978dad6e9f"}, +] + +[package.dependencies] +jupyter-server-fileid = ">=0.6.0,<1" +jupyter-ydoc = ">=0.2.0,<0.4.0" +ypy-websocket = ">=0.8.2,<0.9.0" + +[package.extras] +test = ["coverage", "jupyter-server[test] (>=2.0.0a0)", "pytest (>=7.0)", "pytest-cov", "pytest-timeout", "pytest-tornasync"] + +[[package]] +name = "jupyter-ydoc" +version = "0.2.2" +description = "Document structures for collaborative editing using Ypy" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "jupyter_ydoc-0.2.2-py3-none-any.whl", hash = "sha256:596a9ae5986b59f8776c42430b5ad516405963574078ab801781933c9690be93"}, + {file = "jupyter_ydoc-0.2.2.tar.gz", hash = "sha256:3163bd4745eedd46d4bba6df52ab26be3c5c44c3a8aaf247635062486ea8f84f"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +y-py = ">=0.5.3,<0.6.0" + +[package.extras] +test = ["pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)", "ypy-websocket (>=0.3.1,<0.4.0)"] + [[package]] name = "jupyterlab" -version = "3.5.1" +version = "3.6.1" description = "JupyterLab computational environment" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "jupyterlab-3.5.1-py3-none-any.whl", hash = "sha256:c6748b4f21850c0095ed2187ce86d7e06edd9d1180cc4e6a572c4013163c0c74"}, - {file = "jupyterlab-3.5.1.tar.gz", hash = "sha256:59a1b2d79d4b3ebee4d997c8bed8cf450f460c7c35f46b613a93f0b7712b47fc"}, + {file = "jupyterlab-3.6.1-py3-none-any.whl", hash = "sha256:ad6707dd0149b629d0ed5b56916cfcdb816b376c6af3190337faba09e27ea29e"}, + {file = "jupyterlab-3.6.1.tar.gz", hash = "sha256:aee98c174180e98a30470297d10b959e8e64f2288970c0de65f0a6d2b4807034"}, ] [package.dependencies] @@ -1326,16 +1466,17 @@ ipython = "*" jinja2 = ">=2.1" jupyter-core = "*" jupyter-server = ">=1.16.0,<3" -jupyterlab-server = ">=2.10,<3.0" +jupyter-server-ydoc = ">=0.6.0,<0.7.0" +jupyter-ydoc = ">=0.2.2,<0.3.0" +jupyterlab-server = ">=2.19,<3.0" nbclassic = "*" notebook = "<7" packaging = "*" -tomli = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} tornado = ">=6.1.0" [package.extras] -test = ["check-manifest", "coverage", "jupyterlab-server[test]", "pre-commit", "pytest (>=6.0)", "pytest-check-links (>=0.5)", "pytest-console-scripts", "pytest-cov", "requests", "requests-cache", "virtualenv"] -ui-tests = ["build"] +test = ["check-manifest", "coverage", "jupyterlab-server[test]", "pre-commit", "pytest (>=6.0)", "pytest-check-links (>=0.5)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "requests", "requests-cache", "virtualenv"] [[package]] name = "jupyterlab-pygments" @@ -1351,14 +1492,14 @@ files = [ [[package]] name = "jupyterlab-server" -version = "2.16.5" +version = "2.19.0" description = "A set of server components for JupyterLab and JupyterLab like applications." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "jupyterlab_server-2.16.5-py3-none-any.whl", hash = "sha256:02862dcba01981fc0a0cb82198436301bb5a07ea59c05efeca59c8e9e9066309"}, - {file = "jupyterlab_server-2.16.5.tar.gz", hash = "sha256:61381c48268f0a8a84a27858b49db1b02e5aec6549e85e22fcdbf3eb14a2193a"}, + {file = "jupyterlab_server-2.19.0-py3-none-any.whl", hash = "sha256:51f6922e34f9f3db875051f4f7b57539a04ddd030f42d9ce6062dedf67bf7f2f"}, + {file = "jupyterlab_server-2.19.0.tar.gz", hash = "sha256:9aec21a2183bbedd9f91a86628355449575f1862d88b28ad5f905019d31e6c21"}, ] [package.dependencies] @@ -1366,28 +1507,26 @@ babel = ">=2.10" importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} jinja2 = ">=3.0.3" json5 = ">=0.9.0" -jsonschema = ">=3.0.1" +jsonschema = ">=4.17.3" jupyter-server = ">=1.21,<3" packaging = ">=21.3" requests = ">=2.28" [package.extras] docs = ["autodoc-traits", "docutils (<0.20)", "jinja2 (<3.2.0)", "mistune (<3)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi"] -lint = ["black[jupyter] (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] -openapi = ["openapi-core (>=0.14.2)", "ruamel-yaml"] -test = ["codecov", "ipykernel", "openapi-core (>=0.14.2,<0.15.0)", "openapi-spec-validator (<0.6)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6)", "pytest-timeout", "requests-mock", "ruamel-yaml", "strict-rfc3339"] -typing = ["mypy (>=0.990)"] +openapi = ["openapi-core (>=0.16.1)", "ruamel-yaml"] +test = ["codecov", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] name = "jupyterlab-widgets" -version = "1.1.1" +version = "1.1.2" description = "A JupyterLab extension." category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "jupyterlab_widgets-1.1.1-py3-none-any.whl", hash = "sha256:90ab47d99da03a3697074acb23b2975ead1d6171aa41cb2812041a7f2a08177a"}, - {file = "jupyterlab_widgets-1.1.1.tar.gz", hash = "sha256:67d0ef1e407e0c42c8ab60b9d901cd7a4c68923650763f75bf17fb06c1943b79"}, + {file = "jupyterlab_widgets-1.1.2-py3-none-any.whl", hash = "sha256:e7562e9d4ecb282f36f69fa4f1d0b23bda12db306b7aa981d47ba2a532e2ebe9"}, + {file = "jupyterlab_widgets-1.1.2.tar.gz", hash = "sha256:e1cc529afd7d7d7bcce251a591ca32a7d3f6b05d326b9b7a8afa577d2639e29c"}, ] [[package]] @@ -1470,103 +1609,113 @@ files = [ [[package]] name = "markupsafe" -version = "2.1.1" +version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, + {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, ] [[package]] name = "matplotlib" -version = "3.6.2" +version = "3.6.3" description = "Python plotting package" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "matplotlib-3.6.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:8d0068e40837c1d0df6e3abf1cdc9a34a6d2611d90e29610fa1d2455aeb4e2e5"}, - {file = "matplotlib-3.6.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:252957e208c23db72ca9918cb33e160c7833faebf295aaedb43f5b083832a267"}, - {file = "matplotlib-3.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d50e8c1e571ee39b5dfbc295c11ad65988879f68009dd281a6e1edbc2ff6c18c"}, - {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d840adcad7354be6f2ec28d0706528b0026e4c3934cc6566b84eac18633eab1b"}, - {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78ec3c3412cf277e6252764ee4acbdbec6920cc87ad65862272aaa0e24381eee"}, - {file = "matplotlib-3.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9347cc6822f38db2b1d1ce992f375289670e595a2d1c15961aacbe0977407dfc"}, - {file = "matplotlib-3.6.2-cp310-cp310-win32.whl", hash = "sha256:e0bbee6c2a5bf2a0017a9b5e397babb88f230e6f07c3cdff4a4c4bc75ed7c617"}, - {file = "matplotlib-3.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:8a0ae37576ed444fe853709bdceb2be4c7df6f7acae17b8378765bd28e61b3ae"}, - {file = "matplotlib-3.6.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:5ecfc6559132116dedfc482d0ad9df8a89dc5909eebffd22f3deb684132d002f"}, - {file = "matplotlib-3.6.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9f335e5625feb90e323d7e3868ec337f7b9ad88b5d633f876e3b778813021dab"}, - {file = "matplotlib-3.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2604c6450f9dd2c42e223b1f5dca9643a23cfecc9fde4a94bb38e0d2693b136"}, - {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5afe0a7ea0e3a7a257907060bee6724a6002b7eec55d0db16fd32409795f3e1"}, - {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca0e7a658fbafcddcaefaa07ba8dae9384be2343468a8e011061791588d839fa"}, - {file = "matplotlib-3.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32d29c8c26362169c80c5718ce367e8c64f4dd068a424e7110df1dd2ed7bd428"}, - {file = "matplotlib-3.6.2-cp311-cp311-win32.whl", hash = "sha256:5024b8ed83d7f8809982d095d8ab0b179bebc07616a9713f86d30cf4944acb73"}, - {file = "matplotlib-3.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:52c2bdd7cd0bf9d5ccdf9c1816568fd4ccd51a4d82419cc5480f548981b47dd0"}, - {file = "matplotlib-3.6.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:8a8dbe2cb7f33ff54b16bb5c500673502a35f18ac1ed48625e997d40c922f9cc"}, - {file = "matplotlib-3.6.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:380d48c15ec41102a2b70858ab1dedfa33eb77b2c0982cb65a200ae67a48e9cb"}, - {file = "matplotlib-3.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0844523dfaaff566e39dbfa74e6f6dc42e92f7a365ce80929c5030b84caa563a"}, - {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7f716b6af94dc1b6b97c46401774472f0867e44595990fe80a8ba390f7a0a028"}, - {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74153008bd24366cf099d1f1e83808d179d618c4e32edb0d489d526523a94d9f"}, - {file = "matplotlib-3.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec"}, - {file = "matplotlib-3.6.2-cp38-cp38-win32.whl", hash = "sha256:d0e9ac04065a814d4cf2c6791a2ad563f739ae3ae830d716d54245c2b96fead6"}, - {file = "matplotlib-3.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:8a9d899953c722b9afd7e88dbefd8fb276c686c3116a43c577cfabf636180558"}, - {file = "matplotlib-3.6.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0"}, - {file = "matplotlib-3.6.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3964934731fd7a289a91d315919cf757f293969a4244941ab10513d2351b4e83"}, - {file = "matplotlib-3.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:168093410b99f647ba61361b208f7b0d64dde1172b5b1796d765cd243cadb501"}, - {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e16dcaecffd55b955aa5e2b8a804379789c15987e8ebd2f32f01398a81e975b"}, - {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83dc89c5fd728fdb03b76f122f43b4dcee8c61f1489e232d9ad0f58020523e1c"}, - {file = "matplotlib-3.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:795ad83940732b45d39b82571f87af0081c120feff2b12e748d96bb191169e33"}, - {file = "matplotlib-3.6.2-cp39-cp39-win32.whl", hash = "sha256:19d61ee6414c44a04addbe33005ab1f87539d9f395e25afcbe9a3c50ce77c65c"}, - {file = "matplotlib-3.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:5ba73aa3aca35d2981e0b31230d58abb7b5d7ca104e543ae49709208d8ce706a"}, - {file = "matplotlib-3.6.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1836f366272b1557a613f8265db220eb8dd883202bbbabe01bad5a4eadfd0c95"}, - {file = "matplotlib-3.6.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eda9d1b43f265da91fb9ae10d6922b5a986e2234470a524e6b18f14095b20d2"}, - {file = "matplotlib-3.6.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4"}, - {file = "matplotlib-3.6.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3cef89888a466228fc4e4b2954e740ce8e9afde7c4315fdd18caa1b8de58ca17"}, - {file = "matplotlib-3.6.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:54fa9fe27f5466b86126ff38123261188bed568c1019e4716af01f97a12fe812"}, - {file = "matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e68be81cd8c22b029924b6d0ee814c337c0e706b8d88495a617319e5dd5441c3"}, - {file = "matplotlib-3.6.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0ca2c60d3966dfd6608f5f8c49b8a0fcf76de6654f2eda55fc6ef038d5a6f27"}, - {file = "matplotlib-3.6.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4426c74761790bff46e3d906c14c7aab727543293eed5a924300a952e1a3a3c1"}, - {file = "matplotlib-3.6.2.tar.gz", hash = "sha256:b03fd10a1709d0101c054883b550f7c4c5e974f751e2680318759af005964990"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:80c166a0e28512e26755f69040e6bf2f946a02ffdb7c00bf6158cca3d2b146e6"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eb9421c403ffd387fbe729de6d9a03005bf42faba5e8432f4e51e703215b49fc"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5223affa21050fb6118353c1380c15e23aedfb436bf3e162c26dc950617a7519"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00c248ab6b92bea3f8148714837937053a083ff03b4c5e30ed37e28fc0e7e56"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca94f0362f6b6f424b555b956971dcb94b12d0368a6c3e07dc7a40d32d6d873d"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59400cc9451094b7f08cc3f321972e6e1db4cd37a978d4e8a12824bf7fd2f03b"}, + {file = "matplotlib-3.6.3-cp310-cp310-win32.whl", hash = "sha256:57ad1aee29043163374bfa8990e1a2a10ff72c9a1bfaa92e9c46f6ea59269121"}, + {file = "matplotlib-3.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:1fcc4cad498533d3c393a160975acc9b36ffa224d15a6b90ae579eacee5d8579"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d2cfaa7fd62294d945b8843ea24228a27c8e7c5b48fa634f3c168153b825a21b"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c3f08df2ac4636249b8bc7a85b8b82c983bef1441595936f62c2918370ca7e1d"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff2aa84e74f80891e6bcf292ebb1dd57714ffbe13177642d65fee25384a30894"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11011c97d62c1db7bc20509572557842dbb8c2a2ddd3dd7f20501aa1cde3e54e"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c235bf9be052347373f589e018988cad177abb3f997ab1a2e2210c41562cc0c"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bebcff4c3ed02c6399d47329f3554193abd824d3d53b5ca02cf583bcd94470e2"}, + {file = "matplotlib-3.6.3-cp311-cp311-win32.whl", hash = "sha256:d5f18430f5cfa5571ab8f4c72c89af52aa0618e864c60028f11a857d62200cba"}, + {file = "matplotlib-3.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:dfba7057609ca9567b9704626756f0142e97ec8c5ba2c70c6e7bd1c25ef99f06"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:9fb8fb19d03abf3c5dab89a8677e62c4023632f919a62b6dd1d6d2dbf42cd9f5"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bbf269e1d24bc25247095d71c7a969813f7080e2a7c6fa28931a603f747ab012"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:994637e2995b0342699b396a320698b07cd148bbcf2dd2fa2daba73f34dd19f2"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77b384cee7ab8cf75ffccbfea351a09b97564fc62d149827a5e864bec81526e5"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:73b93af33634ed919e72811c9703e1105185cd3fb46d76f30b7f4cfbbd063f89"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:debeab8e2ab07e5e3dac33e12456da79c7e104270d2b2d1df92b9e40347cca75"}, + {file = "matplotlib-3.6.3-cp38-cp38-win32.whl", hash = "sha256:acc3b1a4bddbf56fe461e36fb9ef94c2cb607fc90d24ccc650040bfcc7610de4"}, + {file = "matplotlib-3.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:1183877d008c752d7d535396096c910f4663e4b74a18313adee1213328388e1e"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6adc441b5b2098a4b904bbf9d9e92fb816fef50c55aa2ea6a823fc89b94bb838"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:6d81b11ede69e3a751424b98dc869c96c10256b2206bfdf41f9c720eee86844c"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:29f17b7f2e068dc346687cbdf80b430580bab42346625821c2d3abf3a1ec5417"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f56a7252eee8f3438447f75f5e1148a1896a2756a92285fe5d73bed6deebff4"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbddfeb1495484351fb5b30cf5bdf06b3de0bc4626a707d29e43dfd61af2a780"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809119d1cba3ece3c9742eb01827fe7a0e781ea3c5d89534655a75e07979344f"}, + {file = "matplotlib-3.6.3-cp39-cp39-win32.whl", hash = "sha256:e0a64d7cc336b52e90f59e6d638ae847b966f68582a7af041e063d568e814740"}, + {file = "matplotlib-3.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:79e501eb847f4a489eb7065bb8d3187117f65a4c02d12ea3a19d6c5bef173bcc"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2787a16df07370dcba385fe20cdd0cc3cfaabd3c873ddabca78c10514c799721"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68d94a436f62b8a861bf3ace82067a71bafb724b4e4f9133521e4d8012420dd7"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b409b2790cf8d7c1ef35920f01676d2ae7afa8241844e7aa5484fdf493a9a0"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:faff486b36530a836a6b4395850322e74211cd81fc17f28b4904e1bd53668e3e"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:38d38cb1ea1d80ee0f6351b65c6f76cad6060bbbead015720ba001348ae90f0c"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f999661589981e74d793ee2f41b924b3b87d65fd929f6153bf0f30675c59b1"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01b7f521a9a73c383825813af255f8c4485d1706e4f3e2ed5ae771e4403a40ab"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9ceebaf73f1a3444fa11014f38b9da37ff7ea328d6efa1652241fe3777bfdab9"}, + {file = "matplotlib-3.6.3.tar.gz", hash = "sha256:1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9"}, ] [package.dependencies] @@ -1579,7 +1728,6 @@ packaging = ">=20.0" pillow = ">=6.2.0" pyparsing = ">=2.2.1" python-dateutil = ">=2.7" -setuptools_scm = ">=7" [[package]] name = "matplotlib-inline" @@ -1610,38 +1758,38 @@ files = [ [[package]] name = "mistune" -version = "2.0.4" +version = "2.0.5" description = "A sane Markdown parser with useful plugins and renderers" category = "main" optional = true python-versions = "*" files = [ - {file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"}, - {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"}, + {file = "mistune-2.0.5-py2.py3-none-any.whl", hash = "sha256:bad7f5d431886fcbaf5f758118ecff70d31f75231b34024a1341120340a65ce8"}, + {file = "mistune-2.0.5.tar.gz", hash = "sha256:0246113cb2492db875c6be56974a7c893333bf26cd92891c85f63151cee09d34"}, ] [[package]] name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] [[package]] name = "nbclassic" -version = "0.4.8" -description = "A web-based notebook environment for interactive computing" +version = "0.5.1" +description = "Jupyter Notebook as a Jupyter Server extension." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "nbclassic-0.4.8-py3-none-any.whl", hash = "sha256:cbf05df5842b420d5cece0143462380ea9d308ff57c2dc0eb4d6e035b18fbfb3"}, - {file = "nbclassic-0.4.8.tar.gz", hash = "sha256:c74d8a500f8e058d46b576a41e5bc640711e1032cf7541dde5f73ea49497e283"}, + {file = "nbclassic-0.5.1-py3-none-any.whl", hash = "sha256:32c235e1f22f4048f3b877d354c198202898797cf9c2085856827598cead001b"}, + {file = "nbclassic-0.5.1.tar.gz", hash = "sha256:8e8ffce7582bb7a4baf11fa86a3d88b184e8e7df78eed4ead69f15aa4fc0e323"}, ] [package.dependencies] @@ -1651,7 +1799,7 @@ ipython-genutils = "*" jinja2 = "*" jupyter-client = ">=6.1.1" jupyter-core = ">=4.6.1" -jupyter-server = ">=1.8" +jupyter-server = ">=1.17.0" nbconvert = ">=5" nbformat = "*" nest-asyncio = ">=1.5" @@ -1666,7 +1814,7 @@ traitlets = ">=4.2.1" [package.extras] docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] json-logging = ["json-logging"] -test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-playwright", "pytest-tornasync", "requests", "requests-unixsocket", "testpath"] +test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-jupyter", "pytest-playwright", "pytest-tornasync", "requests", "requests-unixsocket", "testpath"] [[package]] name = "nbclient" @@ -1692,14 +1840,14 @@ test = ["black", "check-manifest", "flake8", "ipykernel", "ipython", "ipywidgets [[package]] name = "nbconvert" -version = "7.2.6" +version = "7.2.9" description = "Converting Jupyter Notebooks" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "nbconvert-7.2.6-py3-none-any.whl", hash = "sha256:f933e82fe48b9a421e4252249f6c0a9a9940dc555642b4729f3f1f526bb16779"}, - {file = "nbconvert-7.2.6.tar.gz", hash = "sha256:c9c0e4b26326f7658ebf4cda0acc591b9727c4e3ee3ede962f70c11833b71b40"}, + {file = "nbconvert-7.2.9-py3-none-any.whl", hash = "sha256:495638c5e06005f4a5ce828d8a81d28e34f95c20f4384d5d7a22254b443836e7"}, + {file = "nbconvert-7.2.9.tar.gz", hash = "sha256:a42c3ac137c64f70cbe4d763111bf358641ea53b37a01a5c202ed86374af5234"}, ] [package.dependencies] @@ -1722,23 +1870,23 @@ traitlets = ">=5.0" [package.extras] all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"] -docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-dependency"] +test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"] webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.7.0" +version = "5.7.3" description = "The Jupyter Notebook format" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "nbformat-5.7.0-py3-none-any.whl", hash = "sha256:1b05ec2c552c2f1adc745f4eddce1eac8ca9ffd59bb9fd859e827eaa031319f9"}, - {file = "nbformat-5.7.0.tar.gz", hash = "sha256:1d4760c15c1a04269ef5caf375be8b98dd2f696e5eb9e603ec2bf091f9b0d3f3"}, + {file = "nbformat-5.7.3-py3-none-any.whl", hash = "sha256:22a98a6516ca216002b0a34591af5bcb8072ca6c63910baffc901cfa07fefbf0"}, + {file = "nbformat-5.7.3.tar.gz", hash = "sha256:4b021fca24d3a747bf4e626694033d792d594705829e5e35b14ee3369f9f6477"}, ] [package.dependencies] @@ -1748,18 +1896,19 @@ jupyter-core = "*" traitlets = ">=5.1" [package.extras] -test = ["check-manifest", "pep440", "pre-commit", "pytest", "testpath"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nbmake" -version = "1.3.5" +version = "1.4" description = "Pytest plugin for testing notebooks" category = "dev" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ - {file = "nbmake-1.3.5-py3-none-any.whl", hash = "sha256:8506d2a2d7eb55bdc0db0f1573039c734bd4f4d1c130df4ad8ade72b5b2a8fe0"}, - {file = "nbmake-1.3.5.tar.gz", hash = "sha256:95d4716928171120fae562e69440989a636e2af8616c829573e9574f5bea30db"}, + {file = "nbmake-1.4-py3-none-any.whl", hash = "sha256:bc89fbc32484e761d95f26111e85237c6e9ed44b1cd26ba926e9502e5db4ace1"}, + {file = "nbmake-1.4.tar.gz", hash = "sha256:2d3b97b83a8a378d5d828ad7b5412e509b82ed883662af16533236c909cfa20a"}, ] [package.dependencies] @@ -1837,89 +1986,89 @@ test = ["pytest", "pytest-console-scripts", "pytest-tornasync"] [[package]] name = "numpy" -version = "1.24.0" +version = "1.24.2" description = "Fundamental package for array computing in Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.24.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6e73a1f4f5b74a42abb55bc2b3d869f1b38cbc8776da5f8b66bf110284f7a437"}, - {file = "numpy-1.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9387c7d6d50e8f8c31e7bfc034241e9c6f4b3eb5db8d118d6487047b922f82af"}, - {file = "numpy-1.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ad6a024a32ee61d18f5b402cd02e9c0e22c0fb9dc23751991b3a16d209d972e"}, - {file = "numpy-1.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73cf2c5b5a07450f20a0c8e04d9955491970177dce8df8d6903bf253e53268e0"}, - {file = "numpy-1.24.0-cp310-cp310-win32.whl", hash = "sha256:cec79ff3984b2d1d103183fc4a3361f5b55bbb66cb395cbf5a920a4bb1fd588d"}, - {file = "numpy-1.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:4f5e78b8b710cd7cd1a8145994cfffc6ddd5911669a437777d8cedfce6c83a98"}, - {file = "numpy-1.24.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4445f472b246cad6514cc09fbb5ecb7aab09ca2acc3c16f29f8dca6c468af501"}, - {file = "numpy-1.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ec3e5e8172a0a6a4f3c2e7423d4a8434c41349141b04744b11a90e017a95bad5"}, - {file = "numpy-1.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9168790149f917ad8e3cf5047b353fefef753bd50b07c547da0bdf30bc15d91"}, - {file = "numpy-1.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada6c1e9608ceadaf7020e1deea508b73ace85560a16f51bef26aecb93626a72"}, - {file = "numpy-1.24.0-cp311-cp311-win32.whl", hash = "sha256:f3c4a9a9f92734a4728ddbd331e0124eabbc968a0359a506e8e74a9b0d2d419b"}, - {file = "numpy-1.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:90075ef2c6ac6397d0035bcd8b298b26e481a7035f7a3f382c047eb9c3414db0"}, - {file = "numpy-1.24.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0885d9a7666cafe5f9876c57bfee34226e2b2847bfb94c9505e18d81011e5401"}, - {file = "numpy-1.24.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e63d2157f9fc98cc178870db83b0e0c85acdadd598b134b00ebec9e0db57a01f"}, - {file = "numpy-1.24.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8960f72997e56781eb1c2ea256a70124f92a543b384f89e5fb3503a308b1d3"}, - {file = "numpy-1.24.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f8e0df2ecc1928ef7256f18e309c9d6229b08b5be859163f5caa59c93d53646"}, - {file = "numpy-1.24.0-cp38-cp38-win32.whl", hash = "sha256:fe44e925c68fb5e8db1334bf30ac1a1b6b963b932a19cf41d2e899cf02f36aab"}, - {file = "numpy-1.24.0-cp38-cp38-win_amd64.whl", hash = "sha256:d7f223554aba7280e6057727333ed357b71b7da7422d02ff5e91b857888c25d1"}, - {file = "numpy-1.24.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ab11f6a7602cf8ea4c093e091938207de3068c5693a0520168ecf4395750f7ea"}, - {file = "numpy-1.24.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12bba5561d8118981f2f1ff069ecae200c05d7b6c78a5cdac0911f74bc71cbd1"}, - {file = "numpy-1.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9af91f794d2d3007d91d749ebc955302889261db514eb24caef30e03e8ec1e41"}, - {file = "numpy-1.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b1ddfac6a82d4f3c8e99436c90b9c2c68c0bb14658d1684cdd00f05fab241f5"}, - {file = "numpy-1.24.0-cp39-cp39-win32.whl", hash = "sha256:ac4fe68f1a5a18136acebd4eff91aab8bed00d1ef2fdb34b5d9192297ffbbdfc"}, - {file = "numpy-1.24.0-cp39-cp39-win_amd64.whl", hash = "sha256:667b5b1f6a352419e340f6475ef9930348ae5cb7fca15f2cc3afcb530823715e"}, - {file = "numpy-1.24.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4d01f7832fa319a36fd75ba10ea4027c9338ede875792f7bf617f4b45056fc3a"}, - {file = "numpy-1.24.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbb0490f0a880700a6cc4d000384baf19c1f4df59fff158d9482d4dbbca2b239"}, - {file = "numpy-1.24.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0104d8adaa3a4cc60c2777cab5196593bf8a7f416eda133be1f3803dd0838886"}, - {file = "numpy-1.24.0.tar.gz", hash = "sha256:c4ab7c9711fe6b235e86487ca74c1b092a6dd59a3cb45b63241ea0a148501853"}, + {file = "numpy-1.24.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eef70b4fc1e872ebddc38cddacc87c19a3709c0e3e5d20bf3954c147b1dd941d"}, + {file = "numpy-1.24.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8d2859428712785e8a8b7d2b3ef0a1d1565892367b32f915c4a4df44d0e64f5"}, + {file = "numpy-1.24.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6524630f71631be2dabe0c541e7675db82651eb998496bbe16bc4f77f0772253"}, + {file = "numpy-1.24.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a51725a815a6188c662fb66fb32077709a9ca38053f0274640293a14fdd22978"}, + {file = "numpy-1.24.2-cp310-cp310-win32.whl", hash = "sha256:2620e8592136e073bd12ee4536149380695fbe9ebeae845b81237f986479ffc9"}, + {file = "numpy-1.24.2-cp310-cp310-win_amd64.whl", hash = "sha256:97cf27e51fa078078c649a51d7ade3c92d9e709ba2bfb97493007103c741f1d0"}, + {file = "numpy-1.24.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7de8fdde0003f4294655aa5d5f0a89c26b9f22c0a58790c38fae1ed392d44a5a"}, + {file = "numpy-1.24.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4173bde9fa2a005c2c6e2ea8ac1618e2ed2c1c6ec8a7657237854d42094123a0"}, + {file = "numpy-1.24.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cecaed30dc14123020f77b03601559fff3e6cd0c048f8b5289f4eeabb0eb281"}, + {file = "numpy-1.24.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a23f8440561a633204a67fb44617ce2a299beecf3295f0d13c495518908e910"}, + {file = "numpy-1.24.2-cp311-cp311-win32.whl", hash = "sha256:e428c4fbfa085f947b536706a2fc349245d7baa8334f0c5723c56a10595f9b95"}, + {file = "numpy-1.24.2-cp311-cp311-win_amd64.whl", hash = "sha256:557d42778a6869c2162deb40ad82612645e21d79e11c1dc62c6e82a2220ffb04"}, + {file = "numpy-1.24.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d0a2db9d20117bf523dde15858398e7c0858aadca7c0f088ac0d6edd360e9ad2"}, + {file = "numpy-1.24.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c72a6b2f4af1adfe193f7beb91ddf708ff867a3f977ef2ec53c0ffb8283ab9f5"}, + {file = "numpy-1.24.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29e6bd0ec49a44d7690ecb623a8eac5ab8a923bce0bea6293953992edf3a76a"}, + {file = "numpy-1.24.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eabd64ddb96a1239791da78fa5f4e1693ae2dadc82a76bc76a14cbb2b966e96"}, + {file = "numpy-1.24.2-cp38-cp38-win32.whl", hash = "sha256:e3ab5d32784e843fc0dd3ab6dcafc67ef806e6b6828dc6af2f689be0eb4d781d"}, + {file = "numpy-1.24.2-cp38-cp38-win_amd64.whl", hash = "sha256:76807b4063f0002c8532cfeac47a3068a69561e9c8715efdad3c642eb27c0756"}, + {file = "numpy-1.24.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4199e7cfc307a778f72d293372736223e39ec9ac096ff0a2e64853b866a8e18a"}, + {file = "numpy-1.24.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:adbdce121896fd3a17a77ab0b0b5eedf05a9834a18699db6829a64e1dfccca7f"}, + {file = "numpy-1.24.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:889b2cc88b837d86eda1b17008ebeb679d82875022200c6e8e4ce6cf549b7acb"}, + {file = "numpy-1.24.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f64bb98ac59b3ea3bf74b02f13836eb2e24e48e0ab0145bbda646295769bd780"}, + {file = "numpy-1.24.2-cp39-cp39-win32.whl", hash = "sha256:63e45511ee4d9d976637d11e6c9864eae50e12dc9598f531c035265991910468"}, + {file = "numpy-1.24.2-cp39-cp39-win_amd64.whl", hash = "sha256:a77d3e1163a7770164404607b7ba3967fb49b24782a6ef85d9b5f54126cc39e5"}, + {file = "numpy-1.24.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:92011118955724465fb6853def593cf397b4a1367495e0b59a7e69d40c4eb71d"}, + {file = "numpy-1.24.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9006288bcf4895917d02583cf3411f98631275bc67cce355a7f39f8c14338fa"}, + {file = "numpy-1.24.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:150947adbdfeceec4e5926d956a06865c1c690f2fd902efede4ca6fe2e657c3f"}, + {file = "numpy-1.24.2.tar.gz", hash = "sha256:003a9f530e880cb2cd177cba1af7220b9aa42def9c4afc2a2fc3ee6be7eb2b22"}, ] [[package]] name = "packaging" -version = "22.0" +version = "23.0" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, - {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, + {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, + {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] [[package]] name = "pandas" -version = "1.5.2" +version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pandas-1.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273"}, - {file = "pandas-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789"}, - {file = "pandas-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824"}, - {file = "pandas-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028"}, - {file = "pandas-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72"}, - {file = "pandas-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f"}, - {file = "pandas-1.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261"}, - {file = "pandas-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc"}, - {file = "pandas-1.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3"}, - {file = "pandas-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39"}, - {file = "pandas-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2"}, - {file = "pandas-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5"}, - {file = "pandas-1.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b"}, - {file = "pandas-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519"}, - {file = "pandas-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a"}, - {file = "pandas-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f"}, - {file = "pandas-1.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0"}, - {file = "pandas-1.5.2-cp38-cp38-win32.whl", hash = "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5"}, - {file = "pandas-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc"}, - {file = "pandas-1.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702"}, - {file = "pandas-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe"}, - {file = "pandas-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb"}, - {file = "pandas-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883"}, - {file = "pandas-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e"}, - {file = "pandas-1.5.2-cp39-cp39-win32.whl", hash = "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090"}, - {file = "pandas-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f"}, - {file = "pandas-1.5.2.tar.gz", hash = "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b"}, + {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, + {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, + {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, + {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, + {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, + {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, + {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, + {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, + {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, + {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, + {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, + {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, + {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, + {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, + {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, + {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, + {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, + {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, + {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, + {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, + {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, + {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, + {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, + {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, + {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, + {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, + {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, ] [package.dependencies] @@ -1963,14 +2112,14 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.10.3" +version = "0.11.0" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"}, - {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, + {file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"}, + {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"}, ] [[package]] @@ -2002,105 +2151,114 @@ files = [ [[package]] name = "pillow" -version = "9.3.0" +version = "9.4.0" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"}, - {file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"}, - {file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"}, - {file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"}, - {file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"}, - {file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"}, - {file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"}, - {file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"}, - {file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"}, - {file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"}, - {file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"}, - {file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"}, - {file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"}, - {file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"}, - {file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"}, - {file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"}, - {file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"}, - {file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"}, - {file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"}, - {file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"}, - {file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"}, - {file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"}, - {file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"}, - {file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"}, - {file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"}, - {file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"}, -] - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] + {file = "Pillow-9.4.0-1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1"}, + {file = "Pillow-9.4.0-1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12"}, + {file = "Pillow-9.4.0-1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd"}, + {file = "Pillow-9.4.0-1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9"}, + {file = "Pillow-9.4.0-1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858"}, + {file = "Pillow-9.4.0-1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab"}, + {file = "Pillow-9.4.0-1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35"}, + {file = "Pillow-9.4.0-cp310-cp310-win32.whl", hash = "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a"}, + {file = "Pillow-9.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a"}, + {file = "Pillow-9.4.0-cp311-cp311-win32.whl", hash = "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c"}, + {file = "Pillow-9.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee"}, + {file = "Pillow-9.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5"}, + {file = "Pillow-9.4.0-cp37-cp37m-win32.whl", hash = "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e"}, + {file = "Pillow-9.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628"}, + {file = "Pillow-9.4.0-cp38-cp38-win32.whl", hash = "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d"}, + {file = "Pillow-9.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153"}, + {file = "Pillow-9.4.0-cp39-cp39-win32.whl", hash = "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c"}, + {file = "Pillow-9.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9"}, + {file = "Pillow-9.4.0.tar.gz", hash = "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "platformdirs" -version = "2.6.0" +version = "3.0.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-2.6.0-py3-none-any.whl", hash = "sha256:1a89a12377800c81983db6be069ec068eee989748799b946cce2a6e80dcc54ca"}, - {file = "platformdirs-2.6.0.tar.gz", hash = "sha256:b46ffafa316e6b83b47489d240ce17173f123a9b9c83282141c3daf26ad9ac2e"}, + {file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"}, + {file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"}, ] [package.extras] -docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"] -test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "plotly" -version = "5.11.0" +version = "5.13.0" description = "An open-source, interactive data visualization library for Python" category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "plotly-5.11.0-py2.py3-none-any.whl", hash = "sha256:52fd74b08aa4fd5a55b9d3034a30dbb746e572d7ed84897422f927fdf687ea5f"}, - {file = "plotly-5.11.0.tar.gz", hash = "sha256:4efef479c2ec1d86dcdac8405b6ca70ca65649a77408e39a7e84a1ea2db6c787"}, + {file = "plotly-5.13.0-py2.py3-none-any.whl", hash = "sha256:4ac5db72176ce144f1fcde8d1ef7bdbccf5bb7a53e3d366b16fcd7c85319fdfd"}, + {file = "plotly-5.13.0.tar.gz", hash = "sha256:81a3aae4021d5ab91790fc71c3433791f41bfc71586e857f7777f429a955039a"}, ] [package.dependencies] @@ -2124,14 +2282,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prometheus-client" -version = "0.15.0" +version = "0.16.0" description = "Python client for the Prometheus monitoring system." category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "prometheus_client-0.15.0-py3-none-any.whl", hash = "sha256:db7c05cbd13a0f79975592d112320f2605a325969b270a94b71dcabc47b931d2"}, - {file = "prometheus_client-0.15.0.tar.gz", hash = "sha256:be26aa452490cfcf6da953f9436e95a9f2b4d578ca80094b4458930e5f584ab1"}, + {file = "prometheus_client-0.16.0-py3-none-any.whl", hash = "sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab"}, + {file = "prometheus_client-0.16.0.tar.gz", hash = "sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48"}, ] [package.extras] @@ -2242,7 +2400,7 @@ tests = ["pytest"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2276,52 +2434,52 @@ files = [ [[package]] name = "pydantic" -version = "1.10.2" +version = "1.10.4" description = "Data validation and settings management using python type hints" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd"}, - {file = "pydantic-1.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98"}, - {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912"}, - {file = "pydantic-1.10.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559"}, - {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236"}, - {file = "pydantic-1.10.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c"}, - {file = "pydantic-1.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644"}, - {file = "pydantic-1.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f"}, - {file = "pydantic-1.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a"}, - {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525"}, - {file = "pydantic-1.10.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283"}, - {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42"}, - {file = "pydantic-1.10.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52"}, - {file = "pydantic-1.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c"}, - {file = "pydantic-1.10.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5"}, - {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c"}, - {file = "pydantic-1.10.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254"}, - {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5"}, - {file = "pydantic-1.10.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d"}, - {file = "pydantic-1.10.2-cp37-cp37m-win_amd64.whl", hash = "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2"}, - {file = "pydantic-1.10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13"}, - {file = "pydantic-1.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116"}, - {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624"}, - {file = "pydantic-1.10.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1"}, - {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9"}, - {file = "pydantic-1.10.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965"}, - {file = "pydantic-1.10.2-cp38-cp38-win_amd64.whl", hash = "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e"}, - {file = "pydantic-1.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488"}, - {file = "pydantic-1.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41"}, - {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b"}, - {file = "pydantic-1.10.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe"}, - {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d"}, - {file = "pydantic-1.10.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda"}, - {file = "pydantic-1.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6"}, - {file = "pydantic-1.10.2-py3-none-any.whl", hash = "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709"}, - {file = "pydantic-1.10.2.tar.gz", hash = "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410"}, -] - -[package.dependencies] -typing-extensions = ">=4.1.0" + {file = "pydantic-1.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854"}, + {file = "pydantic-1.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817"}, + {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c"}, + {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e"}, + {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85"}, + {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6"}, + {file = "pydantic-1.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d"}, + {file = "pydantic-1.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53"}, + {file = "pydantic-1.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3"}, + {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a"}, + {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d"}, + {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72"}, + {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857"}, + {file = "pydantic-1.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3"}, + {file = "pydantic-1.10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00"}, + {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978"}, + {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e"}, + {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa"}, + {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8"}, + {file = "pydantic-1.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903"}, + {file = "pydantic-1.10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423"}, + {file = "pydantic-1.10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f"}, + {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06"}, + {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15"}, + {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c"}, + {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416"}, + {file = "pydantic-1.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6"}, + {file = "pydantic-1.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d"}, + {file = "pydantic-1.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f"}, + {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024"}, + {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c"}, + {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28"}, + {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f"}, + {file = "pydantic-1.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4"}, + {file = "pydantic-1.10.4-py3-none-any.whl", hash = "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774"}, + {file = "pydantic-1.10.4.tar.gz", hash = "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648"}, +] + +[package.dependencies] +typing-extensions = ">=4.2.0" [package.extras] dotenv = ["python-dotenv (>=0.10.4)"] @@ -2341,14 +2499,14 @@ files = [ [[package]] name = "pygments" -version = "2.13.0" +version = "2.14.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, - {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, + {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, + {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, ] [package.extras] @@ -2398,46 +2556,51 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyrsistent" -version = "0.19.2" +version = "0.19.3" description = "Persistent/Functional/Immutable data structures" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, - {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, - {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed"}, - {file = "pyrsistent-0.19.2-cp310-cp310-win32.whl", hash = "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41"}, - {file = "pyrsistent-0.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-win32.whl", hash = "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73"}, - {file = "pyrsistent-0.19.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308"}, - {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584"}, - {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb"}, - {file = "pyrsistent-0.19.2-cp38-cp38-win32.whl", hash = "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a"}, - {file = "pyrsistent-0.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab"}, - {file = "pyrsistent-0.19.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770"}, - {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95"}, - {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e"}, - {file = "pyrsistent-0.19.2-cp39-cp39-win32.whl", hash = "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b"}, - {file = "pyrsistent-0.19.2-cp39-cp39-win_amd64.whl", hash = "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291"}, - {file = "pyrsistent-0.19.2-py3-none-any.whl", hash = "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0"}, - {file = "pyrsistent-0.19.2.tar.gz", hash = "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2"}, + {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, + {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, + {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, + {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, + {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, + {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, ] [[package]] name = "pytest" -version = "7.2.0" +version = "7.2.1" description = "pytest: simple powerful testing with Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, - {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, + {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, + {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, ] [package.dependencies] @@ -2529,14 +2692,14 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "0.21.0" +version = "0.21.1" description = "Read key-value pairs from a .env file and set them as environment variables" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "python-dotenv-0.21.0.tar.gz", hash = "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045"}, - {file = "python_dotenv-0.21.0-py3-none-any.whl", hash = "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5"}, + {file = "python-dotenv-0.21.1.tar.gz", hash = "sha256:1c93de8f636cde3ce377292818d0e440b6e45a82f215c3744979151fa8151c49"}, + {file = "python_dotenv-0.21.1-py3-none-any.whl", hash = "sha256:41e12e0318bebc859fcc4d97d4db8d20ad21721a6aa5047dd59f090391cb549a"}, ] [package.extras] @@ -2556,14 +2719,14 @@ files = [ [[package]] name = "pytz" -version = "2022.7" +version = "2022.7.1" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.7-py2.py3-none-any.whl", hash = "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd"}, - {file = "pytz-2022.7.tar.gz", hash = "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a"}, + {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, + {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, ] [[package]] @@ -2592,18 +2755,18 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.9" +version = "2.0.10" description = "Pseudo terminal support for Windows from Python." category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "pywinpty-2.0.9-cp310-none-win_amd64.whl", hash = "sha256:30a7b371446a694a6ce5ef906d70ac04e569de5308c42a2bdc9c3bc9275ec51f"}, - {file = "pywinpty-2.0.9-cp311-none-win_amd64.whl", hash = "sha256:d78ef6f4bd7a6c6f94dc1a39ba8fb028540cc39f5cb593e756506db17843125f"}, - {file = "pywinpty-2.0.9-cp37-none-win_amd64.whl", hash = "sha256:5ed36aa087e35a3a183f833631b3e4c1ae92fe2faabfce0fa91b77ed3f0f1382"}, - {file = "pywinpty-2.0.9-cp38-none-win_amd64.whl", hash = "sha256:2352f44ee913faaec0a02d3c112595e56b8af7feeb8100efc6dc1a8685044199"}, - {file = "pywinpty-2.0.9-cp39-none-win_amd64.whl", hash = "sha256:ba75ec55f46c9e17db961d26485b033deb20758b1731e8e208e1e8a387fcf70c"}, - {file = "pywinpty-2.0.9.tar.gz", hash = "sha256:01b6400dd79212f50a2f01af1c65b781290ff39610853db99bf03962eb9a615f"}, + {file = "pywinpty-2.0.10-cp310-none-win_amd64.whl", hash = "sha256:4c7d06ad10f6e92bc850a467f26d98f4f30e73d2fe5926536308c6ae0566bc16"}, + {file = "pywinpty-2.0.10-cp311-none-win_amd64.whl", hash = "sha256:7ffbd66310b83e42028fc9df7746118978d94fba8c1ebf15a7c1275fdd80b28a"}, + {file = "pywinpty-2.0.10-cp37-none-win_amd64.whl", hash = "sha256:38cb924f2778b5751ef91a75febd114776b3af0ae411bc667be45dd84fc881d3"}, + {file = "pywinpty-2.0.10-cp38-none-win_amd64.whl", hash = "sha256:902d79444b29ad1833b8d5c3c9aabdfd428f4f068504430df18074007c8c0de8"}, + {file = "pywinpty-2.0.10-cp39-none-win_amd64.whl", hash = "sha256:3c46aef80dd50979aff93de199e4a00a8ee033ba7a03cadf0a91fed45f0c39d7"}, + {file = "pywinpty-2.0.10.tar.gz", hash = "sha256:cdbb5694cf8c7242c2ecfaca35c545d31fa5d5814c3d67a4e628f803f680ebea"}, ] [[package]] @@ -2658,91 +2821,93 @@ files = [ [[package]] name = "pyzmq" -version = "24.0.1" +version = "25.0.0" description = "Python bindings for 0MQ" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"}, - {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"}, - {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"}, - {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"}, - {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"}, - {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"}, - {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"}, - {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"}, - {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"}, - {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"}, - {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"}, - {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"}, - {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"}, - {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"}, - {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"}, - {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"}, - {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"}, - {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"}, - {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"}, - {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"}, - {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"}, - {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"}, - {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"}, + {file = "pyzmq-25.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:2d05d904f03ddf1e0d83d97341354dfe52244a619b5a1440a5f47a5b3451e84e"}, + {file = "pyzmq-25.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a154ef810d44f9d28868be04641f837374a64e7449df98d9208e76c260c7ef1"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:487305c2a011fdcf3db1f24e8814bb76d23bc4d2f46e145bc80316a59a9aa07d"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e7b87638ee30ab13230e37ce5331b3e730b1e0dda30120b9eeec3540ed292c8"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75243e422e85a62f0ab7953dc315452a56b2c6a7e7d1a3c3109ac3cc57ed6b47"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:31e523d067ce44a04e876bed3ff9ea1ff8d1b6636d16e5fcace9d22f8c564369"}, + {file = "pyzmq-25.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8539216173135e9e89f6b1cc392e74e6b935b91e8c76106cf50e7a02ab02efe5"}, + {file = "pyzmq-25.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2754fa68da08a854f4816e05160137fa938a2347276471103d31e04bcee5365c"}, + {file = "pyzmq-25.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1bc30f0c18444d51e9b0d0dd39e3a4e7c53ee74190bebef238cd58de577ea9"}, + {file = "pyzmq-25.0.0-cp310-cp310-win32.whl", hash = "sha256:01d53958c787cfea34091fcb8ef36003dbb7913b8e9f8f62a0715234ebc98b70"}, + {file = "pyzmq-25.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:58fc3ad5e1cfd2e6d24741fbb1e216b388115d31b0ca6670f894187f280b6ba6"}, + {file = "pyzmq-25.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:e4bba04ea779a3d7ef25a821bb63fd0939142c88e7813e5bd9c6265a20c523a2"}, + {file = "pyzmq-25.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:af1fbfb7ad6ac0009ccee33c90a1d303431c7fb594335eb97760988727a37577"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85456f0d8f3268eecd63dede3b99d5bd8d3b306310c37d4c15141111d22baeaf"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0645b5a2d2a06fd8eb738018490c514907f7488bf9359c6ee9d92f62e844b76f"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f72ea279b2941a5203e935a4588b9ba8a48aeb9a926d9dfa1986278bd362cb8"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:4e295f7928a31ae0f657e848c5045ba6d693fe8921205f408ca3804b1b236968"}, + {file = "pyzmq-25.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ac97e7d647d5519bcef48dd8d3d331f72975afa5c4496c95f6e854686f45e2d9"}, + {file = "pyzmq-25.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:656281d496aaf9ca4fd4cea84e6d893e3361057c4707bd38618f7e811759103c"}, + {file = "pyzmq-25.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f6116991568aac48b94d6d8aaed6157d407942ea385335a6ed313692777fb9d"}, + {file = "pyzmq-25.0.0-cp311-cp311-win32.whl", hash = "sha256:0282bba9aee6e0346aa27d6c69b5f7df72b5a964c91958fc9e0c62dcae5fdcdc"}, + {file = "pyzmq-25.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:526f884a27e8bba62fe1f4e07c62be2cfe492b6d432a8fdc4210397f8cf15331"}, + {file = "pyzmq-25.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ccb3e1a863222afdbda42b7ca8ac8569959593d7abd44f5a709177d6fa27d266"}, + {file = "pyzmq-25.0.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4046d03100aca266e70d54a35694cb35d6654cfbef633e848b3c4a8d64b9d187"}, + {file = "pyzmq-25.0.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3100dddcada66ec5940ed6391ebf9d003cc3ede3d320748b2737553019f58230"}, + {file = "pyzmq-25.0.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7877264aa851c19404b1bb9dbe6eed21ea0c13698be1eda3784aab3036d1c861"}, + {file = "pyzmq-25.0.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:5049e75cc99db65754a3da5f079230fb8889230cf09462ec972d884d1704a3ed"}, + {file = "pyzmq-25.0.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:81f99fb1224d36eb91557afec8cdc2264e856f3464500b55749020ce4c848ef2"}, + {file = "pyzmq-25.0.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a1cd4a95f176cdc0ee0a82d49d5830f13ae6015d89decbf834c273bc33eeb3d3"}, + {file = "pyzmq-25.0.0-cp36-cp36m-win32.whl", hash = "sha256:926236ca003aec70574754f39703528947211a406f5c6c8b3e50eca04a9e87fc"}, + {file = "pyzmq-25.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:94f0a7289d0f5c80807c37ebb404205e7deb737e8763eb176f4770839ee2a287"}, + {file = "pyzmq-25.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f3f96d452e9580cb961ece2e5a788e64abaecb1232a80e61deffb28e105ff84a"}, + {file = "pyzmq-25.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:930e6ad4f2eaac31a3d0c2130619d25db754b267487ebc186c6ad18af2a74018"}, + {file = "pyzmq-25.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1081d7030a1229c8ff90120346fb7599b54f552e98fcea5170544e7c6725aab"}, + {file = "pyzmq-25.0.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:531866c491aee5a1e967c286cfa470dffac1e2a203b1afda52d62b58782651e9"}, + {file = "pyzmq-25.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:fc7c1421c5b1c916acf3128bf3cc7ea7f5018b58c69a6866d70c14190e600ce9"}, + {file = "pyzmq-25.0.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9a2d5e419bd39a1edb6cdd326d831f0120ddb9b1ff397e7d73541bf393294973"}, + {file = "pyzmq-25.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:183e18742be3621acf8908903f689ec520aee3f08449bfd29f583010ca33022b"}, + {file = "pyzmq-25.0.0-cp37-cp37m-win32.whl", hash = "sha256:02f5cb60a7da1edd5591a15efa654ffe2303297a41e1b40c3c8942f8f11fc17c"}, + {file = "pyzmq-25.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cac602e02341eaaf4edfd3e29bd3fdef672e61d4e6dfe5c1d065172aee00acee"}, + {file = "pyzmq-25.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:e14df47c1265356715d3d66e90282a645ebc077b70b3806cf47efcb7d1d630cb"}, + {file = "pyzmq-25.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:293a7c2128690f496057f1f1eb6074f8746058d13588389981089ec45d8fdc77"}, + {file = "pyzmq-25.0.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:731b208bc9412deeb553c9519dca47136b5a01ca66667cafd8733211941b17e4"}, + {file = "pyzmq-25.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b055a1cddf8035966ad13aa51edae5dc8f1bba0b5d5e06f7a843d8b83dc9b66b"}, + {file = "pyzmq-25.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17e1cb97d573ea84d7cd97188b42ca6f611ab3ee600f6a75041294ede58e3d20"}, + {file = "pyzmq-25.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:60ecbfe7669d3808ffa8a7dd1487d6eb8a4015b07235e3b723d4b2a2d4de7203"}, + {file = "pyzmq-25.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4c25c95416133942280faaf068d0fddfd642b927fb28aaf4ab201a738e597c1e"}, + {file = "pyzmq-25.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:be05504af0619d1cffa500af1e0ede69fb683f301003851f5993b5247cc2c576"}, + {file = "pyzmq-25.0.0-cp38-cp38-win32.whl", hash = "sha256:6bf3842af37af43fa953e96074ebbb5315f6a297198f805d019d788a1021dbc8"}, + {file = "pyzmq-25.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:b90bb8dfbbd138558f1f284fecfe328f7653616ff9a972433a00711d9475d1a9"}, + {file = "pyzmq-25.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:62b9e80890c0d2408eb42d5d7e1fc62a5ce71be3288684788f74cf3e59ffd6e2"}, + {file = "pyzmq-25.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484c2c4ee02c1edc07039f42130bd16e804b1fe81c4f428e0042e03967f40c20"}, + {file = "pyzmq-25.0.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9ca6db34b26c4d3e9b0728841ec9aa39484eee272caa97972ec8c8e231b20c7e"}, + {file = "pyzmq-25.0.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:610d2d112acd4e5501fac31010064a6c6efd716ceb968e443cae0059eb7b86de"}, + {file = "pyzmq-25.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3594c0ff604e685d7e907860b61d0e10e46c74a9ffca168f6e9e50ea934ee440"}, + {file = "pyzmq-25.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c21a5f4e54a807df5afdef52b6d24ec1580153a6bcf0607f70a6e1d9fa74c5c3"}, + {file = "pyzmq-25.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4725412e27612f0d7d7c2f794d89807ad0227c2fc01dd6146b39ada49c748ef9"}, + {file = "pyzmq-25.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4d3d604fe0a67afd1aff906e54da557a5203368a99dcc50a70eef374f1d2abef"}, + {file = "pyzmq-25.0.0-cp39-cp39-win32.whl", hash = "sha256:3670e8c5644768f214a3b598fe46378a4a6f096d5fb82a67dfd3440028460565"}, + {file = "pyzmq-25.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:e99629a976809fe102ef73e856cf4b2660acd82a412a51e80ba2215e523dfd0a"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:66509c48f7446b640eeae24b60c9c1461799a27b1b0754e438582e36b5af3315"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9c464cc508177c09a5a6122b67f978f20e2954a21362bf095a0da4647e3e908"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:28bcb2e66224a7ac2843eb632e4109d6b161479e7a2baf24e37210461485b4f1"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0e7ef9ac807db50b4eb6f534c5dcc22f998f5dae920cc28873d2c1d080a4fc9"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:5050f5c50b58a6e38ccaf9263a356f74ef1040f5ca4030225d1cb1a858c5b7b6"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2a73af6504e0d2805e926abf136ebf536735a13c22f709be7113c2ec65b4bec3"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0e8d00228db627ddd1b418c7afd81820b38575f237128c9650365f2dd6ac3443"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5605621f2181f20b71f13f698944deb26a0a71af4aaf435b34dd90146092d530"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6136bfb0e5a9cf8c60c6ac763eb21f82940a77e6758ea53516c8c7074f4ff948"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0a90b2480a26aef7c13cff18703ba8d68e181facb40f78873df79e6d42c1facc"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00c94fd4c9dd3c95aace0c629a7fa713627a5c80c1819326b642adf6c4b8e2a2"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20638121b0bdc80777ce0ec8c1f14f1ffec0697a1f88f0b564fa4a23078791c4"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f75b4b8574f3a8a0d6b4b52606fc75b82cb4391471be48ab0b8677c82f9ed4"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cbb885f347eba7ab7681c450dee5b14aed9f153eec224ec0c3f299273d9241f"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c48f257da280b3be6c94e05bd575eddb1373419dbb1a72c3ce64e88f29d1cd6d"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:866eabf7c1315ef2e93e34230db7cbf672e0d7c626b37c11f7e870c8612c3dcc"}, + {file = "pyzmq-25.0.0.tar.gz", hash = "sha256:f330a1a2c7f89fd4b0aa4dcb7bf50243bf1c8da9a2f1efc31daf57a2046b31f2"}, ] [package.dependencies] cffi = {version = "*", markers = "implementation_name == \"pypy\""} -py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qtconsole" @@ -2790,19 +2955,19 @@ test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] [[package]] name = "requests" -version = "2.28.1" +version = "2.28.2" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.7, <4" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" @@ -2859,42 +3024,42 @@ files = [ [[package]] name = "scipy" -version = "1.9.3" +version = "1.10.0" description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false -python-versions = ">=3.8" +python-versions = "<3.12,>=3.8" files = [ - {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, - {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, - {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, - {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, - {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, - {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, - {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, - {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, - {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, - {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, - {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, - {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, - {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, - {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, - {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, - {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, - {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, - {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, - {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, - {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, - {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3"}, + {file = "scipy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2"}, + {file = "scipy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48"}, + {file = "scipy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a"}, + {file = "scipy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54"}, + {file = "scipy-1.10.0.tar.gz", hash = "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540"}, ] [package.dependencies] -numpy = ">=1.18.5,<1.26.0" +numpy = ">=1.19.5,<1.27.0" [package.extras] -dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] -doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] -test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "send2trash" @@ -2915,43 +3080,21 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "65.6.3" +version = "67.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, - {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, + {file = "setuptools-67.2.0-py3-none-any.whl", hash = "sha256:16ccf598aab3b506593c17378473978908a2734d7336755a8769b480906bec1c"}, + {file = "setuptools-67.2.0.tar.gz", hash = "sha256:b440ee5f7e607bb8c9de15259dba2583dd41a38879a7abc1d43a71c59524da48"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] -[[package]] -name = "setuptools-scm" -version = "7.1.0" -description = "the blessed package to manage your versions by scm tags" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "setuptools_scm-7.1.0-py3-none-any.whl", hash = "sha256:73988b6d848709e2af142aa48c986ea29592bbcfca5375678064708205253d8e"}, - {file = "setuptools_scm-7.1.0.tar.gz", hash = "sha256:6c508345a771aad7d56ebff0e70628bf2b0ec7573762be9960214730de278f27"}, -] - -[package.dependencies] -packaging = ">=20.0" -setuptools = "*" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} -typing-extensions = "*" - -[package.extras] -test = ["pytest (>=6.2)", "virtualenv (>20)"] -toml = ["setuptools (>=42)"] - [[package]] name = "six" version = "1.16.0" @@ -3039,14 +3182,14 @@ numpy = "*" [[package]] name = "tenacity" -version = "8.1.0" +version = "8.2.1" description = "Retry code until it succeeds" category = "main" optional = true python-versions = ">=3.6" files = [ - {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, - {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, + {file = "tenacity-8.2.1-py3-none-any.whl", hash = "sha256:dd1b769ca7002fda992322939feca5bee4fa11f39146b0af14e0b8d9f27ea854"}, + {file = "tenacity-8.2.1.tar.gz", hash = "sha256:c7bb4b86425b977726a7b49971542d4f67baf72096597d283f3ffd01f33b92df"}, ] [package.extras] @@ -3193,14 +3336,14 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.8.0" +version = "5.9.0" description = "Traitlets Python configuration system" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "traitlets-5.8.0-py3-none-any.whl", hash = "sha256:c864831efa0ba6576d09b44884b34e41defc18c0d7e720b4a2d6698c842cab3e"}, - {file = "traitlets-5.8.0.tar.gz", hash = "sha256:6cc57d6dc28c85d5365961726ffd19b538739347749e13ebe34e03323a0e8f84"}, + {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, + {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, ] [package.extras] @@ -3236,14 +3379,14 @@ dev = ["flake8 (<4.0.0)", "flake8-annotations", "flake8-bugbear", "flake8-commas [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.14" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, ] [package.extras] @@ -3253,14 +3396,14 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "wcwidth" -version = "0.2.5" +version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" category = "main" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, + {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, + {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, ] [[package]] @@ -3289,14 +3432,14 @@ files = [ [[package]] name = "websocket-client" -version = "1.4.2" +version = "1.5.1" description = "WebSocket client for Python with low level API options" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "websocket-client-1.4.2.tar.gz", hash = "sha256:d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59"}, - {file = "websocket_client-1.4.2-py3-none-any.whl", hash = "sha256:d6b06432f184438d99ac1f456eaf22fe1ade524c3dd16e661142dc54e9cba574"}, + {file = "websocket-client-1.5.1.tar.gz", hash = "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40"}, + {file = "websocket_client-1.5.1-py3-none-any.whl", hash = "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e"}, ] [package.extras] @@ -3306,14 +3449,14 @@ test = ["websockets"] [[package]] name = "widgetsnbextension" -version = "3.6.1" +version = "3.6.2" description = "IPython HTML widgets for Jupyter" category = "main" optional = true python-versions = "*" files = [ - {file = "widgetsnbextension-3.6.1-py2.py3-none-any.whl", hash = "sha256:954e0faefdd414e4e013f17dbc7fd86f24cf1d243a3ac85d5f0fc2c2d2b50c66"}, - {file = "widgetsnbextension-3.6.1.tar.gz", hash = "sha256:9c84ae64c2893c7cbe2eaafc7505221a795c27d68938454034ac487319a75b10"}, + {file = "widgetsnbextension-3.6.2-py2.py3-none-any.whl", hash = "sha256:ddc70ae828b5d5bfdeaa4444f11a2076a0b08216b82322f616439db25e259d22"}, + {file = "widgetsnbextension-3.6.2.tar.gz", hash = "sha256:401b3b4613acceb392f7b80f03ddaf0346a15f1cfe8c1e05702ff233a0dde26e"}, ] [package.dependencies] @@ -3393,20 +3536,85 @@ files = [ {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] +[[package]] +name = "y-py" +version = "0.5.5" +description = "Python bindings for the Y-CRDT built from yrs (Rust)" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "y_py-0.5.5-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:f61d173bbe980b35f5720d94a9537bc09aec8621f8bba61d5f4db236679940d1"}, + {file = "y_py-0.5.5-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e66d9145d122339502ddb80d5aaed10592310c776b07f19f28e3391521cd19ec"}, + {file = "y_py-0.5.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23285cb734a8036dbba07323a96f858e040b31fde888fc19daf2904ec62524f6"}, + {file = "y_py-0.5.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f5b5ea683cb1cebb30c2a0a04a8b15cf01eccf4e1aee9406c97c8830d5913e64"}, + {file = "y_py-0.5.5-cp310-none-win32.whl", hash = "sha256:36558e6e117e70c7af47e5b07614abff481dd549d97394759ff513398add6363"}, + {file = "y_py-0.5.5-cp310-none-win_amd64.whl", hash = "sha256:b4ccbd7e9e9ffab54bd5e1debe933dee495cf93783e1bfd0811ede9527a6c12d"}, + {file = "y_py-0.5.5-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:df64934fe00bf10c1afb1a1b6ecf487b71fb233678faf075f4c0a9f384f99c70"}, + {file = "y_py-0.5.5-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:a15182ffc4d68659aea49374f7a7057e708dac8f49a9a5d8966482cef9c1cba2"}, + {file = "y_py-0.5.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95969ae8f9158cc8ba73ae631213e7030eac080330cb4aaa58a033932ee807a4"}, + {file = "y_py-0.5.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:90bcfd4de15063b41cb451911f67c0be2dafe701e66cf59c54c549ec309a3d48"}, + {file = "y_py-0.5.5-cp311-none-win32.whl", hash = "sha256:9be9a3981f4ed0983339b883d7eb1414a253ddcf248fb3b420e4d82da38b42e2"}, + {file = "y_py-0.5.5-cp311-none-win_amd64.whl", hash = "sha256:a7668feef5734a769a5cff120b9bf79338b35dedbd5e6dfa99ac0c70640e11d4"}, + {file = "y_py-0.5.5-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:1258dd7ab1a03895b493bc6683d888adff8521b0d44d17b963be432395555f43"}, + {file = "y_py-0.5.5-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:77e7a3e73e0fd71b016247a2d7dda21eeccb3ac53783c264fe13ea7801497084"}, + {file = "y_py-0.5.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52f03aa7bda1e862560fec043cc8580633dff811949d7df86ee3aa313d89ee78"}, + {file = "y_py-0.5.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d318e922a8a193e2b7761594f0aa90a2e6d559dfdc96db4812995050887e9c5"}, + {file = "y_py-0.5.5-cp37-none-win32.whl", hash = "sha256:b36cd7b8d43782d932e7476b5381c13ecc02dcaabb988fdf920c2c30c8c93148"}, + {file = "y_py-0.5.5-cp37-none-win_amd64.whl", hash = "sha256:df1fe3118d66127eacca14916d398099ff1016e2f003a5dab5f3fba4b449e7eb"}, + {file = "y_py-0.5.5-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:a8ccd6baf2ac27e92a0c5bc05ee03528d897f9b86e2ae8fc27b04dcf0c462655"}, + {file = "y_py-0.5.5-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:44a1e40582386309b873c6ab8a24e47f02fe2482359a85cf4b0a65353c00702c"}, + {file = "y_py-0.5.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0edfa91505e3de0276daa44cf1f00a059c0cfc460e3fbb3f5188fefab30358ea"}, + {file = "y_py-0.5.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:822c04279e14a178c3726c9ccb16b447c5d03ebedb3410028f4aeb399f482d1f"}, + {file = "y_py-0.5.5-cp38-none-win32.whl", hash = "sha256:f4f1dd115c9493b4dc054521f85c69da15b9a036227199706757adf14013e3a7"}, + {file = "y_py-0.5.5-cp38-none-win_amd64.whl", hash = "sha256:17dac9b53cc7c1c9845d6fb028e8f59b44da673f0dda9bb4a73eb86944181ce0"}, + {file = "y_py-0.5.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b7d4150fb775a97d5454ca0e3eb2527ba83ec0e67a9244e4061abb7d91b16f"}, + {file = "y_py-0.5.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ff13618977bd24031387e32ba3c90e795992a5a8bac55707ff58e4c0839301d"}, + {file = "y_py-0.5.5-cp39-none-win32.whl", hash = "sha256:6cd577e7a1b777c78127f6d89707b91b9a5935c632ebfa1791624d11c462a874"}, + {file = "y_py-0.5.5-cp39-none-win_amd64.whl", hash = "sha256:00c81e71abbbeab3b29ccc806176677a11397e637b2fd60c1fede24b0a7b4f32"}, + {file = "y_py-0.5.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e6ec7744ec1614fbcd5fdd9cfe2b1b7755c8fc9e2766782d0c3960b1f71fb4f"}, + {file = "y_py-0.5.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:400691bdf3be9ee950d73806a18fa81128b8ed3c74fde6b12f9d26ef311df877"}, + {file = "y_py-0.5.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:410bfd166c8fcd6384655471e02449abc6051f0510d75954c3fa7f0aa43cf8aa"}, + {file = "y_py-0.5.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:743b69a1920fa38696961d04e2921621f5794945b95e43797110830732c9f092"}, + {file = "y_py-0.5.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b0abfffed321b63850bbafb6223815db7336e86068f8ac841c2dbf5bf6326cd"}, + {file = "y_py-0.5.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a14b9293a94a75d4659001fb6d7dba9c5386c8b752968f32a573830645c4e14"}, + {file = "y_py-0.5.5.tar.gz", hash = "sha256:f222bab71d8d3df9a40b2e5ab3a767d734c6ce11998e9a30a02fb83ab3e090b3"}, +] + +[[package]] +name = "ypy-websocket" +version = "0.8.2" +description = "WebSocket connector for Ypy" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "ypy_websocket-0.8.2-py3-none-any.whl", hash = "sha256:9049d5a7d61c26c2b5a39757c9ffcbe2274bf3553adeea8de7fe1c04671d4145"}, + {file = "ypy_websocket-0.8.2.tar.gz", hash = "sha256:491b2cc4271df4dde9be83017c15f4532b597dc43148472eb20c5aeb838a5b46"}, +] + +[package.dependencies] +aiofiles = ">=22.1.0,<23" +aiosqlite = ">=0.17.0,<1" +y-py = ">=0.5.3,<0.6.0" + +[package.extras] +test = ["mypy", "pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)"] + [[package]] name = "zipp" -version = "3.11.0" +version = "3.13.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" -optional = true +optional = false python-versions = ">=3.7" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.13.0-py3-none-any.whl", hash = "sha256:e8b2a36ea17df80ffe9e2c4fda3f693c3dad6df1697d3cd3af232db680950b0b"}, + {file = "zipp-3.13.0.tar.gz", hash = "sha256:23f70e964bc11a34cef175bc90ba2914e1e4545ea1e3e2f67c079671883f9cb6"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] diff --git a/requirements-dev.txt b/requirements-dev.txt index 4f3cf96b6..19916a055 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,59 +1,59 @@ appnope==0.1.3 ; python_version >= "3.9" and python_version < "3.11" and platform_system == "Darwin" or python_version >= "3.9" and python_version < "3.11" and sys_platform == "darwin" asttokens==2.2.1 ; python_version >= "3.9" and python_version < "3.11" -attrs==22.1.0 ; python_version >= "3.9" and python_version < "3.11" +attrs==22.2.0 ; python_version >= "3.9" and python_version < "3.11" backcall==0.2.0 ; python_version >= "3.9" and python_version < "3.11" black==23.1.0 ; python_version >= "3.9" and python_version < "3.11" certifi==2022.12.7 ; python_version >= "3.9" and python_version < "3.11" cffi==1.15.1 ; python_version >= "3.9" and python_version < "3.11" -charset-normalizer==2.1.1 ; python_version >= "3.9" and python_version < "3.11" +charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "3.11" click==8.1.3 ; python_version >= "3.9" and python_version < "3.11" colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.11" and sys_platform == "win32" or python_version >= "3.9" and python_version < "3.11" and platform_system == "Windows" comm==0.1.2 ; python_version >= "3.9" and python_version < "3.11" -contourpy==1.0.6 ; python_version >= "3.9" and python_version < "3.11" +contourpy==1.0.7 ; python_version >= "3.9" and python_version < "3.11" cycler==0.11.0 ; python_version >= "3.9" and python_version < "3.11" -debugpy==1.6.4 ; python_version >= "3.9" and python_version < "3.11" +debugpy==1.6.6 ; python_version >= "3.9" and python_version < "3.11" decorator==5.1.1 ; python_version >= "3.9" and python_version < "3.11" deprecated==1.2.13 ; python_version >= "3.9" and python_version < "3.11" -entrypoints==0.4 ; python_version >= "3.9" and python_version < "3.11" -exceptiongroup==1.0.4 ; python_version >= "3.9" and python_version < "3.11" +exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11" execnet==1.9.0 ; python_version >= "3.9" and python_version < "3.11" executing==1.2.0 ; python_version >= "3.9" and python_version < "3.11" fastjsonschema==2.16.2 ; python_version >= "3.9" and python_version < "3.11" flake8==4.0.1 ; python_version >= "3.9" and python_version < "3.11" fonttools==4.38.0 ; python_version >= "3.9" and python_version < "3.11" -googleapis-common-protos==1.57.0 ; python_version >= "3.9" and python_version < "3.11" +googleapis-common-protos==1.58.0 ; python_version >= "3.9" and python_version < "3.11" grpc-gateway-protoc-gen-openapiv2==0.1.0 ; python_version >= "3.9" and python_version < "3.11" grpcio-tools==1.48.1 ; python_version >= "3.9" and python_version < "3.11" grpcio==1.51.1 ; python_version >= "3.9" and python_version < "3.11" idna==3.4 ; python_version >= "3.9" and python_version < "3.11" +importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "3.10" inflection==0.5.1 ; python_version >= "3.9" and python_version < "3.11" -iniconfig==1.1.1 ; python_version >= "3.9" and python_version < "3.11" -ipykernel==6.19.2 ; python_version >= "3.9" and python_version < "3.11" -ipython==8.7.0 ; python_version >= "3.9" and python_version < "3.11" +iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "3.11" +ipykernel==6.21.1 ; python_version >= "3.9" and python_version < "3.11" +ipython==8.10.0 ; python_version >= "3.9" and python_version < "3.11" jedi==0.18.2 ; python_version >= "3.9" and python_version < "3.11" jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.11" jsonschema==4.17.3 ; python_version >= "3.9" and python_version < "3.11" -jupyter-client==7.4.8 ; python_version >= "3.9" and python_version < "3.11" -jupyter-core==5.1.0 ; python_version >= "3.9" and python_version < "3.11" +jupyter-client==8.0.2 ; python_version >= "3.9" and python_version < "3.11" +jupyter-core==5.2.0 ; python_version >= "3.9" and python_version < "3.11" kiwisolver==1.4.4 ; python_version >= "3.9" and python_version < "3.11" -markupsafe==2.1.1 ; python_version >= "3.9" and python_version < "3.11" +markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "3.11" matplotlib-inline==0.1.6 ; python_version >= "3.9" and python_version < "3.11" -matplotlib==3.6.2 ; python_version >= "3.9" and python_version < "3.11" +matplotlib==3.6.3 ; python_version >= "3.9" and python_version < "3.11" mccabe==0.6.1 ; python_version >= "3.9" and python_version < "3.11" -mypy-extensions==0.4.3 ; python_version >= "3.9" and python_version < "3.11" +mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "3.11" nbclient==0.6.8 ; python_version >= "3.9" and python_version < "3.11" -nbformat==5.7.0 ; python_version >= "3.9" and python_version < "3.11" -nbmake==1.3.5 ; python_version >= "3.9" and python_version < "3.11" +nbformat==5.7.3 ; python_version >= "3.9" and python_version < "3.11" +nbmake==1.4 ; python_version >= "3.9" and python_version < "3.11" nest-asyncio==1.5.6 ; python_version >= "3.9" and python_version < "3.11" -numpy==1.24.0 ; python_version < "3.11" and python_version >= "3.9" -packaging==22.0 ; python_version >= "3.9" and python_version < "3.11" -pandas==1.5.2 ; python_version >= "3.9" and python_version < "3.11" +numpy==1.24.2 ; python_version < "3.11" and python_version >= "3.9" +packaging==23.0 ; python_version >= "3.9" and python_version < "3.11" +pandas==1.5.3 ; python_version >= "3.9" and python_version < "3.11" parso==0.8.3 ; python_version >= "3.9" and python_version < "3.11" -pathspec==0.10.3 ; python_version >= "3.9" and python_version < "3.11" +pathspec==0.11.0 ; python_version >= "3.9" and python_version < "3.11" pexpect==4.8.0 ; python_version >= "3.9" and python_version < "3.11" and sys_platform != "win32" pickleshare==0.7.5 ; python_version >= "3.9" and python_version < "3.11" -pillow==9.3.0 ; python_version >= "3.9" and python_version < "3.11" -platformdirs==2.6.0 ; python_version >= "3.9" and python_version < "3.11" +pillow==9.4.0 ; python_version >= "3.9" and python_version < "3.11" +platformdirs==3.0.0 ; python_version >= "3.9" and python_version < "3.11" pluggy==1.0.0 ; python_version >= "3.9" and python_version < "3.11" prompt-toolkit==3.0.36 ; python_version >= "3.9" and python_version < "3.11" protobuf==3.20.3 ; python_version >= "3.9" and python_version < "3.11" @@ -63,32 +63,32 @@ pure-eval==0.2.2 ; python_version >= "3.9" and python_version < "3.11" py==1.11.0 ; python_version >= "3.9" and python_version < "3.11" pycodestyle==2.8.0 ; python_version >= "3.9" and python_version < "3.11" pycparser==2.21 ; python_version >= "3.9" and python_version < "3.11" -pydantic==1.10.2 ; python_version >= "3.9" and python_version < "3.11" +pydantic==1.10.4 ; python_version >= "3.9" and python_version < "3.11" pyflakes==2.4.0 ; python_version >= "3.9" and python_version < "3.11" -pygments==2.13.0 ; python_version >= "3.9" and python_version < "3.11" +pygments==2.14.0 ; python_version >= "3.9" and python_version < "3.11" pynacl==1.5.0 ; python_version >= "3.9" and python_version < "3.11" pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "3.11" -pyrsistent==0.19.2 ; python_version >= "3.9" and python_version < "3.11" +pyrsistent==0.19.3 ; python_version >= "3.9" and python_version < "3.11" pytest-forked==1.4.0 ; python_version >= "3.9" and python_version < "3.11" pytest-xdist==2.5.0 ; python_version >= "3.9" and python_version < "3.11" -pytest==7.2.0 ; python_version >= "3.9" and python_version < "3.11" +pytest==7.2.1 ; python_version >= "3.9" and python_version < "3.11" python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.11" -python-dotenv==0.21.0 ; python_version >= "3.9" and python_version < "3.11" -pytz==2022.7 ; python_version >= "3.9" and python_version < "3.11" +python-dotenv==0.21.1 ; python_version >= "3.9" and python_version < "3.11" +pytz==2022.7.1 ; python_version >= "3.9" and python_version < "3.11" pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "3.11" -pyzmq==24.0.1 ; python_version >= "3.9" and python_version < "3.11" +pyzmq==25.0.0 ; python_version >= "3.9" and python_version < "3.11" requests-mock==1.10.0 ; python_version >= "3.9" and python_version < "3.11" -requests==2.28.1 ; python_version >= "3.9" and python_version < "3.11" -scipy==1.9.3 ; python_version >= "3.9" and python_version < "3.11" -setuptools-scm==7.1.0 ; python_version >= "3.9" and python_version < "3.11" -setuptools==65.6.3 ; python_version >= "3.9" and python_version < "3.11" +requests==2.28.2 ; python_version >= "3.9" and python_version < "3.11" +scipy==1.10.0 ; python_version >= "3.9" and python_version < "3.11" +setuptools==67.2.0 ; python_version >= "3.9" and python_version < "3.11" six==1.16.0 ; python_version >= "3.9" and python_version < "3.11" stack-data==0.6.2 ; python_version >= "3.9" and python_version < "3.11" toml==0.10.2 ; python_version >= "3.9" and python_version < "3.11" tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11" tornado==6.2 ; python_version >= "3.9" and python_version < "3.11" -traitlets==5.8.0 ; python_version >= "3.9" and python_version < "3.11" +traitlets==5.9.0 ; python_version >= "3.9" and python_version < "3.11" typing-extensions==4.4.0 ; python_version >= "3.9" and python_version < "3.11" -urllib3==1.26.13 ; python_version >= "3.9" and python_version < "3.11" -wcwidth==0.2.5 ; python_version >= "3.9" and python_version < "3.11" +urllib3==1.26.14 ; python_version >= "3.9" and python_version < "3.11" +wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "3.11" wrapt==1.14.1 ; python_version >= "3.9" and python_version < "3.11" +zipp==3.13.0 ; python_version >= "3.9" and python_version < "3.10" diff --git a/requirements-learning.txt b/requirements-learning.txt index 3cbe213f3..faae30778 100644 --- a/requirements-learning.txt +++ b/requirements-learning.txt @@ -1,59 +1,59 @@ appnope==0.1.3 ; python_version >= "3.9" and python_version < "3.11" and platform_system == "Darwin" or python_version >= "3.9" and python_version < "3.11" and sys_platform == "darwin" asttokens==2.2.1 ; python_version >= "3.9" and python_version < "3.11" -attrs==22.1.0 ; python_version >= "3.9" and python_version < "3.11" +attrs==22.2.0 ; python_version >= "3.9" and python_version < "3.11" backcall==0.2.0 ; python_version >= "3.9" and python_version < "3.11" black==23.1.0 ; python_version >= "3.9" and python_version < "3.11" certifi==2022.12.7 ; python_version >= "3.9" and python_version < "3.11" cffi==1.15.1 ; python_version >= "3.9" and python_version < "3.11" -charset-normalizer==2.1.1 ; python_version >= "3.9" and python_version < "3.11" +charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "3.11" click==8.1.3 ; python_version >= "3.9" and python_version < "3.11" colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.11" and platform_system == "Windows" or python_version >= "3.9" and python_version < "3.11" and sys_platform == "win32" comm==0.1.2 ; python_version >= "3.9" and python_version < "3.11" -contourpy==1.0.6 ; python_version >= "3.9" and python_version < "3.11" +contourpy==1.0.7 ; python_version >= "3.9" and python_version < "3.11" cycler==0.11.0 ; python_version >= "3.9" and python_version < "3.11" -debugpy==1.6.4 ; python_version >= "3.9" and python_version < "3.11" +debugpy==1.6.6 ; python_version >= "3.9" and python_version < "3.11" decorator==5.1.1 ; python_version >= "3.9" and python_version < "3.11" deprecated==1.2.13 ; python_version >= "3.9" and python_version < "3.11" -entrypoints==0.4 ; python_version >= "3.9" and python_version < "3.11" -exceptiongroup==1.0.4 ; python_version >= "3.9" and python_version < "3.11" +exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11" execnet==1.9.0 ; python_version >= "3.9" and python_version < "3.11" executing==1.2.0 ; python_version >= "3.9" and python_version < "3.11" fastjsonschema==2.16.2 ; python_version >= "3.9" and python_version < "3.11" flake8==4.0.1 ; python_version >= "3.9" and python_version < "3.11" fonttools==4.38.0 ; python_version >= "3.9" and python_version < "3.11" -googleapis-common-protos==1.57.0 ; python_version >= "3.9" and python_version < "3.11" +googleapis-common-protos==1.58.0 ; python_version >= "3.9" and python_version < "3.11" grpc-gateway-protoc-gen-openapiv2==0.1.0 ; python_version >= "3.9" and python_version < "3.11" grpcio-tools==1.48.1 ; python_version >= "3.9" and python_version < "3.11" grpcio==1.51.1 ; python_version >= "3.9" and python_version < "3.11" idna==3.4 ; python_version >= "3.9" and python_version < "3.11" +importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "3.10" inflection==0.5.1 ; python_version >= "3.9" and python_version < "3.11" -iniconfig==1.1.1 ; python_version >= "3.9" and python_version < "3.11" -ipykernel==6.19.2 ; python_version >= "3.9" and python_version < "3.11" -ipython==8.7.0 ; python_version >= "3.9" and python_version < "3.11" +iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "3.11" +ipykernel==6.21.1 ; python_version >= "3.9" and python_version < "3.11" +ipython==8.10.0 ; python_version >= "3.9" and python_version < "3.11" jedi==0.18.2 ; python_version >= "3.9" and python_version < "3.11" jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.11" jsonschema==4.17.3 ; python_version >= "3.9" and python_version < "3.11" -jupyter-client==7.4.8 ; python_version >= "3.9" and python_version < "3.11" -jupyter-core==5.1.0 ; python_version >= "3.9" and python_version < "3.11" +jupyter-client==8.0.2 ; python_version >= "3.9" and python_version < "3.11" +jupyter-core==5.2.0 ; python_version >= "3.9" and python_version < "3.11" kiwisolver==1.4.4 ; python_version >= "3.9" and python_version < "3.11" -markupsafe==2.1.1 ; python_version >= "3.9" and python_version < "3.11" +markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "3.11" matplotlib-inline==0.1.6 ; python_version >= "3.9" and python_version < "3.11" -matplotlib==3.6.2 ; python_version >= "3.9" and python_version < "3.11" +matplotlib==3.6.3 ; python_version >= "3.9" and python_version < "3.11" mccabe==0.6.1 ; python_version >= "3.9" and python_version < "3.11" -mypy-extensions==0.4.3 ; python_version >= "3.9" and python_version < "3.11" +mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "3.11" nbclient==0.6.8 ; python_version >= "3.9" and python_version < "3.11" -nbformat==5.7.0 ; python_version >= "3.9" and python_version < "3.11" -nbmake==1.3.5 ; python_version >= "3.9" and python_version < "3.11" +nbformat==5.7.3 ; python_version >= "3.9" and python_version < "3.11" +nbmake==1.4 ; python_version >= "3.9" and python_version < "3.11" nest-asyncio==1.5.6 ; python_version >= "3.9" and python_version < "3.11" -numpy==1.24.0 ; python_version < "3.11" and python_version >= "3.9" -packaging==22.0 ; python_version >= "3.9" and python_version < "3.11" -pandas==1.5.2 ; python_version >= "3.9" and python_version < "3.11" +numpy==1.24.2 ; python_version < "3.11" and python_version >= "3.9" +packaging==23.0 ; python_version >= "3.9" and python_version < "3.11" +pandas==1.5.3 ; python_version >= "3.9" and python_version < "3.11" parso==0.8.3 ; python_version >= "3.9" and python_version < "3.11" -pathspec==0.10.3 ; python_version >= "3.9" and python_version < "3.11" +pathspec==0.11.0 ; python_version >= "3.9" and python_version < "3.11" pexpect==4.8.0 ; python_version >= "3.9" and python_version < "3.11" and sys_platform != "win32" pickleshare==0.7.5 ; python_version >= "3.9" and python_version < "3.11" -pillow==9.3.0 ; python_version >= "3.9" and python_version < "3.11" -platformdirs==2.6.0 ; python_version >= "3.9" and python_version < "3.11" +pillow==9.4.0 ; python_version >= "3.9" and python_version < "3.11" +platformdirs==3.0.0 ; python_version >= "3.9" and python_version < "3.11" pluggy==1.0.0 ; python_version >= "3.9" and python_version < "3.11" prompt-toolkit==3.0.36 ; python_version >= "3.9" and python_version < "3.11" protobuf==3.20.3 ; python_version >= "3.9" and python_version < "3.11" @@ -63,25 +63,24 @@ pure-eval==0.2.2 ; python_version >= "3.9" and python_version < "3.11" py==1.11.0 ; python_version >= "3.9" and python_version < "3.11" pycodestyle==2.8.0 ; python_version >= "3.9" and python_version < "3.11" pycparser==2.21 ; python_version >= "3.9" and python_version < "3.11" -pydantic==1.10.2 ; python_version >= "3.9" and python_version < "3.11" +pydantic==1.10.4 ; python_version >= "3.9" and python_version < "3.11" pyflakes==2.4.0 ; python_version >= "3.9" and python_version < "3.11" -pygments==2.13.0 ; python_version >= "3.9" and python_version < "3.11" +pygments==2.14.0 ; python_version >= "3.9" and python_version < "3.11" pynacl==1.5.0 ; python_version >= "3.9" and python_version < "3.11" pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "3.11" -pyrsistent==0.19.2 ; python_version >= "3.9" and python_version < "3.11" +pyrsistent==0.19.3 ; python_version >= "3.9" and python_version < "3.11" pytest-forked==1.4.0 ; python_version >= "3.9" and python_version < "3.11" pytest-xdist==2.5.0 ; python_version >= "3.9" and python_version < "3.11" -pytest==7.2.0 ; python_version >= "3.9" and python_version < "3.11" +pytest==7.2.1 ; python_version >= "3.9" and python_version < "3.11" python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.11" -python-dotenv==0.21.0 ; python_version >= "3.9" and python_version < "3.11" -pytz==2022.7 ; python_version >= "3.9" and python_version < "3.11" +python-dotenv==0.21.1 ; python_version >= "3.9" and python_version < "3.11" +pytz==2022.7.1 ; python_version >= "3.9" and python_version < "3.11" pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "3.11" -pyzmq==24.0.1 ; python_version >= "3.9" and python_version < "3.11" +pyzmq==25.0.0 ; python_version >= "3.9" and python_version < "3.11" requests-mock==1.10.0 ; python_version >= "3.9" and python_version < "3.11" -requests==2.28.1 ; python_version >= "3.9" and python_version < "3.11" -scipy==1.9.3 ; python_version >= "3.9" and python_version < "3.11" -setuptools-scm==7.1.0 ; python_version >= "3.9" and python_version < "3.11" -setuptools==65.6.3 ; python_version >= "3.9" and python_version < "3.11" +requests==2.28.2 ; python_version >= "3.9" and python_version < "3.11" +scipy==1.10.0 ; python_version >= "3.9" and python_version < "3.11" +setuptools==67.2.0 ; python_version >= "3.9" and python_version < "3.11" six==1.16.0 ; python_version >= "3.9" and python_version < "3.11" stack-data==0.6.2 ; python_version >= "3.9" and python_version < "3.11" toml==0.10.2 ; python_version >= "3.9" and python_version < "3.11" @@ -89,8 +88,9 @@ tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11" torch==1.12.1 ; python_version >= "3.9" and python_version < "3.11" tornado==6.2 ; python_version >= "3.9" and python_version < "3.11" tqdm==4.64.1 ; python_version >= "3.9" and python_version < "3.11" -traitlets==5.8.0 ; python_version >= "3.9" and python_version < "3.11" +traitlets==5.9.0 ; python_version >= "3.9" and python_version < "3.11" typing-extensions==4.4.0 ; python_version >= "3.9" and python_version < "3.11" -urllib3==1.26.13 ; python_version >= "3.9" and python_version < "3.11" -wcwidth==0.2.5 ; python_version >= "3.9" and python_version < "3.11" +urllib3==1.26.14 ; python_version >= "3.9" and python_version < "3.11" +wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "3.11" wrapt==1.14.1 ; python_version >= "3.9" and python_version < "3.11" +zipp==3.13.0 ; python_version >= "3.9" and python_version < "3.10" diff --git a/requirements.txt b/requirements.txt index 7c0ad77cc..35829fdf4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,36 +1,33 @@ certifi==2022.12.7 ; python_version >= "3.9" and python_version < "3.11" cffi==1.15.1 ; python_version >= "3.9" and python_version < "3.11" -charset-normalizer==2.1.1 ; python_version >= "3.9" and python_version < "3.11" -contourpy==1.0.6 ; python_version >= "3.9" and python_version < "3.11" +charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "3.11" +contourpy==1.0.7 ; python_version >= "3.9" and python_version < "3.11" cycler==0.11.0 ; python_version >= "3.9" and python_version < "3.11" deprecated==1.2.13 ; python_version >= "3.9" and python_version < "3.11" fonttools==4.38.0 ; python_version >= "3.9" and python_version < "3.11" -googleapis-common-protos==1.57.0 ; python_version >= "3.9" and python_version < "3.11" +googleapis-common-protos==1.58.0 ; python_version >= "3.9" and python_version < "3.11" grpc-gateway-protoc-gen-openapiv2==0.1.0 ; python_version >= "3.9" and python_version < "3.11" grpcio-tools==1.48.1 ; python_version >= "3.9" and python_version < "3.11" grpcio==1.51.1 ; python_version >= "3.9" and python_version < "3.11" idna==3.4 ; python_version >= "3.9" and python_version < "3.11" inflection==0.5.1 ; python_version >= "3.9" and python_version < "3.11" kiwisolver==1.4.4 ; python_version >= "3.9" and python_version < "3.11" -matplotlib==3.6.2 ; python_version >= "3.9" and python_version < "3.11" -numpy==1.24.0 ; python_version < "3.11" and python_version >= "3.9" -packaging==22.0 ; python_version >= "3.9" and python_version < "3.11" -pandas==1.5.2 ; python_version >= "3.9" and python_version < "3.11" -pillow==9.3.0 ; python_version >= "3.9" and python_version < "3.11" +matplotlib==3.6.3 ; python_version >= "3.9" and python_version < "3.11" +numpy==1.24.2 ; python_version < "3.11" and python_version >= "3.9" +packaging==23.0 ; python_version >= "3.9" and python_version < "3.11" +pandas==1.5.3 ; python_version >= "3.9" and python_version < "3.11" +pillow==9.4.0 ; python_version >= "3.9" and python_version < "3.11" protobuf==3.20.3 ; python_version >= "3.9" and python_version < "3.11" pycparser==2.21 ; python_version >= "3.9" and python_version < "3.11" pynacl==1.5.0 ; python_version >= "3.9" and python_version < "3.11" pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "3.11" python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.11" -python-dotenv==0.21.0 ; python_version >= "3.9" and python_version < "3.11" -pytz==2022.7 ; python_version >= "3.9" and python_version < "3.11" -requests==2.28.1 ; python_version >= "3.9" and python_version < "3.11" -scipy==1.9.3 ; python_version >= "3.9" and python_version < "3.11" -setuptools-scm==7.1.0 ; python_version >= "3.9" and python_version < "3.11" -setuptools==65.6.3 ; python_version >= "3.9" and python_version < "3.11" +python-dotenv==0.21.1 ; python_version >= "3.9" and python_version < "3.11" +pytz==2022.7.1 ; python_version >= "3.9" and python_version < "3.11" +requests==2.28.2 ; python_version >= "3.9" and python_version < "3.11" +scipy==1.10.0 ; python_version >= "3.9" and python_version < "3.11" +setuptools==67.2.0 ; python_version >= "3.9" and python_version < "3.11" six==1.16.0 ; python_version >= "3.9" and python_version < "3.11" toml==0.10.2 ; python_version >= "3.9" and python_version < "3.11" -tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11" -typing-extensions==4.4.0 ; python_version >= "3.9" and python_version < "3.11" -urllib3==1.26.13 ; python_version >= "3.9" and python_version < "3.11" +urllib3==1.26.14 ; python_version >= "3.9" and python_version < "3.11" wrapt==1.14.1 ; python_version >= "3.9" and python_version < "3.11" diff --git a/tests/integration/test_crash.py b/tests/integration/test_crash.py index 241683c1c..e6d29fdff 100644 --- a/tests/integration/test_crash.py +++ b/tests/integration/test_crash.py @@ -43,7 +43,6 @@ def test_crash(vega_service: VegaServiceNull): # check bond and margin for all for key_name in [f"_iter_pos_{i}" for i in range(2)]: general, margin, bond = vega.party_account( - wallet_name="trader", asset_id=asset_id, market_id=market_id, key_name=key_name, diff --git a/tests/integration/test_settlement.py b/tests/integration/test_settlement.py index 3baea3275..97fe92816 100644 --- a/tests/integration/test_settlement.py +++ b/tests/integration/test_settlement.py @@ -44,7 +44,7 @@ def test_settlement(vega_service: VegaServiceNull): vega.wait_for_datanode_sync() vega.settle_market( - settlement_wallet=TERMINATE_WALLET.name, + settlement_key=TERMINATE_WALLET.name, settlement_price=settlement_price, market_id=market_id, ) @@ -54,26 +54,26 @@ def test_settlement(vega_service: VegaServiceNull): # check bond and margin for all for wallet in wallets: general, margin, bond = vega.party_account( - wallet_name=wallet.name, asset_id=tdai_id, market_id=market_id + key_name=wallet.name, asset_id=tdai_id, market_id=market_id ) assert margin == 0 assert bond == 0 # LP general general, margin, bond = vega.party_account( - wallet_name=MM_WALLET.name, asset_id=tdai_id, market_id=market_id + key_name=MM_WALLET.name, asset_id=tdai_id, market_id=market_id ) assert general == participants_initial_deposit # Trader 1 who went long general, margin, bond = vega.party_account( - wallet_name=TRADER_1_WALLET.name, asset_id=tdai_id, market_id=market_id + key_name=TRADER_1_WALLET.name, asset_id=tdai_id, market_id=market_id ) assert general == (participants_initial_deposit + pnl_long) # Trader 2 who went short general, margin, bond = vega.party_account( - wallet_name=TRADER_2_WALLET.name, asset_id=tdai_id, market_id=market_id + key_name=TRADER_2_WALLET.name, asset_id=tdai_id, market_id=market_id ) assert general == (participants_initial_deposit - pnl_long) diff --git a/tests/integration/test_trading.py b/tests/integration/test_trading.py index 0c77cc22b..c719c7d54 100644 --- a/tests/integration/test_trading.py +++ b/tests/integration/test_trading.py @@ -40,7 +40,7 @@ def test_submit_market_order(vega_service_with_market: VegaServiceNull): ) vega.submit_market_order( - trading_wallet=PARTY_A.name, + trading_key=PARTY_A.name, market_id=market_id, volume=1, side="SIDE_BUY", @@ -49,7 +49,7 @@ def test_submit_market_order(vega_service_with_market: VegaServiceNull): vega.wait_for_total_catchup() position_pb_t1 = vega.positions_by_market( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, market_id=market_id, ) @@ -190,9 +190,9 @@ def test_one_off_transfer(vega_service_with_high_volume_with_market: VegaService asset_id = vega.find_asset_id(symbol=ASSET_NAME, raise_on_missing=True) vega.one_off_transfer( - from_wallet_name=PARTY_A.name, + from_key_name=PARTY_A.name, from_account_type=vega_protos.vega.ACCOUNT_TYPE_GENERAL, - to_wallet_name=PARTY_B.name, + to_key_name=PARTY_B.name, to_account_type=vega_protos.vega.ACCOUNT_TYPE_GENERAL, asset=asset_id, amount=500, @@ -202,18 +202,18 @@ def test_one_off_transfer(vega_service_with_high_volume_with_market: VegaService vega.wait_for_total_catchup() party_a_accounts_t1 = vega.party_account( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, asset_id=asset_id, market_id=market_id, ) party_b_accounts_t1 = vega.party_account( - wallet_name=PARTY_B.name, + key_name=PARTY_B.name, asset_id=asset_id, market_id=market_id, ) all_transfers_t1 = vega.list_transfers( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, ) live_transfers_t1 = vega.transfer_status_from_feed(live_only=True) @@ -223,9 +223,9 @@ def test_one_off_transfer(vega_service_with_high_volume_with_market: VegaService assert party_b_accounts_t1.general == 1500 vega.one_off_transfer( - from_wallet_name=PARTY_B.name, + from_key_name=PARTY_B.name, from_account_type=vega_protos.vega.ACCOUNT_TYPE_GENERAL, - to_wallet_name=PARTY_A.name, + to_key_name=PARTY_A.name, to_account_type=vega_protos.vega.ACCOUNT_TYPE_GENERAL, asset=asset_id, amount=500, @@ -236,18 +236,18 @@ def test_one_off_transfer(vega_service_with_high_volume_with_market: VegaService vega.wait_for_total_catchup() party_a_accounts_t2 = vega.party_account( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, asset_id=asset_id, market_id=market_id, ) party_b_accounts_t2 = vega.party_account( - wallet_name=PARTY_B.name, + key_name=PARTY_B.name, asset_id=asset_id, market_id=market_id, ) all_transfers_t2 = vega.list_transfers( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, ) live_transfers_t2 = vega.transfer_status_from_feed(live_only=True) @@ -260,18 +260,18 @@ def test_one_off_transfer(vega_service_with_high_volume_with_market: VegaService vega.wait_for_total_catchup() party_a_accounts_t3 = vega.party_account( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, asset_id=asset_id, market_id=market_id, ) party_b_accounts_t3 = vega.party_account( - wallet_name=PARTY_B.name, + key_name=PARTY_B.name, asset_id=asset_id, market_id=market_id, ) all_transfers_t3 = vega.list_transfers( - wallet_name=PARTY_A.name, + key_name=PARTY_A.name, ) live_transfers_t3 = vega.transfer_status_from_feed(live_only=True) diff --git a/tests/integration/utils/fixtures.py b/tests/integration/utils/fixtures.py index 4606e73c3..d0e7fcf3f 100644 --- a/tests/integration/utils/fixtures.py +++ b/tests/integration/utils/fixtures.py @@ -23,7 +23,7 @@ def create_and_faucet_wallet( vega: VegaServiceNull, wallet: WalletConfig, amount: float = 1e4 ): asset_id = vega.find_asset_id(symbol=ASSET_NAME) - vega.create_wallet(wallet.name, wallet.passphrase) + vega.create_key(wallet.name) vega.mint(wallet.name, asset_id, amount) @@ -37,7 +37,7 @@ def build_basic_market( ): vega.wait_for_total_catchup() for wallet in WALLETS: - vega.create_wallet(wallet.name, wallet.passphrase) + vega.create_key(wallet.name) vega.wait_for_total_catchup() vega.mint( @@ -69,16 +69,16 @@ def build_basic_market( vega.forward("10s") vega.create_simple_market( market_name="CRYPTO:BTCDAI/DEC22", - proposal_wallet=MM_WALLET.name, + proposal_key=MM_WALLET.name, settlement_asset_id=asset_id, - termination_wallet=TERMINATE_WALLET.name, + termination_key=TERMINATE_WALLET.name, market_decimals=5, ) market_id = vega.all_markets()[0].id vega.submit_liquidity( - wallet_name=MM_WALLET.name, + key_name=MM_WALLET.name, market_id=market_id, commitment_amount=initial_commitment, fee=0.002, @@ -88,7 +88,7 @@ def build_basic_market( ) # Add transactions in the proposed market to pass opening auction at price 0.3 vega.submit_order( - trading_wallet=AUCTION1.name, + trading_key=AUCTION1.name, market_id=market_id, order_type="TYPE_LIMIT", time_in_force="TIME_IN_FORCE_GTC", @@ -98,7 +98,7 @@ def build_basic_market( ) vega.submit_order( - trading_wallet=AUCTION2.name, + trading_key=AUCTION2.name, market_id=market_id, order_type="TYPE_LIMIT", time_in_force="TIME_IN_FORCE_GTC", @@ -108,7 +108,7 @@ def build_basic_market( ) vega.submit_order( - trading_wallet=TRADER_WALLET.name, + trading_key=TRADER_WALLET.name, market_id=market_id, order_type="TYPE_LIMIT", time_in_force="TIME_IN_FORCE_GTC", @@ -118,7 +118,7 @@ def build_basic_market( ) vega.submit_order( - trading_wallet=TRADER_WALLET.name, + trading_key=TRADER_WALLET.name, market_id=market_id, order_type="TYPE_LIMIT", time_in_force="TIME_IN_FORCE_GTC", diff --git a/tests/vega_sim/test_service.py b/tests/vega_sim/test_service.py index f8395452c..12f8c98f8 100644 --- a/tests/vega_sim/test_service.py +++ b/tests/vega_sim/test_service.py @@ -15,7 +15,12 @@ class StubService(VegaService): def __init__(self, wallet_url: str): super().__init__() - self._wallet = VegaWallet(wallet_url=wallet_url) + self._wallet = VegaWallet( + wallet_url=wallet_url, + wallet_path="", + vega_home_dir="", + passphrase_file_path="", + ) @property def wallet(self): @@ -32,57 +37,59 @@ def stub_service(): return StubService("localhost:TEST_WALLET") -def test_base_service_wallet_creation(stub_service: StubService): - with requests_mock.Mocker() as req_mocker: - req_mocker.post( - WALLET_CREATION_URL.format(wallet_server_url="localhost:TEST_WALLET"), - json=lambda req, _: { - "token": req.json()["wallet"] + req.json()["passphrase"] - }, - ) - req_mocker.post( - WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), - json=lambda req, _: { - "key": { - "pub": req.json()["passphrase"] + json.dumps(req.json()["meta"]) - } - }, - ) - req_mocker.get( - WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), - json={"keys": [{"name": "TEST_KEYNAME", "pub": "TEST_PUBLICKEY"}]}, - ) - stub_service.create_wallet("TEST_NAME", "TEST_PHRASE") - assert stub_service.wallet.login_tokens["TEST_NAME"] == "TEST_NAMETEST_PHRASE" - assert ( - stub_service.wallet.pub_keys["TEST_NAME"]["TEST_KEYNAME"] - == "TEST_PUBLICKEY" - ) +## Tests largely meaningless/hard to test now we call CLI directly +# def test_base_service_wallet_creation(stub_service: StubService): +# with requests_mock.Mocker() as req_mocker: +# req_mocker.post( +# WALLET_CREATION_URL.format(wallet_server_url="localhost:TEST_WALLET"), +# json=lambda req, _: { +# "token": req.json()["wallet"] + req.json()["passphrase"] +# }, +# ) +# req_mocker.post( +# WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), +# json=lambda req, _: { +# "key": { +# "pub": req.json()["passphrase"] + json.dumps(req.json()["meta"]) +# } +# }, +# ) +# req_mocker.get( +# WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), +# json={"keys": [{"name": "TEST_KEYNAME", "pub": "TEST_PUBLICKEY"}]}, +# ) +# stub_service.create_wallet("TEST_NAME", "TEST_PHRASE") +# assert stub_service.wallet.login_tokens["TEST_NAME"] == "TEST_NAMETEST_PHRASE" +# assert ( +# stub_service.wallet.pub_keys["TEST_NAME"]["TEST_KEYNAME"] +# == "TEST_PUBLICKEY" +# ) -def test_base_service_wallet_login(stub_service: StubService): - with requests_mock.Mocker() as req_mocker: - req_mocker.post( - WALLET_LOGIN_URL.format(wallet_server_url="localhost:TEST_WALLET"), - json=lambda req, _: { - "token": req.json()["wallet"] + req.json()["passphrase"] - }, - ) - req_mocker.post( - WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), - json=lambda req, _: { - "key": { - "pub": req.json()["passphrase"] + json.dumps(req.json()["meta"]) - } - }, - ) - req_mocker.get( - WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), - json={"keys": [{"name": "TEST_KEYNAME", "pub": "TEST_PUBLICKEY"}]}, - ) - stub_service.login("TEST_NAME", "TEST_PHRASE") - assert stub_service.wallet.login_tokens["TEST_NAME"] == "TEST_NAMETEST_PHRASE" - assert ( - stub_service.wallet.pub_keys["TEST_NAME"]["TEST_KEYNAME"] - == "TEST_PUBLICKEY" - ) + +# def test_base_service_wallet_login(stub_service: StubService): +# with requests_mock.Mocker() as req_mocker: +# req_mocker.post( +# WALLET_LOGIN_URL.format(wallet_server_url="localhost:TEST_WALLET"), +# json=lambda req, _: { +# "token": req.json()["wallet"] + req.json()["passphrase"] +# }, +# ) +# req_mocker.post( +# WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), +# json=lambda req, _: { +# "key": { +# "pub": req.json()["passphrase"] + json.dumps(req.json()["meta"]) +# } +# }, +# ) +# req_mocker.get( +# WALLET_KEY_URL.format(wallet_server_url="localhost:TEST_WALLET"), +# json={"keys": [{"name": "TEST_KEYNAME", "pub": "TEST_PUBLICKEY"}]}, +# ) +# stub_service.login("TEST_NAME", "TEST_PHRASE") +# assert stub_service.wallet.login_tokens["TEST_NAME"] == "TEST_NAMETEST_PHRASE" +# assert ( +# stub_service.wallet.pub_keys["TEST_NAME"]["TEST_KEYNAME"] +# == "TEST_PUBLICKEY" +# ) diff --git a/vega_sim/api/governance.py b/vega_sim/api/governance.py index 91d9d1cfe..0f5022916 100644 --- a/vega_sim/api/governance.py +++ b/vega_sim/api/governance.py @@ -77,19 +77,21 @@ def get_blockchain_time(data_client: vac.VegaTradingDataClientV2) -> int: def propose_market_from_config( data_client: vac.VegaTradingDataClientV2, wallet: Wallet, - proposal_wallet_name: str, + proposal_key_name: str, market_config: MarketConfig, closing_time: str, enactment_time: str, time_forward_fn: Optional[Callable[[], None]] = None, governance_asset: Optional[str] = "VOTE", - proposal_key_name: Optional[str] = None, + proposal_wallet_name: Optional[str] = None, ) -> str: # Make sure Vega network has governance asset vote_asset_id = find_asset_id( governance_asset, raise_on_missing=True, data_client=data_client ) - pub_key = wallet.public_key(proposal_wallet_name, proposal_key_name) + pub_key = wallet.public_key( + wallet_name=proposal_wallet_name, name=proposal_key_name + ) # Request accounts for party and check governance asset balance party_accounts = data_raw.list_accounts( @@ -131,7 +133,7 @@ def propose_market_from_config( def propose_future_market( market_name: str, - wallet_name: str, + key_name: str, wallet: Wallet, settlement_asset_id: str, data_client: vac.VegaTradingDataClientV2, @@ -148,7 +150,7 @@ def propose_future_market( vega_protos.markets.PriceMonitoringParameters ] = None, lp_price_range: float = 1, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> str: """Propose a future market as specified user. @@ -198,7 +200,7 @@ def propose_future_market( vote_asset_id = find_asset_id( governance_asset, raise_on_missing=True, data_client=data_client ) - pub_key = wallet.public_key(wallet_name, key_name) + pub_key = wallet.public_key(wallet_name=wallet_name, name=key_name) # Request accounts for party and check governance asset balance party_accounts = data_raw.list_accounts( @@ -284,9 +286,9 @@ def propose_future_market( ), lp_price_range=str(lp_price_range), decimal_places=price_decimals, - position_decimal_places=0 - if position_decimals is None - else position_decimals, + position_decimal_places=( + 0 if position_decimals is None else position_decimals + ), metadata=[ f"base:{future_asset}", ], @@ -323,16 +325,16 @@ def propose_future_market( def propose_network_parameter_change( parameter: str, value: str, - wallet_name: str, + key_name: str, wallet: Wallet, closing_time: Optional[int] = None, enactment_time: Optional[int] = None, data_client: Optional[vac.VegaTradingDataClientV2] = None, time_forward_fn: Optional[Callable[[], None]] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): network_param_update = _build_generic_proposal( - pub_key=wallet.public_key(wallet_name, key_name), + pub_key=wallet.public_key(wallet_name=wallet_name, name=key_name), data_client=data_client, closing_time=closing_time, enactment_time=enactment_time, @@ -354,17 +356,17 @@ def propose_network_parameter_change( def propose_market_update( market_id: str, - wallet_name: str, + key_name: str, wallet: Wallet, market_update: vega_protos.governance.UpdateMarketConfiguration, closing_time: Optional[int] = None, enactment_time: Optional[int] = None, data_client: Optional[vac.VegaTradingDataClientV2] = None, time_forward_fn: Optional[Callable[[], None]] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> str: network_param_update = _build_generic_proposal( - pub_key=wallet.public_key(wallet_name, key_name), + pub_key=wallet.public_key(wallet_name=wallet_name, name=key_name), data_client=data_client, closing_time=closing_time, enactment_time=enactment_time, @@ -375,6 +377,7 @@ def propose_market_update( return _make_and_wait_for_proposal( wallet_name=wallet_name, + key_name=key_name, wallet=wallet, proposal=network_param_update, data_client=data_client, @@ -383,23 +386,23 @@ def propose_market_update( def approve_proposal( - wallet_name: str, + key_name: str, proposal_id: str, wallet: Wallet, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): wallet.submit_transaction( transaction=commands_protos.commands.VoteSubmission( value=vega_protos.governance.Vote.Value.VALUE_YES, proposal_id=proposal_id ), - name=wallet_name, + wallet_name=wallet_name, transaction_type="vote_submission", key_name=key_name, ) def propose_asset( - wallet_name: str, + key_name: str, wallet: Wallet, name: str, symbol: str, @@ -411,7 +414,7 @@ def propose_asset( enactment_time: Optional[int] = None, validation_time: Optional[int] = None, time_forward_fn: Optional[Callable[[], None]] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> str: asset_detail = vega_protos.assets.AssetDetails( name=name, @@ -423,7 +426,7 @@ def propose_asset( ), ) proposal = _build_generic_proposal( - pub_key=wallet.public_key(wallet_name, key_name), + pub_key=wallet.public_key(wallet_name=wallet_name, name=key_name), data_client=data_client, closing_time=closing_time, enactment_time=enactment_time, @@ -484,16 +487,16 @@ def _build_generic_proposal( def _make_and_wait_for_proposal( - wallet_name: str, + key_name: str, wallet: Wallet, proposal: commands_protos.commands.ProposalSubmission, data_client: vac.VegaTradingDataClientV2, time_forward_fn: Optional[Callable[[], None]] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> ProposalSubmission: wallet.submit_transaction( transaction=proposal, - name=wallet_name, + wallet_name=wallet_name, transaction_type="proposal_submission", key_name=key_name, ) @@ -526,11 +529,11 @@ def _make_and_wait_for_proposal( def settle_oracle( - wallet_name: str, + key_name: str, wallet: Wallet, settlement_price: float, oracle_name: str, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> None: """ Settle the market and send settlement price. @@ -547,7 +550,7 @@ def settle_oracle( oracle_name: str, the name of the oracle to settle key_name: - Optional[str], key name stored in metadata. Defaults to None. + str, key name stored in metadata. """ @@ -562,7 +565,7 @@ def settle_oracle( wallet.submit_transaction( transaction=oracle_submission, - name=wallet_name, + wallet_name=wallet_name, transaction_type="oracle_data_submission", key_name=key_name, ) @@ -578,7 +581,7 @@ def settle_oracle( wallet.submit_transaction( transaction=oracle_submission, - name=wallet_name, + wallet_name=wallet_name, transaction_type="oracle_data_submission", key_name=key_name, ) diff --git a/vega_sim/api/trading.py b/vega_sim/api/trading.py index 148e2ccbd..b3d6138df 100644 --- a/vega_sim/api/trading.py +++ b/vega_sim/api/trading.py @@ -119,7 +119,7 @@ def submit_order( # Note: Setting propagate to true will also submit to a Vega node wallet.submit_transaction( transaction=order_data, - name=wallet_name, + wallet_name=wallet_name, transaction_type="order_submission", key_name=key_name, ) @@ -221,7 +221,7 @@ def amend_order( wallet.submit_transaction( transaction=order_data, - name=wallet_name, + wallet_name=wallet_name, transaction_type="order_amendment", key_name=key_name, ) @@ -256,7 +256,7 @@ def cancel_order( wallet.submit_transaction( transaction=order_data, - name=wallet_name, + wallet_name=wallet_name, transaction_type="order_cancellation", key_name=key_name, ) @@ -380,7 +380,7 @@ def submit_liquidity( ) wallet.submit_transaction( transaction=submission, - name=wallet_name, + wallet_name=wallet_name, transaction_type=submission_name, key_name=key_name, ) @@ -612,12 +612,13 @@ def batch_market_instructions( wallet.submit_transaction( transaction=command, - name=wallet_name, + wallet_name=wallet_name, transaction_type="batch_market_instructions", key_name=key_name, ) logger.debug( - f"Submitted a batch of {len(cancellations)} cancellation, {len(amendments)} amendment, and {len(submissions)} submission instructions." + f"Submitted a batch of {len(cancellations)} cancellation," + f" {len(amendments)} amendment, and {len(submissions)} submission instructions." ) @@ -659,7 +660,7 @@ def transfer( wallet.submit_transaction( transaction=command, - name=wallet_name, + wallet_name=wallet_name, transaction_type="transfer", key_name=key_name, ) diff --git a/vega_sim/environment/agent.py b/vega_sim/environment/agent.py index 688792c46..396949afe 100644 --- a/vega_sim/environment/agent.py +++ b/vega_sim/environment/agent.py @@ -21,7 +21,7 @@ def step(self, vega: VegaService): pass def initialise( - self, vega: VegaService, create_wallet: bool = False, mint_wallet: bool = False + self, vega: VegaService, create_key: bool = False, mint_key: bool = False ): self.vega = vega @@ -42,10 +42,9 @@ def name_from_tag(cls, tag: Optional[str] = None) -> str: class AgentWithWallet(Agent): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, tag: Optional[str] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, state_update_freq: Optional[int] = None, ): """Agent for use in environments as specified in environment.py. @@ -57,19 +56,17 @@ def __init__( faucet assets to the agent etc. Args: - wallet_name: - str, The name to use for this agent's wallet + key_name: + str, Name of key in wallet for agent to use. wallet_pass: str, The password which this agent uses to log in to the wallet tag: str, optional, additional tag to add to agent's wallet name - key_name: - str, optional, Name of key in wallet for agent to use. Defaults - to value in the environment variable "VEGA_DEFAULT_KEY_NAME". + wallet_name: + str, optional, The name to use for this agent's wallet """ super().__init__(tag=tag) self.wallet_name = wallet_name - self.wallet_pass = wallet_pass self.key_name = key_name self.state_update_freq = state_update_freq @@ -77,16 +74,13 @@ def __init__( def step(self): pass - def initialise(self, vega: VegaService, create_wallet: bool = True): + def initialise(self, vega: VegaService, create_key: bool = True): super().initialise(vega=vega) - if create_wallet: - self.vega.create_wallet( - name=self.wallet_name, - passphrase=self.wallet_pass, - key_name=self.key_name, + if create_key: + self.vega.create_key( + wallet_name=self.wallet_name, + name=self.key_name, ) - else: - self.vega.login(name=self.wallet_name, passphrase=self.wallet_pass) class StateAgentWithWallet(AgentWithWallet): diff --git a/vega_sim/environment/environment.py b/vega_sim/environment/environment.py index 95a326b7a..e6d44f260 100644 --- a/vega_sim/environment/environment.py +++ b/vega_sim/environment/environment.py @@ -160,9 +160,11 @@ def _start_live_feeds(self, vega: VegaService): ) party_ids = list( { - vega.wallet.public_key(agent.wallet_name, agent.key_name) + vega.wallet.public_key( + wallet_name=agent.wallet_name, name=agent.key_name + ) for agent in self.agents - if hasattr(agent, "wallet_name") + if hasattr(agent, "key_name") } ) # Start order monitoring only observing scenario markets and parties @@ -424,7 +426,7 @@ def _run( # Initialise agents without minting assets for agent in self.agents: - agent.initialise(vega=vega, create_wallet=False, mint_wallet=False) + agent.initialise(vega=vega, create_key=False, mint_key=False) self._start_live_feeds(vega=vega) diff --git a/vega_sim/network_service.py b/vega_sim/network_service.py index 4bc397414..fb6c28692 100644 --- a/vega_sim/network_service.py +++ b/vega_sim/network_service.py @@ -109,10 +109,10 @@ def manage_vega_processes( tmp_vega_dir = tempfile.mkdtemp(prefix="vega-sim-") if log_dir is None else log_dir if run_with_wallet: + vega_wallet_path = environ.get("VEGA_WALLET_PATH", "vegawallet") vegaWalletProcess = _popen_process( popen_args=[ - "vega", - "wallet", + vega_wallet_path, "service", "run", "--network", @@ -208,6 +208,9 @@ def __init__( run_with_console: bool = True, vega_console_path: Optional[str] = None, network_config_path: Optional[str] = None, + wallet_path: Optional[str] = None, + vega_home_path: Optional[str] = None, + wallet_token_path: Optional[str] = None, ): """Method initialises the class. @@ -225,6 +228,14 @@ def __init__( Path to the directory containing network config files. If not passed will search first the environment variable VEGA_NETWORK_CONFIG then two default paths. + Note: Only needed if creating keys + vega_home_path (str, optional): + Path to the directory containing wallet binary. Otherwise + uses VEGA_HOME environment variable. + Note: Only needed if creating keys + wallet_token_path (str, optional): + Path to the json file containing wallet tokens. Otherwise + uses VEGA_WALLET_TOKEN environment variable. """ # Run init method inherited from VegaService with network arguments. @@ -250,6 +261,28 @@ def __init__( if network_config_path is not None else environ.get("VEGA_NETWORK_CONFIG") ) + + self._wallet_path = ( + wallet_path + if wallet_path is not None + else environ.get("VEGA_WALLET_PATH", "vegawallet") + ) + + self._vega_home = ( + vega_home_path if vega_home_path is not None else environ.get("VEGA_HOME") + ) + + self._token_path = ( + wallet_token_path + if wallet_token_path is not None + else environ.get("VEGA_WALLET_TOKEN") + ) + if self._token_path is None: + raise Exception( + "Either path to tokens JSON must be passed to wallet class or" + " VEGA_WALLET_TOKEN environment variable set" + ) + self._network_config_path = _find_network_config_toml( network=self.network, config_path=self._base_network_config_path ) @@ -362,7 +395,12 @@ def wallet_url(self) -> str: @property def wallet(self) -> Wallet: if self._wallet is None: - self._wallet = VegaWallet(self.wallet_url) + self._wallet = VegaWallet.from_json( + self._token_path, + self.wallet_url, + wallet_path=self._wallet_path, + vega_home_dir=self._vega_home, + ) return self._wallet @property diff --git a/vega_sim/null_service.py b/vega_sim/null_service.py index ae6c32d37..b23cdee5d 100644 --- a/vega_sim/null_service.py +++ b/vega_sim/null_service.py @@ -25,7 +25,7 @@ from vega_sim import vega_bin_path, vega_home_path from vega_sim.service import VegaService -from vega_sim.wallet.base import Wallet +from vega_sim.wallet.base import Wallet, DEFAULT_WALLET_NAME from vega_sim.wallet.slim_wallet import ( SlimWallet, ) @@ -103,6 +103,12 @@ class Ports(Enum): ), ], Ports.WALLET: [ + PortUpdateConfig( + ("config", "wallet-service", "config.toml"), + ["Server"], + "Port", + lambda port: port, + ), PortUpdateConfig( ("config", "wallet-service", "networks", "local.toml"), [], @@ -428,6 +434,34 @@ def manage_vega_processes( requests.exceptions.HTTPError, ): time.sleep(0.1) + + subprocess.Popen( + [ + vega_wallet_path, + "api-token", + "init", + f"--home={tmp_vega_home}", + f"--passphrase-file={tmp_vega_home}/passphrase-file", + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + subprocess.Popen( + [ + vega_wallet_path, + "api-token", + "generate", + "--home=" + tmp_vega_home, + "--tokens-passphrase-file=" + tmp_vega_home + "/passphrase-file", + "--wallet-passphrase-file=" + tmp_vega_home + "/passphrase-file", + "--wallet-name=" + DEFAULT_WALLET_NAME, + "--description=" + DEFAULT_WALLET_NAME, + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + wallet_args = [ vega_wallet_path, "service", @@ -436,6 +470,8 @@ def manage_vega_processes( "local", "--home=" + tmp_vega_home, "--automatic-consent", + "--load-tokens", + "--tokens-passphrase-file=" + tmp_vega_home + "/passphrase-file", ] vegaWalletProcess = _popen_process( @@ -584,7 +620,14 @@ def wait_fn(self, wait_multiple: float = 1) -> None: def wallet(self) -> Wallet: if self._wallet is None: if self._use_full_vega_wallet: - self._wallet = VegaWallet(self.wallet_url) + self._wallet = VegaWallet( + self.wallet_url, + wallet_path=self.vega_wallet_path, + vega_home_dir=path.join(self.log_dir, "vegahome"), + passphrase_file_path=path.join( + self.log_dir, "vegahome", "passphrase-file" + ), + ) else: self._wallet = SlimWallet( self.core_client, @@ -670,7 +713,7 @@ def start(self, block_on_startup: bool = True) -> None: ).raise_for_status() if self._use_full_vega_wallet: requests.get( - f"http://localhost:{self.wallet_port}/api/v1/status" + f"http://localhost:{self.wallet_port}/api/v2/health" ).raise_for_status() started = True diff --git a/vega_sim/parameter_test/parameter/experiment.py b/vega_sim/parameter_test/parameter/experiment.py index b21103d9f..84f94eb20 100644 --- a/vega_sim/parameter_test/parameter/experiment.py +++ b/vega_sim/parameter_test/parameter/experiment.py @@ -71,7 +71,7 @@ def _run_parameter_iteration( transactions_per_block=100, use_full_vega_wallet=False, ) as vega: - vega.create_wallet(*PARAMETER_AMEND_WALLET) + vega.create_key(PARAMETER_AMEND_WALLET[0]) vega.mint( PARAMETER_AMEND_WALLET[0], asset="VOTE", diff --git a/vega_sim/parameter_test/parameter/loggers.py b/vega_sim/parameter_test/parameter/loggers.py index def377844..8997fc8ac 100644 --- a/vega_sim/parameter_test/parameter/loggers.py +++ b/vega_sim/parameter_test/parameter/loggers.py @@ -100,12 +100,15 @@ def _ideal_market_maker_single_data_extraction( ) received_liquidity_fees_lp = 0 - for ledger_entry in vega.get_ledger_entries_from_stream( - wallet_name_to=mm_agent.wallet_name, - key_name_to=mm_agent.key_name, - transfer_type=14, + for ledger_entry in vega.list_ledger_entries( + to_party_ids=[ + vega.wallet.public_key( + wallet_name=mm_agent.wallet_name, name=mm_agent.key_name + ) + ], + transfer_types=[14], ): - received_liquidity_fees_lp += ledger_entry.amount + received_liquidity_fees_lp += ledger_entry.quantity liquidity_fee_shares = vega.get_liquidity_fee_shares( market_id=mm_agent.market_id, diff --git a/vega_sim/proto/blockexplorer/blockexplorer_pb2.py b/vega_sim/proto/blockexplorer/blockexplorer_pb2.py index c7e064b88..02b5430e6 100644 --- a/vega_sim/proto/blockexplorer/blockexplorer_pb2.py +++ b/vega_sim/proto/blockexplorer/blockexplorer_pb2.py @@ -24,7 +24,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n!blockexplorer/blockexplorer.proto\x12\x14\x62lockexplorer.api.v1\x1a"vega/commands/v1/transaction.proto\x1a vega/commands/v1/signature.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"\r\n\x0bInfoRequest"I\n\x0cInfoResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x1f\n\x0b\x63ommit_hash\x18\x02 \x01(\tR\ncommitHash"+\n\x15GetTransactionRequest\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash"]\n\x16GetTransactionResponse\x12\x43\n\x0btransaction\x18\x01 \x01(\x0b\x32!.blockexplorer.api.v1.TransactionR\x0btransaction"\x8e\x02\n\x17ListTransactionsRequest\x12\x14\n\x05limit\x18\x01 \x01(\rR\x05limit\x12\x1b\n\x06\x62\x65\x66ore\x18\x02 \x01(\tH\x00R\x06\x62\x65\x66ore\x88\x01\x01\x12\x19\n\x05\x61\x66ter\x18\x03 \x01(\tH\x01R\x05\x61\x66ter\x88\x01\x01\x12T\n\x07\x66ilters\x18\x04 \x03(\x0b\x32:.blockexplorer.api.v1.ListTransactionsRequest.FiltersEntryR\x07\x66ilters\x1a:\n\x0c\x46iltersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_beforeB\x08\n\x06_after"a\n\x18ListTransactionsResponse\x12\x45\n\x0ctransactions\x18\x03 \x03(\x0b\x32!.blockexplorer.api.v1.TransactionR\x0ctransactions"\xc2\x02\n\x0bTransaction\x12\x14\n\x05\x62lock\x18\x01 \x01(\x04R\x05\x62lock\x12\x14\n\x05index\x18\x02 \x01(\rR\x05index\x12\x12\n\x04hash\x18\x03 \x01(\tR\x04hash\x12\x1c\n\tsubmitter\x18\x04 \x01(\tR\tsubmitter\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\x12\x12\n\x04\x63ode\x18\x06 \x01(\rR\x04\x63ode\x12\x16\n\x06\x63ursor\x18\x07 \x01(\tR\x06\x63ursor\x12\x35\n\x07\x63ommand\x18\x08 \x01(\x0b\x32\x1b.vega.commands.v1.InputDataR\x07\x63ommand\x12\x39\n\tsignature\x18\t \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\tsignature\x12\x19\n\x05\x65rror\x18\n \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error2\xc9\x02\n\x14\x42lockExplorerService\x12m\n\x0eGetTransaction\x12+.blockexplorer.api.v1.GetTransactionRequest\x1a,.blockexplorer.api.v1.GetTransactionResponse"\x00\x12s\n\x10ListTransactions\x12-.blockexplorer.api.v1.ListTransactionsRequest\x1a..blockexplorer.api.v1.ListTransactionsResponse"\x00\x12M\n\x04Info\x12!.blockexplorer.api.v1.InfoRequest\x1a".blockexplorer.api.v1.InfoResponseBxZ5code.vegaprotocol.io/vega/protos/blockexplorer/api/v1\x92\x41>\x12#\n\x18Vega block explorer APIs2\x07v0.67.0\x1a\x13lb.testnet.vega.xyz*\x02\x01\x02\x62\x06proto3' + b'\n!blockexplorer/blockexplorer.proto\x12\x14\x62lockexplorer.api.v1\x1a"vega/commands/v1/transaction.proto\x1a vega/commands/v1/signature.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"\r\n\x0bInfoRequest"I\n\x0cInfoResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x1f\n\x0b\x63ommit_hash\x18\x02 \x01(\tR\ncommitHash"+\n\x15GetTransactionRequest\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash"]\n\x16GetTransactionResponse\x12\x43\n\x0btransaction\x18\x01 \x01(\x0b\x32!.blockexplorer.api.v1.TransactionR\x0btransaction"\x8e\x02\n\x17ListTransactionsRequest\x12\x14\n\x05limit\x18\x01 \x01(\rR\x05limit\x12\x1b\n\x06\x62\x65\x66ore\x18\x02 \x01(\tH\x00R\x06\x62\x65\x66ore\x88\x01\x01\x12\x19\n\x05\x61\x66ter\x18\x03 \x01(\tH\x01R\x05\x61\x66ter\x88\x01\x01\x12T\n\x07\x66ilters\x18\x04 \x03(\x0b\x32:.blockexplorer.api.v1.ListTransactionsRequest.FiltersEntryR\x07\x66ilters\x1a:\n\x0c\x46iltersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_beforeB\x08\n\x06_after"a\n\x18ListTransactionsResponse\x12\x45\n\x0ctransactions\x18\x03 \x03(\x0b\x32!.blockexplorer.api.v1.TransactionR\x0ctransactions"\xc2\x02\n\x0bTransaction\x12\x14\n\x05\x62lock\x18\x01 \x01(\x04R\x05\x62lock\x12\x14\n\x05index\x18\x02 \x01(\rR\x05index\x12\x12\n\x04hash\x18\x03 \x01(\tR\x04hash\x12\x1c\n\tsubmitter\x18\x04 \x01(\tR\tsubmitter\x12\x12\n\x04type\x18\x05 \x01(\tR\x04type\x12\x12\n\x04\x63ode\x18\x06 \x01(\rR\x04\x63ode\x12\x16\n\x06\x63ursor\x18\x07 \x01(\tR\x06\x63ursor\x12\x35\n\x07\x63ommand\x18\x08 \x01(\x0b\x32\x1b.vega.commands.v1.InputDataR\x07\x63ommand\x12\x39\n\tsignature\x18\t \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\tsignature\x12\x19\n\x05\x65rror\x18\n \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error2\xc9\x02\n\x14\x42lockExplorerService\x12m\n\x0eGetTransaction\x12+.blockexplorer.api.v1.GetTransactionRequest\x1a,.blockexplorer.api.v1.GetTransactionResponse"\x00\x12s\n\x10ListTransactions\x12-.blockexplorer.api.v1.ListTransactionsRequest\x1a..blockexplorer.api.v1.ListTransactionsResponse"\x00\x12M\n\x04Info\x12!.blockexplorer.api.v1.InfoRequest\x1a".blockexplorer.api.v1.InfoResponseB|Z5code.vegaprotocol.io/vega/protos/blockexplorer/api/v1\x92\x41\x42\x12\'\n\x18Vega block explorer APIs2\x0bv0.68.0-dev\x1a\x13lb.testnet.vega.xyz*\x02\x01\x02\x62\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -33,7 +33,7 @@ ) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b"Z5code.vegaprotocol.io/vega/protos/blockexplorer/api/v1\222A>\022#\n\030Vega block explorer APIs2\007v0.67.0\032\023lb.testnet.vega.xyz*\002\001\002" + DESCRIPTOR._serialized_options = b"Z5code.vegaprotocol.io/vega/protos/blockexplorer/api/v1\222AB\022'\n\030Vega block explorer APIs2\013v0.68.0-dev\032\023lb.testnet.vega.xyz*\002\001\002" _LISTTRANSACTIONSREQUEST_FILTERSENTRY._options = None _LISTTRANSACTIONSREQUEST_FILTERSENTRY._serialized_options = b"8\001" _INFOREQUEST._serialized_start = 177 diff --git a/vega_sim/proto/data_node/api/v2/trading_data_pb2.py b/vega_sim/proto/data_node/api/v2/trading_data_pb2.py index 32e8fec69..34f3a992e 100644 --- a/vega_sim/proto/data_node/api/v2/trading_data_pb2.py +++ b/vega_sim/proto/data_node/api/v2/trading_data_pb2.py @@ -27,7 +27,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n#data-node/api/v2/trading_data.proto\x12\x0f\x64\x61tanode.api.v2\x1a\x0fvega/vega.proto\x1a\x15vega/governance.proto\x1a\x12vega/markets.proto\x1a\x11vega/assets.proto\x1a\x11vega/oracle.proto\x1a\x1bvega/events/v1/events.proto\x1a)vega/commands/v1/validator_commands.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"\\\n\x10OffsetPagination\x12\x12\n\x04skip\x18\x01 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12\x1e\n\ndescending\x18\x03 \x01(\x08R\ndescending"\xd9\x01\n\nPagination\x12\x19\n\x05\x66irst\x18\x01 \x01(\x05H\x00R\x05\x66irst\x88\x01\x01\x12\x19\n\x05\x61\x66ter\x18\x02 \x01(\tH\x01R\x05\x61\x66ter\x88\x01\x01\x12\x17\n\x04last\x18\x03 \x01(\x05H\x02R\x04last\x88\x01\x01\x12\x1b\n\x06\x62\x65\x66ore\x18\x04 \x01(\tH\x03R\x06\x62\x65\x66ore\x88\x01\x01\x12&\n\x0cnewest_first\x18\x05 \x01(\x08H\x04R\x0bnewestFirst\x88\x01\x01\x42\x08\n\x06_firstB\x08\n\x06_afterB\x07\n\x05_lastB\t\n\x07_beforeB\x0f\n\r_newest_first"\x9c\x01\n\x08PageInfo\x12"\n\rhas_next_page\x18\x01 \x01(\x08R\x0bhasNextPage\x12*\n\x11has_previous_page\x18\x02 \x01(\x08R\x0fhasPreviousPage\x12!\n\x0cstart_cursor\x18\x03 \x01(\tR\x0bstartCursor\x12\x1d\n\nend_cursor\x18\x04 \x01(\tR\tendCursor"\x9a\x01\n\x0e\x41\x63\x63ountBalance\x12\x14\n\x05owner\x18\x02 \x01(\tR\x05owner\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId\x12%\n\x04type\x18\x06 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type"\x9e\x01\n\x13ListAccountsRequest\x12\x36\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x06\x66ilter\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"W\n\x14ListAccountsResponse\x12?\n\x08\x61\x63\x63ounts\x18\x01 \x01(\x0b\x32#.datanode.api.v2.AccountsConnectionR\x08\x61\x63\x63ounts"\x80\x01\n\x12\x41\x63\x63ountsConnection\x12\x32\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1c.datanode.api.v2.AccountEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"Z\n\x0b\x41\x63\x63ountEdge\x12\x33\n\x04node\x18\x01 \x01(\x0b\x32\x1f.datanode.api.v2.AccountBalanceR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8d\x01\n\x16ObserveAccountsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x14\n\x05\x61sset\x18\x03 \x01(\tR\x05\x61sset\x12%\n\x04type\x18\x04 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type"\xa6\x01\n\x17ObserveAccountsResponse\x12\x42\n\x08snapshot\x18\x01 \x01(\x0b\x32$.datanode.api.v2.AccountSnapshotPageH\x00R\x08snapshot\x12;\n\x07updates\x18\x02 \x01(\x0b\x32\x1f.datanode.api.v2.AccountUpdatesH\x00R\x07updatesB\n\n\x08response"o\n\x13\x41\x63\x63ountSnapshotPage\x12;\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.AccountBalanceR\x08\x61\x63\x63ounts\x12\x1b\n\tlast_page\x18\x02 \x01(\x08R\x08lastPage"M\n\x0e\x41\x63\x63ountUpdates\x12;\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.AccountBalanceR\x08\x61\x63\x63ounts"\r\n\x0bInfoRequest"I\n\x0cInfoResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x1f\n\x0b\x63ommit_hash\x18\x02 \x01(\tR\ncommitHash"W\n\x0fGetOrderRequest\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12\x1d\n\x07version\x18\x02 \x01(\x05H\x00R\x07version\x88\x01\x01\x42\n\n\x08_version"5\n\x10GetOrderResponse\x12!\n\x05order\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x05order"\xd1\x01\n\x0bOrderFilter\x12.\n\x08statuses\x18\x01 \x03(\x0e\x32\x12.vega.Order.StatusR\x08statuses\x12&\n\x05types\x18\x02 \x03(\x0e\x32\x10.vega.Order.TypeR\x05types\x12=\n\x0etime_in_forces\x18\x03 \x03(\x0e\x32\x17.vega.Order.TimeInForceR\x0ctimeInForces\x12+\n\x11\x65xclude_liquidity\x18\x04 \x01(\x08R\x10\x65xcludeLiquidity"\xb7\x03\n\x11ListOrdersRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12 \n\tmarket_id\x18\x02 \x01(\tH\x01R\x08marketId\x88\x01\x01\x12!\n\treference\x18\x03 \x01(\tH\x02R\treference\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x12 \n\tlive_only\x18\x05 \x01(\x08H\x04R\x08liveOnly\x88\x01\x01\x12>\n\ndate_range\x18\x06 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x05R\tdateRange\x88\x01\x01\x12\x39\n\x06\x66ilter\x18\x07 \x01(\x0b\x32\x1c.datanode.api.v2.OrderFilterH\x06R\x06\x66ilter\x88\x01\x01\x42\x0b\n\t_party_idB\x0c\n\n_market_idB\x0c\n\n_referenceB\r\n\x0b_paginationB\x0c\n\n_live_onlyB\r\n\x0b_date_rangeB\t\n\x07_filter"N\n\x12ListOrdersResponse\x12\x38\n\x06orders\x18\x01 \x01(\x0b\x32 .datanode.api.v2.OrderConnectionR\x06orders"\x86\x01\n\x18ListOrderVersionsRequest\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"U\n\x19ListOrderVersionsResponse\x12\x38\n\x06orders\x18\x01 \x01(\x0b\x32 .datanode.api.v2.OrderConnectionR\x06orders"\xbb\x01\n\x14ObserveOrdersRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x12\x30\n\x11\x65xclude_liquidity\x18\x03 \x01(\x08H\x02R\x10\x65xcludeLiquidity\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_idB\x14\n\x12_exclude_liquidity"\xa0\x01\n\x15ObserveOrdersResponse\x12@\n\x08snapshot\x18\x01 \x01(\x0b\x32".datanode.api.v2.OrderSnapshotPageH\x00R\x08snapshot\x12\x39\n\x07updates\x18\x02 \x01(\x0b\x32\x1d.datanode.api.v2.OrderUpdatesH\x00R\x07updatesB\n\n\x08response"U\n\x11OrderSnapshotPage\x12#\n\x06orders\x18\x01 \x03(\x0b\x32\x0b.vega.OrderR\x06orders\x12\x1b\n\tlast_page\x18\x02 \x01(\x08R\x08lastPage"3\n\x0cOrderUpdates\x12#\n\x06orders\x18\x01 \x03(\x0b\x32\x0b.vega.OrderR\x06orders"\x9f\x01\n\x14ListPositionsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"Z\n\x15ListPositionsResponse\x12\x41\n\tpositions\x18\x01 \x01(\x0b\x32#.datanode.api.v2.PositionConnectionR\tpositions"J\n\x0cPositionEdge\x12"\n\x04node\x18\x01 \x01(\x0b\x32\x0e.vega.PositionR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n\x12PositionConnection\x12\x33\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1d.datanode.api.v2.PositionEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"v\n\x17ObservePositionsRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12 \n\tmarket_id\x18\x02 \x01(\tH\x01R\x08marketId\x88\x01\x01\x42\x0b\n\t_party_idB\x0c\n\n_market_id"\xa9\x01\n\x18ObservePositionsResponse\x12\x43\n\x08snapshot\x18\x01 \x01(\x0b\x32%.datanode.api.v2.PositionSnapshotPageH\x00R\x08snapshot\x12<\n\x07updates\x18\x02 \x01(\x0b\x32 .datanode.api.v2.PositionUpdatesH\x00R\x07updatesB\n\n\x08response"a\n\x14PositionSnapshotPage\x12,\n\tpositions\x18\x01 \x03(\x0b\x32\x0e.vega.PositionR\tpositions\x12\x1b\n\tlast_page\x18\x02 \x01(\x08R\x08lastPage"?\n\x0fPositionUpdates\x12,\n\tpositions\x18\x01 \x03(\x0b\x32\x0e.vega.PositionR\tpositions"\xa3\x02\n\x11LedgerEntryFilter\x12\x37\n\x18\x63lose_on_account_filters\x18\x01 \x01(\x08R\x15\x63loseOnAccountFilters\x12N\n\x13\x66rom_account_filter\x18\x02 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x11\x66romAccountFilter\x12J\n\x11to_account_filter\x18\x03 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x0ftoAccountFilter\x12\x39\n\x0etransfer_types\x18\x05 \x03(\x0e\x32\x12.vega.TransferTypeR\rtransferTypes"\xd9\x05\n\x15\x41ggregatedLedgerEntry\x12\x1c\n\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x1a\n\x08quantity\x18\x03 \x01(\tR\x08quantity\x12\x37\n\rtransfer_type\x18\x04 \x01(\x0e\x32\x12.vega.TransferTypeR\x0ctransferType\x12\x1e\n\x08\x61sset_id\x18\x05 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12=\n\x11\x66rom_account_type\x18\x06 \x01(\x0e\x32\x11.vega.AccountTypeR\x0f\x66romAccountType\x12\x39\n\x0fto_account_type\x18\x07 \x01(\x0e\x32\x11.vega.AccountTypeR\rtoAccountType\x12\x36\n\x15\x66rom_account_party_id\x18\x08 \x01(\tH\x01R\x12\x66romAccountPartyId\x88\x01\x01\x12\x32\n\x13to_account_party_id\x18\t \x01(\tH\x02R\x10toAccountPartyId\x88\x01\x01\x12\x38\n\x16\x66rom_account_market_id\x18\n \x01(\tH\x03R\x13\x66romAccountMarketId\x88\x01\x01\x12\x34\n\x14to_account_market_id\x18\x0b \x01(\tH\x04R\x11toAccountMarketId\x88\x01\x01\x12\x30\n\x14\x66rom_account_balance\x18\x0c \x01(\tR\x12\x66romAccountBalance\x12,\n\x12to_account_balance\x18\r \x01(\tR\x10toAccountBalanceB\x0b\n\t_asset_idB\x18\n\x16_from_account_party_idB\x16\n\x14_to_account_party_idB\x19\n\x17_from_account_market_idB\x17\n\x15_to_account_market_idJ\x04\x08\x01\x10\x02"\xf6\x01\n\x18ListLedgerEntriesRequest\x12:\n\x06\x66ilter\x18\x01 \x01(\x0b\x32".datanode.api.v2.LedgerEntryFilterR\x06\x66ilter\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x03 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"\xf2\x01\n\x1a\x45xportLedgerEntriesRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x19\n\x08\x61sset_id\x18\x02 \x01(\tR\x07\x61ssetId\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x04 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"v\n\x19ListLedgerEntriesResponse\x12Y\n\x0eledger_entries\x18\x01 \x01(\x0b\x32\x32.datanode.api.v2.AggregatedLedgerEntriesConnectionR\rledgerEntries"i\n\x1b\x45xportLedgerEntriesResponse\x12\x12\n\x04\x64\x61ta\x18\x01 \x01(\x0cR\x04\x64\x61ta\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"q\n\x1b\x41ggregatedLedgerEntriesEdge\x12:\n\x04node\x18\x01 \x01(\x0b\x32&.datanode.api.v2.AggregatedLedgerEntryR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x9f\x01\n!AggregatedLedgerEntriesConnection\x12\x42\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32,.datanode.api.v2.AggregatedLedgerEntriesEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xf3\x01\n\x19ListBalanceChangesRequest\x12\x36\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x06\x66ilter\x12@\n\npagination\x18\x05 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x06 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"f\n\x1aListBalanceChangesResponse\x12H\n\x08\x62\x61lances\x18\x01 \x01(\x0b\x32,.datanode.api.v2.AggregatedBalanceConnectionR\x08\x62\x61lances"\xac\x02\n\x18GetBalanceHistoryRequest\x12\x36\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x06\x66ilter\x12\x38\n\x08group_by\x18\x02 \x03(\x0e\x32\x1d.datanode.api.v2.AccountFieldR\x07groupBy\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x04 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"e\n\x19GetBalanceHistoryResponse\x12H\n\x08\x62\x61lances\x18\x01 \x01(\x0b\x32,.datanode.api.v2.AggregatedBalanceConnectionR\x08\x62\x61lances"g\n\x15\x41ggregatedBalanceEdge\x12\x36\n\x04node\x18\x01 \x01(\x0b\x32".datanode.api.v2.AggregatedBalanceR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x93\x01\n\x1b\x41ggregatedBalanceConnection\x12<\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32&.datanode.api.v2.AggregatedBalanceEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x9e\x01\n\rAccountFilter\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x1b\n\tparty_ids\x18\x02 \x03(\tR\x08partyIds\x12\x1d\n\nmarket_ids\x18\x03 \x03(\tR\tmarketIds\x12\x36\n\raccount_types\x18\x04 \x03(\x0e\x32\x11.vega.AccountTypeR\x0c\x61\x63\x63ountTypes"\xa1\x02\n\x11\x41ggregatedBalance\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\x12\x1e\n\x08party_id\x18\x04 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1e\n\x08\x61sset_id\x18\x05 \x01(\tH\x01R\x07\x61ssetId\x88\x01\x01\x12 \n\tmarket_id\x18\x06 \x01(\tH\x02R\x08marketId\x88\x01\x01\x12\x39\n\x0c\x61\x63\x63ount_type\x18\x07 \x01(\x0e\x32\x11.vega.AccountTypeH\x03R\x0b\x61\x63\x63ountType\x88\x01\x01\x42\x0b\n\t_party_idB\x0b\n\t_asset_idB\x0c\n\n_market_idB\x0f\n\r_account_type";\n\x1aObserveMarketsDepthRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds"S\n\x1bObserveMarketsDepthResponse\x12\x34\n\x0cmarket_depth\x18\x01 \x03(\x0b\x32\x11.vega.MarketDepthR\x0bmarketDepth"B\n!ObserveMarketsDepthUpdatesRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds"U\n"ObserveMarketsDepthUpdatesResponse\x12/\n\x06update\x18\x01 \x03(\x0b\x32\x17.vega.MarketDepthUpdateR\x06update":\n\x19ObserveMarketsDataRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds"O\n\x1aObserveMarketsDataResponse\x12\x31\n\x0bmarket_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\nmarketData"j\n\x1bGetLatestMarketDepthRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12 \n\tmax_depth\x18\x02 \x01(\x04H\x00R\x08maxDepth\x88\x01\x01\x42\x0c\n\n_max_depth"\xda\x01\n\x1cGetLatestMarketDepthResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12"\n\x03\x62uy\x18\x02 \x03(\x0b\x32\x10.vega.PriceLevelR\x03\x62uy\x12$\n\x04sell\x18\x03 \x03(\x0b\x32\x10.vega.PriceLevelR\x04sell\x12*\n\nlast_trade\x18\x04 \x01(\x0b\x32\x0b.vega.TradeR\tlastTrade\x12\'\n\x0fsequence_number\x18\x05 \x01(\x04R\x0esequenceNumber"\x1d\n\x1bListLatestMarketDataRequest"S\n\x1cListLatestMarketDataResponse\x12\x33\n\x0cmarkets_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\x0bmarketsData"9\n\x1aGetLatestMarketDataRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"P\n\x1bGetLatestMarketDataResponse\x12\x31\n\x0bmarket_data\x18\x01 \x01(\x0b\x32\x10.vega.MarketDataR\nmarketData"\xfc\x02\n\x1fGetMarketDataHistoryByIDRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12,\n\x0fstart_timestamp\x18\x02 \x01(\x03H\x00R\x0estartTimestamp\x88\x01\x01\x12(\n\rend_timestamp\x18\x03 \x01(\x03H\x01R\x0c\x65ndTimestamp\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x12W\n\x11offset_pagination\x18\x05 \x01(\x0b\x32!.datanode.api.v2.OffsetPaginationB\x02\x18\x01H\x03R\x10offsetPagination\x88\x01\x01\x42\x12\n\x10_start_timestampB\x10\n\x0e_end_timestampB\r\n\x0b_paginationB\x14\n\x12_offset_pagination"j\n GetMarketDataHistoryByIDResponse\x12\x46\n\x0bmarket_data\x18\x01 \x01(\x0b\x32%.datanode.api.v2.MarketDataConnectionR\nmarketData"N\n\x0eMarketDataEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.MarketDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x85\x01\n\x14MarketDataConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.MarketDataEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo":\n\x1bMarketsDataSubscribeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"Q\n\x1cMarketsDataSubscribeResponse\x12\x31\n\x0bmarket_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\nmarketData"\xd1\x01\n\x14ListTransfersRequest\x12\x1b\n\x06pubkey\x18\x01 \x01(\tH\x00R\x06pubkey\x88\x01\x01\x12@\n\tdirection\x18\x02 \x01(\x0e\x32".datanode.api.v2.TransferDirectionR\tdirection\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\t\n\x07_pubkeyB\r\n\x0b_pagination"Z\n\x15ListTransfersResponse\x12\x41\n\ttransfers\x18\x01 \x01(\x0b\x32#.datanode.api.v2.TransferConnectionR\ttransfers"T\n\x0cTransferEdge\x12,\n\x04node\x18\x01 \x01(\x0b\x32\x18.vega.events.v1.TransferR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n\x12TransferConnection\x12\x33\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1d.datanode.api.v2.TransferEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x19\n\x17GetNetworkLimitsRequest"G\n\x18GetNetworkLimitsResponse\x12+\n\x06limits\x18\x01 \x01(\x0b\x32\x13.vega.NetworkLimitsR\x06limits"9\n\x1aListCandleIntervalsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"M\n\x12IntervalToCandleId\x12\x1a\n\x08interval\x18\x01 \x01(\tR\x08interval\x12\x1b\n\tcandle_id\x18\x02 \x01(\tR\x08\x63\x61ndleId"u\n\x1bListCandleIntervalsResponse\x12V\n\x15interval_to_candle_id\x18\x01 \x03(\x0b\x32#.datanode.api.v2.IntervalToCandleIdR\x12intervalToCandleId"\xa7\x01\n\x06\x43\x61ndle\x12\x14\n\x05start\x18\x01 \x01(\x03R\x05start\x12\x1f\n\x0blast_update\x18\x02 \x01(\x03R\nlastUpdate\x12\x12\n\x04high\x18\x03 \x01(\tR\x04high\x12\x10\n\x03low\x18\x04 \x01(\tR\x03low\x12\x12\n\x04open\x18\x05 \x01(\tR\x04open\x12\x14\n\x05\x63lose\x18\x06 \x01(\tR\x05\x63lose\x12\x16\n\x06volume\x18\x07 \x01(\x04R\x06volume"7\n\x18ObserveCandleDataRequest\x12\x1b\n\tcandle_id\x18\x01 \x01(\tR\x08\x63\x61ndleId"L\n\x19ObserveCandleDataResponse\x12/\n\x06\x63\x61ndle\x18\x01 \x01(\x0b\x32\x17.datanode.api.v2.CandleR\x06\x63\x61ndle"\xfb\x01\n\x15ListCandleDataRequest\x12\x1b\n\tcandle_id\x18\x01 \x01(\tR\x08\x63\x61ndleId\x12%\n\x0e\x66rom_timestamp\x18\x02 \x01(\x03R\rfromTimestamp\x12!\n\x0cto_timestamp\x18\x03 \x01(\x03R\x0btoTimestamp\x12*\n\x08interval\x18\x04 \x01(\x0e\x32\x0e.vega.IntervalR\x08interval\x12@\n\npagination\x18\x05 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"Y\n\x16ListCandleDataResponse\x12?\n\x07\x63\x61ndles\x18\x01 \x01(\x0b\x32%.datanode.api.v2.CandleDataConnectionR\x07\x63\x61ndles"Q\n\nCandleEdge\x12+\n\x04node\x18\x01 \x01(\x0b\x32\x17.datanode.api.v2.CandleR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n\x14\x43\x61ndleDataConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.CandleEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xc6\x01\n\x10ListVotesRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12$\n\x0bproposal_id\x18\x02 \x01(\tH\x01R\nproposalId\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\x0b\n\t_party_idB\x0e\n\x0c_proposal_idB\r\n\x0b_pagination"J\n\x11ListVotesResponse\x12\x35\n\x05votes\x18\x01 \x01(\x0b\x32\x1f.datanode.api.v2.VoteConnectionR\x05votes"B\n\x08VoteEdge\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\n.vega.VoteR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"y\n\x0eVoteConnection\x12/\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x19.datanode.api.v2.VoteEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"x\n\x13ObserveVotesRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12$\n\x0bproposal_id\x18\x02 \x01(\tH\x01R\nproposalId\x88\x01\x01\x42\x0b\n\t_party_idB\x0e\n\x0c_proposal_id"6\n\x14ObserveVotesResponse\x12\x1e\n\x04vote\x18\x01 \x01(\x0b\x32\n.vega.VoteR\x04vote"\xbd\x01\n*ListERC20MultiSigSignerAddedBundlesRequest\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq\x12;\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"|\n+ListERC20MultiSigSignerAddedBundlesResponse\x12M\n\x07\x62undles\x18\x01 \x01(\x0b\x32\x33.datanode.api.v2.ERC20MultiSigSignerAddedConnectionR\x07\x62undles"t\n\x1c\x45RC20MultiSigSignerAddedEdge\x12<\n\x04node\x18\x01 \x01(\x0b\x32(.vega.events.v1.ERC20MultiSigSignerAddedR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n"ERC20MultiSigSignerAddedBundleEdge\x12\x43\n\x04node\x18\x01 \x01(\x0b\x32/.datanode.api.v2.ERC20MultiSigSignerAddedBundleR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\xa7\x01\n"ERC20MultiSigSignerAddedConnection\x12I\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x33.datanode.api.v2.ERC20MultiSigSignerAddedBundleEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xce\x01\n\x1e\x45RC20MultiSigSignerAddedBundle\x12\x1d\n\nnew_signer\x18\x01 \x01(\tR\tnewSigner\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x1e\n\nsignatures\x18\x06 \x01(\tR\nsignatures\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq"\xbf\x01\n,ListERC20MultiSigSignerRemovedBundlesRequest\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq\x12;\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"\x80\x01\n-ListERC20MultiSigSignerRemovedBundlesResponse\x12O\n\x07\x62undles\x18\x01 \x01(\x0b\x32\x35.datanode.api.v2.ERC20MultiSigSignerRemovedConnectionR\x07\x62undles"x\n\x1e\x45RC20MultiSigSignerRemovedEdge\x12>\n\x04node\x18\x01 \x01(\x0b\x32*.vega.events.v1.ERC20MultiSigSignerRemovedR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x85\x01\n$ERC20MultiSigSignerRemovedBundleEdge\x12\x45\n\x04node\x18\x01 \x01(\x0b\x32\x31.datanode.api.v2.ERC20MultiSigSignerRemovedBundleR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\xab\x01\n$ERC20MultiSigSignerRemovedConnection\x12K\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x35.datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xd0\x01\n ERC20MultiSigSignerRemovedBundle\x12\x1d\n\nold_signer\x18\x01 \x01(\tR\toldSigner\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x1e\n\nsignatures\x18\x06 \x01(\tR\nsignatures\x12\x1b\n\tepoch_seq\x18\x07 \x01(\tR\x08\x65pochSeq";\n\x1eGetERC20ListAssetBundleRequest\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId"\x9e\x01\n\x1fGetERC20ListAssetBundleResponse\x12!\n\x0c\x61sset_source\x18\x01 \x01(\tR\x0b\x61ssetSource\x12"\n\rvega_asset_id\x18\x02 \x01(\tR\x0bvegaAssetId\x12\x14\n\x05nonce\x18\x03 \x01(\tR\x05nonce\x12\x1e\n\nsignatures\x18\x04 \x01(\tR\nsignatures"F\n#GetERC20SetAssetLimitsBundleRequest\x12\x1f\n\x0bproposal_id\x18\x01 \x01(\tR\nproposalId"\xe8\x01\n$GetERC20SetAssetLimitsBundleResponse\x12!\n\x0c\x61sset_source\x18\x01 \x01(\tR\x0b\x61ssetSource\x12"\n\rvega_asset_id\x18\x02 \x01(\tR\x0bvegaAssetId\x12\x14\n\x05nonce\x18\x03 \x01(\tR\x05nonce\x12%\n\x0elifetime_limit\x18\x04 \x01(\tR\rlifetimeLimit\x12\x1c\n\tthreshold\x18\x05 \x01(\tR\tthreshold\x12\x1e\n\nsignatures\x18\x06 \x01(\tR\nsignatures"H\n!GetERC20WithdrawalApprovalRequest\x12#\n\rwithdrawal_id\x18\x01 \x01(\tR\x0cwithdrawalId"\xde\x01\n"GetERC20WithdrawalApprovalResponse\x12!\n\x0c\x61sset_source\x18\x01 \x01(\tR\x0b\x61ssetSource\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1e\n\nsignatures\x18\x05 \x01(\tR\nsignatures\x12%\n\x0etarget_address\x18\x06 \x01(\tR\rtargetAddress\x12\x1a\n\x08\x63reation\x18\x07 \x01(\x03R\x08\x63reationJ\x04\x08\x03\x10\x04"2\n\x13GetLastTradeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"9\n\x14GetLastTradeResponse\x12!\n\x05trade\x18\x01 \x01(\x0b\x32\x0b.vega.TradeR\x05trade"\xbd\x02\n\x11ListTradesRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08order_id\x18\x02 \x01(\tH\x01R\x07orderId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x03 \x01(\tH\x02R\x07partyId\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x05 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x04R\tdateRange\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_order_idB\x0b\n\t_party_idB\r\n\x0b_paginationB\r\n\x0b_date_range"N\n\x12ListTradesResponse\x12\x38\n\x06trades\x18\x01 \x01(\x0b\x32 .datanode.api.v2.TradeConnectionR\x06trades"{\n\x0fTradeConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.TradeEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"D\n\tTradeEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.TradeR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"s\n\x14ObserveTradesRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_id"<\n\x15ObserveTradesResponse\x12#\n\x06trades\x18\x01 \x03(\x0b\x32\x0b.vega.TradeR\x06trades"<\n\x14GetOracleSpecRequest\x12$\n\x0eoracle_spec_id\x18\x01 \x01(\tR\x0coracleSpecId"J\n\x15GetOracleSpecResponse\x12\x31\n\x0boracle_spec\x18\x01 \x01(\x0b\x32\x10.vega.OracleSpecR\noracleSpec"i\n\x16ListOracleSpecsRequest\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"d\n\x17ListOracleSpecsResponse\x12I\n\x0coracle_specs\x18\x01 \x01(\x0b\x32&.datanode.api.v2.OracleSpecsConnectionR\x0boracleSpecs"\xa6\x01\n\x15ListOracleDataRequest\x12)\n\x0eoracle_spec_id\x18\x01 \x01(\tH\x00R\x0coracleSpecId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x11\n\x0f_oracle_spec_idB\r\n\x0b_pagination"`\n\x16ListOracleDataResponse\x12\x46\n\x0boracle_data\x18\x01 \x01(\x0b\x32%.datanode.api.v2.OracleDataConnectionR\noracleData"N\n\x0eOracleSpecEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.OracleSpecR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15OracleSpecsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.OracleSpecEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"N\n\x0eOracleDataEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.OracleDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x85\x01\n\x14OracleDataConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.OracleDataEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"/\n\x10GetMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"9\n\x11GetMarketResponse\x12$\n\x06market\x18\x01 \x01(\x0b\x32\x0c.vega.MarketR\x06market"e\n\x12ListMarketsRequest\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"R\n\x13ListMarketsResponse\x12;\n\x07markets\x18\x01 \x01(\x0b\x32!.datanode.api.v2.MarketConnectionR\x07markets"F\n\nMarketEdge\x12 \n\x04node\x18\x01 \x01(\x0b\x32\x0c.vega.MarketR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"}\n\x10MarketConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.MarketEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo",\n\x0fGetPartyRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId"5\n\x10GetPartyResponse\x12!\n\x05party\x18\x01 \x01(\x0b\x32\x0b.vega.PartyR\x05party"l\n\x12ListPartiesRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12;\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"Q\n\x13ListPartiesResponse\x12:\n\x07parties\x18\x01 \x01(\x0b\x32 .datanode.api.v2.PartyConnectionR\x07parties"D\n\tPartyEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.PartyR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"{\n\x0fPartyConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.PartyEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"D\n\tOrderEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8e\x01\n\x17ListMarginLevelsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12;\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"b\n\x18ListMarginLevelsResponse\x12\x46\n\rmargin_levels\x18\x01 \x01(\x0b\x32!.datanode.api.v2.MarginConnectionR\x0cmarginLevels"g\n\x1aObserveMarginLevelsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12 \n\tmarket_id\x18\x02 \x01(\tH\x00R\x08marketId\x88\x01\x01\x42\x0c\n\n_market_id"V\n\x1bObserveMarginLevelsResponse\x12\x37\n\rmargin_levels\x18\x01 \x01(\x0b\x32\x12.vega.MarginLevelsR\x0cmarginLevels"{\n\x0fOrderConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.OrderEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"L\n\nMarginEdge\x12&\n\x04node\x18\x01 \x01(\x0b\x32\x12.vega.MarginLevelsR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"}\n\x10MarginConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.MarginEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xad\x01\n\x12ListRewardsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1e\n\x08\x61sset_id\x18\x02 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x0b\n\t_asset_idB\r\n\x0b_pagination"S\n\x13ListRewardsResponse\x12<\n\x07rewards\x18\x01 \x01(\x0b\x32".datanode.api.v2.RewardsConnectionR\x07rewards"F\n\nRewardEdge\x12 \n\x04node\x18\x01 \x01(\x0b\x32\x0c.vega.RewardR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"~\n\x11RewardsConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.RewardEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xc7\x01\n\x1aListRewardSummariesRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1e\n\x08\x61sset_id\x18\x02 \x01(\tH\x01R\x07\x61ssetId\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\x0b\n\t_party_idB\x0b\n\t_asset_idB\r\n\x0b_pagination"P\n\x1bListRewardSummariesResponse\x12\x31\n\tsummaries\x18\x01 \x03(\x0b\x32\x13.vega.RewardSummaryR\tsummaries"\xd2\x01\n\x1fListEpochRewardSummariesRequest\x12"\n\nfrom_epoch\x18\x01 \x01(\x04H\x00R\tfromEpoch\x88\x01\x01\x12\x1e\n\x08to_epoch\x18\x02 \x01(\x04H\x01R\x07toEpoch\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\r\n\x0b_from_epochB\x0b\n\t_to_epochB\r\n\x0b_pagination"o\n ListEpochRewardSummariesResponse\x12K\n\tsummaries\x18\x01 \x01(\x0b\x32-.datanode.api.v2.EpochRewardSummaryConnectionR\tsummaries"\x95\x01\n\x1c\x45pochRewardSummaryConnection\x12=\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\'.datanode.api.v2.EpochRewardSummaryEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"^\n\x16\x45pochRewardSummaryEdge\x12,\n\x04node\x18\x01 \x01(\x0b\x32\x18.vega.EpochRewardSummaryR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"q\n\x15ObserveRewardsRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x42\x0b\n\t_asset_idB\x0b\n\t_party_id">\n\x16ObserveRewardsResponse\x12$\n\x06reward\x18\x01 \x01(\x0b\x32\x0c.vega.RewardR\x06reward"#\n\x11GetDepositRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"=\n\x12GetDepositResponse\x12\'\n\x07\x64\x65posit\x18\x01 \x01(\x0b\x32\r.vega.DepositR\x07\x64\x65posit"\xd0\x01\n\x13ListDepositsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x03 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"W\n\x14ListDepositsResponse\x12?\n\x08\x64\x65posits\x18\x01 \x01(\x0b\x32#.datanode.api.v2.DepositsConnectionR\x08\x64\x65posits"H\n\x0b\x44\x65positEdge\x12!\n\x04node\x18\x01 \x01(\x0b\x32\r.vega.DepositR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x80\x01\n\x12\x44\x65positsConnection\x12\x32\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1c.datanode.api.v2.DepositEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"&\n\x14GetWithdrawalRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"I\n\x15GetWithdrawalResponse\x12\x30\n\nwithdrawal\x18\x01 \x01(\x0b\x32\x10.vega.WithdrawalR\nwithdrawal"\xd3\x01\n\x16ListWithdrawalsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x03 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"c\n\x17ListWithdrawalsResponse\x12H\n\x0bwithdrawals\x18\x01 \x01(\x0b\x32&.datanode.api.v2.WithdrawalsConnectionR\x0bwithdrawals"N\n\x0eWithdrawalEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.WithdrawalR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15WithdrawalsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.WithdrawalEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo",\n\x0fGetAssetRequest\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId"5\n\x10GetAssetResponse\x12!\n\x05\x61sset\x18\x01 \x01(\x0b\x32\x0b.vega.AssetR\x05\x61sset"\x91\x01\n\x11ListAssetsRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x0b\n\t_asset_idB\r\n\x0b_pagination"O\n\x12ListAssetsResponse\x12\x39\n\x06\x61ssets\x18\x01 \x01(\x0b\x32!.datanode.api.v2.AssetsConnectionR\x06\x61ssets"D\n\tAssetEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.AssetR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"|\n\x10\x41ssetsConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.AssetEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xff\x01\n\x1eListLiquidityProvisionsRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x12!\n\treference\x18\x03 \x01(\tH\x02R\treference\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_idB\x0c\n\n_referenceB\r\n\x0b_pagination"\x84\x01\n\x1fListLiquidityProvisionsResponse\x12\x61\n\x14liquidity_provisions\x18\x01 \x01(\x0b\x32..datanode.api.v2.LiquidityProvisionsConnectionR\x13liquidityProvisions"_\n\x17LiquidityProvisionsEdge\x12,\n\x04node\x18\x01 \x01(\x0b\x32\x18.vega.LiquidityProvisionR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x97\x01\n\x1dLiquidityProvisionsConnection\x12>\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32(.datanode.api.v2.LiquidityProvisionsEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x80\x01\n!ObserveLiquidityProvisionsRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_id"q\n"ObserveLiquidityProvisionsResponse\x12K\n\x14liquidity_provisions\x18\x01 \x03(\x0b\x32\x18.vega.LiquidityProvisionR\x13liquidityProvisions"\x81\x01\n\x18GetGovernanceDataRequest\x12$\n\x0bproposal_id\x18\x01 \x01(\tH\x00R\nproposalId\x88\x01\x01\x12!\n\treference\x18\x02 \x01(\tH\x01R\treference\x88\x01\x01\x42\x0e\n\x0c_proposal_idB\x0c\n\n_reference"E\n\x19GetGovernanceDataResponse\x12(\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x14.vega.GovernanceDataR\x04\x64\x61ta"\xfa\x04\n\x19ListGovernanceDataRequest\x12@\n\x0eproposal_state\x18\x01 \x01(\x0e\x32\x14.vega.Proposal.StateH\x00R\rproposalState\x88\x01\x01\x12Y\n\rproposal_type\x18\x02 \x01(\x0e\x32/.datanode.api.v2.ListGovernanceDataRequest.TypeH\x01R\x0cproposalType\x88\x01\x01\x12/\n\x11proposer_party_id\x18\x03 \x01(\tH\x02R\x0fproposerPartyId\x88\x01\x01\x12\x32\n\x12proposal_reference\x18\x04 \x01(\tH\x03R\x11proposalReference\x88\x01\x01\x12@\n\npagination\x18\x05 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x04R\npagination\x88\x01\x01"\xb7\x01\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0c\n\x08TYPE_ALL\x10\x01\x12\x13\n\x0fTYPE_NEW_MARKET\x10\x02\x12\x16\n\x12TYPE_UPDATE_MARKET\x10\x03\x12\x1b\n\x17TYPE_NETWORK_PARAMETERS\x10\x04\x12\x12\n\x0eTYPE_NEW_ASSET\x10\x05\x12\x16\n\x12TYPE_NEW_FREE_FORM\x10\x06\x12\x15\n\x11TYPE_UPDATE_ASSET\x10\x07\x42\x11\n\x0f_proposal_stateB\x10\n\x0e_proposal_typeB\x14\n\x12_proposer_party_idB\x15\n\x13_proposal_referenceB\r\n\x0b_pagination"g\n\x1aListGovernanceDataResponse\x12I\n\nconnection\x18\x01 \x01(\x0b\x32).datanode.api.v2.GovernanceDataConnectionR\nconnection"V\n\x12GovernanceDataEdge\x12(\n\x04node\x18\x01 \x01(\x0b\x32\x14.vega.GovernanceDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8d\x01\n\x18GovernanceDataConnection\x12\x39\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32#.datanode.api.v2.GovernanceDataEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"G\n\x18ObserveGovernanceRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x42\x0b\n\t_party_id"E\n\x19ObserveGovernanceResponse\x12(\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x14.vega.GovernanceDataR\x04\x64\x61ta"\xed\x01\n\x16ListDelegationsRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1c\n\x07node_id\x18\x02 \x01(\tH\x01R\x06nodeId\x88\x01\x01\x12\x1e\n\x08\x65poch_id\x18\x03 \x01(\tH\x02R\x07\x65pochId\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x42\x0b\n\t_party_idB\n\n\x08_node_idB\x0b\n\t_epoch_idB\r\n\x0b_pagination"c\n\x17ListDelegationsResponse\x12H\n\x0b\x64\x65legations\x18\x01 \x01(\x0b\x32&.datanode.api.v2.DelegationsConnectionR\x0b\x64\x65legations"N\n\x0e\x44\x65legationEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.DelegationR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15\x44\x65legationsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.DelegationEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"r\n\x19ObserveDelegationsRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1c\n\x07node_id\x18\x02 \x01(\tH\x01R\x06nodeId\x88\x01\x01\x42\x0b\n\t_party_idB\n\n\x08_node_id"N\n\x1aObserveDelegationsResponse\x12\x30\n\ndelegation\x18\x01 \x01(\x0b\x32\x10.vega.DelegationR\ndelegation"\x17\n\x15GetNetworkDataRequest"E\n\x16GetNetworkDataResponse\x12+\n\tnode_data\x18\x01 \x01(\x0b\x32\x0e.vega.NodeDataR\x08nodeData" \n\x0eGetNodeRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"1\n\x0fGetNodeResponse\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\n.vega.NodeR\x04node"\x93\x01\n\x10ListNodesRequest\x12 \n\tepoch_seq\x18\x01 \x01(\x04H\x00R\x08\x65pochSeq\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x0c\n\n_epoch_seqB\r\n\x0b_pagination"K\n\x11ListNodesResponse\x12\x36\n\x05nodes\x18\x01 \x01(\x0b\x32 .datanode.api.v2.NodesConnectionR\x05nodes"B\n\x08NodeEdge\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\n.vega.NodeR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"z\n\x0fNodesConnection\x12/\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x19.datanode.api.v2.NodeEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"|\n\x19ListNodeSignaturesRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"g\n\x1aListNodeSignaturesResponse\x12I\n\nsignatures\x18\x01 \x01(\x0b\x32).datanode.api.v2.NodeSignaturesConnectionR\nsignatures"`\n\x11NodeSignatureEdge\x12\x33\n\x04node\x18\x01 \x01(\x0b\x32\x1f.vega.commands.v1.NodeSignatureR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8c\x01\n\x18NodeSignaturesConnection\x12\x38\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32".datanode.api.v2.NodeSignatureEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"-\n\x0fGetEpochRequest\x12\x13\n\x02id\x18\x01 \x01(\x04H\x00R\x02id\x88\x01\x01\x42\x05\n\x03_id"5\n\x10GetEpochResponse\x12!\n\x05\x65poch\x18\x01 \x01(\x0b\x32\x0b.vega.EpochR\x05\x65poch"[\n\x12\x45stimateFeeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12\x12\n\x04size\x18\x03 \x01(\x04R\x04size"2\n\x13\x45stimateFeeResponse\x12\x1b\n\x03\x66\x65\x65\x18\x02 \x01(\x0b\x32\t.vega.FeeR\x03\x66\x65\x65"\xbf\x01\n\x15\x45stimateMarginRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x1e\n\x04side\x18\x03 \x01(\x0e\x32\n.vega.SideR\x04side\x12$\n\x04type\x18\x04 \x01(\x0e\x32\x10.vega.Order.TypeR\x04type\x12\x12\n\x04size\x18\x05 \x01(\x04R\x04size\x12\x14\n\x05price\x18\x06 \x01(\tR\x05price"Q\n\x16\x45stimateMarginResponse\x12\x37\n\rmargin_levels\x18\x02 \x01(\x0b\x32\x12.vega.MarginLevelsR\x0cmarginLevels"o\n\x1cListNetworkParametersRequest\x12@\n\npagination\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"{\n\x1dListNetworkParametersResponse\x12Z\n\x12network_parameters\x18\x01 \x01(\x0b\x32+.datanode.api.v2.NetworkParameterConnectionR\x11networkParameters".\n\x1aGetNetworkParameterRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key"b\n\x1bGetNetworkParameterResponse\x12\x43\n\x11network_parameter\x18\x01 \x01(\x0b\x32\x16.vega.NetworkParameterR\x10networkParameter"Z\n\x14NetworkParameterEdge\x12*\n\x04node\x18\x01 \x01(\x0b\x32\x16.vega.NetworkParameterR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x91\x01\n\x1aNetworkParameterConnection\x12;\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32%.datanode.api.v2.NetworkParameterEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"Z\n\nCheckpoint\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12\x19\n\x08\x61t_block\x18\x03 \x01(\x04R\x07\x61tBlock"i\n\x16ListCheckpointsRequest\x12@\n\npagination\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"c\n\x17ListCheckpointsResponse\x12H\n\x0b\x63heckpoints\x18\x01 \x01(\x0b\x32&.datanode.api.v2.CheckpointsConnectionR\x0b\x63heckpoints"Y\n\x0e\x43heckpointEdge\x12/\n\x04node\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.CheckpointR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15\x43heckpointsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.CheckpointEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"}\n\x0fGetStakeRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"\x94\x01\n\x10GetStakeResponse\x12\x36\n\x17\x63urrent_stake_available\x18\x01 \x01(\tR\x15\x63urrentStakeAvailable\x12H\n\x0estake_linkings\x18\x02 \x01(\x0b\x32!.datanode.api.v2.StakesConnectionR\rstakeLinkings"\\\n\x10StakeLinkingEdge\x12\x30\n\x04node\x18\x01 \x01(\x0b\x32\x1c.vega.events.v1.StakeLinkingR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x83\x01\n\x10StakesConnection\x12\x37\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32!.datanode.api.v2.StakeLinkingEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"4\n\x15GetRiskFactorsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"K\n\x16GetRiskFactorsResponse\x12\x31\n\x0brisk_factor\x18\x01 \x01(\x0b\x32\x10.vega.RiskFactorR\nriskFactor"\xa1\x01\n\x16ObserveEventBusRequest\x12\x30\n\x04type\x18\x01 \x03(\x0e\x32\x1c.vega.events.v1.BusEventTypeR\x04type\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x1d\n\nbatch_size\x18\x04 \x01(\x03R\tbatchSize"K\n\x17ObserveEventBusResponse\x12\x30\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x18.vega.events.v1.BusEventR\x06\x65vents"\x1f\n\x1dObserveLedgerMovementsRequest"_\n\x1eObserveLedgerMovementsResponse\x12=\n\x0fledger_movement\x18\x01 \x01(\x0b\x32\x14.vega.LedgerMovementR\x0eledgerMovement"\x94\x01\n\x17ListKeyRotationsRequest\x12\x1c\n\x07node_id\x18\x01 \x01(\tH\x00R\x06nodeId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\n\n\x08_node_idB\r\n\x0b_pagination"`\n\x18ListKeyRotationsResponse\x12\x44\n\trotations\x18\x01 \x01(\x0b\x32&.datanode.api.v2.KeyRotationConnectionR\trotations"Z\n\x0fKeyRotationEdge\x12/\n\x04node\x18\x01 \x01(\x0b\x32\x1b.vega.events.v1.KeyRotationR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x87\x01\n\x15KeyRotationConnection\x12\x36\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32 .datanode.api.v2.KeyRotationEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x9c\x01\n\x1fListEthereumKeyRotationsRequest\x12\x1c\n\x07node_id\x18\x01 \x01(\tH\x00R\x06nodeId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\n\n\x08_node_idB\r\n\x0b_pagination"x\n ListEthereumKeyRotationsResponse\x12T\n\rkey_rotations\x18\x01 \x01(\x0b\x32/.datanode.api.v2.EthereumKeyRotationsConnectionR\x0ckeyRotations"\x98\x01\n\x1e\x45thereumKeyRotationsConnection\x12>\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32(.datanode.api.v2.EthereumKeyRotationEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"j\n\x17\x45thereumKeyRotationEdge\x12\x37\n\x04node\x18\x01 \x01(\x0b\x32#.vega.events.v1.EthereumKeyRotationR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x14\n\x12GetVegaTimeRequest"3\n\x13GetVegaTimeResponse\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp"\x89\x01\n\tDateRange\x12,\n\x0fstart_timestamp\x18\x01 \x01(\x03H\x00R\x0estartTimestamp\x88\x01\x01\x12(\n\rend_timestamp\x18\x02 \x01(\x03H\x01R\x0c\x65ndTimestamp\x88\x01\x01\x42\x12\n\x10_start_timestampB\x10\n\x0e_end_timestamp"!\n\x1fGetProtocolUpgradeStatusRequest"8\n GetProtocolUpgradeStatusResponse\x12\x14\n\x05ready\x18\x01 \x01(\x08R\x05ready"\x83\x02\n#ListProtocolUpgradeProposalsRequest\x12J\n\x06status\x18\x01 \x01(\x0e\x32-.vega.events.v1.ProtocolUpgradeProposalStatusH\x00R\x06status\x88\x01\x01\x12$\n\x0b\x61pproved_by\x18\x02 \x01(\tH\x01R\napprovedBy\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\t\n\x07_statusB\x0e\n\x0c_approved_byB\r\n\x0b_pagination"\x98\x01\n$ListProtocolUpgradeProposalsResponse\x12p\n\x1aprotocol_upgrade_proposals\x18\x01 \x01(\x0b\x32\x32.datanode.api.v2.ProtocolUpgradeProposalConnectionR\x18protocolUpgradeProposals"\x9f\x01\n!ProtocolUpgradeProposalConnection\x12\x42\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32,.datanode.api.v2.ProtocolUpgradeProposalEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"o\n\x1bProtocolUpgradeProposalEdge\x12\x38\n\x04node\x18\x01 \x01(\x0b\x32$.vega.events.v1.ProtocolUpgradeEventR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"k\n\x18ListCoreSnapshotsRequest\x12@\n\npagination\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"k\n\x19ListCoreSnapshotsResponse\x12N\n\x0e\x63ore_snapshots\x18\x01 \x01(\x0b\x32\'.datanode.api.v2.CoreSnapshotConnectionR\rcoreSnapshots"\x89\x01\n\x16\x43oreSnapshotConnection\x12\x37\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32!.datanode.api.v2.CoreSnapshotEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"`\n\x10\x43oreSnapshotEdge\x12\x34\n\x04node\x18\x01 \x01(\x0b\x32 .vega.events.v1.CoreSnapshotDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\xd6\x01\n\x0eHistorySegment\x12\x1f\n\x0b\x66rom_height\x18\x01 \x01(\x03R\nfromHeight\x12\x1b\n\tto_height\x18\x02 \x01(\x03R\x08toHeight\x12\x19\n\x08\x63hain_id\x18\x03 \x01(\tR\x07\x63hainId\x12,\n\x12history_segment_id\x18\x04 \x01(\tR\x10historySegmentId\x12=\n\x1bprevious_history_segment_id\x18\x05 \x01(\tR\x18previousHistorySegmentId"+\n)GetMostRecentNetworkHistorySegmentRequest"\x84\x01\n*GetMostRecentNetworkHistorySegmentResponse\x12\x39\n\x07segment\x18\x01 \x01(\x0b\x32\x1f.datanode.api.v2.HistorySegmentR\x07segment\x12\x1b\n\tswarm_key\x18\x02 \x01(\tR\x08swarmKey"&\n$ListAllNetworkHistorySegmentsRequest"d\n%ListAllNetworkHistorySegmentsResponse\x12;\n\x08segments\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.HistorySegmentR\x08segments"-\n+GetActiveNetworkHistoryPeerAddressesRequest"Q\n,GetActiveNetworkHistoryPeerAddressesResponse\x12!\n\x0cip_addresses\x18\x01 \x03(\tR\x0bipAddresses"\r\n\x0bPingRequest"\x0e\n\x0cPingResponse*\xaa\x01\n\x10LedgerEntryField\x12"\n\x1eLEDGER_ENTRY_FIELD_UNSPECIFIED\x10\x00\x12&\n"LEDGER_ENTRY_FIELD_ACCOUNT_FROM_ID\x10\x01\x12$\n LEDGER_ENTRY_FIELD_ACCOUNT_TO_ID\x10\x02\x12$\n LEDGER_ENTRY_FIELD_TRANSFER_TYPE\x10\x03*\xb0\x01\n\x0c\x41\x63\x63ountField\x12\x1d\n\x19\x41\x43\x43OUNT_FIELD_UNSPECIFIED\x10\x00\x12\x14\n\x10\x41\x43\x43OUNT_FIELD_ID\x10\x01\x12\x1a\n\x16\x41\x43\x43OUNT_FIELD_PARTY_ID\x10\x02\x12\x1a\n\x16\x41\x43\x43OUNT_FIELD_ASSET_ID\x10\x03\x12\x1b\n\x17\x41\x43\x43OUNT_FIELD_MARKET_ID\x10\x04\x12\x16\n\x12\x41\x43\x43OUNT_FIELD_TYPE\x10\x05*\xad\x01\n\x11TransferDirection\x12"\n\x1eTRANSFER_DIRECTION_UNSPECIFIED\x10\x00\x12$\n TRANSFER_DIRECTION_TRANSFER_FROM\x10\x01\x12"\n\x1eTRANSFER_DIRECTION_TRANSFER_TO\x10\x02\x12*\n&TRANSFER_DIRECTION_TRANSFER_TO_OR_FROM\x10\x03\x32\xd6\x46\n\x12TradingDataService\x12[\n\x0cListAccounts\x12$.datanode.api.v2.ListAccountsRequest\x1a%.datanode.api.v2.ListAccountsResponse\x12\x66\n\x0fObserveAccounts\x12\'.datanode.api.v2.ObserveAccountsRequest\x1a(.datanode.api.v2.ObserveAccountsResponse0\x01\x12\x43\n\x04Info\x12\x1c.datanode.api.v2.InfoRequest\x1a\x1d.datanode.api.v2.InfoResponse\x12O\n\x08GetOrder\x12 .datanode.api.v2.GetOrderRequest\x1a!.datanode.api.v2.GetOrderResponse\x12U\n\nListOrders\x12".datanode.api.v2.ListOrdersRequest\x1a#.datanode.api.v2.ListOrdersResponse\x12j\n\x11ListOrderVersions\x12).datanode.api.v2.ListOrderVersionsRequest\x1a*.datanode.api.v2.ListOrderVersionsResponse\x12`\n\rObserveOrders\x12%.datanode.api.v2.ObserveOrdersRequest\x1a&.datanode.api.v2.ObserveOrdersResponse0\x01\x12^\n\rListPositions\x12%.datanode.api.v2.ListPositionsRequest\x1a&.datanode.api.v2.ListPositionsResponse\x12i\n\x10ObservePositions\x12(.datanode.api.v2.ObservePositionsRequest\x1a).datanode.api.v2.ObservePositionsResponse0\x01\x12l\n\x11ListLedgerEntries\x12).datanode.api.v2.ListLedgerEntriesRequest\x1a*.datanode.api.v2.ListLedgerEntriesResponse"\x00\x12r\n\x13\x45xportLedgerEntries\x12+.datanode.api.v2.ExportLedgerEntriesRequest\x1a,.datanode.api.v2.ExportLedgerEntriesResponse"\x00\x12o\n\x12ListBalanceChanges\x12*.datanode.api.v2.ListBalanceChangesRequest\x1a+.datanode.api.v2.ListBalanceChangesResponse"\x00\x12p\n\x13GetLatestMarketData\x12+.datanode.api.v2.GetLatestMarketDataRequest\x1a,.datanode.api.v2.GetLatestMarketDataResponse\x12s\n\x14ListLatestMarketData\x12,.datanode.api.v2.ListLatestMarketDataRequest\x1a-.datanode.api.v2.ListLatestMarketDataResponse\x12s\n\x14GetLatestMarketDepth\x12,.datanode.api.v2.GetLatestMarketDepthRequest\x1a-.datanode.api.v2.GetLatestMarketDepthResponse\x12r\n\x13ObserveMarketsDepth\x12+.datanode.api.v2.ObserveMarketsDepthRequest\x1a,.datanode.api.v2.ObserveMarketsDepthResponse0\x01\x12\x87\x01\n\x1aObserveMarketsDepthUpdates\x12\x32.datanode.api.v2.ObserveMarketsDepthUpdatesRequest\x1a\x33.datanode.api.v2.ObserveMarketsDepthUpdatesResponse0\x01\x12o\n\x12ObserveMarketsData\x12*.datanode.api.v2.ObserveMarketsDataRequest\x1a+.datanode.api.v2.ObserveMarketsDataResponse0\x01\x12\x7f\n\x18GetMarketDataHistoryByID\x12\x30.datanode.api.v2.GetMarketDataHistoryByIDRequest\x1a\x31.datanode.api.v2.GetMarketDataHistoryByIDResponse\x12^\n\rListTransfers\x12%.datanode.api.v2.ListTransfersRequest\x1a&.datanode.api.v2.ListTransfersResponse\x12g\n\x10GetNetworkLimits\x12(.datanode.api.v2.GetNetworkLimitsRequest\x1a).datanode.api.v2.GetNetworkLimitsResponse\x12\x61\n\x0eListCandleData\x12&.datanode.api.v2.ListCandleDataRequest\x1a\'.datanode.api.v2.ListCandleDataResponse\x12l\n\x11ObserveCandleData\x12).datanode.api.v2.ObserveCandleDataRequest\x1a*.datanode.api.v2.ObserveCandleDataResponse0\x01\x12p\n\x13ListCandleIntervals\x12+.datanode.api.v2.ListCandleIntervalsRequest\x1a,.datanode.api.v2.ListCandleIntervalsResponse\x12R\n\tListVotes\x12!.datanode.api.v2.ListVotesRequest\x1a".datanode.api.v2.ListVotesResponse\x12]\n\x0cObserveVotes\x12$.datanode.api.v2.ObserveVotesRequest\x1a%.datanode.api.v2.ObserveVotesResponse0\x01\x12\xa0\x01\n#ListERC20MultiSigSignerAddedBundles\x12;.datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest\x1a<.datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse\x12\xa6\x01\n%ListERC20MultiSigSignerRemovedBundles\x12=.datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest\x1a>.datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse\x12|\n\x17GetERC20ListAssetBundle\x12/.datanode.api.v2.GetERC20ListAssetBundleRequest\x1a\x30.datanode.api.v2.GetERC20ListAssetBundleResponse\x12\x8b\x01\n\x1cGetERC20SetAssetLimitsBundle\x12\x34.datanode.api.v2.GetERC20SetAssetLimitsBundleRequest\x1a\x35.datanode.api.v2.GetERC20SetAssetLimitsBundleResponse\x12\x85\x01\n\x1aGetERC20WithdrawalApproval\x12\x32.datanode.api.v2.GetERC20WithdrawalApprovalRequest\x1a\x33.datanode.api.v2.GetERC20WithdrawalApprovalResponse\x12[\n\x0cGetLastTrade\x12$.datanode.api.v2.GetLastTradeRequest\x1a%.datanode.api.v2.GetLastTradeResponse\x12U\n\nListTrades\x12".datanode.api.v2.ListTradesRequest\x1a#.datanode.api.v2.ListTradesResponse\x12`\n\rObserveTrades\x12%.datanode.api.v2.ObserveTradesRequest\x1a&.datanode.api.v2.ObserveTradesResponse0\x01\x12^\n\rGetOracleSpec\x12%.datanode.api.v2.GetOracleSpecRequest\x1a&.datanode.api.v2.GetOracleSpecResponse\x12\x64\n\x0fListOracleSpecs\x12\'.datanode.api.v2.ListOracleSpecsRequest\x1a(.datanode.api.v2.ListOracleSpecsResponse\x12\x61\n\x0eListOracleData\x12&.datanode.api.v2.ListOracleDataRequest\x1a\'.datanode.api.v2.ListOracleDataResponse\x12R\n\tGetMarket\x12!.datanode.api.v2.GetMarketRequest\x1a".datanode.api.v2.GetMarketResponse\x12X\n\x0bListMarkets\x12#.datanode.api.v2.ListMarketsRequest\x1a$.datanode.api.v2.ListMarketsResponse\x12O\n\x08GetParty\x12 .datanode.api.v2.GetPartyRequest\x1a!.datanode.api.v2.GetPartyResponse\x12X\n\x0bListParties\x12#.datanode.api.v2.ListPartiesRequest\x1a$.datanode.api.v2.ListPartiesResponse\x12g\n\x10ListMarginLevels\x12(.datanode.api.v2.ListMarginLevelsRequest\x1a).datanode.api.v2.ListMarginLevelsResponse\x12r\n\x13ObserveMarginLevels\x12+.datanode.api.v2.ObserveMarginLevelsRequest\x1a,.datanode.api.v2.ObserveMarginLevelsResponse0\x01\x12X\n\x0bListRewards\x12#.datanode.api.v2.ListRewardsRequest\x1a$.datanode.api.v2.ListRewardsResponse\x12p\n\x13ListRewardSummaries\x12+.datanode.api.v2.ListRewardSummariesRequest\x1a,.datanode.api.v2.ListRewardSummariesResponse\x12\x7f\n\x18ListEpochRewardSummaries\x12\x30.datanode.api.v2.ListEpochRewardSummariesRequest\x1a\x31.datanode.api.v2.ListEpochRewardSummariesResponse\x12\x63\n\x0eObserveRewards\x12&.datanode.api.v2.ObserveRewardsRequest\x1a\'.datanode.api.v2.ObserveRewardsResponse0\x01\x12U\n\nGetDeposit\x12".datanode.api.v2.GetDepositRequest\x1a#.datanode.api.v2.GetDepositResponse\x12[\n\x0cListDeposits\x12$.datanode.api.v2.ListDepositsRequest\x1a%.datanode.api.v2.ListDepositsResponse\x12^\n\rGetWithdrawal\x12%.datanode.api.v2.GetWithdrawalRequest\x1a&.datanode.api.v2.GetWithdrawalResponse\x12\x64\n\x0fListWithdrawals\x12\'.datanode.api.v2.ListWithdrawalsRequest\x1a(.datanode.api.v2.ListWithdrawalsResponse\x12O\n\x08GetAsset\x12 .datanode.api.v2.GetAssetRequest\x1a!.datanode.api.v2.GetAssetResponse\x12U\n\nListAssets\x12".datanode.api.v2.ListAssetsRequest\x1a#.datanode.api.v2.ListAssetsResponse\x12|\n\x17ListLiquidityProvisions\x12/.datanode.api.v2.ListLiquidityProvisionsRequest\x1a\x30.datanode.api.v2.ListLiquidityProvisionsResponse\x12\x87\x01\n\x1aObserveLiquidityProvisions\x12\x32.datanode.api.v2.ObserveLiquidityProvisionsRequest\x1a\x33.datanode.api.v2.ObserveLiquidityProvisionsResponse0\x01\x12j\n\x11GetGovernanceData\x12).datanode.api.v2.GetGovernanceDataRequest\x1a*.datanode.api.v2.GetGovernanceDataResponse\x12m\n\x12ListGovernanceData\x12*.datanode.api.v2.ListGovernanceDataRequest\x1a+.datanode.api.v2.ListGovernanceDataResponse\x12l\n\x11ObserveGovernance\x12).datanode.api.v2.ObserveGovernanceRequest\x1a*.datanode.api.v2.ObserveGovernanceResponse0\x01\x12\x64\n\x0fListDelegations\x12\'.datanode.api.v2.ListDelegationsRequest\x1a(.datanode.api.v2.ListDelegationsResponse\x12o\n\x12ObserveDelegations\x12*.datanode.api.v2.ObserveDelegationsRequest\x1a+.datanode.api.v2.ObserveDelegationsResponse0\x01\x12\x61\n\x0eGetNetworkData\x12&.datanode.api.v2.GetNetworkDataRequest\x1a\'.datanode.api.v2.GetNetworkDataResponse\x12L\n\x07GetNode\x12\x1f.datanode.api.v2.GetNodeRequest\x1a .datanode.api.v2.GetNodeResponse\x12R\n\tListNodes\x12!.datanode.api.v2.ListNodesRequest\x1a".datanode.api.v2.ListNodesResponse\x12m\n\x12ListNodeSignatures\x12*.datanode.api.v2.ListNodeSignaturesRequest\x1a+.datanode.api.v2.ListNodeSignaturesResponse\x12O\n\x08GetEpoch\x12 .datanode.api.v2.GetEpochRequest\x1a!.datanode.api.v2.GetEpochResponse\x12X\n\x0b\x45stimateFee\x12#.datanode.api.v2.EstimateFeeRequest\x1a$.datanode.api.v2.EstimateFeeResponse\x12\x61\n\x0e\x45stimateMargin\x12&.datanode.api.v2.EstimateMarginRequest\x1a\'.datanode.api.v2.EstimateMarginResponse\x12v\n\x15ListNetworkParameters\x12-.datanode.api.v2.ListNetworkParametersRequest\x1a..datanode.api.v2.ListNetworkParametersResponse\x12p\n\x13GetNetworkParameter\x12+.datanode.api.v2.GetNetworkParameterRequest\x1a,.datanode.api.v2.GetNetworkParameterResponse\x12\x64\n\x0fListCheckpoints\x12\'.datanode.api.v2.ListCheckpointsRequest\x1a(.datanode.api.v2.ListCheckpointsResponse\x12O\n\x08GetStake\x12 .datanode.api.v2.GetStakeRequest\x1a!.datanode.api.v2.GetStakeResponse\x12\x61\n\x0eGetRiskFactors\x12&.datanode.api.v2.GetRiskFactorsRequest\x1a\'.datanode.api.v2.GetRiskFactorsResponse\x12h\n\x0fObserveEventBus\x12\'.datanode.api.v2.ObserveEventBusRequest\x1a(.datanode.api.v2.ObserveEventBusResponse(\x01\x30\x01\x12{\n\x16ObserveLedgerMovements\x12..datanode.api.v2.ObserveLedgerMovementsRequest\x1a/.datanode.api.v2.ObserveLedgerMovementsResponse0\x01\x12g\n\x10ListKeyRotations\x12(.datanode.api.v2.ListKeyRotationsRequest\x1a).datanode.api.v2.ListKeyRotationsResponse\x12\x7f\n\x18ListEthereumKeyRotations\x12\x30.datanode.api.v2.ListEthereumKeyRotationsRequest\x1a\x31.datanode.api.v2.ListEthereumKeyRotationsResponse\x12X\n\x0bGetVegaTime\x12#.datanode.api.v2.GetVegaTimeRequest\x1a$.datanode.api.v2.GetVegaTimeResponse\x12\x7f\n\x18GetProtocolUpgradeStatus\x12\x30.datanode.api.v2.GetProtocolUpgradeStatusRequest\x1a\x31.datanode.api.v2.GetProtocolUpgradeStatusResponse\x12\x8b\x01\n\x1cListProtocolUpgradeProposals\x12\x34.datanode.api.v2.ListProtocolUpgradeProposalsRequest\x1a\x35.datanode.api.v2.ListProtocolUpgradeProposalsResponse\x12j\n\x11ListCoreSnapshots\x12).datanode.api.v2.ListCoreSnapshotsRequest\x1a*.datanode.api.v2.ListCoreSnapshotsResponse\x12\x9d\x01\n"GetMostRecentNetworkHistorySegment\x12:.datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest\x1a;.datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse\x12\x8e\x01\n\x1dListAllNetworkHistorySegments\x12\x35.datanode.api.v2.ListAllNetworkHistorySegmentsRequest\x1a\x36.datanode.api.v2.ListAllNetworkHistorySegmentsResponse\x12\xa3\x01\n$GetActiveNetworkHistoryPeerAddresses\x12<.datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest\x1a=.datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse\x12\x43\n\x04Ping\x12\x1c.datanode.api.v2.PingRequest\x1a\x1d.datanode.api.v2.PingResponseB}Z1code.vegaprotocol.io/vega/protos/data-node/api/v2\x92\x41G\x12\x1e\n\x13Vega data node APIs2\x07v0.67.0\x1a!lb.testnet.vega.xyz/datanode/rest*\x02\x01\x02\x62\x06proto3' + b'\n#data-node/api/v2/trading_data.proto\x12\x0f\x64\x61tanode.api.v2\x1a\x0fvega/vega.proto\x1a\x15vega/governance.proto\x1a\x12vega/markets.proto\x1a\x11vega/assets.proto\x1a\x11vega/oracle.proto\x1a\x1bvega/events/v1/events.proto\x1a)vega/commands/v1/validator_commands.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"\\\n\x10OffsetPagination\x12\x12\n\x04skip\x18\x01 \x01(\x04R\x04skip\x12\x14\n\x05limit\x18\x02 \x01(\x04R\x05limit\x12\x1e\n\ndescending\x18\x03 \x01(\x08R\ndescending"\xd9\x01\n\nPagination\x12\x19\n\x05\x66irst\x18\x01 \x01(\x05H\x00R\x05\x66irst\x88\x01\x01\x12\x19\n\x05\x61\x66ter\x18\x02 \x01(\tH\x01R\x05\x61\x66ter\x88\x01\x01\x12\x17\n\x04last\x18\x03 \x01(\x05H\x02R\x04last\x88\x01\x01\x12\x1b\n\x06\x62\x65\x66ore\x18\x04 \x01(\tH\x03R\x06\x62\x65\x66ore\x88\x01\x01\x12&\n\x0cnewest_first\x18\x05 \x01(\x08H\x04R\x0bnewestFirst\x88\x01\x01\x42\x08\n\x06_firstB\x08\n\x06_afterB\x07\n\x05_lastB\t\n\x07_beforeB\x0f\n\r_newest_first"\x9c\x01\n\x08PageInfo\x12"\n\rhas_next_page\x18\x01 \x01(\x08R\x0bhasNextPage\x12*\n\x11has_previous_page\x18\x02 \x01(\x08R\x0fhasPreviousPage\x12!\n\x0cstart_cursor\x18\x03 \x01(\tR\x0bstartCursor\x12\x1d\n\nend_cursor\x18\x04 \x01(\tR\tendCursor"\x9a\x01\n\x0e\x41\x63\x63ountBalance\x12\x14\n\x05owner\x18\x02 \x01(\tR\x05owner\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId\x12%\n\x04type\x18\x06 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type"\x9e\x01\n\x13ListAccountsRequest\x12\x36\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x06\x66ilter\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"W\n\x14ListAccountsResponse\x12?\n\x08\x61\x63\x63ounts\x18\x01 \x01(\x0b\x32#.datanode.api.v2.AccountsConnectionR\x08\x61\x63\x63ounts"\x80\x01\n\x12\x41\x63\x63ountsConnection\x12\x32\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1c.datanode.api.v2.AccountEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"Z\n\x0b\x41\x63\x63ountEdge\x12\x33\n\x04node\x18\x01 \x01(\x0b\x32\x1f.datanode.api.v2.AccountBalanceR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8d\x01\n\x16ObserveAccountsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x14\n\x05\x61sset\x18\x03 \x01(\tR\x05\x61sset\x12%\n\x04type\x18\x04 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type"\xa6\x01\n\x17ObserveAccountsResponse\x12\x42\n\x08snapshot\x18\x01 \x01(\x0b\x32$.datanode.api.v2.AccountSnapshotPageH\x00R\x08snapshot\x12;\n\x07updates\x18\x02 \x01(\x0b\x32\x1f.datanode.api.v2.AccountUpdatesH\x00R\x07updatesB\n\n\x08response"o\n\x13\x41\x63\x63ountSnapshotPage\x12;\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.AccountBalanceR\x08\x61\x63\x63ounts\x12\x1b\n\tlast_page\x18\x02 \x01(\x08R\x08lastPage"M\n\x0e\x41\x63\x63ountUpdates\x12;\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.AccountBalanceR\x08\x61\x63\x63ounts"\r\n\x0bInfoRequest"I\n\x0cInfoResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\x12\x1f\n\x0b\x63ommit_hash\x18\x02 \x01(\tR\ncommitHash"W\n\x0fGetOrderRequest\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12\x1d\n\x07version\x18\x02 \x01(\x05H\x00R\x07version\x88\x01\x01\x42\n\n\x08_version"5\n\x10GetOrderResponse\x12!\n\x05order\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x05order"\xd1\x01\n\x0bOrderFilter\x12.\n\x08statuses\x18\x01 \x03(\x0e\x32\x12.vega.Order.StatusR\x08statuses\x12&\n\x05types\x18\x02 \x03(\x0e\x32\x10.vega.Order.TypeR\x05types\x12=\n\x0etime_in_forces\x18\x03 \x03(\x0e\x32\x17.vega.Order.TimeInForceR\x0ctimeInForces\x12+\n\x11\x65xclude_liquidity\x18\x04 \x01(\x08R\x10\x65xcludeLiquidity"\xb7\x03\n\x11ListOrdersRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12 \n\tmarket_id\x18\x02 \x01(\tH\x01R\x08marketId\x88\x01\x01\x12!\n\treference\x18\x03 \x01(\tH\x02R\treference\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x12 \n\tlive_only\x18\x05 \x01(\x08H\x04R\x08liveOnly\x88\x01\x01\x12>\n\ndate_range\x18\x06 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x05R\tdateRange\x88\x01\x01\x12\x39\n\x06\x66ilter\x18\x07 \x01(\x0b\x32\x1c.datanode.api.v2.OrderFilterH\x06R\x06\x66ilter\x88\x01\x01\x42\x0b\n\t_party_idB\x0c\n\n_market_idB\x0c\n\n_referenceB\r\n\x0b_paginationB\x0c\n\n_live_onlyB\r\n\x0b_date_rangeB\t\n\x07_filter"N\n\x12ListOrdersResponse\x12\x38\n\x06orders\x18\x01 \x01(\x0b\x32 .datanode.api.v2.OrderConnectionR\x06orders"\x86\x01\n\x18ListOrderVersionsRequest\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"U\n\x19ListOrderVersionsResponse\x12\x38\n\x06orders\x18\x01 \x01(\x0b\x32 .datanode.api.v2.OrderConnectionR\x06orders"\xbb\x01\n\x14ObserveOrdersRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x12\x30\n\x11\x65xclude_liquidity\x18\x03 \x01(\x08H\x02R\x10\x65xcludeLiquidity\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_idB\x14\n\x12_exclude_liquidity"\xa0\x01\n\x15ObserveOrdersResponse\x12@\n\x08snapshot\x18\x01 \x01(\x0b\x32".datanode.api.v2.OrderSnapshotPageH\x00R\x08snapshot\x12\x39\n\x07updates\x18\x02 \x01(\x0b\x32\x1d.datanode.api.v2.OrderUpdatesH\x00R\x07updatesB\n\n\x08response"U\n\x11OrderSnapshotPage\x12#\n\x06orders\x18\x01 \x03(\x0b\x32\x0b.vega.OrderR\x06orders\x12\x1b\n\tlast_page\x18\x02 \x01(\x08R\x08lastPage"3\n\x0cOrderUpdates\x12#\n\x06orders\x18\x01 \x03(\x0b\x32\x0b.vega.OrderR\x06orders"\xa3\x01\n\x14ListPositionsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01:\x02\x18\x01\x42\r\n\x0b_pagination"^\n\x15ListPositionsResponse\x12\x41\n\tpositions\x18\x01 \x01(\x0b\x32#.datanode.api.v2.PositionConnectionR\tpositions:\x02\x18\x01"M\n\x0fPositionsFilter\x12\x1b\n\tparty_ids\x18\x01 \x03(\tR\x08partyIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds"\xa4\x01\n\x17ListAllPositionsRequest\x12\x38\n\x06\x66ilter\x18\x01 \x01(\x0b\x32 .datanode.api.v2.PositionsFilterR\x06\x66ilter\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"]\n\x18ListAllPositionsResponse\x12\x41\n\tpositions\x18\x01 \x01(\x0b\x32#.datanode.api.v2.PositionConnectionR\tpositions"J\n\x0cPositionEdge\x12"\n\x04node\x18\x01 \x01(\x0b\x32\x0e.vega.PositionR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n\x12PositionConnection\x12\x33\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1d.datanode.api.v2.PositionEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"v\n\x17ObservePositionsRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12 \n\tmarket_id\x18\x02 \x01(\tH\x01R\x08marketId\x88\x01\x01\x42\x0b\n\t_party_idB\x0c\n\n_market_id"\xa9\x01\n\x18ObservePositionsResponse\x12\x43\n\x08snapshot\x18\x01 \x01(\x0b\x32%.datanode.api.v2.PositionSnapshotPageH\x00R\x08snapshot\x12<\n\x07updates\x18\x02 \x01(\x0b\x32 .datanode.api.v2.PositionUpdatesH\x00R\x07updatesB\n\n\x08response"a\n\x14PositionSnapshotPage\x12,\n\tpositions\x18\x01 \x03(\x0b\x32\x0e.vega.PositionR\tpositions\x12\x1b\n\tlast_page\x18\x02 \x01(\x08R\x08lastPage"?\n\x0fPositionUpdates\x12,\n\tpositions\x18\x01 \x03(\x0b\x32\x0e.vega.PositionR\tpositions"\xa3\x02\n\x11LedgerEntryFilter\x12\x37\n\x18\x63lose_on_account_filters\x18\x01 \x01(\x08R\x15\x63loseOnAccountFilters\x12N\n\x13\x66rom_account_filter\x18\x02 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x11\x66romAccountFilter\x12J\n\x11to_account_filter\x18\x03 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x0ftoAccountFilter\x12\x39\n\x0etransfer_types\x18\x05 \x03(\x0e\x32\x12.vega.TransferTypeR\rtransferTypes"\xd9\x05\n\x15\x41ggregatedLedgerEntry\x12\x1c\n\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x1a\n\x08quantity\x18\x03 \x01(\tR\x08quantity\x12\x37\n\rtransfer_type\x18\x04 \x01(\x0e\x32\x12.vega.TransferTypeR\x0ctransferType\x12\x1e\n\x08\x61sset_id\x18\x05 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12=\n\x11\x66rom_account_type\x18\x06 \x01(\x0e\x32\x11.vega.AccountTypeR\x0f\x66romAccountType\x12\x39\n\x0fto_account_type\x18\x07 \x01(\x0e\x32\x11.vega.AccountTypeR\rtoAccountType\x12\x36\n\x15\x66rom_account_party_id\x18\x08 \x01(\tH\x01R\x12\x66romAccountPartyId\x88\x01\x01\x12\x32\n\x13to_account_party_id\x18\t \x01(\tH\x02R\x10toAccountPartyId\x88\x01\x01\x12\x38\n\x16\x66rom_account_market_id\x18\n \x01(\tH\x03R\x13\x66romAccountMarketId\x88\x01\x01\x12\x34\n\x14to_account_market_id\x18\x0b \x01(\tH\x04R\x11toAccountMarketId\x88\x01\x01\x12\x30\n\x14\x66rom_account_balance\x18\x0c \x01(\tR\x12\x66romAccountBalance\x12,\n\x12to_account_balance\x18\r \x01(\tR\x10toAccountBalanceB\x0b\n\t_asset_idB\x18\n\x16_from_account_party_idB\x16\n\x14_to_account_party_idB\x19\n\x17_from_account_market_idB\x17\n\x15_to_account_market_idJ\x04\x08\x01\x10\x02"\xf6\x01\n\x18ListLedgerEntriesRequest\x12:\n\x06\x66ilter\x18\x01 \x01(\x0b\x32".datanode.api.v2.LedgerEntryFilterR\x06\x66ilter\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x03 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"\xf2\x01\n\x1a\x45xportLedgerEntriesRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x19\n\x08\x61sset_id\x18\x02 \x01(\tR\x07\x61ssetId\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x04 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"v\n\x19ListLedgerEntriesResponse\x12Y\n\x0eledger_entries\x18\x01 \x01(\x0b\x32\x32.datanode.api.v2.AggregatedLedgerEntriesConnectionR\rledgerEntries"i\n\x1b\x45xportLedgerEntriesResponse\x12\x12\n\x04\x64\x61ta\x18\x01 \x01(\x0cR\x04\x64\x61ta\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"q\n\x1b\x41ggregatedLedgerEntriesEdge\x12:\n\x04node\x18\x01 \x01(\x0b\x32&.datanode.api.v2.AggregatedLedgerEntryR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x9f\x01\n!AggregatedLedgerEntriesConnection\x12\x42\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32,.datanode.api.v2.AggregatedLedgerEntriesEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xf3\x01\n\x19ListBalanceChangesRequest\x12\x36\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x06\x66ilter\x12@\n\npagination\x18\x05 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x06 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"f\n\x1aListBalanceChangesResponse\x12H\n\x08\x62\x61lances\x18\x01 \x01(\x0b\x32,.datanode.api.v2.AggregatedBalanceConnectionR\x08\x62\x61lances"\xac\x02\n\x18GetBalanceHistoryRequest\x12\x36\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1e.datanode.api.v2.AccountFilterR\x06\x66ilter\x12\x38\n\x08group_by\x18\x02 \x03(\x0e\x32\x1d.datanode.api.v2.AccountFieldR\x07groupBy\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x04 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"e\n\x19GetBalanceHistoryResponse\x12H\n\x08\x62\x61lances\x18\x01 \x01(\x0b\x32,.datanode.api.v2.AggregatedBalanceConnectionR\x08\x62\x61lances"g\n\x15\x41ggregatedBalanceEdge\x12\x36\n\x04node\x18\x01 \x01(\x0b\x32".datanode.api.v2.AggregatedBalanceR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x93\x01\n\x1b\x41ggregatedBalanceConnection\x12<\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32&.datanode.api.v2.AggregatedBalanceEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x9e\x01\n\rAccountFilter\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x1b\n\tparty_ids\x18\x02 \x03(\tR\x08partyIds\x12\x1d\n\nmarket_ids\x18\x03 \x03(\tR\tmarketIds\x12\x36\n\raccount_types\x18\x04 \x03(\x0e\x32\x11.vega.AccountTypeR\x0c\x61\x63\x63ountTypes"\xa1\x02\n\x11\x41ggregatedBalance\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance\x12\x1e\n\x08party_id\x18\x04 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1e\n\x08\x61sset_id\x18\x05 \x01(\tH\x01R\x07\x61ssetId\x88\x01\x01\x12 \n\tmarket_id\x18\x06 \x01(\tH\x02R\x08marketId\x88\x01\x01\x12\x39\n\x0c\x61\x63\x63ount_type\x18\x07 \x01(\x0e\x32\x11.vega.AccountTypeH\x03R\x0b\x61\x63\x63ountType\x88\x01\x01\x42\x0b\n\t_party_idB\x0b\n\t_asset_idB\x0c\n\n_market_idB\x0f\n\r_account_type";\n\x1aObserveMarketsDepthRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds"S\n\x1bObserveMarketsDepthResponse\x12\x34\n\x0cmarket_depth\x18\x01 \x03(\x0b\x32\x11.vega.MarketDepthR\x0bmarketDepth"B\n!ObserveMarketsDepthUpdatesRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds"U\n"ObserveMarketsDepthUpdatesResponse\x12/\n\x06update\x18\x01 \x03(\x0b\x32\x17.vega.MarketDepthUpdateR\x06update":\n\x19ObserveMarketsDataRequest\x12\x1d\n\nmarket_ids\x18\x01 \x03(\tR\tmarketIds"O\n\x1aObserveMarketsDataResponse\x12\x31\n\x0bmarket_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\nmarketData"j\n\x1bGetLatestMarketDepthRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12 \n\tmax_depth\x18\x02 \x01(\x04H\x00R\x08maxDepth\x88\x01\x01\x42\x0c\n\n_max_depth"\xda\x01\n\x1cGetLatestMarketDepthResponse\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12"\n\x03\x62uy\x18\x02 \x03(\x0b\x32\x10.vega.PriceLevelR\x03\x62uy\x12$\n\x04sell\x18\x03 \x03(\x0b\x32\x10.vega.PriceLevelR\x04sell\x12*\n\nlast_trade\x18\x04 \x01(\x0b\x32\x0b.vega.TradeR\tlastTrade\x12\'\n\x0fsequence_number\x18\x05 \x01(\x04R\x0esequenceNumber"\x1d\n\x1bListLatestMarketDataRequest"S\n\x1cListLatestMarketDataResponse\x12\x33\n\x0cmarkets_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\x0bmarketsData"9\n\x1aGetLatestMarketDataRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"P\n\x1bGetLatestMarketDataResponse\x12\x31\n\x0bmarket_data\x18\x01 \x01(\x0b\x32\x10.vega.MarketDataR\nmarketData"\xfc\x02\n\x1fGetMarketDataHistoryByIDRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12,\n\x0fstart_timestamp\x18\x02 \x01(\x03H\x00R\x0estartTimestamp\x88\x01\x01\x12(\n\rend_timestamp\x18\x03 \x01(\x03H\x01R\x0c\x65ndTimestamp\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x12W\n\x11offset_pagination\x18\x05 \x01(\x0b\x32!.datanode.api.v2.OffsetPaginationB\x02\x18\x01H\x03R\x10offsetPagination\x88\x01\x01\x42\x12\n\x10_start_timestampB\x10\n\x0e_end_timestampB\r\n\x0b_paginationB\x14\n\x12_offset_pagination"j\n GetMarketDataHistoryByIDResponse\x12\x46\n\x0bmarket_data\x18\x01 \x01(\x0b\x32%.datanode.api.v2.MarketDataConnectionR\nmarketData"N\n\x0eMarketDataEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.MarketDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x85\x01\n\x14MarketDataConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.MarketDataEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo":\n\x1bMarketsDataSubscribeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"Q\n\x1cMarketsDataSubscribeResponse\x12\x31\n\x0bmarket_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\nmarketData"\xd1\x01\n\x14ListTransfersRequest\x12\x1b\n\x06pubkey\x18\x01 \x01(\tH\x00R\x06pubkey\x88\x01\x01\x12@\n\tdirection\x18\x02 \x01(\x0e\x32".datanode.api.v2.TransferDirectionR\tdirection\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\t\n\x07_pubkeyB\r\n\x0b_pagination"Z\n\x15ListTransfersResponse\x12\x41\n\ttransfers\x18\x01 \x01(\x0b\x32#.datanode.api.v2.TransferConnectionR\ttransfers"T\n\x0cTransferEdge\x12,\n\x04node\x18\x01 \x01(\x0b\x32\x18.vega.events.v1.TransferR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n\x12TransferConnection\x12\x33\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1d.datanode.api.v2.TransferEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x19\n\x17GetNetworkLimitsRequest"G\n\x18GetNetworkLimitsResponse\x12+\n\x06limits\x18\x01 \x01(\x0b\x32\x13.vega.NetworkLimitsR\x06limits"9\n\x1aListCandleIntervalsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"M\n\x12IntervalToCandleId\x12\x1a\n\x08interval\x18\x01 \x01(\tR\x08interval\x12\x1b\n\tcandle_id\x18\x02 \x01(\tR\x08\x63\x61ndleId"u\n\x1bListCandleIntervalsResponse\x12V\n\x15interval_to_candle_id\x18\x01 \x03(\x0b\x32#.datanode.api.v2.IntervalToCandleIdR\x12intervalToCandleId"\xa7\x01\n\x06\x43\x61ndle\x12\x14\n\x05start\x18\x01 \x01(\x03R\x05start\x12\x1f\n\x0blast_update\x18\x02 \x01(\x03R\nlastUpdate\x12\x12\n\x04high\x18\x03 \x01(\tR\x04high\x12\x10\n\x03low\x18\x04 \x01(\tR\x03low\x12\x12\n\x04open\x18\x05 \x01(\tR\x04open\x12\x14\n\x05\x63lose\x18\x06 \x01(\tR\x05\x63lose\x12\x16\n\x06volume\x18\x07 \x01(\x04R\x06volume"7\n\x18ObserveCandleDataRequest\x12\x1b\n\tcandle_id\x18\x01 \x01(\tR\x08\x63\x61ndleId"L\n\x19ObserveCandleDataResponse\x12/\n\x06\x63\x61ndle\x18\x01 \x01(\x0b\x32\x17.datanode.api.v2.CandleR\x06\x63\x61ndle"\xfb\x01\n\x15ListCandleDataRequest\x12\x1b\n\tcandle_id\x18\x01 \x01(\tR\x08\x63\x61ndleId\x12%\n\x0e\x66rom_timestamp\x18\x02 \x01(\x03R\rfromTimestamp\x12!\n\x0cto_timestamp\x18\x03 \x01(\x03R\x0btoTimestamp\x12*\n\x08interval\x18\x04 \x01(\x0e\x32\x0e.vega.IntervalR\x08interval\x12@\n\npagination\x18\x05 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"Y\n\x16ListCandleDataResponse\x12?\n\x07\x63\x61ndles\x18\x01 \x01(\x0b\x32%.datanode.api.v2.CandleDataConnectionR\x07\x63\x61ndles"Q\n\nCandleEdge\x12+\n\x04node\x18\x01 \x01(\x0b\x32\x17.datanode.api.v2.CandleR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n\x14\x43\x61ndleDataConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.CandleEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xc6\x01\n\x10ListVotesRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12$\n\x0bproposal_id\x18\x02 \x01(\tH\x01R\nproposalId\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\x0b\n\t_party_idB\x0e\n\x0c_proposal_idB\r\n\x0b_pagination"J\n\x11ListVotesResponse\x12\x35\n\x05votes\x18\x01 \x01(\x0b\x32\x1f.datanode.api.v2.VoteConnectionR\x05votes"B\n\x08VoteEdge\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\n.vega.VoteR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"y\n\x0eVoteConnection\x12/\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x19.datanode.api.v2.VoteEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"x\n\x13ObserveVotesRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12$\n\x0bproposal_id\x18\x02 \x01(\tH\x01R\nproposalId\x88\x01\x01\x42\x0b\n\t_party_idB\x0e\n\x0c_proposal_id"6\n\x14ObserveVotesResponse\x12\x1e\n\x04vote\x18\x01 \x01(\x0b\x32\n.vega.VoteR\x04vote"\xbd\x01\n*ListERC20MultiSigSignerAddedBundlesRequest\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq\x12;\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"|\n+ListERC20MultiSigSignerAddedBundlesResponse\x12M\n\x07\x62undles\x18\x01 \x01(\x0b\x32\x33.datanode.api.v2.ERC20MultiSigSignerAddedConnectionR\x07\x62undles"t\n\x1c\x45RC20MultiSigSignerAddedEdge\x12<\n\x04node\x18\x01 \x01(\x0b\x32(.vega.events.v1.ERC20MultiSigSignerAddedR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x81\x01\n"ERC20MultiSigSignerAddedBundleEdge\x12\x43\n\x04node\x18\x01 \x01(\x0b\x32/.datanode.api.v2.ERC20MultiSigSignerAddedBundleR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\xa7\x01\n"ERC20MultiSigSignerAddedConnection\x12I\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x33.datanode.api.v2.ERC20MultiSigSignerAddedBundleEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xce\x01\n\x1e\x45RC20MultiSigSignerAddedBundle\x12\x1d\n\nnew_signer\x18\x01 \x01(\tR\tnewSigner\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x1e\n\nsignatures\x18\x06 \x01(\tR\nsignatures\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq"\xbf\x01\n,ListERC20MultiSigSignerRemovedBundlesRequest\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq\x12;\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"\x80\x01\n-ListERC20MultiSigSignerRemovedBundlesResponse\x12O\n\x07\x62undles\x18\x01 \x01(\x0b\x32\x35.datanode.api.v2.ERC20MultiSigSignerRemovedConnectionR\x07\x62undles"x\n\x1e\x45RC20MultiSigSignerRemovedEdge\x12>\n\x04node\x18\x01 \x01(\x0b\x32*.vega.events.v1.ERC20MultiSigSignerRemovedR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x85\x01\n$ERC20MultiSigSignerRemovedBundleEdge\x12\x45\n\x04node\x18\x01 \x01(\x0b\x32\x31.datanode.api.v2.ERC20MultiSigSignerRemovedBundleR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\xab\x01\n$ERC20MultiSigSignerRemovedConnection\x12K\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x35.datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xd0\x01\n ERC20MultiSigSignerRemovedBundle\x12\x1d\n\nold_signer\x18\x01 \x01(\tR\toldSigner\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x1e\n\nsignatures\x18\x06 \x01(\tR\nsignatures\x12\x1b\n\tepoch_seq\x18\x07 \x01(\tR\x08\x65pochSeq";\n\x1eGetERC20ListAssetBundleRequest\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId"\x9e\x01\n\x1fGetERC20ListAssetBundleResponse\x12!\n\x0c\x61sset_source\x18\x01 \x01(\tR\x0b\x61ssetSource\x12"\n\rvega_asset_id\x18\x02 \x01(\tR\x0bvegaAssetId\x12\x14\n\x05nonce\x18\x03 \x01(\tR\x05nonce\x12\x1e\n\nsignatures\x18\x04 \x01(\tR\nsignatures"F\n#GetERC20SetAssetLimitsBundleRequest\x12\x1f\n\x0bproposal_id\x18\x01 \x01(\tR\nproposalId"\xe8\x01\n$GetERC20SetAssetLimitsBundleResponse\x12!\n\x0c\x61sset_source\x18\x01 \x01(\tR\x0b\x61ssetSource\x12"\n\rvega_asset_id\x18\x02 \x01(\tR\x0bvegaAssetId\x12\x14\n\x05nonce\x18\x03 \x01(\tR\x05nonce\x12%\n\x0elifetime_limit\x18\x04 \x01(\tR\rlifetimeLimit\x12\x1c\n\tthreshold\x18\x05 \x01(\tR\tthreshold\x12\x1e\n\nsignatures\x18\x06 \x01(\tR\nsignatures"H\n!GetERC20WithdrawalApprovalRequest\x12#\n\rwithdrawal_id\x18\x01 \x01(\tR\x0cwithdrawalId"\xde\x01\n"GetERC20WithdrawalApprovalResponse\x12!\n\x0c\x61sset_source\x18\x01 \x01(\tR\x0b\x61ssetSource\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1e\n\nsignatures\x18\x05 \x01(\tR\nsignatures\x12%\n\x0etarget_address\x18\x06 \x01(\tR\rtargetAddress\x12\x1a\n\x08\x63reation\x18\x07 \x01(\x03R\x08\x63reationJ\x04\x08\x03\x10\x04"2\n\x13GetLastTradeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"9\n\x14GetLastTradeResponse\x12!\n\x05trade\x18\x01 \x01(\x0b\x32\x0b.vega.TradeR\x05trade"\xbd\x02\n\x11ListTradesRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08order_id\x18\x02 \x01(\tH\x01R\x07orderId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x03 \x01(\tH\x02R\x07partyId\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x05 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x04R\tdateRange\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_order_idB\x0b\n\t_party_idB\r\n\x0b_paginationB\r\n\x0b_date_range"N\n\x12ListTradesResponse\x12\x38\n\x06trades\x18\x01 \x01(\x0b\x32 .datanode.api.v2.TradeConnectionR\x06trades"{\n\x0fTradeConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.TradeEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"D\n\tTradeEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.TradeR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"s\n\x14ObserveTradesRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_id"<\n\x15ObserveTradesResponse\x12#\n\x06trades\x18\x01 \x03(\x0b\x32\x0b.vega.TradeR\x06trades"<\n\x14GetOracleSpecRequest\x12$\n\x0eoracle_spec_id\x18\x01 \x01(\tR\x0coracleSpecId"J\n\x15GetOracleSpecResponse\x12\x31\n\x0boracle_spec\x18\x01 \x01(\x0b\x32\x10.vega.OracleSpecR\noracleSpec"i\n\x16ListOracleSpecsRequest\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"d\n\x17ListOracleSpecsResponse\x12I\n\x0coracle_specs\x18\x01 \x01(\x0b\x32&.datanode.api.v2.OracleSpecsConnectionR\x0boracleSpecs"\xa6\x01\n\x15ListOracleDataRequest\x12)\n\x0eoracle_spec_id\x18\x01 \x01(\tH\x00R\x0coracleSpecId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x11\n\x0f_oracle_spec_idB\r\n\x0b_pagination"`\n\x16ListOracleDataResponse\x12\x46\n\x0boracle_data\x18\x01 \x01(\x0b\x32%.datanode.api.v2.OracleDataConnectionR\noracleData"N\n\x0eOracleSpecEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.OracleSpecR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15OracleSpecsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.OracleSpecEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"N\n\x0eOracleDataEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.OracleDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x85\x01\n\x14OracleDataConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.OracleDataEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"/\n\x10GetMarketRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"9\n\x11GetMarketResponse\x12$\n\x06market\x18\x01 \x01(\x0b\x32\x0c.vega.MarketR\x06market"\xa7\x01\n\x12ListMarketsRequest\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12,\n\x0finclude_settled\x18\x03 \x01(\x08H\x01R\x0eincludeSettled\x88\x01\x01\x42\r\n\x0b_paginationB\x12\n\x10_include_settled"R\n\x13ListMarketsResponse\x12;\n\x07markets\x18\x01 \x01(\x0b\x32!.datanode.api.v2.MarketConnectionR\x07markets"F\n\nMarketEdge\x12 \n\x04node\x18\x01 \x01(\x0b\x32\x0c.vega.MarketR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"}\n\x10MarketConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.MarketEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo",\n\x0fGetPartyRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId"5\n\x10GetPartyResponse\x12!\n\x05party\x18\x01 \x01(\x0b\x32\x0b.vega.PartyR\x05party"l\n\x12ListPartiesRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12;\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"Q\n\x13ListPartiesResponse\x12:\n\x07parties\x18\x01 \x01(\x0b\x32 .datanode.api.v2.PartyConnectionR\x07parties"D\n\tPartyEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.PartyR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"{\n\x0fPartyConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.PartyEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"D\n\tOrderEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8e\x01\n\x17ListMarginLevelsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12;\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationR\npagination"b\n\x18ListMarginLevelsResponse\x12\x46\n\rmargin_levels\x18\x01 \x01(\x0b\x32!.datanode.api.v2.MarginConnectionR\x0cmarginLevels"g\n\x1aObserveMarginLevelsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12 \n\tmarket_id\x18\x02 \x01(\tH\x00R\x08marketId\x88\x01\x01\x42\x0c\n\n_market_id"V\n\x1bObserveMarginLevelsResponse\x12\x37\n\rmargin_levels\x18\x01 \x01(\x0b\x32\x12.vega.MarginLevelsR\x0cmarginLevels"{\n\x0fOrderConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.OrderEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"L\n\nMarginEdge\x12&\n\x04node\x18\x01 \x01(\x0b\x32\x12.vega.MarginLevelsR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"}\n\x10MarginConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.MarginEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x8d\x02\n\x12ListRewardsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1e\n\x08\x61sset_id\x18\x02 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x12"\n\nfrom_epoch\x18\x04 \x01(\x04H\x02R\tfromEpoch\x88\x01\x01\x12\x1e\n\x08to_epoch\x18\x05 \x01(\x04H\x03R\x07toEpoch\x88\x01\x01\x42\x0b\n\t_asset_idB\r\n\x0b_paginationB\r\n\x0b_from_epochB\x0b\n\t_to_epoch"S\n\x13ListRewardsResponse\x12<\n\x07rewards\x18\x01 \x01(\x0b\x32".datanode.api.v2.RewardsConnectionR\x07rewards"F\n\nRewardEdge\x12 \n\x04node\x18\x01 \x01(\x0b\x32\x0c.vega.RewardR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"~\n\x11RewardsConnection\x12\x31\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1b.datanode.api.v2.RewardEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xc7\x01\n\x1aListRewardSummariesRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1e\n\x08\x61sset_id\x18\x02 \x01(\tH\x01R\x07\x61ssetId\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\x0b\n\t_party_idB\x0b\n\t_asset_idB\r\n\x0b_pagination"P\n\x1bListRewardSummariesResponse\x12\x31\n\tsummaries\x18\x01 \x03(\x0b\x32\x13.vega.RewardSummaryR\tsummaries"\xb1\x01\n\x13RewardSummaryFilter\x12\x1b\n\tasset_ids\x18\x01 \x03(\tR\x08\x61ssetIds\x12\x1d\n\nmarket_ids\x18\x02 \x03(\tR\tmarketIds\x12"\n\nfrom_epoch\x18\x03 \x01(\x04H\x00R\tfromEpoch\x88\x01\x01\x12\x1e\n\x08to_epoch\x18\x04 \x01(\x04H\x01R\x07toEpoch\x88\x01\x01\x42\r\n\x0b_from_epochB\x0b\n\t_to_epoch"\xb0\x01\n\x1fListEpochRewardSummariesRequest\x12<\n\x06\x66ilter\x18\x01 \x01(\x0b\x32$.datanode.api.v2.RewardSummaryFilterR\x06\x66ilter\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"o\n ListEpochRewardSummariesResponse\x12K\n\tsummaries\x18\x01 \x01(\x0b\x32-.datanode.api.v2.EpochRewardSummaryConnectionR\tsummaries"\x95\x01\n\x1c\x45pochRewardSummaryConnection\x12=\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\'.datanode.api.v2.EpochRewardSummaryEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"^\n\x16\x45pochRewardSummaryEdge\x12,\n\x04node\x18\x01 \x01(\x0b\x32\x18.vega.EpochRewardSummaryR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"q\n\x15ObserveRewardsRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x42\x0b\n\t_asset_idB\x0b\n\t_party_id">\n\x16ObserveRewardsResponse\x12$\n\x06reward\x18\x01 \x01(\x0b\x32\x0c.vega.RewardR\x06reward"#\n\x11GetDepositRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"=\n\x12GetDepositResponse\x12\'\n\x07\x64\x65posit\x18\x01 \x01(\x0b\x32\r.vega.DepositR\x07\x64\x65posit"\xd0\x01\n\x13ListDepositsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x03 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"W\n\x14ListDepositsResponse\x12?\n\x08\x64\x65posits\x18\x01 \x01(\x0b\x32#.datanode.api.v2.DepositsConnectionR\x08\x64\x65posits"H\n\x0b\x44\x65positEdge\x12!\n\x04node\x18\x01 \x01(\x0b\x32\r.vega.DepositR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x80\x01\n\x12\x44\x65positsConnection\x12\x32\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1c.datanode.api.v2.DepositEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"&\n\x14GetWithdrawalRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"I\n\x15GetWithdrawalResponse\x12\x30\n\nwithdrawal\x18\x01 \x01(\x0b\x32\x10.vega.WithdrawalR\nwithdrawal"\xd3\x01\n\x16ListWithdrawalsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x12>\n\ndate_range\x18\x03 \x01(\x0b\x32\x1a.datanode.api.v2.DateRangeH\x01R\tdateRange\x88\x01\x01\x42\r\n\x0b_paginationB\r\n\x0b_date_range"c\n\x17ListWithdrawalsResponse\x12H\n\x0bwithdrawals\x18\x01 \x01(\x0b\x32&.datanode.api.v2.WithdrawalsConnectionR\x0bwithdrawals"N\n\x0eWithdrawalEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.WithdrawalR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15WithdrawalsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.WithdrawalEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo",\n\x0fGetAssetRequest\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId"5\n\x10GetAssetResponse\x12!\n\x05\x61sset\x18\x01 \x01(\x0b\x32\x0b.vega.AssetR\x05\x61sset"\x91\x01\n\x11ListAssetsRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tH\x00R\x07\x61ssetId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x0b\n\t_asset_idB\r\n\x0b_pagination"O\n\x12ListAssetsResponse\x12\x39\n\x06\x61ssets\x18\x01 \x01(\x0b\x32!.datanode.api.v2.AssetsConnectionR\x06\x61ssets"D\n\tAssetEdge\x12\x1f\n\x04node\x18\x01 \x01(\x0b\x32\x0b.vega.AssetR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"|\n\x10\x41ssetsConnection\x12\x30\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1a.datanode.api.v2.AssetEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\xff\x01\n\x1eListLiquidityProvisionsRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x12!\n\treference\x18\x03 \x01(\tH\x02R\treference\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_idB\x0c\n\n_referenceB\r\n\x0b_pagination"\x84\x01\n\x1fListLiquidityProvisionsResponse\x12\x61\n\x14liquidity_provisions\x18\x01 \x01(\x0b\x32..datanode.api.v2.LiquidityProvisionsConnectionR\x13liquidityProvisions"_\n\x17LiquidityProvisionsEdge\x12,\n\x04node\x18\x01 \x01(\x0b\x32\x18.vega.LiquidityProvisionR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x97\x01\n\x1dLiquidityProvisionsConnection\x12>\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32(.datanode.api.v2.LiquidityProvisionsEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x80\x01\n!ObserveLiquidityProvisionsRequest\x12 \n\tmarket_id\x18\x01 \x01(\tH\x00R\x08marketId\x88\x01\x01\x12\x1e\n\x08party_id\x18\x02 \x01(\tH\x01R\x07partyId\x88\x01\x01\x42\x0c\n\n_market_idB\x0b\n\t_party_id"q\n"ObserveLiquidityProvisionsResponse\x12K\n\x14liquidity_provisions\x18\x01 \x03(\x0b\x32\x18.vega.LiquidityProvisionR\x13liquidityProvisions"\x81\x01\n\x18GetGovernanceDataRequest\x12$\n\x0bproposal_id\x18\x01 \x01(\tH\x00R\nproposalId\x88\x01\x01\x12!\n\treference\x18\x02 \x01(\tH\x01R\treference\x88\x01\x01\x42\x0e\n\x0c_proposal_idB\x0c\n\n_reference"E\n\x19GetGovernanceDataResponse\x12(\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x14.vega.GovernanceDataR\x04\x64\x61ta"\xfa\x04\n\x19ListGovernanceDataRequest\x12@\n\x0eproposal_state\x18\x01 \x01(\x0e\x32\x14.vega.Proposal.StateH\x00R\rproposalState\x88\x01\x01\x12Y\n\rproposal_type\x18\x02 \x01(\x0e\x32/.datanode.api.v2.ListGovernanceDataRequest.TypeH\x01R\x0cproposalType\x88\x01\x01\x12/\n\x11proposer_party_id\x18\x03 \x01(\tH\x02R\x0fproposerPartyId\x88\x01\x01\x12\x32\n\x12proposal_reference\x18\x04 \x01(\tH\x03R\x11proposalReference\x88\x01\x01\x12@\n\npagination\x18\x05 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x04R\npagination\x88\x01\x01"\xb7\x01\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0c\n\x08TYPE_ALL\x10\x01\x12\x13\n\x0fTYPE_NEW_MARKET\x10\x02\x12\x16\n\x12TYPE_UPDATE_MARKET\x10\x03\x12\x1b\n\x17TYPE_NETWORK_PARAMETERS\x10\x04\x12\x12\n\x0eTYPE_NEW_ASSET\x10\x05\x12\x16\n\x12TYPE_NEW_FREE_FORM\x10\x06\x12\x15\n\x11TYPE_UPDATE_ASSET\x10\x07\x42\x11\n\x0f_proposal_stateB\x10\n\x0e_proposal_typeB\x14\n\x12_proposer_party_idB\x15\n\x13_proposal_referenceB\r\n\x0b_pagination"g\n\x1aListGovernanceDataResponse\x12I\n\nconnection\x18\x01 \x01(\x0b\x32).datanode.api.v2.GovernanceDataConnectionR\nconnection"V\n\x12GovernanceDataEdge\x12(\n\x04node\x18\x01 \x01(\x0b\x32\x14.vega.GovernanceDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8d\x01\n\x18GovernanceDataConnection\x12\x39\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32#.datanode.api.v2.GovernanceDataEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"G\n\x18ObserveGovernanceRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x42\x0b\n\t_party_id"E\n\x19ObserveGovernanceResponse\x12(\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x14.vega.GovernanceDataR\x04\x64\x61ta"\xed\x01\n\x16ListDelegationsRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1c\n\x07node_id\x18\x02 \x01(\tH\x01R\x06nodeId\x88\x01\x01\x12\x1e\n\x08\x65poch_id\x18\x03 \x01(\tH\x02R\x07\x65pochId\x88\x01\x01\x12@\n\npagination\x18\x04 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x03R\npagination\x88\x01\x01\x42\x0b\n\t_party_idB\n\n\x08_node_idB\x0b\n\t_epoch_idB\r\n\x0b_pagination"c\n\x17ListDelegationsResponse\x12H\n\x0b\x64\x65legations\x18\x01 \x01(\x0b\x32&.datanode.api.v2.DelegationsConnectionR\x0b\x64\x65legations"N\n\x0e\x44\x65legationEdge\x12$\n\x04node\x18\x01 \x01(\x0b\x32\x10.vega.DelegationR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15\x44\x65legationsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.DelegationEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"r\n\x19ObserveDelegationsRequest\x12\x1e\n\x08party_id\x18\x01 \x01(\tH\x00R\x07partyId\x88\x01\x01\x12\x1c\n\x07node_id\x18\x02 \x01(\tH\x01R\x06nodeId\x88\x01\x01\x42\x0b\n\t_party_idB\n\n\x08_node_id"N\n\x1aObserveDelegationsResponse\x12\x30\n\ndelegation\x18\x01 \x01(\x0b\x32\x10.vega.DelegationR\ndelegation"\x17\n\x15GetNetworkDataRequest"E\n\x16GetNetworkDataResponse\x12+\n\tnode_data\x18\x01 \x01(\x0b\x32\x0e.vega.NodeDataR\x08nodeData" \n\x0eGetNodeRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"1\n\x0fGetNodeResponse\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\n.vega.NodeR\x04node"\x93\x01\n\x10ListNodesRequest\x12 \n\tepoch_seq\x18\x01 \x01(\x04H\x00R\x08\x65pochSeq\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\x0c\n\n_epoch_seqB\r\n\x0b_pagination"K\n\x11ListNodesResponse\x12\x36\n\x05nodes\x18\x01 \x01(\x0b\x32 .datanode.api.v2.NodesConnectionR\x05nodes"B\n\x08NodeEdge\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\n.vega.NodeR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"z\n\x0fNodesConnection\x12/\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x19.datanode.api.v2.NodeEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"|\n\x19ListNodeSignaturesRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"g\n\x1aListNodeSignaturesResponse\x12I\n\nsignatures\x18\x01 \x01(\x0b\x32).datanode.api.v2.NodeSignaturesConnectionR\nsignatures"`\n\x11NodeSignatureEdge\x12\x33\n\x04node\x18\x01 \x01(\x0b\x32\x1f.vega.commands.v1.NodeSignatureR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x8c\x01\n\x18NodeSignaturesConnection\x12\x38\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32".datanode.api.v2.NodeSignatureEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"-\n\x0fGetEpochRequest\x12\x13\n\x02id\x18\x01 \x01(\x04H\x00R\x02id\x88\x01\x01\x42\x05\n\x03_id"5\n\x10GetEpochResponse\x12!\n\x05\x65poch\x18\x01 \x01(\x0b\x32\x0b.vega.EpochR\x05\x65poch"[\n\x12\x45stimateFeeRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12\x12\n\x04size\x18\x03 \x01(\x04R\x04size"2\n\x13\x45stimateFeeResponse\x12\x1b\n\x03\x66\x65\x65\x18\x02 \x01(\x0b\x32\t.vega.FeeR\x03\x66\x65\x65"\xbf\x01\n\x15\x45stimateMarginRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x1e\n\x04side\x18\x03 \x01(\x0e\x32\n.vega.SideR\x04side\x12$\n\x04type\x18\x04 \x01(\x0e\x32\x10.vega.Order.TypeR\x04type\x12\x12\n\x04size\x18\x05 \x01(\x04R\x04size\x12\x14\n\x05price\x18\x06 \x01(\tR\x05price"Q\n\x16\x45stimateMarginResponse\x12\x37\n\rmargin_levels\x18\x02 \x01(\x0b\x32\x12.vega.MarginLevelsR\x0cmarginLevels"o\n\x1cListNetworkParametersRequest\x12@\n\npagination\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"{\n\x1dListNetworkParametersResponse\x12Z\n\x12network_parameters\x18\x01 \x01(\x0b\x32+.datanode.api.v2.NetworkParameterConnectionR\x11networkParameters".\n\x1aGetNetworkParameterRequest\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key"b\n\x1bGetNetworkParameterResponse\x12\x43\n\x11network_parameter\x18\x01 \x01(\x0b\x32\x16.vega.NetworkParameterR\x10networkParameter"Z\n\x14NetworkParameterEdge\x12*\n\x04node\x18\x01 \x01(\x0b\x32\x16.vega.NetworkParameterR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x91\x01\n\x1aNetworkParameterConnection\x12;\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32%.datanode.api.v2.NetworkParameterEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"Z\n\nCheckpoint\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12\x19\n\x08\x61t_block\x18\x03 \x01(\x04R\x07\x61tBlock"i\n\x16ListCheckpointsRequest\x12@\n\npagination\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"c\n\x17ListCheckpointsResponse\x12H\n\x0b\x63heckpoints\x18\x01 \x01(\x0b\x32&.datanode.api.v2.CheckpointsConnectionR\x0b\x63heckpoints"Y\n\x0e\x43heckpointEdge\x12/\n\x04node\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.CheckpointR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x86\x01\n\x15\x43heckpointsConnection\x12\x35\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.CheckpointEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"}\n\x0fGetStakeRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"\x94\x01\n\x10GetStakeResponse\x12\x36\n\x17\x63urrent_stake_available\x18\x01 \x01(\tR\x15\x63urrentStakeAvailable\x12H\n\x0estake_linkings\x18\x02 \x01(\x0b\x32!.datanode.api.v2.StakesConnectionR\rstakeLinkings"\\\n\x10StakeLinkingEdge\x12\x30\n\x04node\x18\x01 \x01(\x0b\x32\x1c.vega.events.v1.StakeLinkingR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x83\x01\n\x10StakesConnection\x12\x37\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32!.datanode.api.v2.StakeLinkingEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"4\n\x15GetRiskFactorsRequest\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"K\n\x16GetRiskFactorsResponse\x12\x31\n\x0brisk_factor\x18\x01 \x01(\x0b\x32\x10.vega.RiskFactorR\nriskFactor"\xa1\x01\n\x16ObserveEventBusRequest\x12\x30\n\x04type\x18\x01 \x03(\x0e\x32\x1c.vega.events.v1.BusEventTypeR\x04type\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x1d\n\nbatch_size\x18\x04 \x01(\x03R\tbatchSize"K\n\x17ObserveEventBusResponse\x12\x30\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x18.vega.events.v1.BusEventR\x06\x65vents"\x1f\n\x1dObserveLedgerMovementsRequest"_\n\x1eObserveLedgerMovementsResponse\x12=\n\x0fledger_movement\x18\x01 \x01(\x0b\x32\x14.vega.LedgerMovementR\x0eledgerMovement"\x94\x01\n\x17ListKeyRotationsRequest\x12\x1c\n\x07node_id\x18\x01 \x01(\tH\x00R\x06nodeId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\n\n\x08_node_idB\r\n\x0b_pagination"`\n\x18ListKeyRotationsResponse\x12\x44\n\trotations\x18\x01 \x01(\x0b\x32&.datanode.api.v2.KeyRotationConnectionR\trotations"Z\n\x0fKeyRotationEdge\x12/\n\x04node\x18\x01 \x01(\x0b\x32\x1b.vega.events.v1.KeyRotationR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x87\x01\n\x15KeyRotationConnection\x12\x36\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32 .datanode.api.v2.KeyRotationEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"\x9c\x01\n\x1fListEthereumKeyRotationsRequest\x12\x1c\n\x07node_id\x18\x01 \x01(\tH\x00R\x06nodeId\x88\x01\x01\x12@\n\npagination\x18\x02 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x01R\npagination\x88\x01\x01\x42\n\n\x08_node_idB\r\n\x0b_pagination"x\n ListEthereumKeyRotationsResponse\x12T\n\rkey_rotations\x18\x01 \x01(\x0b\x32/.datanode.api.v2.EthereumKeyRotationsConnectionR\x0ckeyRotations"\x98\x01\n\x1e\x45thereumKeyRotationsConnection\x12>\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32(.datanode.api.v2.EthereumKeyRotationEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"j\n\x17\x45thereumKeyRotationEdge\x12\x37\n\x04node\x18\x01 \x01(\x0b\x32#.vega.events.v1.EthereumKeyRotationR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\x14\n\x12GetVegaTimeRequest"3\n\x13GetVegaTimeResponse\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp"\x89\x01\n\tDateRange\x12,\n\x0fstart_timestamp\x18\x01 \x01(\x03H\x00R\x0estartTimestamp\x88\x01\x01\x12(\n\rend_timestamp\x18\x02 \x01(\x03H\x01R\x0c\x65ndTimestamp\x88\x01\x01\x42\x12\n\x10_start_timestampB\x10\n\x0e_end_timestamp"!\n\x1fGetProtocolUpgradeStatusRequest"8\n GetProtocolUpgradeStatusResponse\x12\x14\n\x05ready\x18\x01 \x01(\x08R\x05ready"\x83\x02\n#ListProtocolUpgradeProposalsRequest\x12J\n\x06status\x18\x01 \x01(\x0e\x32-.vega.events.v1.ProtocolUpgradeProposalStatusH\x00R\x06status\x88\x01\x01\x12$\n\x0b\x61pproved_by\x18\x02 \x01(\tH\x01R\napprovedBy\x88\x01\x01\x12@\n\npagination\x18\x03 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x02R\npagination\x88\x01\x01\x42\t\n\x07_statusB\x0e\n\x0c_approved_byB\r\n\x0b_pagination"\x98\x01\n$ListProtocolUpgradeProposalsResponse\x12p\n\x1aprotocol_upgrade_proposals\x18\x01 \x01(\x0b\x32\x32.datanode.api.v2.ProtocolUpgradeProposalConnectionR\x18protocolUpgradeProposals"\x9f\x01\n!ProtocolUpgradeProposalConnection\x12\x42\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32,.datanode.api.v2.ProtocolUpgradeProposalEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"o\n\x1bProtocolUpgradeProposalEdge\x12\x38\n\x04node\x18\x01 \x01(\x0b\x32$.vega.events.v1.ProtocolUpgradeEventR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"k\n\x18ListCoreSnapshotsRequest\x12@\n\npagination\x18\x01 \x01(\x0b\x32\x1b.datanode.api.v2.PaginationH\x00R\npagination\x88\x01\x01\x42\r\n\x0b_pagination"k\n\x19ListCoreSnapshotsResponse\x12N\n\x0e\x63ore_snapshots\x18\x01 \x01(\x0b\x32\'.datanode.api.v2.CoreSnapshotConnectionR\rcoreSnapshots"\x89\x01\n\x16\x43oreSnapshotConnection\x12\x37\n\x05\x65\x64ges\x18\x01 \x03(\x0b\x32!.datanode.api.v2.CoreSnapshotEdgeR\x05\x65\x64ges\x12\x36\n\tpage_info\x18\x02 \x01(\x0b\x32\x19.datanode.api.v2.PageInfoR\x08pageInfo"`\n\x10\x43oreSnapshotEdge\x12\x34\n\x04node\x18\x01 \x01(\x0b\x32 .vega.events.v1.CoreSnapshotDataR\x04node\x12\x16\n\x06\x63ursor\x18\x02 \x01(\tR\x06\x63ursor"\xbb\x01\n\x0eHistorySegment\x12\x1f\n\x0b\x66rom_height\x18\x01 \x01(\x03R\nfromHeight\x12\x1b\n\tto_height\x18\x02 \x01(\x03R\x08toHeight\x12,\n\x12history_segment_id\x18\x03 \x01(\tR\x10historySegmentId\x12=\n\x1bprevious_history_segment_id\x18\x04 \x01(\tR\x18previousHistorySegmentId"+\n)GetMostRecentNetworkHistorySegmentRequest"\x8d\x01\n*GetMostRecentNetworkHistorySegmentResponse\x12\x39\n\x07segment\x18\x01 \x01(\x0b\x32\x1f.datanode.api.v2.HistorySegmentR\x07segment\x12$\n\x0eswarm_key_seed\x18\x02 \x01(\tR\x0cswarmKeySeed"&\n$ListAllNetworkHistorySegmentsRequest"d\n%ListAllNetworkHistorySegmentsResponse\x12;\n\x08segments\x18\x01 \x03(\x0b\x32\x1f.datanode.api.v2.HistorySegmentR\x08segments"-\n+GetActiveNetworkHistoryPeerAddressesRequest"Q\n,GetActiveNetworkHistoryPeerAddressesResponse\x12!\n\x0cip_addresses\x18\x01 \x03(\tR\x0bipAddresses"\x1d\n\x1bNetworkHistoryStatusRequest"\xad\x01\n\x1cNetworkHistoryStatusResponse\x12!\n\x0cipfs_address\x18\x01 \x01(\tR\x0bipfsAddress\x12\x1b\n\tswarm_key\x18\x02 \x01(\tR\x08swarmKey\x12$\n\x0eswarm_key_seed\x18\x03 \x01(\tR\x0cswarmKeySeed\x12\'\n\x0f\x63onnected_peers\x18\x05 \x03(\tR\x0e\x63onnectedPeers"%\n#NetworkHistoryBootstrapPeersRequest"O\n$NetworkHistoryBootstrapPeersResponse\x12\'\n\x0f\x62ootstrap_peers\x18\x01 \x03(\tR\x0e\x62ootstrapPeers"\r\n\x0bPingRequest"\x0e\n\x0cPingResponse*\xaa\x01\n\x10LedgerEntryField\x12"\n\x1eLEDGER_ENTRY_FIELD_UNSPECIFIED\x10\x00\x12&\n"LEDGER_ENTRY_FIELD_ACCOUNT_FROM_ID\x10\x01\x12$\n LEDGER_ENTRY_FIELD_ACCOUNT_TO_ID\x10\x02\x12$\n LEDGER_ENTRY_FIELD_TRANSFER_TYPE\x10\x03*\xb0\x01\n\x0c\x41\x63\x63ountField\x12\x1d\n\x19\x41\x43\x43OUNT_FIELD_UNSPECIFIED\x10\x00\x12\x14\n\x10\x41\x43\x43OUNT_FIELD_ID\x10\x01\x12\x1a\n\x16\x41\x43\x43OUNT_FIELD_PARTY_ID\x10\x02\x12\x1a\n\x16\x41\x43\x43OUNT_FIELD_ASSET_ID\x10\x03\x12\x1b\n\x17\x41\x43\x43OUNT_FIELD_MARKET_ID\x10\x04\x12\x16\n\x12\x41\x43\x43OUNT_FIELD_TYPE\x10\x05*\xad\x01\n\x11TransferDirection\x12"\n\x1eTRANSFER_DIRECTION_UNSPECIFIED\x10\x00\x12$\n TRANSFER_DIRECTION_TRANSFER_FROM\x10\x01\x12"\n\x1eTRANSFER_DIRECTION_TRANSFER_TO\x10\x02\x12*\n&TRANSFER_DIRECTION_TRANSFER_TO_OR_FROM\x10\x03\x32\xc7I\n\x12TradingDataService\x12[\n\x0cListAccounts\x12$.datanode.api.v2.ListAccountsRequest\x1a%.datanode.api.v2.ListAccountsResponse\x12\x66\n\x0fObserveAccounts\x12\'.datanode.api.v2.ObserveAccountsRequest\x1a(.datanode.api.v2.ObserveAccountsResponse0\x01\x12\x43\n\x04Info\x12\x1c.datanode.api.v2.InfoRequest\x1a\x1d.datanode.api.v2.InfoResponse\x12O\n\x08GetOrder\x12 .datanode.api.v2.GetOrderRequest\x1a!.datanode.api.v2.GetOrderResponse\x12U\n\nListOrders\x12".datanode.api.v2.ListOrdersRequest\x1a#.datanode.api.v2.ListOrdersResponse\x12j\n\x11ListOrderVersions\x12).datanode.api.v2.ListOrderVersionsRequest\x1a*.datanode.api.v2.ListOrderVersionsResponse\x12`\n\rObserveOrders\x12%.datanode.api.v2.ObserveOrdersRequest\x1a&.datanode.api.v2.ObserveOrdersResponse0\x01\x12\x63\n\rListPositions\x12%.datanode.api.v2.ListPositionsRequest\x1a&.datanode.api.v2.ListPositionsResponse"\x03\x88\x02\x01\x12g\n\x10ListAllPositions\x12(.datanode.api.v2.ListAllPositionsRequest\x1a).datanode.api.v2.ListAllPositionsResponse\x12i\n\x10ObservePositions\x12(.datanode.api.v2.ObservePositionsRequest\x1a).datanode.api.v2.ObservePositionsResponse0\x01\x12l\n\x11ListLedgerEntries\x12).datanode.api.v2.ListLedgerEntriesRequest\x1a*.datanode.api.v2.ListLedgerEntriesResponse"\x00\x12r\n\x13\x45xportLedgerEntries\x12+.datanode.api.v2.ExportLedgerEntriesRequest\x1a,.datanode.api.v2.ExportLedgerEntriesResponse"\x00\x12o\n\x12ListBalanceChanges\x12*.datanode.api.v2.ListBalanceChangesRequest\x1a+.datanode.api.v2.ListBalanceChangesResponse"\x00\x12p\n\x13GetLatestMarketData\x12+.datanode.api.v2.GetLatestMarketDataRequest\x1a,.datanode.api.v2.GetLatestMarketDataResponse\x12s\n\x14ListLatestMarketData\x12,.datanode.api.v2.ListLatestMarketDataRequest\x1a-.datanode.api.v2.ListLatestMarketDataResponse\x12s\n\x14GetLatestMarketDepth\x12,.datanode.api.v2.GetLatestMarketDepthRequest\x1a-.datanode.api.v2.GetLatestMarketDepthResponse\x12r\n\x13ObserveMarketsDepth\x12+.datanode.api.v2.ObserveMarketsDepthRequest\x1a,.datanode.api.v2.ObserveMarketsDepthResponse0\x01\x12\x87\x01\n\x1aObserveMarketsDepthUpdates\x12\x32.datanode.api.v2.ObserveMarketsDepthUpdatesRequest\x1a\x33.datanode.api.v2.ObserveMarketsDepthUpdatesResponse0\x01\x12o\n\x12ObserveMarketsData\x12*.datanode.api.v2.ObserveMarketsDataRequest\x1a+.datanode.api.v2.ObserveMarketsDataResponse0\x01\x12\x7f\n\x18GetMarketDataHistoryByID\x12\x30.datanode.api.v2.GetMarketDataHistoryByIDRequest\x1a\x31.datanode.api.v2.GetMarketDataHistoryByIDResponse\x12^\n\rListTransfers\x12%.datanode.api.v2.ListTransfersRequest\x1a&.datanode.api.v2.ListTransfersResponse\x12g\n\x10GetNetworkLimits\x12(.datanode.api.v2.GetNetworkLimitsRequest\x1a).datanode.api.v2.GetNetworkLimitsResponse\x12\x61\n\x0eListCandleData\x12&.datanode.api.v2.ListCandleDataRequest\x1a\'.datanode.api.v2.ListCandleDataResponse\x12l\n\x11ObserveCandleData\x12).datanode.api.v2.ObserveCandleDataRequest\x1a*.datanode.api.v2.ObserveCandleDataResponse0\x01\x12p\n\x13ListCandleIntervals\x12+.datanode.api.v2.ListCandleIntervalsRequest\x1a,.datanode.api.v2.ListCandleIntervalsResponse\x12R\n\tListVotes\x12!.datanode.api.v2.ListVotesRequest\x1a".datanode.api.v2.ListVotesResponse\x12]\n\x0cObserveVotes\x12$.datanode.api.v2.ObserveVotesRequest\x1a%.datanode.api.v2.ObserveVotesResponse0\x01\x12\xa0\x01\n#ListERC20MultiSigSignerAddedBundles\x12;.datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest\x1a<.datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse\x12\xa6\x01\n%ListERC20MultiSigSignerRemovedBundles\x12=.datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest\x1a>.datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse\x12|\n\x17GetERC20ListAssetBundle\x12/.datanode.api.v2.GetERC20ListAssetBundleRequest\x1a\x30.datanode.api.v2.GetERC20ListAssetBundleResponse\x12\x8b\x01\n\x1cGetERC20SetAssetLimitsBundle\x12\x34.datanode.api.v2.GetERC20SetAssetLimitsBundleRequest\x1a\x35.datanode.api.v2.GetERC20SetAssetLimitsBundleResponse\x12\x85\x01\n\x1aGetERC20WithdrawalApproval\x12\x32.datanode.api.v2.GetERC20WithdrawalApprovalRequest\x1a\x33.datanode.api.v2.GetERC20WithdrawalApprovalResponse\x12[\n\x0cGetLastTrade\x12$.datanode.api.v2.GetLastTradeRequest\x1a%.datanode.api.v2.GetLastTradeResponse\x12U\n\nListTrades\x12".datanode.api.v2.ListTradesRequest\x1a#.datanode.api.v2.ListTradesResponse\x12`\n\rObserveTrades\x12%.datanode.api.v2.ObserveTradesRequest\x1a&.datanode.api.v2.ObserveTradesResponse0\x01\x12^\n\rGetOracleSpec\x12%.datanode.api.v2.GetOracleSpecRequest\x1a&.datanode.api.v2.GetOracleSpecResponse\x12\x64\n\x0fListOracleSpecs\x12\'.datanode.api.v2.ListOracleSpecsRequest\x1a(.datanode.api.v2.ListOracleSpecsResponse\x12\x61\n\x0eListOracleData\x12&.datanode.api.v2.ListOracleDataRequest\x1a\'.datanode.api.v2.ListOracleDataResponse\x12R\n\tGetMarket\x12!.datanode.api.v2.GetMarketRequest\x1a".datanode.api.v2.GetMarketResponse\x12X\n\x0bListMarkets\x12#.datanode.api.v2.ListMarketsRequest\x1a$.datanode.api.v2.ListMarketsResponse\x12O\n\x08GetParty\x12 .datanode.api.v2.GetPartyRequest\x1a!.datanode.api.v2.GetPartyResponse\x12X\n\x0bListParties\x12#.datanode.api.v2.ListPartiesRequest\x1a$.datanode.api.v2.ListPartiesResponse\x12g\n\x10ListMarginLevels\x12(.datanode.api.v2.ListMarginLevelsRequest\x1a).datanode.api.v2.ListMarginLevelsResponse\x12r\n\x13ObserveMarginLevels\x12+.datanode.api.v2.ObserveMarginLevelsRequest\x1a,.datanode.api.v2.ObserveMarginLevelsResponse0\x01\x12X\n\x0bListRewards\x12#.datanode.api.v2.ListRewardsRequest\x1a$.datanode.api.v2.ListRewardsResponse\x12p\n\x13ListRewardSummaries\x12+.datanode.api.v2.ListRewardSummariesRequest\x1a,.datanode.api.v2.ListRewardSummariesResponse\x12\x7f\n\x18ListEpochRewardSummaries\x12\x30.datanode.api.v2.ListEpochRewardSummariesRequest\x1a\x31.datanode.api.v2.ListEpochRewardSummariesResponse\x12\x63\n\x0eObserveRewards\x12&.datanode.api.v2.ObserveRewardsRequest\x1a\'.datanode.api.v2.ObserveRewardsResponse0\x01\x12U\n\nGetDeposit\x12".datanode.api.v2.GetDepositRequest\x1a#.datanode.api.v2.GetDepositResponse\x12[\n\x0cListDeposits\x12$.datanode.api.v2.ListDepositsRequest\x1a%.datanode.api.v2.ListDepositsResponse\x12^\n\rGetWithdrawal\x12%.datanode.api.v2.GetWithdrawalRequest\x1a&.datanode.api.v2.GetWithdrawalResponse\x12\x64\n\x0fListWithdrawals\x12\'.datanode.api.v2.ListWithdrawalsRequest\x1a(.datanode.api.v2.ListWithdrawalsResponse\x12O\n\x08GetAsset\x12 .datanode.api.v2.GetAssetRequest\x1a!.datanode.api.v2.GetAssetResponse\x12U\n\nListAssets\x12".datanode.api.v2.ListAssetsRequest\x1a#.datanode.api.v2.ListAssetsResponse\x12|\n\x17ListLiquidityProvisions\x12/.datanode.api.v2.ListLiquidityProvisionsRequest\x1a\x30.datanode.api.v2.ListLiquidityProvisionsResponse\x12\x87\x01\n\x1aObserveLiquidityProvisions\x12\x32.datanode.api.v2.ObserveLiquidityProvisionsRequest\x1a\x33.datanode.api.v2.ObserveLiquidityProvisionsResponse0\x01\x12j\n\x11GetGovernanceData\x12).datanode.api.v2.GetGovernanceDataRequest\x1a*.datanode.api.v2.GetGovernanceDataResponse\x12m\n\x12ListGovernanceData\x12*.datanode.api.v2.ListGovernanceDataRequest\x1a+.datanode.api.v2.ListGovernanceDataResponse\x12l\n\x11ObserveGovernance\x12).datanode.api.v2.ObserveGovernanceRequest\x1a*.datanode.api.v2.ObserveGovernanceResponse0\x01\x12\x64\n\x0fListDelegations\x12\'.datanode.api.v2.ListDelegationsRequest\x1a(.datanode.api.v2.ListDelegationsResponse\x12o\n\x12ObserveDelegations\x12*.datanode.api.v2.ObserveDelegationsRequest\x1a+.datanode.api.v2.ObserveDelegationsResponse0\x01\x12\x61\n\x0eGetNetworkData\x12&.datanode.api.v2.GetNetworkDataRequest\x1a\'.datanode.api.v2.GetNetworkDataResponse\x12L\n\x07GetNode\x12\x1f.datanode.api.v2.GetNodeRequest\x1a .datanode.api.v2.GetNodeResponse\x12R\n\tListNodes\x12!.datanode.api.v2.ListNodesRequest\x1a".datanode.api.v2.ListNodesResponse\x12m\n\x12ListNodeSignatures\x12*.datanode.api.v2.ListNodeSignaturesRequest\x1a+.datanode.api.v2.ListNodeSignaturesResponse\x12O\n\x08GetEpoch\x12 .datanode.api.v2.GetEpochRequest\x1a!.datanode.api.v2.GetEpochResponse\x12X\n\x0b\x45stimateFee\x12#.datanode.api.v2.EstimateFeeRequest\x1a$.datanode.api.v2.EstimateFeeResponse\x12\x61\n\x0e\x45stimateMargin\x12&.datanode.api.v2.EstimateMarginRequest\x1a\'.datanode.api.v2.EstimateMarginResponse\x12v\n\x15ListNetworkParameters\x12-.datanode.api.v2.ListNetworkParametersRequest\x1a..datanode.api.v2.ListNetworkParametersResponse\x12p\n\x13GetNetworkParameter\x12+.datanode.api.v2.GetNetworkParameterRequest\x1a,.datanode.api.v2.GetNetworkParameterResponse\x12\x64\n\x0fListCheckpoints\x12\'.datanode.api.v2.ListCheckpointsRequest\x1a(.datanode.api.v2.ListCheckpointsResponse\x12O\n\x08GetStake\x12 .datanode.api.v2.GetStakeRequest\x1a!.datanode.api.v2.GetStakeResponse\x12\x61\n\x0eGetRiskFactors\x12&.datanode.api.v2.GetRiskFactorsRequest\x1a\'.datanode.api.v2.GetRiskFactorsResponse\x12h\n\x0fObserveEventBus\x12\'.datanode.api.v2.ObserveEventBusRequest\x1a(.datanode.api.v2.ObserveEventBusResponse(\x01\x30\x01\x12{\n\x16ObserveLedgerMovements\x12..datanode.api.v2.ObserveLedgerMovementsRequest\x1a/.datanode.api.v2.ObserveLedgerMovementsResponse0\x01\x12g\n\x10ListKeyRotations\x12(.datanode.api.v2.ListKeyRotationsRequest\x1a).datanode.api.v2.ListKeyRotationsResponse\x12\x7f\n\x18ListEthereumKeyRotations\x12\x30.datanode.api.v2.ListEthereumKeyRotationsRequest\x1a\x31.datanode.api.v2.ListEthereumKeyRotationsResponse\x12X\n\x0bGetVegaTime\x12#.datanode.api.v2.GetVegaTimeRequest\x1a$.datanode.api.v2.GetVegaTimeResponse\x12\x7f\n\x18GetProtocolUpgradeStatus\x12\x30.datanode.api.v2.GetProtocolUpgradeStatusRequest\x1a\x31.datanode.api.v2.GetProtocolUpgradeStatusResponse\x12\x8b\x01\n\x1cListProtocolUpgradeProposals\x12\x34.datanode.api.v2.ListProtocolUpgradeProposalsRequest\x1a\x35.datanode.api.v2.ListProtocolUpgradeProposalsResponse\x12j\n\x11ListCoreSnapshots\x12).datanode.api.v2.ListCoreSnapshotsRequest\x1a*.datanode.api.v2.ListCoreSnapshotsResponse\x12\x9d\x01\n"GetMostRecentNetworkHistorySegment\x12:.datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest\x1a;.datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse\x12\x8e\x01\n\x1dListAllNetworkHistorySegments\x12\x35.datanode.api.v2.ListAllNetworkHistorySegmentsRequest\x1a\x36.datanode.api.v2.ListAllNetworkHistorySegmentsResponse\x12\xa3\x01\n$GetActiveNetworkHistoryPeerAddresses\x12<.datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest\x1a=.datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse\x12s\n\x14NetworkHistoryStatus\x12,.datanode.api.v2.NetworkHistoryStatusRequest\x1a-.datanode.api.v2.NetworkHistoryStatusResponse\x12\x8b\x01\n\x1cNetworkHistoryBootstrapPeers\x12\x34.datanode.api.v2.NetworkHistoryBootstrapPeersRequest\x1a\x35.datanode.api.v2.NetworkHistoryBootstrapPeersResponse\x12\x43\n\x04Ping\x12\x1c.datanode.api.v2.PingRequest\x1a\x1d.datanode.api.v2.PingResponseB\x81\x01Z1code.vegaprotocol.io/vega/protos/data-node/api/v2\x92\x41K\x12"\n\x13Vega data node APIs2\x0bv0.68.0-dev\x1a!lb.testnet.vega.xyz/datanode/rest*\x02\x01\x02\x62\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -36,17 +36,25 @@ ) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b"Z1code.vegaprotocol.io/vega/protos/data-node/api/v2\222AG\022\036\n\023Vega data node APIs2\007v0.67.0\032!lb.testnet.vega.xyz/datanode/rest*\002\001\002" + DESCRIPTOR._serialized_options = b'Z1code.vegaprotocol.io/vega/protos/data-node/api/v2\222AK\022"\n\023Vega data node APIs2\013v0.68.0-dev\032!lb.testnet.vega.xyz/datanode/rest*\002\001\002' + _LISTPOSITIONSREQUEST._options = None + _LISTPOSITIONSREQUEST._serialized_options = b"\030\001" + _LISTPOSITIONSRESPONSE._options = None + _LISTPOSITIONSRESPONSE._serialized_options = b"\030\001" _GETMARKETDATAHISTORYBYIDREQUEST.fields_by_name["offset_pagination"]._options = None _GETMARKETDATAHISTORYBYIDREQUEST.fields_by_name[ "offset_pagination" ]._serialized_options = b"\030\001" - _LEDGERENTRYFIELD._serialized_start = 31916 - _LEDGERENTRYFIELD._serialized_end = 32086 - _ACCOUNTFIELD._serialized_start = 32089 - _ACCOUNTFIELD._serialized_end = 32265 - _TRANSFERDIRECTION._serialized_start = 32268 - _TRANSFERDIRECTION._serialized_end = 32441 + _TRADINGDATASERVICE.methods_by_name["ListPositions"]._options = None + _TRADINGDATASERVICE.methods_by_name[ + "ListPositions" + ]._serialized_options = b"\210\002\001" + _LEDGERENTRYFIELD._serialized_start = 32883 + _LEDGERENTRYFIELD._serialized_end = 33053 + _ACCOUNTFIELD._serialized_start = 33056 + _ACCOUNTFIELD._serialized_end = 33232 + _TRANSFERDIRECTION._serialized_start = 33235 + _TRANSFERDIRECTION._serialized_end = 33408 _OFFSETPAGINATION._serialized_start = 274 _OFFSETPAGINATION._serialized_end = 366 _PAGINATION._serialized_start = 369 @@ -98,485 +106,501 @@ _ORDERUPDATES._serialized_start = 3514 _ORDERUPDATES._serialized_end = 3565 _LISTPOSITIONSREQUEST._serialized_start = 3568 - _LISTPOSITIONSREQUEST._serialized_end = 3727 - _LISTPOSITIONSRESPONSE._serialized_start = 3729 - _LISTPOSITIONSRESPONSE._serialized_end = 3819 - _POSITIONEDGE._serialized_start = 3821 - _POSITIONEDGE._serialized_end = 3895 - _POSITIONCONNECTION._serialized_start = 3898 - _POSITIONCONNECTION._serialized_end = 4027 - _OBSERVEPOSITIONSREQUEST._serialized_start = 4029 - _OBSERVEPOSITIONSREQUEST._serialized_end = 4147 - _OBSERVEPOSITIONSRESPONSE._serialized_start = 4150 - _OBSERVEPOSITIONSRESPONSE._serialized_end = 4319 - _POSITIONSNAPSHOTPAGE._serialized_start = 4321 - _POSITIONSNAPSHOTPAGE._serialized_end = 4418 - _POSITIONUPDATES._serialized_start = 4420 - _POSITIONUPDATES._serialized_end = 4483 - _LEDGERENTRYFILTER._serialized_start = 4486 - _LEDGERENTRYFILTER._serialized_end = 4777 - _AGGREGATEDLEDGERENTRY._serialized_start = 4780 - _AGGREGATEDLEDGERENTRY._serialized_end = 5509 - _LISTLEDGERENTRIESREQUEST._serialized_start = 5512 - _LISTLEDGERENTRIESREQUEST._serialized_end = 5758 - _EXPORTLEDGERENTRIESREQUEST._serialized_start = 5761 - _EXPORTLEDGERENTRIESREQUEST._serialized_end = 6003 - _LISTLEDGERENTRIESRESPONSE._serialized_start = 6005 - _LISTLEDGERENTRIESRESPONSE._serialized_end = 6123 - _EXPORTLEDGERENTRIESRESPONSE._serialized_start = 6125 - _EXPORTLEDGERENTRIESRESPONSE._serialized_end = 6230 - _AGGREGATEDLEDGERENTRIESEDGE._serialized_start = 6232 - _AGGREGATEDLEDGERENTRIESEDGE._serialized_end = 6345 - _AGGREGATEDLEDGERENTRIESCONNECTION._serialized_start = 6348 - _AGGREGATEDLEDGERENTRIESCONNECTION._serialized_end = 6507 - _LISTBALANCECHANGESREQUEST._serialized_start = 6510 - _LISTBALANCECHANGESREQUEST._serialized_end = 6753 - _LISTBALANCECHANGESRESPONSE._serialized_start = 6755 - _LISTBALANCECHANGESRESPONSE._serialized_end = 6857 - _GETBALANCEHISTORYREQUEST._serialized_start = 6860 - _GETBALANCEHISTORYREQUEST._serialized_end = 7160 - _GETBALANCEHISTORYRESPONSE._serialized_start = 7162 - _GETBALANCEHISTORYRESPONSE._serialized_end = 7263 - _AGGREGATEDBALANCEEDGE._serialized_start = 7265 - _AGGREGATEDBALANCEEDGE._serialized_end = 7368 - _AGGREGATEDBALANCECONNECTION._serialized_start = 7371 - _AGGREGATEDBALANCECONNECTION._serialized_end = 7518 - _ACCOUNTFILTER._serialized_start = 7521 - _ACCOUNTFILTER._serialized_end = 7679 - _AGGREGATEDBALANCE._serialized_start = 7682 - _AGGREGATEDBALANCE._serialized_end = 7971 - _OBSERVEMARKETSDEPTHREQUEST._serialized_start = 7973 - _OBSERVEMARKETSDEPTHREQUEST._serialized_end = 8032 - _OBSERVEMARKETSDEPTHRESPONSE._serialized_start = 8034 - _OBSERVEMARKETSDEPTHRESPONSE._serialized_end = 8117 - _OBSERVEMARKETSDEPTHUPDATESREQUEST._serialized_start = 8119 - _OBSERVEMARKETSDEPTHUPDATESREQUEST._serialized_end = 8185 - _OBSERVEMARKETSDEPTHUPDATESRESPONSE._serialized_start = 8187 - _OBSERVEMARKETSDEPTHUPDATESRESPONSE._serialized_end = 8272 - _OBSERVEMARKETSDATAREQUEST._serialized_start = 8274 - _OBSERVEMARKETSDATAREQUEST._serialized_end = 8332 - _OBSERVEMARKETSDATARESPONSE._serialized_start = 8334 - _OBSERVEMARKETSDATARESPONSE._serialized_end = 8413 - _GETLATESTMARKETDEPTHREQUEST._serialized_start = 8415 - _GETLATESTMARKETDEPTHREQUEST._serialized_end = 8521 - _GETLATESTMARKETDEPTHRESPONSE._serialized_start = 8524 - _GETLATESTMARKETDEPTHRESPONSE._serialized_end = 8742 - _LISTLATESTMARKETDATAREQUEST._serialized_start = 8744 - _LISTLATESTMARKETDATAREQUEST._serialized_end = 8773 - _LISTLATESTMARKETDATARESPONSE._serialized_start = 8775 - _LISTLATESTMARKETDATARESPONSE._serialized_end = 8858 - _GETLATESTMARKETDATAREQUEST._serialized_start = 8860 - _GETLATESTMARKETDATAREQUEST._serialized_end = 8917 - _GETLATESTMARKETDATARESPONSE._serialized_start = 8919 - _GETLATESTMARKETDATARESPONSE._serialized_end = 8999 - _GETMARKETDATAHISTORYBYIDREQUEST._serialized_start = 9002 - _GETMARKETDATAHISTORYBYIDREQUEST._serialized_end = 9382 - _GETMARKETDATAHISTORYBYIDRESPONSE._serialized_start = 9384 - _GETMARKETDATAHISTORYBYIDRESPONSE._serialized_end = 9490 - _MARKETDATAEDGE._serialized_start = 9492 - _MARKETDATAEDGE._serialized_end = 9570 - _MARKETDATACONNECTION._serialized_start = 9573 - _MARKETDATACONNECTION._serialized_end = 9706 - _MARKETSDATASUBSCRIBEREQUEST._serialized_start = 9708 - _MARKETSDATASUBSCRIBEREQUEST._serialized_end = 9766 - _MARKETSDATASUBSCRIBERESPONSE._serialized_start = 9768 - _MARKETSDATASUBSCRIBERESPONSE._serialized_end = 9849 - _LISTTRANSFERSREQUEST._serialized_start = 9852 - _LISTTRANSFERSREQUEST._serialized_end = 10061 - _LISTTRANSFERSRESPONSE._serialized_start = 10063 - _LISTTRANSFERSRESPONSE._serialized_end = 10153 - _TRANSFEREDGE._serialized_start = 10155 - _TRANSFEREDGE._serialized_end = 10239 - _TRANSFERCONNECTION._serialized_start = 10242 - _TRANSFERCONNECTION._serialized_end = 10371 - _GETNETWORKLIMITSREQUEST._serialized_start = 10373 - _GETNETWORKLIMITSREQUEST._serialized_end = 10398 - _GETNETWORKLIMITSRESPONSE._serialized_start = 10400 - _GETNETWORKLIMITSRESPONSE._serialized_end = 10471 - _LISTCANDLEINTERVALSREQUEST._serialized_start = 10473 - _LISTCANDLEINTERVALSREQUEST._serialized_end = 10530 - _INTERVALTOCANDLEID._serialized_start = 10532 - _INTERVALTOCANDLEID._serialized_end = 10609 - _LISTCANDLEINTERVALSRESPONSE._serialized_start = 10611 - _LISTCANDLEINTERVALSRESPONSE._serialized_end = 10728 - _CANDLE._serialized_start = 10731 - _CANDLE._serialized_end = 10898 - _OBSERVECANDLEDATAREQUEST._serialized_start = 10900 - _OBSERVECANDLEDATAREQUEST._serialized_end = 10955 - _OBSERVECANDLEDATARESPONSE._serialized_start = 10957 - _OBSERVECANDLEDATARESPONSE._serialized_end = 11033 - _LISTCANDLEDATAREQUEST._serialized_start = 11036 - _LISTCANDLEDATAREQUEST._serialized_end = 11287 - _LISTCANDLEDATARESPONSE._serialized_start = 11289 - _LISTCANDLEDATARESPONSE._serialized_end = 11378 - _CANDLEEDGE._serialized_start = 11380 - _CANDLEEDGE._serialized_end = 11461 - _CANDLEDATACONNECTION._serialized_start = 11464 - _CANDLEDATACONNECTION._serialized_end = 11593 - _LISTVOTESREQUEST._serialized_start = 11596 - _LISTVOTESREQUEST._serialized_end = 11794 - _LISTVOTESRESPONSE._serialized_start = 11796 - _LISTVOTESRESPONSE._serialized_end = 11870 - _VOTEEDGE._serialized_start = 11872 - _VOTEEDGE._serialized_end = 11938 - _VOTECONNECTION._serialized_start = 11940 - _VOTECONNECTION._serialized_end = 12061 - _OBSERVEVOTESREQUEST._serialized_start = 12063 - _OBSERVEVOTESREQUEST._serialized_end = 12183 - _OBSERVEVOTESRESPONSE._serialized_start = 12185 - _OBSERVEVOTESRESPONSE._serialized_end = 12239 - _LISTERC20MULTISIGSIGNERADDEDBUNDLESREQUEST._serialized_start = 12242 - _LISTERC20MULTISIGSIGNERADDEDBUNDLESREQUEST._serialized_end = 12431 - _LISTERC20MULTISIGSIGNERADDEDBUNDLESRESPONSE._serialized_start = 12433 - _LISTERC20MULTISIGSIGNERADDEDBUNDLESRESPONSE._serialized_end = 12557 - _ERC20MULTISIGSIGNERADDEDEDGE._serialized_start = 12559 - _ERC20MULTISIGSIGNERADDEDEDGE._serialized_end = 12675 - _ERC20MULTISIGSIGNERADDEDBUNDLEEDGE._serialized_start = 12678 - _ERC20MULTISIGSIGNERADDEDBUNDLEEDGE._serialized_end = 12807 - _ERC20MULTISIGSIGNERADDEDCONNECTION._serialized_start = 12810 - _ERC20MULTISIGSIGNERADDEDCONNECTION._serialized_end = 12977 - _ERC20MULTISIGSIGNERADDEDBUNDLE._serialized_start = 12980 - _ERC20MULTISIGSIGNERADDEDBUNDLE._serialized_end = 13186 - _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESREQUEST._serialized_start = 13189 - _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESREQUEST._serialized_end = 13380 - _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESRESPONSE._serialized_start = 13383 - _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESRESPONSE._serialized_end = 13511 - _ERC20MULTISIGSIGNERREMOVEDEDGE._serialized_start = 13513 - _ERC20MULTISIGSIGNERREMOVEDEDGE._serialized_end = 13633 - _ERC20MULTISIGSIGNERREMOVEDBUNDLEEDGE._serialized_start = 13636 - _ERC20MULTISIGSIGNERREMOVEDBUNDLEEDGE._serialized_end = 13769 - _ERC20MULTISIGSIGNERREMOVEDCONNECTION._serialized_start = 13772 - _ERC20MULTISIGSIGNERREMOVEDCONNECTION._serialized_end = 13943 - _ERC20MULTISIGSIGNERREMOVEDBUNDLE._serialized_start = 13946 - _ERC20MULTISIGSIGNERREMOVEDBUNDLE._serialized_end = 14154 - _GETERC20LISTASSETBUNDLEREQUEST._serialized_start = 14156 - _GETERC20LISTASSETBUNDLEREQUEST._serialized_end = 14215 - _GETERC20LISTASSETBUNDLERESPONSE._serialized_start = 14218 - _GETERC20LISTASSETBUNDLERESPONSE._serialized_end = 14376 - _GETERC20SETASSETLIMITSBUNDLEREQUEST._serialized_start = 14378 - _GETERC20SETASSETLIMITSBUNDLEREQUEST._serialized_end = 14448 - _GETERC20SETASSETLIMITSBUNDLERESPONSE._serialized_start = 14451 - _GETERC20SETASSETLIMITSBUNDLERESPONSE._serialized_end = 14683 - _GETERC20WITHDRAWALAPPROVALREQUEST._serialized_start = 14685 - _GETERC20WITHDRAWALAPPROVALREQUEST._serialized_end = 14757 - _GETERC20WITHDRAWALAPPROVALRESPONSE._serialized_start = 14760 - _GETERC20WITHDRAWALAPPROVALRESPONSE._serialized_end = 14982 - _GETLASTTRADEREQUEST._serialized_start = 14984 - _GETLASTTRADEREQUEST._serialized_end = 15034 - _GETLASTTRADERESPONSE._serialized_start = 15036 - _GETLASTTRADERESPONSE._serialized_end = 15093 - _LISTTRADESREQUEST._serialized_start = 15096 - _LISTTRADESREQUEST._serialized_end = 15413 - _LISTTRADESRESPONSE._serialized_start = 15415 - _LISTTRADESRESPONSE._serialized_end = 15493 - _TRADECONNECTION._serialized_start = 15495 - _TRADECONNECTION._serialized_end = 15618 - _TRADEEDGE._serialized_start = 15620 - _TRADEEDGE._serialized_end = 15688 - _OBSERVETRADESREQUEST._serialized_start = 15690 - _OBSERVETRADESREQUEST._serialized_end = 15805 - _OBSERVETRADESRESPONSE._serialized_start = 15807 - _OBSERVETRADESRESPONSE._serialized_end = 15867 - _GETORACLESPECREQUEST._serialized_start = 15869 - _GETORACLESPECREQUEST._serialized_end = 15929 - _GETORACLESPECRESPONSE._serialized_start = 15931 - _GETORACLESPECRESPONSE._serialized_end = 16005 - _LISTORACLESPECSREQUEST._serialized_start = 16007 - _LISTORACLESPECSREQUEST._serialized_end = 16112 - _LISTORACLESPECSRESPONSE._serialized_start = 16114 - _LISTORACLESPECSRESPONSE._serialized_end = 16214 - _LISTORACLEDATAREQUEST._serialized_start = 16217 - _LISTORACLEDATAREQUEST._serialized_end = 16383 - _LISTORACLEDATARESPONSE._serialized_start = 16385 - _LISTORACLEDATARESPONSE._serialized_end = 16481 - _ORACLESPECEDGE._serialized_start = 16483 - _ORACLESPECEDGE._serialized_end = 16561 - _ORACLESPECSCONNECTION._serialized_start = 16564 - _ORACLESPECSCONNECTION._serialized_end = 16698 - _ORACLEDATAEDGE._serialized_start = 16700 - _ORACLEDATAEDGE._serialized_end = 16778 - _ORACLEDATACONNECTION._serialized_start = 16781 - _ORACLEDATACONNECTION._serialized_end = 16914 - _GETMARKETREQUEST._serialized_start = 16916 - _GETMARKETREQUEST._serialized_end = 16963 - _GETMARKETRESPONSE._serialized_start = 16965 - _GETMARKETRESPONSE._serialized_end = 17022 - _LISTMARKETSREQUEST._serialized_start = 17024 - _LISTMARKETSREQUEST._serialized_end = 17125 - _LISTMARKETSRESPONSE._serialized_start = 17127 - _LISTMARKETSRESPONSE._serialized_end = 17209 - _MARKETEDGE._serialized_start = 17211 - _MARKETEDGE._serialized_end = 17281 - _MARKETCONNECTION._serialized_start = 17283 - _MARKETCONNECTION._serialized_end = 17408 - _GETPARTYREQUEST._serialized_start = 17410 - _GETPARTYREQUEST._serialized_end = 17454 - _GETPARTYRESPONSE._serialized_start = 17456 - _GETPARTYRESPONSE._serialized_end = 17509 - _LISTPARTIESREQUEST._serialized_start = 17511 - _LISTPARTIESREQUEST._serialized_end = 17619 - _LISTPARTIESRESPONSE._serialized_start = 17621 - _LISTPARTIESRESPONSE._serialized_end = 17702 - _PARTYEDGE._serialized_start = 17704 - _PARTYEDGE._serialized_end = 17772 - _PARTYCONNECTION._serialized_start = 17774 - _PARTYCONNECTION._serialized_end = 17897 - _ORDEREDGE._serialized_start = 17899 - _ORDEREDGE._serialized_end = 17967 - _LISTMARGINLEVELSREQUEST._serialized_start = 17970 - _LISTMARGINLEVELSREQUEST._serialized_end = 18112 - _LISTMARGINLEVELSRESPONSE._serialized_start = 18114 - _LISTMARGINLEVELSRESPONSE._serialized_end = 18212 - _OBSERVEMARGINLEVELSREQUEST._serialized_start = 18214 - _OBSERVEMARGINLEVELSREQUEST._serialized_end = 18317 - _OBSERVEMARGINLEVELSRESPONSE._serialized_start = 18319 - _OBSERVEMARGINLEVELSRESPONSE._serialized_end = 18405 - _ORDERCONNECTION._serialized_start = 18407 - _ORDERCONNECTION._serialized_end = 18530 - _MARGINEDGE._serialized_start = 18532 - _MARGINEDGE._serialized_end = 18608 - _MARGINCONNECTION._serialized_start = 18610 - _MARGINCONNECTION._serialized_end = 18735 - _LISTREWARDSREQUEST._serialized_start = 18738 - _LISTREWARDSREQUEST._serialized_end = 18911 - _LISTREWARDSRESPONSE._serialized_start = 18913 - _LISTREWARDSRESPONSE._serialized_end = 18996 - _REWARDEDGE._serialized_start = 18998 - _REWARDEDGE._serialized_end = 19068 - _REWARDSCONNECTION._serialized_start = 19070 - _REWARDSCONNECTION._serialized_end = 19196 - _LISTREWARDSUMMARIESREQUEST._serialized_start = 19199 - _LISTREWARDSUMMARIESREQUEST._serialized_end = 19398 - _LISTREWARDSUMMARIESRESPONSE._serialized_start = 19400 - _LISTREWARDSUMMARIESRESPONSE._serialized_end = 19480 - _LISTEPOCHREWARDSUMMARIESREQUEST._serialized_start = 19483 - _LISTEPOCHREWARDSUMMARIESREQUEST._serialized_end = 19693 - _LISTEPOCHREWARDSUMMARIESRESPONSE._serialized_start = 19695 - _LISTEPOCHREWARDSUMMARIESRESPONSE._serialized_end = 19806 - _EPOCHREWARDSUMMARYCONNECTION._serialized_start = 19809 - _EPOCHREWARDSUMMARYCONNECTION._serialized_end = 19958 - _EPOCHREWARDSUMMARYEDGE._serialized_start = 19960 - _EPOCHREWARDSUMMARYEDGE._serialized_end = 20054 - _OBSERVEREWARDSREQUEST._serialized_start = 20056 - _OBSERVEREWARDSREQUEST._serialized_end = 20169 - _OBSERVEREWARDSRESPONSE._serialized_start = 20171 - _OBSERVEREWARDSRESPONSE._serialized_end = 20233 - _GETDEPOSITREQUEST._serialized_start = 20235 - _GETDEPOSITREQUEST._serialized_end = 20270 - _GETDEPOSITRESPONSE._serialized_start = 20272 - _GETDEPOSITRESPONSE._serialized_end = 20333 - _LISTDEPOSITSREQUEST._serialized_start = 20336 - _LISTDEPOSITSREQUEST._serialized_end = 20544 - _LISTDEPOSITSRESPONSE._serialized_start = 20546 - _LISTDEPOSITSRESPONSE._serialized_end = 20633 - _DEPOSITEDGE._serialized_start = 20635 - _DEPOSITEDGE._serialized_end = 20707 - _DEPOSITSCONNECTION._serialized_start = 20710 - _DEPOSITSCONNECTION._serialized_end = 20838 - _GETWITHDRAWALREQUEST._serialized_start = 20840 - _GETWITHDRAWALREQUEST._serialized_end = 20878 - _GETWITHDRAWALRESPONSE._serialized_start = 20880 - _GETWITHDRAWALRESPONSE._serialized_end = 20953 - _LISTWITHDRAWALSREQUEST._serialized_start = 20956 - _LISTWITHDRAWALSREQUEST._serialized_end = 21167 - _LISTWITHDRAWALSRESPONSE._serialized_start = 21169 - _LISTWITHDRAWALSRESPONSE._serialized_end = 21268 - _WITHDRAWALEDGE._serialized_start = 21270 - _WITHDRAWALEDGE._serialized_end = 21348 - _WITHDRAWALSCONNECTION._serialized_start = 21351 - _WITHDRAWALSCONNECTION._serialized_end = 21485 - _GETASSETREQUEST._serialized_start = 21487 - _GETASSETREQUEST._serialized_end = 21531 - _GETASSETRESPONSE._serialized_start = 21533 - _GETASSETRESPONSE._serialized_end = 21586 - _LISTASSETSREQUEST._serialized_start = 21589 - _LISTASSETSREQUEST._serialized_end = 21734 - _LISTASSETSRESPONSE._serialized_start = 21736 - _LISTASSETSRESPONSE._serialized_end = 21815 - _ASSETEDGE._serialized_start = 21817 - _ASSETEDGE._serialized_end = 21885 - _ASSETSCONNECTION._serialized_start = 21887 - _ASSETSCONNECTION._serialized_end = 22011 - _LISTLIQUIDITYPROVISIONSREQUEST._serialized_start = 22014 - _LISTLIQUIDITYPROVISIONSREQUEST._serialized_end = 22269 - _LISTLIQUIDITYPROVISIONSRESPONSE._serialized_start = 22272 - _LISTLIQUIDITYPROVISIONSRESPONSE._serialized_end = 22404 - _LIQUIDITYPROVISIONSEDGE._serialized_start = 22406 - _LIQUIDITYPROVISIONSEDGE._serialized_end = 22501 - _LIQUIDITYPROVISIONSCONNECTION._serialized_start = 22504 - _LIQUIDITYPROVISIONSCONNECTION._serialized_end = 22655 - _OBSERVELIQUIDITYPROVISIONSREQUEST._serialized_start = 22658 - _OBSERVELIQUIDITYPROVISIONSREQUEST._serialized_end = 22786 - _OBSERVELIQUIDITYPROVISIONSRESPONSE._serialized_start = 22788 - _OBSERVELIQUIDITYPROVISIONSRESPONSE._serialized_end = 22901 - _GETGOVERNANCEDATAREQUEST._serialized_start = 22904 - _GETGOVERNANCEDATAREQUEST._serialized_end = 23033 - _GETGOVERNANCEDATARESPONSE._serialized_start = 23035 - _GETGOVERNANCEDATARESPONSE._serialized_end = 23104 - _LISTGOVERNANCEDATAREQUEST._serialized_start = 23107 - _LISTGOVERNANCEDATAREQUEST._serialized_end = 23741 - _LISTGOVERNANCEDATAREQUEST_TYPE._serialized_start = 23461 - _LISTGOVERNANCEDATAREQUEST_TYPE._serialized_end = 23644 - _LISTGOVERNANCEDATARESPONSE._serialized_start = 23743 - _LISTGOVERNANCEDATARESPONSE._serialized_end = 23846 - _GOVERNANCEDATAEDGE._serialized_start = 23848 - _GOVERNANCEDATAEDGE._serialized_end = 23934 - _GOVERNANCEDATACONNECTION._serialized_start = 23937 - _GOVERNANCEDATACONNECTION._serialized_end = 24078 - _OBSERVEGOVERNANCEREQUEST._serialized_start = 24080 - _OBSERVEGOVERNANCEREQUEST._serialized_end = 24151 - _OBSERVEGOVERNANCERESPONSE._serialized_start = 24153 - _OBSERVEGOVERNANCERESPONSE._serialized_end = 24222 - _LISTDELEGATIONSREQUEST._serialized_start = 24225 - _LISTDELEGATIONSREQUEST._serialized_end = 24462 - _LISTDELEGATIONSRESPONSE._serialized_start = 24464 - _LISTDELEGATIONSRESPONSE._serialized_end = 24563 - _DELEGATIONEDGE._serialized_start = 24565 - _DELEGATIONEDGE._serialized_end = 24643 - _DELEGATIONSCONNECTION._serialized_start = 24646 - _DELEGATIONSCONNECTION._serialized_end = 24780 - _OBSERVEDELEGATIONSREQUEST._serialized_start = 24782 - _OBSERVEDELEGATIONSREQUEST._serialized_end = 24896 - _OBSERVEDELEGATIONSRESPONSE._serialized_start = 24898 - _OBSERVEDELEGATIONSRESPONSE._serialized_end = 24976 - _GETNETWORKDATAREQUEST._serialized_start = 24978 - _GETNETWORKDATAREQUEST._serialized_end = 25001 - _GETNETWORKDATARESPONSE._serialized_start = 25003 - _GETNETWORKDATARESPONSE._serialized_end = 25072 - _GETNODEREQUEST._serialized_start = 25074 - _GETNODEREQUEST._serialized_end = 25106 - _GETNODERESPONSE._serialized_start = 25108 - _GETNODERESPONSE._serialized_end = 25157 - _LISTNODESREQUEST._serialized_start = 25160 - _LISTNODESREQUEST._serialized_end = 25307 - _LISTNODESRESPONSE._serialized_start = 25309 - _LISTNODESRESPONSE._serialized_end = 25384 - _NODEEDGE._serialized_start = 25386 - _NODEEDGE._serialized_end = 25452 - _NODESCONNECTION._serialized_start = 25454 - _NODESCONNECTION._serialized_end = 25576 - _LISTNODESIGNATURESREQUEST._serialized_start = 25578 - _LISTNODESIGNATURESREQUEST._serialized_end = 25702 - _LISTNODESIGNATURESRESPONSE._serialized_start = 25704 - _LISTNODESIGNATURESRESPONSE._serialized_end = 25807 - _NODESIGNATUREEDGE._serialized_start = 25809 - _NODESIGNATUREEDGE._serialized_end = 25905 - _NODESIGNATURESCONNECTION._serialized_start = 25908 - _NODESIGNATURESCONNECTION._serialized_end = 26048 - _GETEPOCHREQUEST._serialized_start = 26050 - _GETEPOCHREQUEST._serialized_end = 26095 - _GETEPOCHRESPONSE._serialized_start = 26097 - _GETEPOCHRESPONSE._serialized_end = 26150 - _ESTIMATEFEEREQUEST._serialized_start = 26152 - _ESTIMATEFEEREQUEST._serialized_end = 26243 - _ESTIMATEFEERESPONSE._serialized_start = 26245 - _ESTIMATEFEERESPONSE._serialized_end = 26295 - _ESTIMATEMARGINREQUEST._serialized_start = 26298 - _ESTIMATEMARGINREQUEST._serialized_end = 26489 - _ESTIMATEMARGINRESPONSE._serialized_start = 26491 - _ESTIMATEMARGINRESPONSE._serialized_end = 26572 - _LISTNETWORKPARAMETERSREQUEST._serialized_start = 26574 - _LISTNETWORKPARAMETERSREQUEST._serialized_end = 26685 - _LISTNETWORKPARAMETERSRESPONSE._serialized_start = 26687 - _LISTNETWORKPARAMETERSRESPONSE._serialized_end = 26810 - _GETNETWORKPARAMETERREQUEST._serialized_start = 26812 - _GETNETWORKPARAMETERREQUEST._serialized_end = 26858 - _GETNETWORKPARAMETERRESPONSE._serialized_start = 26860 - _GETNETWORKPARAMETERRESPONSE._serialized_end = 26958 - _NETWORKPARAMETEREDGE._serialized_start = 26960 - _NETWORKPARAMETEREDGE._serialized_end = 27050 - _NETWORKPARAMETERCONNECTION._serialized_start = 27053 - _NETWORKPARAMETERCONNECTION._serialized_end = 27198 - _CHECKPOINT._serialized_start = 27200 - _CHECKPOINT._serialized_end = 27290 - _LISTCHECKPOINTSREQUEST._serialized_start = 27292 - _LISTCHECKPOINTSREQUEST._serialized_end = 27397 - _LISTCHECKPOINTSRESPONSE._serialized_start = 27399 - _LISTCHECKPOINTSRESPONSE._serialized_end = 27498 - _CHECKPOINTEDGE._serialized_start = 27500 - _CHECKPOINTEDGE._serialized_end = 27589 - _CHECKPOINTSCONNECTION._serialized_start = 27592 - _CHECKPOINTSCONNECTION._serialized_end = 27726 - _GETSTAKEREQUEST._serialized_start = 27728 - _GETSTAKEREQUEST._serialized_end = 27853 - _GETSTAKERESPONSE._serialized_start = 27856 - _GETSTAKERESPONSE._serialized_end = 28004 - _STAKELINKINGEDGE._serialized_start = 28006 - _STAKELINKINGEDGE._serialized_end = 28098 - _STAKESCONNECTION._serialized_start = 28101 - _STAKESCONNECTION._serialized_end = 28232 - _GETRISKFACTORSREQUEST._serialized_start = 28234 - _GETRISKFACTORSREQUEST._serialized_end = 28286 - _GETRISKFACTORSRESPONSE._serialized_start = 28288 - _GETRISKFACTORSRESPONSE._serialized_end = 28363 - _OBSERVEEVENTBUSREQUEST._serialized_start = 28366 - _OBSERVEEVENTBUSREQUEST._serialized_end = 28527 - _OBSERVEEVENTBUSRESPONSE._serialized_start = 28529 - _OBSERVEEVENTBUSRESPONSE._serialized_end = 28604 - _OBSERVELEDGERMOVEMENTSREQUEST._serialized_start = 28606 - _OBSERVELEDGERMOVEMENTSREQUEST._serialized_end = 28637 - _OBSERVELEDGERMOVEMENTSRESPONSE._serialized_start = 28639 - _OBSERVELEDGERMOVEMENTSRESPONSE._serialized_end = 28734 - _LISTKEYROTATIONSREQUEST._serialized_start = 28737 - _LISTKEYROTATIONSREQUEST._serialized_end = 28885 - _LISTKEYROTATIONSRESPONSE._serialized_start = 28887 - _LISTKEYROTATIONSRESPONSE._serialized_end = 28983 - _KEYROTATIONEDGE._serialized_start = 28985 - _KEYROTATIONEDGE._serialized_end = 29075 - _KEYROTATIONCONNECTION._serialized_start = 29078 - _KEYROTATIONCONNECTION._serialized_end = 29213 - _LISTETHEREUMKEYROTATIONSREQUEST._serialized_start = 29216 - _LISTETHEREUMKEYROTATIONSREQUEST._serialized_end = 29372 - _LISTETHEREUMKEYROTATIONSRESPONSE._serialized_start = 29374 - _LISTETHEREUMKEYROTATIONSRESPONSE._serialized_end = 29494 - _ETHEREUMKEYROTATIONSCONNECTION._serialized_start = 29497 - _ETHEREUMKEYROTATIONSCONNECTION._serialized_end = 29649 - _ETHEREUMKEYROTATIONEDGE._serialized_start = 29651 - _ETHEREUMKEYROTATIONEDGE._serialized_end = 29757 - _GETVEGATIMEREQUEST._serialized_start = 29759 - _GETVEGATIMEREQUEST._serialized_end = 29779 - _GETVEGATIMERESPONSE._serialized_start = 29781 - _GETVEGATIMERESPONSE._serialized_end = 29832 - _DATERANGE._serialized_start = 29835 - _DATERANGE._serialized_end = 29972 - _GETPROTOCOLUPGRADESTATUSREQUEST._serialized_start = 29974 - _GETPROTOCOLUPGRADESTATUSREQUEST._serialized_end = 30007 - _GETPROTOCOLUPGRADESTATUSRESPONSE._serialized_start = 30009 - _GETPROTOCOLUPGRADESTATUSRESPONSE._serialized_end = 30065 - _LISTPROTOCOLUPGRADEPROPOSALSREQUEST._serialized_start = 30068 - _LISTPROTOCOLUPGRADEPROPOSALSREQUEST._serialized_end = 30327 - _LISTPROTOCOLUPGRADEPROPOSALSRESPONSE._serialized_start = 30330 - _LISTPROTOCOLUPGRADEPROPOSALSRESPONSE._serialized_end = 30482 - _PROTOCOLUPGRADEPROPOSALCONNECTION._serialized_start = 30485 - _PROTOCOLUPGRADEPROPOSALCONNECTION._serialized_end = 30644 - _PROTOCOLUPGRADEPROPOSALEDGE._serialized_start = 30646 - _PROTOCOLUPGRADEPROPOSALEDGE._serialized_end = 30757 - _LISTCORESNAPSHOTSREQUEST._serialized_start = 30759 - _LISTCORESNAPSHOTSREQUEST._serialized_end = 30866 - _LISTCORESNAPSHOTSRESPONSE._serialized_start = 30868 - _LISTCORESNAPSHOTSRESPONSE._serialized_end = 30975 - _CORESNAPSHOTCONNECTION._serialized_start = 30978 - _CORESNAPSHOTCONNECTION._serialized_end = 31115 - _CORESNAPSHOTEDGE._serialized_start = 31117 - _CORESNAPSHOTEDGE._serialized_end = 31213 - _HISTORYSEGMENT._serialized_start = 31216 - _HISTORYSEGMENT._serialized_end = 31430 - _GETMOSTRECENTNETWORKHISTORYSEGMENTREQUEST._serialized_start = 31432 - _GETMOSTRECENTNETWORKHISTORYSEGMENTREQUEST._serialized_end = 31475 - _GETMOSTRECENTNETWORKHISTORYSEGMENTRESPONSE._serialized_start = 31478 - _GETMOSTRECENTNETWORKHISTORYSEGMENTRESPONSE._serialized_end = 31610 - _LISTALLNETWORKHISTORYSEGMENTSREQUEST._serialized_start = 31612 - _LISTALLNETWORKHISTORYSEGMENTSREQUEST._serialized_end = 31650 - _LISTALLNETWORKHISTORYSEGMENTSRESPONSE._serialized_start = 31652 - _LISTALLNETWORKHISTORYSEGMENTSRESPONSE._serialized_end = 31752 - _GETACTIVENETWORKHISTORYPEERADDRESSESREQUEST._serialized_start = 31754 - _GETACTIVENETWORKHISTORYPEERADDRESSESREQUEST._serialized_end = 31799 - _GETACTIVENETWORKHISTORYPEERADDRESSESRESPONSE._serialized_start = 31801 - _GETACTIVENETWORKHISTORYPEERADDRESSESRESPONSE._serialized_end = 31882 - _PINGREQUEST._serialized_start = 31884 - _PINGREQUEST._serialized_end = 31897 - _PINGRESPONSE._serialized_start = 31899 - _PINGRESPONSE._serialized_end = 31913 - _TRADINGDATASERVICE._serialized_start = 32444 - _TRADINGDATASERVICE._serialized_end = 41490 + _LISTPOSITIONSREQUEST._serialized_end = 3731 + _LISTPOSITIONSRESPONSE._serialized_start = 3733 + _LISTPOSITIONSRESPONSE._serialized_end = 3827 + _POSITIONSFILTER._serialized_start = 3829 + _POSITIONSFILTER._serialized_end = 3906 + _LISTALLPOSITIONSREQUEST._serialized_start = 3909 + _LISTALLPOSITIONSREQUEST._serialized_end = 4073 + _LISTALLPOSITIONSRESPONSE._serialized_start = 4075 + _LISTALLPOSITIONSRESPONSE._serialized_end = 4168 + _POSITIONEDGE._serialized_start = 4170 + _POSITIONEDGE._serialized_end = 4244 + _POSITIONCONNECTION._serialized_start = 4247 + _POSITIONCONNECTION._serialized_end = 4376 + _OBSERVEPOSITIONSREQUEST._serialized_start = 4378 + _OBSERVEPOSITIONSREQUEST._serialized_end = 4496 + _OBSERVEPOSITIONSRESPONSE._serialized_start = 4499 + _OBSERVEPOSITIONSRESPONSE._serialized_end = 4668 + _POSITIONSNAPSHOTPAGE._serialized_start = 4670 + _POSITIONSNAPSHOTPAGE._serialized_end = 4767 + _POSITIONUPDATES._serialized_start = 4769 + _POSITIONUPDATES._serialized_end = 4832 + _LEDGERENTRYFILTER._serialized_start = 4835 + _LEDGERENTRYFILTER._serialized_end = 5126 + _AGGREGATEDLEDGERENTRY._serialized_start = 5129 + _AGGREGATEDLEDGERENTRY._serialized_end = 5858 + _LISTLEDGERENTRIESREQUEST._serialized_start = 5861 + _LISTLEDGERENTRIESREQUEST._serialized_end = 6107 + _EXPORTLEDGERENTRIESREQUEST._serialized_start = 6110 + _EXPORTLEDGERENTRIESREQUEST._serialized_end = 6352 + _LISTLEDGERENTRIESRESPONSE._serialized_start = 6354 + _LISTLEDGERENTRIESRESPONSE._serialized_end = 6472 + _EXPORTLEDGERENTRIESRESPONSE._serialized_start = 6474 + _EXPORTLEDGERENTRIESRESPONSE._serialized_end = 6579 + _AGGREGATEDLEDGERENTRIESEDGE._serialized_start = 6581 + _AGGREGATEDLEDGERENTRIESEDGE._serialized_end = 6694 + _AGGREGATEDLEDGERENTRIESCONNECTION._serialized_start = 6697 + _AGGREGATEDLEDGERENTRIESCONNECTION._serialized_end = 6856 + _LISTBALANCECHANGESREQUEST._serialized_start = 6859 + _LISTBALANCECHANGESREQUEST._serialized_end = 7102 + _LISTBALANCECHANGESRESPONSE._serialized_start = 7104 + _LISTBALANCECHANGESRESPONSE._serialized_end = 7206 + _GETBALANCEHISTORYREQUEST._serialized_start = 7209 + _GETBALANCEHISTORYREQUEST._serialized_end = 7509 + _GETBALANCEHISTORYRESPONSE._serialized_start = 7511 + _GETBALANCEHISTORYRESPONSE._serialized_end = 7612 + _AGGREGATEDBALANCEEDGE._serialized_start = 7614 + _AGGREGATEDBALANCEEDGE._serialized_end = 7717 + _AGGREGATEDBALANCECONNECTION._serialized_start = 7720 + _AGGREGATEDBALANCECONNECTION._serialized_end = 7867 + _ACCOUNTFILTER._serialized_start = 7870 + _ACCOUNTFILTER._serialized_end = 8028 + _AGGREGATEDBALANCE._serialized_start = 8031 + _AGGREGATEDBALANCE._serialized_end = 8320 + _OBSERVEMARKETSDEPTHREQUEST._serialized_start = 8322 + _OBSERVEMARKETSDEPTHREQUEST._serialized_end = 8381 + _OBSERVEMARKETSDEPTHRESPONSE._serialized_start = 8383 + _OBSERVEMARKETSDEPTHRESPONSE._serialized_end = 8466 + _OBSERVEMARKETSDEPTHUPDATESREQUEST._serialized_start = 8468 + _OBSERVEMARKETSDEPTHUPDATESREQUEST._serialized_end = 8534 + _OBSERVEMARKETSDEPTHUPDATESRESPONSE._serialized_start = 8536 + _OBSERVEMARKETSDEPTHUPDATESRESPONSE._serialized_end = 8621 + _OBSERVEMARKETSDATAREQUEST._serialized_start = 8623 + _OBSERVEMARKETSDATAREQUEST._serialized_end = 8681 + _OBSERVEMARKETSDATARESPONSE._serialized_start = 8683 + _OBSERVEMARKETSDATARESPONSE._serialized_end = 8762 + _GETLATESTMARKETDEPTHREQUEST._serialized_start = 8764 + _GETLATESTMARKETDEPTHREQUEST._serialized_end = 8870 + _GETLATESTMARKETDEPTHRESPONSE._serialized_start = 8873 + _GETLATESTMARKETDEPTHRESPONSE._serialized_end = 9091 + _LISTLATESTMARKETDATAREQUEST._serialized_start = 9093 + _LISTLATESTMARKETDATAREQUEST._serialized_end = 9122 + _LISTLATESTMARKETDATARESPONSE._serialized_start = 9124 + _LISTLATESTMARKETDATARESPONSE._serialized_end = 9207 + _GETLATESTMARKETDATAREQUEST._serialized_start = 9209 + _GETLATESTMARKETDATAREQUEST._serialized_end = 9266 + _GETLATESTMARKETDATARESPONSE._serialized_start = 9268 + _GETLATESTMARKETDATARESPONSE._serialized_end = 9348 + _GETMARKETDATAHISTORYBYIDREQUEST._serialized_start = 9351 + _GETMARKETDATAHISTORYBYIDREQUEST._serialized_end = 9731 + _GETMARKETDATAHISTORYBYIDRESPONSE._serialized_start = 9733 + _GETMARKETDATAHISTORYBYIDRESPONSE._serialized_end = 9839 + _MARKETDATAEDGE._serialized_start = 9841 + _MARKETDATAEDGE._serialized_end = 9919 + _MARKETDATACONNECTION._serialized_start = 9922 + _MARKETDATACONNECTION._serialized_end = 10055 + _MARKETSDATASUBSCRIBEREQUEST._serialized_start = 10057 + _MARKETSDATASUBSCRIBEREQUEST._serialized_end = 10115 + _MARKETSDATASUBSCRIBERESPONSE._serialized_start = 10117 + _MARKETSDATASUBSCRIBERESPONSE._serialized_end = 10198 + _LISTTRANSFERSREQUEST._serialized_start = 10201 + _LISTTRANSFERSREQUEST._serialized_end = 10410 + _LISTTRANSFERSRESPONSE._serialized_start = 10412 + _LISTTRANSFERSRESPONSE._serialized_end = 10502 + _TRANSFEREDGE._serialized_start = 10504 + _TRANSFEREDGE._serialized_end = 10588 + _TRANSFERCONNECTION._serialized_start = 10591 + _TRANSFERCONNECTION._serialized_end = 10720 + _GETNETWORKLIMITSREQUEST._serialized_start = 10722 + _GETNETWORKLIMITSREQUEST._serialized_end = 10747 + _GETNETWORKLIMITSRESPONSE._serialized_start = 10749 + _GETNETWORKLIMITSRESPONSE._serialized_end = 10820 + _LISTCANDLEINTERVALSREQUEST._serialized_start = 10822 + _LISTCANDLEINTERVALSREQUEST._serialized_end = 10879 + _INTERVALTOCANDLEID._serialized_start = 10881 + _INTERVALTOCANDLEID._serialized_end = 10958 + _LISTCANDLEINTERVALSRESPONSE._serialized_start = 10960 + _LISTCANDLEINTERVALSRESPONSE._serialized_end = 11077 + _CANDLE._serialized_start = 11080 + _CANDLE._serialized_end = 11247 + _OBSERVECANDLEDATAREQUEST._serialized_start = 11249 + _OBSERVECANDLEDATAREQUEST._serialized_end = 11304 + _OBSERVECANDLEDATARESPONSE._serialized_start = 11306 + _OBSERVECANDLEDATARESPONSE._serialized_end = 11382 + _LISTCANDLEDATAREQUEST._serialized_start = 11385 + _LISTCANDLEDATAREQUEST._serialized_end = 11636 + _LISTCANDLEDATARESPONSE._serialized_start = 11638 + _LISTCANDLEDATARESPONSE._serialized_end = 11727 + _CANDLEEDGE._serialized_start = 11729 + _CANDLEEDGE._serialized_end = 11810 + _CANDLEDATACONNECTION._serialized_start = 11813 + _CANDLEDATACONNECTION._serialized_end = 11942 + _LISTVOTESREQUEST._serialized_start = 11945 + _LISTVOTESREQUEST._serialized_end = 12143 + _LISTVOTESRESPONSE._serialized_start = 12145 + _LISTVOTESRESPONSE._serialized_end = 12219 + _VOTEEDGE._serialized_start = 12221 + _VOTEEDGE._serialized_end = 12287 + _VOTECONNECTION._serialized_start = 12289 + _VOTECONNECTION._serialized_end = 12410 + _OBSERVEVOTESREQUEST._serialized_start = 12412 + _OBSERVEVOTESREQUEST._serialized_end = 12532 + _OBSERVEVOTESRESPONSE._serialized_start = 12534 + _OBSERVEVOTESRESPONSE._serialized_end = 12588 + _LISTERC20MULTISIGSIGNERADDEDBUNDLESREQUEST._serialized_start = 12591 + _LISTERC20MULTISIGSIGNERADDEDBUNDLESREQUEST._serialized_end = 12780 + _LISTERC20MULTISIGSIGNERADDEDBUNDLESRESPONSE._serialized_start = 12782 + _LISTERC20MULTISIGSIGNERADDEDBUNDLESRESPONSE._serialized_end = 12906 + _ERC20MULTISIGSIGNERADDEDEDGE._serialized_start = 12908 + _ERC20MULTISIGSIGNERADDEDEDGE._serialized_end = 13024 + _ERC20MULTISIGSIGNERADDEDBUNDLEEDGE._serialized_start = 13027 + _ERC20MULTISIGSIGNERADDEDBUNDLEEDGE._serialized_end = 13156 + _ERC20MULTISIGSIGNERADDEDCONNECTION._serialized_start = 13159 + _ERC20MULTISIGSIGNERADDEDCONNECTION._serialized_end = 13326 + _ERC20MULTISIGSIGNERADDEDBUNDLE._serialized_start = 13329 + _ERC20MULTISIGSIGNERADDEDBUNDLE._serialized_end = 13535 + _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESREQUEST._serialized_start = 13538 + _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESREQUEST._serialized_end = 13729 + _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESRESPONSE._serialized_start = 13732 + _LISTERC20MULTISIGSIGNERREMOVEDBUNDLESRESPONSE._serialized_end = 13860 + _ERC20MULTISIGSIGNERREMOVEDEDGE._serialized_start = 13862 + _ERC20MULTISIGSIGNERREMOVEDEDGE._serialized_end = 13982 + _ERC20MULTISIGSIGNERREMOVEDBUNDLEEDGE._serialized_start = 13985 + _ERC20MULTISIGSIGNERREMOVEDBUNDLEEDGE._serialized_end = 14118 + _ERC20MULTISIGSIGNERREMOVEDCONNECTION._serialized_start = 14121 + _ERC20MULTISIGSIGNERREMOVEDCONNECTION._serialized_end = 14292 + _ERC20MULTISIGSIGNERREMOVEDBUNDLE._serialized_start = 14295 + _ERC20MULTISIGSIGNERREMOVEDBUNDLE._serialized_end = 14503 + _GETERC20LISTASSETBUNDLEREQUEST._serialized_start = 14505 + _GETERC20LISTASSETBUNDLEREQUEST._serialized_end = 14564 + _GETERC20LISTASSETBUNDLERESPONSE._serialized_start = 14567 + _GETERC20LISTASSETBUNDLERESPONSE._serialized_end = 14725 + _GETERC20SETASSETLIMITSBUNDLEREQUEST._serialized_start = 14727 + _GETERC20SETASSETLIMITSBUNDLEREQUEST._serialized_end = 14797 + _GETERC20SETASSETLIMITSBUNDLERESPONSE._serialized_start = 14800 + _GETERC20SETASSETLIMITSBUNDLERESPONSE._serialized_end = 15032 + _GETERC20WITHDRAWALAPPROVALREQUEST._serialized_start = 15034 + _GETERC20WITHDRAWALAPPROVALREQUEST._serialized_end = 15106 + _GETERC20WITHDRAWALAPPROVALRESPONSE._serialized_start = 15109 + _GETERC20WITHDRAWALAPPROVALRESPONSE._serialized_end = 15331 + _GETLASTTRADEREQUEST._serialized_start = 15333 + _GETLASTTRADEREQUEST._serialized_end = 15383 + _GETLASTTRADERESPONSE._serialized_start = 15385 + _GETLASTTRADERESPONSE._serialized_end = 15442 + _LISTTRADESREQUEST._serialized_start = 15445 + _LISTTRADESREQUEST._serialized_end = 15762 + _LISTTRADESRESPONSE._serialized_start = 15764 + _LISTTRADESRESPONSE._serialized_end = 15842 + _TRADECONNECTION._serialized_start = 15844 + _TRADECONNECTION._serialized_end = 15967 + _TRADEEDGE._serialized_start = 15969 + _TRADEEDGE._serialized_end = 16037 + _OBSERVETRADESREQUEST._serialized_start = 16039 + _OBSERVETRADESREQUEST._serialized_end = 16154 + _OBSERVETRADESRESPONSE._serialized_start = 16156 + _OBSERVETRADESRESPONSE._serialized_end = 16216 + _GETORACLESPECREQUEST._serialized_start = 16218 + _GETORACLESPECREQUEST._serialized_end = 16278 + _GETORACLESPECRESPONSE._serialized_start = 16280 + _GETORACLESPECRESPONSE._serialized_end = 16354 + _LISTORACLESPECSREQUEST._serialized_start = 16356 + _LISTORACLESPECSREQUEST._serialized_end = 16461 + _LISTORACLESPECSRESPONSE._serialized_start = 16463 + _LISTORACLESPECSRESPONSE._serialized_end = 16563 + _LISTORACLEDATAREQUEST._serialized_start = 16566 + _LISTORACLEDATAREQUEST._serialized_end = 16732 + _LISTORACLEDATARESPONSE._serialized_start = 16734 + _LISTORACLEDATARESPONSE._serialized_end = 16830 + _ORACLESPECEDGE._serialized_start = 16832 + _ORACLESPECEDGE._serialized_end = 16910 + _ORACLESPECSCONNECTION._serialized_start = 16913 + _ORACLESPECSCONNECTION._serialized_end = 17047 + _ORACLEDATAEDGE._serialized_start = 17049 + _ORACLEDATAEDGE._serialized_end = 17127 + _ORACLEDATACONNECTION._serialized_start = 17130 + _ORACLEDATACONNECTION._serialized_end = 17263 + _GETMARKETREQUEST._serialized_start = 17265 + _GETMARKETREQUEST._serialized_end = 17312 + _GETMARKETRESPONSE._serialized_start = 17314 + _GETMARKETRESPONSE._serialized_end = 17371 + _LISTMARKETSREQUEST._serialized_start = 17374 + _LISTMARKETSREQUEST._serialized_end = 17541 + _LISTMARKETSRESPONSE._serialized_start = 17543 + _LISTMARKETSRESPONSE._serialized_end = 17625 + _MARKETEDGE._serialized_start = 17627 + _MARKETEDGE._serialized_end = 17697 + _MARKETCONNECTION._serialized_start = 17699 + _MARKETCONNECTION._serialized_end = 17824 + _GETPARTYREQUEST._serialized_start = 17826 + _GETPARTYREQUEST._serialized_end = 17870 + _GETPARTYRESPONSE._serialized_start = 17872 + _GETPARTYRESPONSE._serialized_end = 17925 + _LISTPARTIESREQUEST._serialized_start = 17927 + _LISTPARTIESREQUEST._serialized_end = 18035 + _LISTPARTIESRESPONSE._serialized_start = 18037 + _LISTPARTIESRESPONSE._serialized_end = 18118 + _PARTYEDGE._serialized_start = 18120 + _PARTYEDGE._serialized_end = 18188 + _PARTYCONNECTION._serialized_start = 18190 + _PARTYCONNECTION._serialized_end = 18313 + _ORDEREDGE._serialized_start = 18315 + _ORDEREDGE._serialized_end = 18383 + _LISTMARGINLEVELSREQUEST._serialized_start = 18386 + _LISTMARGINLEVELSREQUEST._serialized_end = 18528 + _LISTMARGINLEVELSRESPONSE._serialized_start = 18530 + _LISTMARGINLEVELSRESPONSE._serialized_end = 18628 + _OBSERVEMARGINLEVELSREQUEST._serialized_start = 18630 + _OBSERVEMARGINLEVELSREQUEST._serialized_end = 18733 + _OBSERVEMARGINLEVELSRESPONSE._serialized_start = 18735 + _OBSERVEMARGINLEVELSRESPONSE._serialized_end = 18821 + _ORDERCONNECTION._serialized_start = 18823 + _ORDERCONNECTION._serialized_end = 18946 + _MARGINEDGE._serialized_start = 18948 + _MARGINEDGE._serialized_end = 19024 + _MARGINCONNECTION._serialized_start = 19026 + _MARGINCONNECTION._serialized_end = 19151 + _LISTREWARDSREQUEST._serialized_start = 19154 + _LISTREWARDSREQUEST._serialized_end = 19423 + _LISTREWARDSRESPONSE._serialized_start = 19425 + _LISTREWARDSRESPONSE._serialized_end = 19508 + _REWARDEDGE._serialized_start = 19510 + _REWARDEDGE._serialized_end = 19580 + _REWARDSCONNECTION._serialized_start = 19582 + _REWARDSCONNECTION._serialized_end = 19708 + _LISTREWARDSUMMARIESREQUEST._serialized_start = 19711 + _LISTREWARDSUMMARIESREQUEST._serialized_end = 19910 + _LISTREWARDSUMMARIESRESPONSE._serialized_start = 19912 + _LISTREWARDSUMMARIESRESPONSE._serialized_end = 19992 + _REWARDSUMMARYFILTER._serialized_start = 19995 + _REWARDSUMMARYFILTER._serialized_end = 20172 + _LISTEPOCHREWARDSUMMARIESREQUEST._serialized_start = 20175 + _LISTEPOCHREWARDSUMMARIESREQUEST._serialized_end = 20351 + _LISTEPOCHREWARDSUMMARIESRESPONSE._serialized_start = 20353 + _LISTEPOCHREWARDSUMMARIESRESPONSE._serialized_end = 20464 + _EPOCHREWARDSUMMARYCONNECTION._serialized_start = 20467 + _EPOCHREWARDSUMMARYCONNECTION._serialized_end = 20616 + _EPOCHREWARDSUMMARYEDGE._serialized_start = 20618 + _EPOCHREWARDSUMMARYEDGE._serialized_end = 20712 + _OBSERVEREWARDSREQUEST._serialized_start = 20714 + _OBSERVEREWARDSREQUEST._serialized_end = 20827 + _OBSERVEREWARDSRESPONSE._serialized_start = 20829 + _OBSERVEREWARDSRESPONSE._serialized_end = 20891 + _GETDEPOSITREQUEST._serialized_start = 20893 + _GETDEPOSITREQUEST._serialized_end = 20928 + _GETDEPOSITRESPONSE._serialized_start = 20930 + _GETDEPOSITRESPONSE._serialized_end = 20991 + _LISTDEPOSITSREQUEST._serialized_start = 20994 + _LISTDEPOSITSREQUEST._serialized_end = 21202 + _LISTDEPOSITSRESPONSE._serialized_start = 21204 + _LISTDEPOSITSRESPONSE._serialized_end = 21291 + _DEPOSITEDGE._serialized_start = 21293 + _DEPOSITEDGE._serialized_end = 21365 + _DEPOSITSCONNECTION._serialized_start = 21368 + _DEPOSITSCONNECTION._serialized_end = 21496 + _GETWITHDRAWALREQUEST._serialized_start = 21498 + _GETWITHDRAWALREQUEST._serialized_end = 21536 + _GETWITHDRAWALRESPONSE._serialized_start = 21538 + _GETWITHDRAWALRESPONSE._serialized_end = 21611 + _LISTWITHDRAWALSREQUEST._serialized_start = 21614 + _LISTWITHDRAWALSREQUEST._serialized_end = 21825 + _LISTWITHDRAWALSRESPONSE._serialized_start = 21827 + _LISTWITHDRAWALSRESPONSE._serialized_end = 21926 + _WITHDRAWALEDGE._serialized_start = 21928 + _WITHDRAWALEDGE._serialized_end = 22006 + _WITHDRAWALSCONNECTION._serialized_start = 22009 + _WITHDRAWALSCONNECTION._serialized_end = 22143 + _GETASSETREQUEST._serialized_start = 22145 + _GETASSETREQUEST._serialized_end = 22189 + _GETASSETRESPONSE._serialized_start = 22191 + _GETASSETRESPONSE._serialized_end = 22244 + _LISTASSETSREQUEST._serialized_start = 22247 + _LISTASSETSREQUEST._serialized_end = 22392 + _LISTASSETSRESPONSE._serialized_start = 22394 + _LISTASSETSRESPONSE._serialized_end = 22473 + _ASSETEDGE._serialized_start = 22475 + _ASSETEDGE._serialized_end = 22543 + _ASSETSCONNECTION._serialized_start = 22545 + _ASSETSCONNECTION._serialized_end = 22669 + _LISTLIQUIDITYPROVISIONSREQUEST._serialized_start = 22672 + _LISTLIQUIDITYPROVISIONSREQUEST._serialized_end = 22927 + _LISTLIQUIDITYPROVISIONSRESPONSE._serialized_start = 22930 + _LISTLIQUIDITYPROVISIONSRESPONSE._serialized_end = 23062 + _LIQUIDITYPROVISIONSEDGE._serialized_start = 23064 + _LIQUIDITYPROVISIONSEDGE._serialized_end = 23159 + _LIQUIDITYPROVISIONSCONNECTION._serialized_start = 23162 + _LIQUIDITYPROVISIONSCONNECTION._serialized_end = 23313 + _OBSERVELIQUIDITYPROVISIONSREQUEST._serialized_start = 23316 + _OBSERVELIQUIDITYPROVISIONSREQUEST._serialized_end = 23444 + _OBSERVELIQUIDITYPROVISIONSRESPONSE._serialized_start = 23446 + _OBSERVELIQUIDITYPROVISIONSRESPONSE._serialized_end = 23559 + _GETGOVERNANCEDATAREQUEST._serialized_start = 23562 + _GETGOVERNANCEDATAREQUEST._serialized_end = 23691 + _GETGOVERNANCEDATARESPONSE._serialized_start = 23693 + _GETGOVERNANCEDATARESPONSE._serialized_end = 23762 + _LISTGOVERNANCEDATAREQUEST._serialized_start = 23765 + _LISTGOVERNANCEDATAREQUEST._serialized_end = 24399 + _LISTGOVERNANCEDATAREQUEST_TYPE._serialized_start = 24119 + _LISTGOVERNANCEDATAREQUEST_TYPE._serialized_end = 24302 + _LISTGOVERNANCEDATARESPONSE._serialized_start = 24401 + _LISTGOVERNANCEDATARESPONSE._serialized_end = 24504 + _GOVERNANCEDATAEDGE._serialized_start = 24506 + _GOVERNANCEDATAEDGE._serialized_end = 24592 + _GOVERNANCEDATACONNECTION._serialized_start = 24595 + _GOVERNANCEDATACONNECTION._serialized_end = 24736 + _OBSERVEGOVERNANCEREQUEST._serialized_start = 24738 + _OBSERVEGOVERNANCEREQUEST._serialized_end = 24809 + _OBSERVEGOVERNANCERESPONSE._serialized_start = 24811 + _OBSERVEGOVERNANCERESPONSE._serialized_end = 24880 + _LISTDELEGATIONSREQUEST._serialized_start = 24883 + _LISTDELEGATIONSREQUEST._serialized_end = 25120 + _LISTDELEGATIONSRESPONSE._serialized_start = 25122 + _LISTDELEGATIONSRESPONSE._serialized_end = 25221 + _DELEGATIONEDGE._serialized_start = 25223 + _DELEGATIONEDGE._serialized_end = 25301 + _DELEGATIONSCONNECTION._serialized_start = 25304 + _DELEGATIONSCONNECTION._serialized_end = 25438 + _OBSERVEDELEGATIONSREQUEST._serialized_start = 25440 + _OBSERVEDELEGATIONSREQUEST._serialized_end = 25554 + _OBSERVEDELEGATIONSRESPONSE._serialized_start = 25556 + _OBSERVEDELEGATIONSRESPONSE._serialized_end = 25634 + _GETNETWORKDATAREQUEST._serialized_start = 25636 + _GETNETWORKDATAREQUEST._serialized_end = 25659 + _GETNETWORKDATARESPONSE._serialized_start = 25661 + _GETNETWORKDATARESPONSE._serialized_end = 25730 + _GETNODEREQUEST._serialized_start = 25732 + _GETNODEREQUEST._serialized_end = 25764 + _GETNODERESPONSE._serialized_start = 25766 + _GETNODERESPONSE._serialized_end = 25815 + _LISTNODESREQUEST._serialized_start = 25818 + _LISTNODESREQUEST._serialized_end = 25965 + _LISTNODESRESPONSE._serialized_start = 25967 + _LISTNODESRESPONSE._serialized_end = 26042 + _NODEEDGE._serialized_start = 26044 + _NODEEDGE._serialized_end = 26110 + _NODESCONNECTION._serialized_start = 26112 + _NODESCONNECTION._serialized_end = 26234 + _LISTNODESIGNATURESREQUEST._serialized_start = 26236 + _LISTNODESIGNATURESREQUEST._serialized_end = 26360 + _LISTNODESIGNATURESRESPONSE._serialized_start = 26362 + _LISTNODESIGNATURESRESPONSE._serialized_end = 26465 + _NODESIGNATUREEDGE._serialized_start = 26467 + _NODESIGNATUREEDGE._serialized_end = 26563 + _NODESIGNATURESCONNECTION._serialized_start = 26566 + _NODESIGNATURESCONNECTION._serialized_end = 26706 + _GETEPOCHREQUEST._serialized_start = 26708 + _GETEPOCHREQUEST._serialized_end = 26753 + _GETEPOCHRESPONSE._serialized_start = 26755 + _GETEPOCHRESPONSE._serialized_end = 26808 + _ESTIMATEFEEREQUEST._serialized_start = 26810 + _ESTIMATEFEEREQUEST._serialized_end = 26901 + _ESTIMATEFEERESPONSE._serialized_start = 26903 + _ESTIMATEFEERESPONSE._serialized_end = 26953 + _ESTIMATEMARGINREQUEST._serialized_start = 26956 + _ESTIMATEMARGINREQUEST._serialized_end = 27147 + _ESTIMATEMARGINRESPONSE._serialized_start = 27149 + _ESTIMATEMARGINRESPONSE._serialized_end = 27230 + _LISTNETWORKPARAMETERSREQUEST._serialized_start = 27232 + _LISTNETWORKPARAMETERSREQUEST._serialized_end = 27343 + _LISTNETWORKPARAMETERSRESPONSE._serialized_start = 27345 + _LISTNETWORKPARAMETERSRESPONSE._serialized_end = 27468 + _GETNETWORKPARAMETERREQUEST._serialized_start = 27470 + _GETNETWORKPARAMETERREQUEST._serialized_end = 27516 + _GETNETWORKPARAMETERRESPONSE._serialized_start = 27518 + _GETNETWORKPARAMETERRESPONSE._serialized_end = 27616 + _NETWORKPARAMETEREDGE._serialized_start = 27618 + _NETWORKPARAMETEREDGE._serialized_end = 27708 + _NETWORKPARAMETERCONNECTION._serialized_start = 27711 + _NETWORKPARAMETERCONNECTION._serialized_end = 27856 + _CHECKPOINT._serialized_start = 27858 + _CHECKPOINT._serialized_end = 27948 + _LISTCHECKPOINTSREQUEST._serialized_start = 27950 + _LISTCHECKPOINTSREQUEST._serialized_end = 28055 + _LISTCHECKPOINTSRESPONSE._serialized_start = 28057 + _LISTCHECKPOINTSRESPONSE._serialized_end = 28156 + _CHECKPOINTEDGE._serialized_start = 28158 + _CHECKPOINTEDGE._serialized_end = 28247 + _CHECKPOINTSCONNECTION._serialized_start = 28250 + _CHECKPOINTSCONNECTION._serialized_end = 28384 + _GETSTAKEREQUEST._serialized_start = 28386 + _GETSTAKEREQUEST._serialized_end = 28511 + _GETSTAKERESPONSE._serialized_start = 28514 + _GETSTAKERESPONSE._serialized_end = 28662 + _STAKELINKINGEDGE._serialized_start = 28664 + _STAKELINKINGEDGE._serialized_end = 28756 + _STAKESCONNECTION._serialized_start = 28759 + _STAKESCONNECTION._serialized_end = 28890 + _GETRISKFACTORSREQUEST._serialized_start = 28892 + _GETRISKFACTORSREQUEST._serialized_end = 28944 + _GETRISKFACTORSRESPONSE._serialized_start = 28946 + _GETRISKFACTORSRESPONSE._serialized_end = 29021 + _OBSERVEEVENTBUSREQUEST._serialized_start = 29024 + _OBSERVEEVENTBUSREQUEST._serialized_end = 29185 + _OBSERVEEVENTBUSRESPONSE._serialized_start = 29187 + _OBSERVEEVENTBUSRESPONSE._serialized_end = 29262 + _OBSERVELEDGERMOVEMENTSREQUEST._serialized_start = 29264 + _OBSERVELEDGERMOVEMENTSREQUEST._serialized_end = 29295 + _OBSERVELEDGERMOVEMENTSRESPONSE._serialized_start = 29297 + _OBSERVELEDGERMOVEMENTSRESPONSE._serialized_end = 29392 + _LISTKEYROTATIONSREQUEST._serialized_start = 29395 + _LISTKEYROTATIONSREQUEST._serialized_end = 29543 + _LISTKEYROTATIONSRESPONSE._serialized_start = 29545 + _LISTKEYROTATIONSRESPONSE._serialized_end = 29641 + _KEYROTATIONEDGE._serialized_start = 29643 + _KEYROTATIONEDGE._serialized_end = 29733 + _KEYROTATIONCONNECTION._serialized_start = 29736 + _KEYROTATIONCONNECTION._serialized_end = 29871 + _LISTETHEREUMKEYROTATIONSREQUEST._serialized_start = 29874 + _LISTETHEREUMKEYROTATIONSREQUEST._serialized_end = 30030 + _LISTETHEREUMKEYROTATIONSRESPONSE._serialized_start = 30032 + _LISTETHEREUMKEYROTATIONSRESPONSE._serialized_end = 30152 + _ETHEREUMKEYROTATIONSCONNECTION._serialized_start = 30155 + _ETHEREUMKEYROTATIONSCONNECTION._serialized_end = 30307 + _ETHEREUMKEYROTATIONEDGE._serialized_start = 30309 + _ETHEREUMKEYROTATIONEDGE._serialized_end = 30415 + _GETVEGATIMEREQUEST._serialized_start = 30417 + _GETVEGATIMEREQUEST._serialized_end = 30437 + _GETVEGATIMERESPONSE._serialized_start = 30439 + _GETVEGATIMERESPONSE._serialized_end = 30490 + _DATERANGE._serialized_start = 30493 + _DATERANGE._serialized_end = 30630 + _GETPROTOCOLUPGRADESTATUSREQUEST._serialized_start = 30632 + _GETPROTOCOLUPGRADESTATUSREQUEST._serialized_end = 30665 + _GETPROTOCOLUPGRADESTATUSRESPONSE._serialized_start = 30667 + _GETPROTOCOLUPGRADESTATUSRESPONSE._serialized_end = 30723 + _LISTPROTOCOLUPGRADEPROPOSALSREQUEST._serialized_start = 30726 + _LISTPROTOCOLUPGRADEPROPOSALSREQUEST._serialized_end = 30985 + _LISTPROTOCOLUPGRADEPROPOSALSRESPONSE._serialized_start = 30988 + _LISTPROTOCOLUPGRADEPROPOSALSRESPONSE._serialized_end = 31140 + _PROTOCOLUPGRADEPROPOSALCONNECTION._serialized_start = 31143 + _PROTOCOLUPGRADEPROPOSALCONNECTION._serialized_end = 31302 + _PROTOCOLUPGRADEPROPOSALEDGE._serialized_start = 31304 + _PROTOCOLUPGRADEPROPOSALEDGE._serialized_end = 31415 + _LISTCORESNAPSHOTSREQUEST._serialized_start = 31417 + _LISTCORESNAPSHOTSREQUEST._serialized_end = 31524 + _LISTCORESNAPSHOTSRESPONSE._serialized_start = 31526 + _LISTCORESNAPSHOTSRESPONSE._serialized_end = 31633 + _CORESNAPSHOTCONNECTION._serialized_start = 31636 + _CORESNAPSHOTCONNECTION._serialized_end = 31773 + _CORESNAPSHOTEDGE._serialized_start = 31775 + _CORESNAPSHOTEDGE._serialized_end = 31871 + _HISTORYSEGMENT._serialized_start = 31874 + _HISTORYSEGMENT._serialized_end = 32061 + _GETMOSTRECENTNETWORKHISTORYSEGMENTREQUEST._serialized_start = 32063 + _GETMOSTRECENTNETWORKHISTORYSEGMENTREQUEST._serialized_end = 32106 + _GETMOSTRECENTNETWORKHISTORYSEGMENTRESPONSE._serialized_start = 32109 + _GETMOSTRECENTNETWORKHISTORYSEGMENTRESPONSE._serialized_end = 32250 + _LISTALLNETWORKHISTORYSEGMENTSREQUEST._serialized_start = 32252 + _LISTALLNETWORKHISTORYSEGMENTSREQUEST._serialized_end = 32290 + _LISTALLNETWORKHISTORYSEGMENTSRESPONSE._serialized_start = 32292 + _LISTALLNETWORKHISTORYSEGMENTSRESPONSE._serialized_end = 32392 + _GETACTIVENETWORKHISTORYPEERADDRESSESREQUEST._serialized_start = 32394 + _GETACTIVENETWORKHISTORYPEERADDRESSESREQUEST._serialized_end = 32439 + _GETACTIVENETWORKHISTORYPEERADDRESSESRESPONSE._serialized_start = 32441 + _GETACTIVENETWORKHISTORYPEERADDRESSESRESPONSE._serialized_end = 32522 + _NETWORKHISTORYSTATUSREQUEST._serialized_start = 32524 + _NETWORKHISTORYSTATUSREQUEST._serialized_end = 32553 + _NETWORKHISTORYSTATUSRESPONSE._serialized_start = 32556 + _NETWORKHISTORYSTATUSRESPONSE._serialized_end = 32729 + _NETWORKHISTORYBOOTSTRAPPEERSREQUEST._serialized_start = 32731 + _NETWORKHISTORYBOOTSTRAPPEERSREQUEST._serialized_end = 32768 + _NETWORKHISTORYBOOTSTRAPPEERSRESPONSE._serialized_start = 32770 + _NETWORKHISTORYBOOTSTRAPPEERSRESPONSE._serialized_end = 32849 + _PINGREQUEST._serialized_start = 32851 + _PINGREQUEST._serialized_end = 32864 + _PINGRESPONSE._serialized_start = 32866 + _PINGRESPONSE._serialized_end = 32880 + _TRADINGDATASERVICE._serialized_start = 33411 + _TRADINGDATASERVICE._serialized_end = 42826 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/data_node/api/v2/trading_data_pb2_grpc.py b/vega_sim/proto/data_node/api/v2/trading_data_pb2_grpc.py index 97c277570..2c30ee4e0 100644 --- a/vega_sim/proto/data_node/api/v2/trading_data_pb2_grpc.py +++ b/vega_sim/proto/data_node/api/v2/trading_data_pb2_grpc.py @@ -56,6 +56,11 @@ def __init__(self, channel): request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListPositionsRequest.SerializeToString, response_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListPositionsResponse.FromString, ) + self.ListAllPositions = channel.unary_unary( + "/datanode.api.v2.TradingDataService/ListAllPositions", + request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListAllPositionsRequest.SerializeToString, + response_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListAllPositionsResponse.FromString, + ) self.ObservePositions = channel.unary_stream( "/datanode.api.v2.TradingDataService/ObservePositions", request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ObservePositionsRequest.SerializeToString, @@ -431,6 +436,16 @@ def __init__(self, channel): request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.GetActiveNetworkHistoryPeerAddressesRequest.SerializeToString, response_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.GetActiveNetworkHistoryPeerAddressesResponse.FromString, ) + self.NetworkHistoryStatus = channel.unary_unary( + "/datanode.api.v2.TradingDataService/NetworkHistoryStatus", + request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryStatusRequest.SerializeToString, + response_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryStatusResponse.FromString, + ) + self.NetworkHistoryBootstrapPeers = channel.unary_unary( + "/datanode.api.v2.TradingDataService/NetworkHistoryBootstrapPeers", + request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryBootstrapPeersRequest.SerializeToString, + response_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryBootstrapPeersResponse.FromString, + ) self.Ping = channel.unary_unary( "/datanode.api.v2.TradingDataService/Ping", request_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.PingRequest.SerializeToString, @@ -507,6 +522,16 @@ def ObserveOrders(self, request, context): raise NotImplementedError("Method not implemented!") def ListPositions(self, request, context): + """Positions (deprecated) + + Get a list of positions by party (public key) using cursor based pagination + Deprecated: use ListAllPositions instead + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def ListAllPositions(self, request, context): """Positions Get a list of positions by party (public key) using cursor based pagination @@ -528,8 +553,8 @@ def ListLedgerEntries(self, request, context): """Ledger entries Get ledger entries by asset, market, party, account type, transfer type within the given date range. - This query requests and sums number of the ledger entries of a given subset of accounts, specified via the 'filter' argument. - It returns a timeseries (implemented as a list of AggregateLedgerEntry structs), with a row for every time + This query requests and sums the number of ledger entries from a given subset of accounts, specified via the 'filter' argument. + It returns a time series (implemented as a list of AggregateLedgerEntry structs), with a row for every time the summed ledger entries of the set of specified accounts changes. Listed queries should be limited to a single party from each side only. If no or more than one parties are provided for sending and receiving accounts - the query returns error. @@ -940,7 +965,7 @@ def GetAsset(self, request, context): def ListAssets(self, request, context): """Assets list - Get a list of assets using cusor based pagination + Get a list of assets using cursor based pagination """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") @@ -1223,6 +1248,26 @@ def GetActiveNetworkHistoryPeerAddresses(self, request, context): context.set_details("Method not implemented!") raise NotImplementedError("Method not implemented!") + def NetworkHistoryStatus(self, request, context): + """Network history status + + Retrieves information about the current state of network history + Response contains the network history status + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def NetworkHistoryBootstrapPeers(self, request, context): + """Network history bootstrap peers + + Retrieves the nodes bootstrap peers + Response contains the bootstrap peers + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + def Ping(self, request, context): """Ping @@ -1275,6 +1320,11 @@ def add_TradingDataServiceServicer_to_server(servicer, server): request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListPositionsRequest.FromString, response_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListPositionsResponse.SerializeToString, ), + "ListAllPositions": grpc.unary_unary_rpc_method_handler( + servicer.ListAllPositions, + request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListAllPositionsRequest.FromString, + response_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ListAllPositionsResponse.SerializeToString, + ), "ObservePositions": grpc.unary_stream_rpc_method_handler( servicer.ObservePositions, request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.ObservePositionsRequest.FromString, @@ -1650,6 +1700,16 @@ def add_TradingDataServiceServicer_to_server(servicer, server): request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.GetActiveNetworkHistoryPeerAddressesRequest.FromString, response_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.GetActiveNetworkHistoryPeerAddressesResponse.SerializeToString, ), + "NetworkHistoryStatus": grpc.unary_unary_rpc_method_handler( + servicer.NetworkHistoryStatus, + request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryStatusRequest.FromString, + response_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryStatusResponse.SerializeToString, + ), + "NetworkHistoryBootstrapPeers": grpc.unary_unary_rpc_method_handler( + servicer.NetworkHistoryBootstrapPeers, + request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryBootstrapPeersRequest.FromString, + response_serializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryBootstrapPeersResponse.SerializeToString, + ), "Ping": grpc.unary_unary_rpc_method_handler( servicer.Ping, request_deserializer=data__node_dot_api_dot_v2_dot_trading__data__pb2.PingRequest.FromString, @@ -1898,6 +1958,35 @@ def ListPositions( metadata, ) + @staticmethod + def ListAllPositions( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/datanode.api.v2.TradingDataService/ListAllPositions", + data__node_dot_api_dot_v2_dot_trading__data__pb2.ListAllPositionsRequest.SerializeToString, + data__node_dot_api_dot_v2_dot_trading__data__pb2.ListAllPositionsResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + @staticmethod def ObservePositions( request, @@ -4073,6 +4162,64 @@ def GetActiveNetworkHistoryPeerAddresses( metadata, ) + @staticmethod + def NetworkHistoryStatus( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/datanode.api.v2.TradingDataService/NetworkHistoryStatus", + data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryStatusRequest.SerializeToString, + data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryStatusResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def NetworkHistoryBootstrapPeers( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/datanode.api.v2.TradingDataService/NetworkHistoryBootstrapPeers", + data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryBootstrapPeersRequest.SerializeToString, + data__node_dot_api_dot_v2_dot_trading__data__pb2.NetworkHistoryBootstrapPeersResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + @staticmethod def Ping( request, diff --git a/vega_sim/proto/vega/api/v1/core_pb2.py b/vega_sim/proto/vega/api/v1/core_pb2.py index e45b8c5ba..59dae6599 100644 --- a/vega_sim/proto/vega/api/v1/core_pb2.py +++ b/vega_sim/proto/vega/api/v1/core_pb2.py @@ -23,14 +23,14 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x16vega/api/v1/core.proto\x12\x0bvega.api.v1\x1a\x0fvega/vega.proto\x1a\x1bvega/events/v1/events.proto\x1a"vega/commands/v1/transaction.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"i\n\x1aPropagateChainEventRequest\x12\x14\n\x05\x65vent\x18\x01 \x01(\x0cR\x05\x65vent\x12\x17\n\x07pub_key\x18\x02 \x01(\tR\x06pubKey\x12\x1c\n\tsignature\x18\x03 \x01(\x0cR\tsignature"7\n\x1bPropagateChainEventResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success"\xd7\x01\n\x18SubmitTransactionRequest\x12-\n\x02tx\x18\x01 \x01(\x0b\x32\x1d.vega.commands.v1.TransactionR\x02tx\x12>\n\x04type\x18\x02 \x01(\x0e\x32*.vega.api.v1.SubmitTransactionRequest.TypeR\x04type"L\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_ASYNC\x10\x01\x12\r\n\tTYPE_SYNC\x10\x02\x12\x0f\n\x0bTYPE_COMMIT\x10\x03"\xa0\x01\n\x19SubmitTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12\x12\n\x04\x63ode\x18\x03 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x05 \x01(\tR\x03log\x12\x16\n\x06height\x18\x06 \x01(\x03R\x06height"H\n\x17\x43heckTransactionRequest\x12-\n\x02tx\x18\x01 \x01(\x0b\x32\x1d.vega.commands.v1.TransactionR\x02tx"\xbc\x01\n\x18\x43heckTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x12\n\x04\x63ode\x18\x02 \x01(\rR\x04\x63ode\x12\x1d\n\ngas_wanted\x18\x03 \x01(\x03R\tgasWanted\x12\x19\n\x08gas_used\x18\x04 \x01(\x03R\x07gasUsed\x12\x12\n\x04\x64\x61ta\x18\x05 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x06 \x01(\tR\x03log\x12\x12\n\x04info\x18\x07 \x01(\tR\x04info"\xbe\x01\n\x1bSubmitRawTransactionRequest\x12\x0e\n\x02tx\x18\x01 \x01(\x0cR\x02tx\x12\x41\n\x04type\x18\x02 \x01(\x0e\x32-.vega.api.v1.SubmitRawTransactionRequest.TypeR\x04type"L\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_ASYNC\x10\x01\x12\r\n\tTYPE_SYNC\x10\x02\x12\x0f\n\x0bTYPE_COMMIT\x10\x03"\xa3\x01\n\x1cSubmitRawTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12\x12\n\x04\x63ode\x18\x03 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x05 \x01(\tR\x03log\x12\x16\n\x06height\x18\x06 \x01(\x03R\x06height",\n\x1a\x43heckRawTransactionRequest\x12\x0e\n\x02tx\x18\x01 \x01(\x0cR\x02tx"\xbf\x01\n\x1b\x43heckRawTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x12\n\x04\x63ode\x18\x02 \x01(\rR\x04\x63ode\x12\x1d\n\ngas_wanted\x18\x03 \x01(\x03R\tgasWanted\x12\x19\n\x08gas_used\x18\x04 \x01(\x03R\x07gasUsed\x12\x12\n\x04\x64\x61ta\x18\x05 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x06 \x01(\tR\x03log\x12\x12\n\x04info\x18\x07 \x01(\tR\x04info"\x14\n\x12GetVegaTimeRequest"3\n\x13GetVegaTimeResponse\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp"\xa1\x01\n\x16ObserveEventBusRequest\x12\x30\n\x04type\x18\x01 \x03(\x0e\x32\x1c.vega.events.v1.BusEventTypeR\x04type\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x1d\n\nbatch_size\x18\x04 \x01(\x03R\tbatchSize"K\n\x17ObserveEventBusResponse\x12\x30\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x18.vega.events.v1.BusEventR\x06\x65vents"\x13\n\x11StatisticsRequest"M\n\x12StatisticsResponse\x12\x37\n\nstatistics\x18\x01 \x01(\x0b\x32\x17.vega.api.v1.StatisticsR\nstatistics"\xfb\x0b\n\nStatistics\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12%\n\x0e\x62\x61\x63klog_length\x18\x02 \x01(\x04R\rbacklogLength\x12\x1f\n\x0btotal_peers\x18\x03 \x01(\x04R\ntotalPeers\x12!\n\x0cgenesis_time\x18\x04 \x01(\tR\x0bgenesisTime\x12!\n\x0c\x63urrent_time\x18\x05 \x01(\tR\x0b\x63urrentTime\x12\x1b\n\tvega_time\x18\x06 \x01(\tR\x08vegaTime\x12)\n\x06status\x18\x07 \x01(\x0e\x32\x11.vega.ChainStatusR\x06status\x12 \n\x0ctx_per_block\x18\x08 \x01(\x04R\ntxPerBlock\x12(\n\x10\x61verage_tx_bytes\x18\t \x01(\x04R\x0e\x61verageTxBytes\x12\x37\n\x18\x61verage_orders_per_block\x18\n \x01(\x04R\x15\x61verageOrdersPerBlock\x12*\n\x11trades_per_second\x18\x0b \x01(\x04R\x0ftradesPerSecond\x12*\n\x11orders_per_second\x18\x0c \x01(\x04R\x0fordersPerSecond\x12#\n\rtotal_markets\x18\r \x01(\x04R\x0ctotalMarkets\x12*\n\x11total_amend_order\x18\x10 \x01(\x04R\x0ftotalAmendOrder\x12,\n\x12total_cancel_order\x18\x11 \x01(\x04R\x10totalCancelOrder\x12,\n\x12total_create_order\x18\x12 \x01(\x04R\x10totalCreateOrder\x12!\n\x0ctotal_orders\x18\x13 \x01(\x04R\x0btotalOrders\x12!\n\x0ctotal_trades\x18\x14 \x01(\x04R\x0btotalTrades\x12/\n\x13order_subscriptions\x18\x15 \x01(\rR\x12orderSubscriptions\x12/\n\x13trade_subscriptions\x18\x16 \x01(\rR\x12tradeSubscriptions\x12\x31\n\x14\x63\x61ndle_subscriptions\x18\x17 \x01(\rR\x13\x63\x61ndleSubscriptions\x12<\n\x1amarket_depth_subscriptions\x18\x18 \x01(\rR\x18marketDepthSubscriptions\x12\x37\n\x17positions_subscriptions\x18\x19 \x01(\rR\x16positionsSubscriptions\x12\x33\n\x15\x61\x63\x63ount_subscriptions\x18\x1a \x01(\rR\x14\x61\x63\x63ountSubscriptions\x12:\n\x19market_data_subscriptions\x18\x1b \x01(\rR\x17marketDataSubscriptions\x12(\n\x10\x61pp_version_hash\x18\x1c \x01(\tR\x0e\x61ppVersionHash\x12\x1f\n\x0b\x61pp_version\x18\x1d \x01(\tR\nappVersion\x12#\n\rchain_version\x18\x1e \x01(\tR\x0c\x63hainVersion\x12%\n\x0e\x62lock_duration\x18\x1f \x01(\x04R\rblockDuration\x12\x16\n\x06uptime\x18 \x01(\tR\x06uptime\x12\x19\n\x08\x63hain_id\x18! \x01(\tR\x07\x63hainId\x12K\n"market_depth_updates_subscriptions\x18" \x01(\rR\x1fmarketDepthUpdatesSubscriptions\x12\x1d\n\nblock_hash\x18# \x01(\tR\tblockHash\x12\x1b\n\tepoch_seq\x18$ \x01(\x04R\x08\x65pochSeq\x12(\n\x10\x65poch_start_time\x18% \x01(\tR\x0e\x65pochStartTime\x12*\n\x11\x65poch_expiry_time\x18& \x01(\tR\x0f\x65pochExpiryTime"\x18\n\x16LastBlockHeightRequest"\x91\x03\n\x17LastBlockHeightResponse\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\x12\x33\n\x16spam_pow_hash_function\x18\x03 \x01(\tR\x13spamPowHashFunction\x12.\n\x13spam_pow_difficulty\x18\x04 \x01(\rR\x11spamPowDifficulty\x12\x41\n\x1espam_pow_number_of_past_blocks\x18\x05 \x01(\rR\x19spamPowNumberOfPastBlocks\x12\x42\n\x1fspam_pow_number_of_tx_per_block\x18\x06 \x01(\rR\x19spamPowNumberOfTxPerBlock\x12\x43\n\x1espam_pow_increasing_difficulty\x18\x07 \x01(\x08R\x1bspamPowIncreasingDifficulty\x12\x19\n\x08\x63hain_id\x18\x08 \x01(\tR\x07\x63hainId"5\n\x18GetSpamStatisticsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId"\x94\x01\n\rSpamStatistic\x12&\n\x0f\x63ount_for_epoch\x18\x01 \x01(\x04R\rcountForEpoch\x12"\n\rmax_for_epoch\x18\x02 \x01(\x04R\x0bmaxForEpoch\x12&\n\x0c\x62\x61nned_until\x18\x04 \x01(\tH\x00R\x0b\x62\x61nnedUntil\x88\x01\x01\x42\x0f\n\r_banned_until"\xb1\x01\n\x12VoteSpamStatistics\x12>\n\nstatistics\x18\x01 \x03(\x0b\x32\x1e.vega.api.v1.VoteSpamStatisticR\nstatistics\x12"\n\rmax_for_epoch\x18\x02 \x01(\x04R\x0bmaxForEpoch\x12&\n\x0c\x62\x61nned_until\x18\x03 \x01(\tH\x00R\x0b\x62\x61nnedUntil\x88\x01\x01\x42\x0f\n\r_banned_until"\x87\x01\n\x11VoteSpamStatistic\x12\x1a\n\x08proposal\x18\x01 \x01(\tR\x08proposal\x12&\n\x0f\x63ount_for_epoch\x18\x02 \x01(\x04R\rcountForEpoch\x12.\n\x13min_tokens_required\x18\x03 \x01(\tR\x11minTokensRequired"\xf1\x01\n\rPoWBlockState\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12+\n\x11transactions_seen\x18\x03 \x01(\x04R\x10transactionsSeen\x12\x34\n\x13\x65xpected_difficulty\x18\x04 \x01(\x04H\x00R\x12\x65xpectedDifficulty\x88\x01\x01\x12#\n\rhash_function\x18\x05 \x01(\tR\x0chashFunctionB\x16\n\x14_expected_difficulty"\x86\x01\n\x0cPoWStatistic\x12=\n\x0c\x62lock_states\x18\x01 \x03(\x0b\x32\x1a.vega.api.v1.PoWBlockStateR\x0b\x62lockStates\x12&\n\x0c\x62\x61nned_until\x18\x02 \x01(\tH\x00R\x0b\x62\x61nnedUntil\x88\x01\x01\x42\x0f\n\r_banned_until"\xf1\x02\n\x0eSpamStatistics\x12\x38\n\tproposals\x18\x01 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\tproposals\x12<\n\x0b\x64\x65legations\x18\x02 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\x0b\x64\x65legations\x12\x38\n\ttransfers\x18\x03 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\ttransfers\x12I\n\x12node_announcements\x18\x04 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\x11nodeAnnouncements\x12\x35\n\x05votes\x18\x05 \x01(\x0b\x32\x1f.vega.api.v1.VoteSpamStatisticsR\x05votes\x12+\n\x03pow\x18\x06 \x01(\x0b\x32\x19.vega.api.v1.PoWStatisticR\x03pow"s\n\x19GetSpamStatisticsResponse\x12\x19\n\x08\x63hain_id\x18\x01 \x01(\tR\x07\x63hainId\x12;\n\nstatistics\x18\x02 \x01(\x0b\x32\x1b.vega.api.v1.SpamStatisticsR\nstatistics2\xd8\x07\n\x0b\x43oreService\x12\x62\n\x11SubmitTransaction\x12%.vega.api.v1.SubmitTransactionRequest\x1a&.vega.api.v1.SubmitTransactionResponse\x12h\n\x13PropagateChainEvent\x12\'.vega.api.v1.PropagateChainEventRequest\x1a(.vega.api.v1.PropagateChainEventResponse\x12M\n\nStatistics\x12\x1e.vega.api.v1.StatisticsRequest\x1a\x1f.vega.api.v1.StatisticsResponse\x12\\\n\x0fLastBlockHeight\x12#.vega.api.v1.LastBlockHeightRequest\x1a$.vega.api.v1.LastBlockHeightResponse\x12P\n\x0bGetVegaTime\x12\x1f.vega.api.v1.GetVegaTimeRequest\x1a .vega.api.v1.GetVegaTimeResponse\x12`\n\x0fObserveEventBus\x12#.vega.api.v1.ObserveEventBusRequest\x1a$.vega.api.v1.ObserveEventBusResponse(\x01\x30\x01\x12k\n\x14SubmitRawTransaction\x12(.vega.api.v1.SubmitRawTransactionRequest\x1a).vega.api.v1.SubmitRawTransactionResponse\x12_\n\x10\x43heckTransaction\x12$.vega.api.v1.CheckTransactionRequest\x1a%.vega.api.v1.CheckTransactionResponse\x12h\n\x13\x43heckRawTransaction\x12\'.vega.api.v1.CheckRawTransactionRequest\x1a(.vega.api.v1.CheckRawTransactionResponse\x12\x62\n\x11GetSpamStatistics\x12%.vega.api.v1.GetSpamStatisticsRequest\x1a&.vega.api.v1.GetSpamStatisticsResponseBeZ,code.vegaprotocol.io/vega/protos/vega/api/v1\x92\x41\x34\x12\x19\n\x0eVega core APIs2\x07v0.67.0\x1a\x13lb.testnet.vega.xyz*\x02\x01\x02\x62\x06proto3' + b'\n\x16vega/api/v1/core.proto\x12\x0bvega.api.v1\x1a\x0fvega/vega.proto\x1a\x1bvega/events/v1/events.proto\x1a"vega/commands/v1/transaction.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"i\n\x1aPropagateChainEventRequest\x12\x14\n\x05\x65vent\x18\x01 \x01(\x0cR\x05\x65vent\x12\x17\n\x07pub_key\x18\x02 \x01(\tR\x06pubKey\x12\x1c\n\tsignature\x18\x03 \x01(\x0cR\tsignature"7\n\x1bPropagateChainEventResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success"\xd7\x01\n\x18SubmitTransactionRequest\x12-\n\x02tx\x18\x01 \x01(\x0b\x32\x1d.vega.commands.v1.TransactionR\x02tx\x12>\n\x04type\x18\x02 \x01(\x0e\x32*.vega.api.v1.SubmitTransactionRequest.TypeR\x04type"L\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_ASYNC\x10\x01\x12\r\n\tTYPE_SYNC\x10\x02\x12\x0f\n\x0bTYPE_COMMIT\x10\x03"\xa0\x01\n\x19SubmitTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12\x12\n\x04\x63ode\x18\x03 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x05 \x01(\tR\x03log\x12\x16\n\x06height\x18\x06 \x01(\x03R\x06height"H\n\x17\x43heckTransactionRequest\x12-\n\x02tx\x18\x01 \x01(\x0b\x32\x1d.vega.commands.v1.TransactionR\x02tx"\xbc\x01\n\x18\x43heckTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x12\n\x04\x63ode\x18\x02 \x01(\rR\x04\x63ode\x12\x1d\n\ngas_wanted\x18\x03 \x01(\x03R\tgasWanted\x12\x19\n\x08gas_used\x18\x04 \x01(\x03R\x07gasUsed\x12\x12\n\x04\x64\x61ta\x18\x05 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x06 \x01(\tR\x03log\x12\x12\n\x04info\x18\x07 \x01(\tR\x04info"\xbe\x01\n\x1bSubmitRawTransactionRequest\x12\x0e\n\x02tx\x18\x01 \x01(\x0cR\x02tx\x12\x41\n\x04type\x18\x02 \x01(\x0e\x32-.vega.api.v1.SubmitRawTransactionRequest.TypeR\x04type"L\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_ASYNC\x10\x01\x12\r\n\tTYPE_SYNC\x10\x02\x12\x0f\n\x0bTYPE_COMMIT\x10\x03"\xa3\x01\n\x1cSubmitRawTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x17\n\x07tx_hash\x18\x02 \x01(\tR\x06txHash\x12\x12\n\x04\x63ode\x18\x03 \x01(\rR\x04\x63ode\x12\x12\n\x04\x64\x61ta\x18\x04 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x05 \x01(\tR\x03log\x12\x16\n\x06height\x18\x06 \x01(\x03R\x06height",\n\x1a\x43heckRawTransactionRequest\x12\x0e\n\x02tx\x18\x01 \x01(\x0cR\x02tx"\xbf\x01\n\x1b\x43heckRawTransactionResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x12\n\x04\x63ode\x18\x02 \x01(\rR\x04\x63ode\x12\x1d\n\ngas_wanted\x18\x03 \x01(\x03R\tgasWanted\x12\x19\n\x08gas_used\x18\x04 \x01(\x03R\x07gasUsed\x12\x12\n\x04\x64\x61ta\x18\x05 \x01(\tR\x04\x64\x61ta\x12\x10\n\x03log\x18\x06 \x01(\tR\x03log\x12\x12\n\x04info\x18\x07 \x01(\tR\x04info"\x14\n\x12GetVegaTimeRequest"3\n\x13GetVegaTimeResponse\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp"\xa1\x01\n\x16ObserveEventBusRequest\x12\x30\n\x04type\x18\x01 \x03(\x0e\x32\x1c.vega.events.v1.BusEventTypeR\x04type\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x1d\n\nbatch_size\x18\x04 \x01(\x03R\tbatchSize"K\n\x17ObserveEventBusResponse\x12\x30\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x18.vega.events.v1.BusEventR\x06\x65vents"\x13\n\x11StatisticsRequest"M\n\x12StatisticsResponse\x12\x37\n\nstatistics\x18\x01 \x01(\x0b\x32\x17.vega.api.v1.StatisticsR\nstatistics"\xc8\x0c\n\nStatistics\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12%\n\x0e\x62\x61\x63klog_length\x18\x02 \x01(\x04R\rbacklogLength\x12\x1f\n\x0btotal_peers\x18\x03 \x01(\x04R\ntotalPeers\x12!\n\x0cgenesis_time\x18\x04 \x01(\tR\x0bgenesisTime\x12!\n\x0c\x63urrent_time\x18\x05 \x01(\tR\x0b\x63urrentTime\x12\x1b\n\tvega_time\x18\x06 \x01(\tR\x08vegaTime\x12)\n\x06status\x18\x07 \x01(\x0e\x32\x11.vega.ChainStatusR\x06status\x12 \n\x0ctx_per_block\x18\x08 \x01(\x04R\ntxPerBlock\x12(\n\x10\x61verage_tx_bytes\x18\t \x01(\x04R\x0e\x61verageTxBytes\x12\x37\n\x18\x61verage_orders_per_block\x18\n \x01(\x04R\x15\x61verageOrdersPerBlock\x12*\n\x11trades_per_second\x18\x0b \x01(\x04R\x0ftradesPerSecond\x12*\n\x11orders_per_second\x18\x0c \x01(\x04R\x0fordersPerSecond\x12#\n\rtotal_markets\x18\r \x01(\x04R\x0ctotalMarkets\x12*\n\x11total_amend_order\x18\x10 \x01(\x04R\x0ftotalAmendOrder\x12,\n\x12total_cancel_order\x18\x11 \x01(\x04R\x10totalCancelOrder\x12,\n\x12total_create_order\x18\x12 \x01(\x04R\x10totalCreateOrder\x12!\n\x0ctotal_orders\x18\x13 \x01(\x04R\x0btotalOrders\x12!\n\x0ctotal_trades\x18\x14 \x01(\x04R\x0btotalTrades\x12/\n\x13order_subscriptions\x18\x15 \x01(\rR\x12orderSubscriptions\x12/\n\x13trade_subscriptions\x18\x16 \x01(\rR\x12tradeSubscriptions\x12\x31\n\x14\x63\x61ndle_subscriptions\x18\x17 \x01(\rR\x13\x63\x61ndleSubscriptions\x12<\n\x1amarket_depth_subscriptions\x18\x18 \x01(\rR\x18marketDepthSubscriptions\x12\x37\n\x17positions_subscriptions\x18\x19 \x01(\rR\x16positionsSubscriptions\x12\x33\n\x15\x61\x63\x63ount_subscriptions\x18\x1a \x01(\rR\x14\x61\x63\x63ountSubscriptions\x12:\n\x19market_data_subscriptions\x18\x1b \x01(\rR\x17marketDataSubscriptions\x12(\n\x10\x61pp_version_hash\x18\x1c \x01(\tR\x0e\x61ppVersionHash\x12\x1f\n\x0b\x61pp_version\x18\x1d \x01(\tR\nappVersion\x12#\n\rchain_version\x18\x1e \x01(\tR\x0c\x63hainVersion\x12%\n\x0e\x62lock_duration\x18\x1f \x01(\x04R\rblockDuration\x12\x16\n\x06uptime\x18 \x01(\tR\x06uptime\x12\x19\n\x08\x63hain_id\x18! \x01(\tR\x07\x63hainId\x12K\n"market_depth_updates_subscriptions\x18" \x01(\rR\x1fmarketDepthUpdatesSubscriptions\x12\x1d\n\nblock_hash\x18# \x01(\tR\tblockHash\x12\x1b\n\tepoch_seq\x18$ \x01(\x04R\x08\x65pochSeq\x12(\n\x10\x65poch_start_time\x18% \x01(\tR\x0e\x65pochStartTime\x12*\n\x11\x65poch_expiry_time\x18& \x01(\tR\x0f\x65pochExpiryTime\x12\x1f\n\x0b\x65vent_count\x18\' \x01(\x04R\neventCount\x12*\n\x11\x65vents_per_second\x18( \x01(\x04R\x0f\x65ventsPerSecond"\x18\n\x16LastBlockHeightRequest"\x91\x03\n\x17LastBlockHeightResponse\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\x12\x33\n\x16spam_pow_hash_function\x18\x03 \x01(\tR\x13spamPowHashFunction\x12.\n\x13spam_pow_difficulty\x18\x04 \x01(\rR\x11spamPowDifficulty\x12\x41\n\x1espam_pow_number_of_past_blocks\x18\x05 \x01(\rR\x19spamPowNumberOfPastBlocks\x12\x42\n\x1fspam_pow_number_of_tx_per_block\x18\x06 \x01(\rR\x19spamPowNumberOfTxPerBlock\x12\x43\n\x1espam_pow_increasing_difficulty\x18\x07 \x01(\x08R\x1bspamPowIncreasingDifficulty\x12\x19\n\x08\x63hain_id\x18\x08 \x01(\tR\x07\x63hainId"5\n\x18GetSpamStatisticsRequest\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId"\xc4\x01\n\rSpamStatistic\x12&\n\x0f\x63ount_for_epoch\x18\x01 \x01(\x04R\rcountForEpoch\x12"\n\rmax_for_epoch\x18\x02 \x01(\x04R\x0bmaxForEpoch\x12&\n\x0c\x62\x61nned_until\x18\x04 \x01(\tH\x00R\x0b\x62\x61nnedUntil\x88\x01\x01\x12.\n\x13min_tokens_required\x18\x05 \x01(\tR\x11minTokensRequiredB\x0f\n\r_banned_until"\xb1\x01\n\x12VoteSpamStatistics\x12>\n\nstatistics\x18\x01 \x03(\x0b\x32\x1e.vega.api.v1.VoteSpamStatisticR\nstatistics\x12"\n\rmax_for_epoch\x18\x02 \x01(\x04R\x0bmaxForEpoch\x12&\n\x0c\x62\x61nned_until\x18\x03 \x01(\tH\x00R\x0b\x62\x61nnedUntil\x88\x01\x01\x42\x0f\n\r_banned_until"\x87\x01\n\x11VoteSpamStatistic\x12\x1a\n\x08proposal\x18\x01 \x01(\tR\x08proposal\x12&\n\x0f\x63ount_for_epoch\x18\x02 \x01(\x04R\rcountForEpoch\x12.\n\x13min_tokens_required\x18\x03 \x01(\tR\x11minTokensRequired"\xe8\x02\n\rPoWBlockState\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12+\n\x11transactions_seen\x18\x03 \x01(\x04R\x10transactionsSeen\x12\x34\n\x13\x65xpected_difficulty\x18\x04 \x01(\x04H\x00R\x12\x65xpectedDifficulty\x88\x01\x01\x12#\n\rhash_function\x18\x05 \x01(\tR\x0chashFunction\x12\x1e\n\ndifficulty\x18\x06 \x01(\x04R\ndifficulty\x12 \n\x0ctx_per_block\x18\x07 \x01(\x04R\ntxPerBlock\x12\x33\n\x15increasing_difficulty\x18\x08 \x01(\x08R\x14increasingDifficultyB\x16\n\x14_expected_difficulty"\xb9\x01\n\x0cPoWStatistic\x12=\n\x0c\x62lock_states\x18\x01 \x03(\x0b\x32\x1a.vega.api.v1.PoWBlockStateR\x0b\x62lockStates\x12&\n\x0c\x62\x61nned_until\x18\x02 \x01(\tH\x00R\x0b\x62\x61nnedUntil\x88\x01\x01\x12\x31\n\x15number_of_past_blocks\x18\x03 \x01(\x04R\x12numberOfPastBlocksB\x0f\n\r_banned_until"\xd5\x03\n\x0eSpamStatistics\x12\x38\n\tproposals\x18\x01 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\tproposals\x12<\n\x0b\x64\x65legations\x18\x02 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\x0b\x64\x65legations\x12\x38\n\ttransfers\x18\x03 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\ttransfers\x12I\n\x12node_announcements\x18\x04 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\x11nodeAnnouncements\x12\x35\n\x05votes\x18\x05 \x01(\x0b\x32\x1f.vega.api.v1.VoteSpamStatisticsR\x05votes\x12+\n\x03pow\x18\x06 \x01(\x0b\x32\x19.vega.api.v1.PoWStatisticR\x03pow\x12\x45\n\x10issue_signatures\x18\x07 \x01(\x0b\x32\x1a.vega.api.v1.SpamStatisticR\x0fissueSignatures\x12\x1b\n\tepoch_seq\x18\x08 \x01(\x04R\x08\x65pochSeq"s\n\x19GetSpamStatisticsResponse\x12\x19\n\x08\x63hain_id\x18\x01 \x01(\tR\x07\x63hainId\x12;\n\nstatistics\x18\x02 \x01(\x0b\x32\x1b.vega.api.v1.SpamStatisticsR\nstatistics2\xd8\x07\n\x0b\x43oreService\x12\x62\n\x11SubmitTransaction\x12%.vega.api.v1.SubmitTransactionRequest\x1a&.vega.api.v1.SubmitTransactionResponse\x12h\n\x13PropagateChainEvent\x12\'.vega.api.v1.PropagateChainEventRequest\x1a(.vega.api.v1.PropagateChainEventResponse\x12M\n\nStatistics\x12\x1e.vega.api.v1.StatisticsRequest\x1a\x1f.vega.api.v1.StatisticsResponse\x12\\\n\x0fLastBlockHeight\x12#.vega.api.v1.LastBlockHeightRequest\x1a$.vega.api.v1.LastBlockHeightResponse\x12P\n\x0bGetVegaTime\x12\x1f.vega.api.v1.GetVegaTimeRequest\x1a .vega.api.v1.GetVegaTimeResponse\x12`\n\x0fObserveEventBus\x12#.vega.api.v1.ObserveEventBusRequest\x1a$.vega.api.v1.ObserveEventBusResponse(\x01\x30\x01\x12k\n\x14SubmitRawTransaction\x12(.vega.api.v1.SubmitRawTransactionRequest\x1a).vega.api.v1.SubmitRawTransactionResponse\x12_\n\x10\x43heckTransaction\x12$.vega.api.v1.CheckTransactionRequest\x1a%.vega.api.v1.CheckTransactionResponse\x12h\n\x13\x43heckRawTransaction\x12\'.vega.api.v1.CheckRawTransactionRequest\x1a(.vega.api.v1.CheckRawTransactionResponse\x12\x62\n\x11GetSpamStatistics\x12%.vega.api.v1.GetSpamStatisticsRequest\x1a&.vega.api.v1.GetSpamStatisticsResponseBiZ,code.vegaprotocol.io/vega/protos/vega/api/v1\x92\x41\x38\x12\x1d\n\x0eVega core APIs2\x0bv0.68.0-dev\x1a\x13lb.testnet.vega.xyz*\x02\x01\x02\x62\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "vega.api.v1.core_pb2", globals()) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b"Z,code.vegaprotocol.io/vega/protos/vega/api/v1\222A4\022\031\n\016Vega core APIs2\007v0.67.0\032\023lb.testnet.vega.xyz*\002\001\002" + DESCRIPTOR._serialized_options = b"Z,code.vegaprotocol.io/vega/protos/vega/api/v1\222A8\022\035\n\016Vega core APIs2\013v0.68.0-dev\032\023lb.testnet.vega.xyz*\002\001\002" _PROPAGATECHAINEVENTREQUEST._serialized_start = 169 _PROPAGATECHAINEVENTREQUEST._serialized_end = 274 _PROPAGATECHAINEVENTRESPONSE._serialized_start = 276 @@ -68,27 +68,27 @@ _STATISTICSRESPONSE._serialized_start = 1915 _STATISTICSRESPONSE._serialized_end = 1992 _STATISTICS._serialized_start = 1995 - _STATISTICS._serialized_end = 3526 - _LASTBLOCKHEIGHTREQUEST._serialized_start = 3528 - _LASTBLOCKHEIGHTREQUEST._serialized_end = 3552 - _LASTBLOCKHEIGHTRESPONSE._serialized_start = 3555 - _LASTBLOCKHEIGHTRESPONSE._serialized_end = 3956 - _GETSPAMSTATISTICSREQUEST._serialized_start = 3958 - _GETSPAMSTATISTICSREQUEST._serialized_end = 4011 - _SPAMSTATISTIC._serialized_start = 4014 - _SPAMSTATISTIC._serialized_end = 4162 - _VOTESPAMSTATISTICS._serialized_start = 4165 - _VOTESPAMSTATISTICS._serialized_end = 4342 - _VOTESPAMSTATISTIC._serialized_start = 4345 - _VOTESPAMSTATISTIC._serialized_end = 4480 - _POWBLOCKSTATE._serialized_start = 4483 - _POWBLOCKSTATE._serialized_end = 4724 - _POWSTATISTIC._serialized_start = 4727 - _POWSTATISTIC._serialized_end = 4861 - _SPAMSTATISTICS._serialized_start = 4864 - _SPAMSTATISTICS._serialized_end = 5233 - _GETSPAMSTATISTICSRESPONSE._serialized_start = 5235 - _GETSPAMSTATISTICSRESPONSE._serialized_end = 5350 - _CORESERVICE._serialized_start = 5353 - _CORESERVICE._serialized_end = 6337 + _STATISTICS._serialized_end = 3603 + _LASTBLOCKHEIGHTREQUEST._serialized_start = 3605 + _LASTBLOCKHEIGHTREQUEST._serialized_end = 3629 + _LASTBLOCKHEIGHTRESPONSE._serialized_start = 3632 + _LASTBLOCKHEIGHTRESPONSE._serialized_end = 4033 + _GETSPAMSTATISTICSREQUEST._serialized_start = 4035 + _GETSPAMSTATISTICSREQUEST._serialized_end = 4088 + _SPAMSTATISTIC._serialized_start = 4091 + _SPAMSTATISTIC._serialized_end = 4287 + _VOTESPAMSTATISTICS._serialized_start = 4290 + _VOTESPAMSTATISTICS._serialized_end = 4467 + _VOTESPAMSTATISTIC._serialized_start = 4470 + _VOTESPAMSTATISTIC._serialized_end = 4605 + _POWBLOCKSTATE._serialized_start = 4608 + _POWBLOCKSTATE._serialized_end = 4968 + _POWSTATISTIC._serialized_start = 4971 + _POWSTATISTIC._serialized_end = 5156 + _SPAMSTATISTICS._serialized_start = 5159 + _SPAMSTATISTICS._serialized_end = 5628 + _GETSPAMSTATISTICSRESPONSE._serialized_start = 5630 + _GETSPAMSTATISTICSRESPONSE._serialized_end = 5745 + _CORESERVICE._serialized_start = 5748 + _CORESERVICE._serialized_end = 6732 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/vega/api/v1/corestate_pb2.py b/vega_sim/proto/vega/api/v1/corestate_pb2.py index 6470fb60a..c75fb3730 100644 --- a/vega_sim/proto/vega/api/v1/corestate_pb2.py +++ b/vega_sim/proto/vega/api/v1/corestate_pb2.py @@ -23,7 +23,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x1bvega/api/v1/corestate.proto\x12\x0bvega.api.v1\x1a\x11vega/assets.proto\x1a\x15vega/governance.proto\x1a\x12vega/markets.proto\x1a\x0fvega/vega.proto\x1a\x1bvega/events/v1/events.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"{\n\x07\x41\x63\x63ount\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x16\n\x06market\x18\x02 \x01(\tR\x06market\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x14\n\x05\x61sset\x18\x05 \x01(\tR\x05\x61sset\x12\x12\n\x04type\x18\x06 \x01(\tR\x04type"C\n\x13ListAccountsRequest\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x16\n\x06market\x18\x02 \x01(\tR\x06market"H\n\x14ListAccountsResponse\x12\x30\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x14.vega.api.v1.AccountR\x08\x61\x63\x63ounts")\n\x11ListAssetsRequest\x12\x14\n\x05\x61sset\x18\x01 \x01(\tR\x05\x61sset"9\n\x12ListAssetsResponse\x12#\n\x06\x61ssets\x18\x01 \x03(\x0b\x32\x0b.vega.AssetR\x06\x61ssets"R\n\x1cListNetworkParametersRequest\x12\x32\n\x15network_parameter_key\x18\x01 \x01(\tR\x13networkParameterKey"f\n\x1dListNetworkParametersResponse\x12\x45\n\x12network_parameters\x18\x01 \x03(\x0b\x32\x16.vega.NetworkParameterR\x11networkParameters"\x1a\n\x18ListNetworkLimitsRequest"W\n\x19ListNetworkLimitsResponse\x12:\n\x0enetwork_limits\x18\x01 \x01(\x0b\x32\x13.vega.NetworkLimitsR\rnetworkLimits"\x14\n\x12ListPartiesRequest"<\n\x13ListPartiesResponse\x12%\n\x07parties\x18\x01 \x03(\x0b\x32\x0b.vega.PartyR\x07parties"\x17\n\x15ListValidatorsRequest"Y\n\x16ListValidatorsResponse\x12?\n\nvalidators\x18\x01 \x03(\x0b\x32\x1f.vega.events.v1.ValidatorUpdateR\nvalidators",\n\x12ListMarketsRequest\x12\x16\n\x06market\x18\x01 \x01(\tR\x06market"=\n\x13ListMarketsResponse\x12&\n\x07markets\x18\x01 \x03(\x0b\x32\x0c.vega.MarketR\x07markets"N\n\x14ListProposalsRequest\x12\x1a\n\x08proposal\x18\x01 \x01(\tR\x08proposal\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer"E\n\x15ListProposalsResponse\x12,\n\tproposals\x18\x01 \x03(\x0b\x32\x0e.vega.ProposalR\tproposals"0\n\x16ListMarketsDataRequest\x12\x16\n\x06market\x18\x01 \x01(\tR\x06market"N\n\x17ListMarketsDataResponse\x12\x33\n\x0cmarkets_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\x0bmarketsData"D\n\x10ListVotesRequest\x12\x1a\n\x08proposal\x18\x01 \x01(\tR\x08proposal\x12\x14\n\x05party\x18\x02 \x01(\tR\x05party"5\n\x11ListVotesResponse\x12 \n\x05votes\x18\x01 \x03(\x0b\x32\n.vega.VoteR\x05votes"\x9f\x01\n\nPartyStake\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x36\n\x17\x63urrent_stake_available\x18\x02 \x01(\tR\x15\x63urrentStakeAvailable\x12\x43\n\x0estake_linkings\x18\x03 \x03(\x0b\x32\x1c.vega.events.v1.StakeLinkingR\rstakeLinkings"/\n\x17ListPartiesStakeRequest\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party"X\n\x18ListPartiesStakeResponse\x12<\n\rparties_stake\x18\x01 \x03(\x0b\x32\x17.vega.api.v1.PartyStakeR\x0cpartiesStake"_\n\x16ListDelegationsRequest\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x12\n\x04node\x18\x02 \x01(\tR\x04node\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq"M\n\x17ListDelegationsResponse\x12\x32\n\x0b\x64\x65legations\x18\x01 \x03(\x0b\x32\x10.vega.DelegationR\x0b\x64\x65legations2\xca\x08\n\x10\x43oreStateService\x12S\n\x0cListAccounts\x12 .vega.api.v1.ListAccountsRequest\x1a!.vega.api.v1.ListAccountsResponse\x12M\n\nListAssets\x12\x1e.vega.api.v1.ListAssetsRequest\x1a\x1f.vega.api.v1.ListAssetsResponse\x12n\n\x15ListNetworkParameters\x12).vega.api.v1.ListNetworkParametersRequest\x1a*.vega.api.v1.ListNetworkParametersResponse\x12\x62\n\x11ListNetworkLimits\x12%.vega.api.v1.ListNetworkLimitsRequest\x1a&.vega.api.v1.ListNetworkLimitsResponse\x12P\n\x0bListParties\x12\x1f.vega.api.v1.ListPartiesRequest\x1a .vega.api.v1.ListPartiesResponse\x12Y\n\x0eListValidators\x12".vega.api.v1.ListValidatorsRequest\x1a#.vega.api.v1.ListValidatorsResponse\x12P\n\x0bListMarkets\x12\x1f.vega.api.v1.ListMarketsRequest\x1a .vega.api.v1.ListMarketsResponse\x12V\n\rListProposals\x12!.vega.api.v1.ListProposalsRequest\x1a".vega.api.v1.ListProposalsResponse\x12\\\n\x0fListMarketsData\x12#.vega.api.v1.ListMarketsDataRequest\x1a$.vega.api.v1.ListMarketsDataResponse\x12J\n\tListVotes\x12\x1d.vega.api.v1.ListVotesRequest\x1a\x1e.vega.api.v1.ListVotesResponse\x12_\n\x10ListPartiesStake\x12$.vega.api.v1.ListPartiesStakeRequest\x1a%.vega.api.v1.ListPartiesStakeResponse\x12\\\n\x0fListDelegations\x12#.vega.api.v1.ListDelegationsRequest\x1a$.vega.api.v1.ListDelegationsResponseBkZ,code.vegaprotocol.io/vega/protos/vega/api/v1\x92\x41:\x12\x1f\n\x14Vega core state APIs2\x07v0.67.0\x1a\x13lb.testnet.vega.xyz*\x02\x01\x02\x62\x06proto3' + b'\n\x1bvega/api/v1/corestate.proto\x12\x0bvega.api.v1\x1a\x11vega/assets.proto\x1a\x15vega/governance.proto\x1a\x12vega/markets.proto\x1a\x0fvega/vega.proto\x1a\x1bvega/events/v1/events.proto\x1a.protoc-gen-openapiv2/options/annotations.proto"{\n\x07\x41\x63\x63ount\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x16\n\x06market\x18\x02 \x01(\tR\x06market\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x14\n\x05\x61sset\x18\x05 \x01(\tR\x05\x61sset\x12\x12\n\x04type\x18\x06 \x01(\tR\x04type"C\n\x13ListAccountsRequest\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x16\n\x06market\x18\x02 \x01(\tR\x06market"H\n\x14ListAccountsResponse\x12\x30\n\x08\x61\x63\x63ounts\x18\x01 \x03(\x0b\x32\x14.vega.api.v1.AccountR\x08\x61\x63\x63ounts")\n\x11ListAssetsRequest\x12\x14\n\x05\x61sset\x18\x01 \x01(\tR\x05\x61sset"9\n\x12ListAssetsResponse\x12#\n\x06\x61ssets\x18\x01 \x03(\x0b\x32\x0b.vega.AssetR\x06\x61ssets"R\n\x1cListNetworkParametersRequest\x12\x32\n\x15network_parameter_key\x18\x01 \x01(\tR\x13networkParameterKey"f\n\x1dListNetworkParametersResponse\x12\x45\n\x12network_parameters\x18\x01 \x03(\x0b\x32\x16.vega.NetworkParameterR\x11networkParameters"\x1a\n\x18ListNetworkLimitsRequest"W\n\x19ListNetworkLimitsResponse\x12:\n\x0enetwork_limits\x18\x01 \x01(\x0b\x32\x13.vega.NetworkLimitsR\rnetworkLimits"\x14\n\x12ListPartiesRequest"<\n\x13ListPartiesResponse\x12%\n\x07parties\x18\x01 \x03(\x0b\x32\x0b.vega.PartyR\x07parties"\x17\n\x15ListValidatorsRequest"Y\n\x16ListValidatorsResponse\x12?\n\nvalidators\x18\x01 \x03(\x0b\x32\x1f.vega.events.v1.ValidatorUpdateR\nvalidators",\n\x12ListMarketsRequest\x12\x16\n\x06market\x18\x01 \x01(\tR\x06market"=\n\x13ListMarketsResponse\x12&\n\x07markets\x18\x01 \x03(\x0b\x32\x0c.vega.MarketR\x07markets"N\n\x14ListProposalsRequest\x12\x1a\n\x08proposal\x18\x01 \x01(\tR\x08proposal\x12\x1a\n\x08proposer\x18\x02 \x01(\tR\x08proposer"E\n\x15ListProposalsResponse\x12,\n\tproposals\x18\x01 \x03(\x0b\x32\x0e.vega.ProposalR\tproposals"0\n\x16ListMarketsDataRequest\x12\x16\n\x06market\x18\x01 \x01(\tR\x06market"N\n\x17ListMarketsDataResponse\x12\x33\n\x0cmarkets_data\x18\x01 \x03(\x0b\x32\x10.vega.MarketDataR\x0bmarketsData"D\n\x10ListVotesRequest\x12\x1a\n\x08proposal\x18\x01 \x01(\tR\x08proposal\x12\x14\n\x05party\x18\x02 \x01(\tR\x05party"5\n\x11ListVotesResponse\x12 \n\x05votes\x18\x01 \x03(\x0b\x32\n.vega.VoteR\x05votes"\x9f\x01\n\nPartyStake\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x36\n\x17\x63urrent_stake_available\x18\x02 \x01(\tR\x15\x63urrentStakeAvailable\x12\x43\n\x0estake_linkings\x18\x03 \x03(\x0b\x32\x1c.vega.events.v1.StakeLinkingR\rstakeLinkings"/\n\x17ListPartiesStakeRequest\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party"X\n\x18ListPartiesStakeResponse\x12<\n\rparties_stake\x18\x01 \x03(\x0b\x32\x17.vega.api.v1.PartyStakeR\x0cpartiesStake"_\n\x16ListDelegationsRequest\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x12\n\x04node\x18\x02 \x01(\tR\x04node\x12\x1b\n\tepoch_seq\x18\x03 \x01(\tR\x08\x65pochSeq"M\n\x17ListDelegationsResponse\x12\x32\n\x0b\x64\x65legations\x18\x01 \x03(\x0b\x32\x10.vega.DelegationR\x0b\x64\x65legations2\xca\x08\n\x10\x43oreStateService\x12S\n\x0cListAccounts\x12 .vega.api.v1.ListAccountsRequest\x1a!.vega.api.v1.ListAccountsResponse\x12M\n\nListAssets\x12\x1e.vega.api.v1.ListAssetsRequest\x1a\x1f.vega.api.v1.ListAssetsResponse\x12n\n\x15ListNetworkParameters\x12).vega.api.v1.ListNetworkParametersRequest\x1a*.vega.api.v1.ListNetworkParametersResponse\x12\x62\n\x11ListNetworkLimits\x12%.vega.api.v1.ListNetworkLimitsRequest\x1a&.vega.api.v1.ListNetworkLimitsResponse\x12P\n\x0bListParties\x12\x1f.vega.api.v1.ListPartiesRequest\x1a .vega.api.v1.ListPartiesResponse\x12Y\n\x0eListValidators\x12".vega.api.v1.ListValidatorsRequest\x1a#.vega.api.v1.ListValidatorsResponse\x12P\n\x0bListMarkets\x12\x1f.vega.api.v1.ListMarketsRequest\x1a .vega.api.v1.ListMarketsResponse\x12V\n\rListProposals\x12!.vega.api.v1.ListProposalsRequest\x1a".vega.api.v1.ListProposalsResponse\x12\\\n\x0fListMarketsData\x12#.vega.api.v1.ListMarketsDataRequest\x1a$.vega.api.v1.ListMarketsDataResponse\x12J\n\tListVotes\x12\x1d.vega.api.v1.ListVotesRequest\x1a\x1e.vega.api.v1.ListVotesResponse\x12_\n\x10ListPartiesStake\x12$.vega.api.v1.ListPartiesStakeRequest\x1a%.vega.api.v1.ListPartiesStakeResponse\x12\\\n\x0fListDelegations\x12#.vega.api.v1.ListDelegationsRequest\x1a$.vega.api.v1.ListDelegationsResponseBoZ,code.vegaprotocol.io/vega/protos/vega/api/v1\x92\x41>\x12#\n\x14Vega core state APIs2\x0bv0.68.0-dev\x1a\x13lb.testnet.vega.xyz*\x02\x01\x02\x62\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -32,7 +32,7 @@ ) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b"Z,code.vegaprotocol.io/vega/protos/vega/api/v1\222A:\022\037\n\024Vega core state APIs2\007v0.67.0\032\023lb.testnet.vega.xyz*\002\001\002" + DESCRIPTOR._serialized_options = b"Z,code.vegaprotocol.io/vega/protos/vega/api/v1\222A>\022#\n\024Vega core state APIs2\013v0.68.0-dev\032\023lb.testnet.vega.xyz*\002\001\002" _ACCOUNT._serialized_start = 200 _ACCOUNT._serialized_end = 323 _LISTACCOUNTSREQUEST._serialized_start = 325 diff --git a/vega_sim/proto/vega/api/v1/corestate_pb2_grpc.py b/vega_sim/proto/vega/api/v1/corestate_pb2_grpc.py index 9f6f891a0..97c0c0abc 100644 --- a/vega_sim/proto/vega/api/v1/corestate_pb2_grpc.py +++ b/vega_sim/proto/vega/api/v1/corestate_pb2_grpc.py @@ -100,7 +100,7 @@ def ListAssets(self, request, context): def ListNetworkParameters(self, request, context): """Network parameters list - Return a list of network paramters + Return a list of network parameters """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details("Method not implemented!") diff --git a/vega_sim/proto/vega/commands/v1/commands_pb2.py b/vega_sim/proto/vega/commands/v1/commands_pb2.py index ed6872be6..07e834c27 100644 --- a/vega_sim/proto/vega/commands/v1/commands_pb2.py +++ b/vega_sim/proto/vega/commands/v1/commands_pb2.py @@ -14,10 +14,13 @@ from ... import governance_pb2 as vega_dot_governance__pb2 from ... import vega_pb2 as vega_dot_vega__pb2 +from ...commands.v1 import ( + validator_commands_pb2 as vega_dot_commands_dot_v1_dot_validator__commands__pb2, +) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x1fvega/commands/v1/commands.proto\x12\x10vega.commands.v1\x1a\x15vega/governance.proto\x1a\x0fvega/vega.proto"\xeb\x01\n\x17\x42\x61tchMarketInstructions\x12I\n\rcancellations\x18\x01 \x03(\x0b\x32#.vega.commands.v1.OrderCancellationR\rcancellations\x12@\n\namendments\x18\x02 \x03(\x0b\x32 .vega.commands.v1.OrderAmendmentR\namendments\x12\x43\n\x0bsubmissions\x18\x03 \x03(\x0b\x32!.vega.commands.v1.OrderSubmissionR\x0bsubmissions"\xce\x02\n\x0fOrderSubmission\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12\x12\n\x04size\x18\x03 \x01(\x04R\x04size\x12\x1e\n\x04side\x18\x04 \x01(\x0e\x32\n.vega.SideR\x04side\x12;\n\rtime_in_force\x18\x05 \x01(\x0e\x32\x17.vega.Order.TimeInForceR\x0btimeInForce\x12\x1d\n\nexpires_at\x18\x06 \x01(\x03R\texpiresAt\x12$\n\x04type\x18\x07 \x01(\x0e\x32\x10.vega.Order.TypeR\x04type\x12\x1c\n\treference\x18\x08 \x01(\tR\treference\x12\x34\n\x0cpegged_order\x18\t \x01(\x0b\x32\x11.vega.PeggedOrderR\x0bpeggedOrder"K\n\x11OrderCancellation\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId"\xe3\x02\n\x0eOrderAmendment\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x05price\x18\x03 \x01(\tH\x00R\x05price\x88\x01\x01\x12\x1d\n\nsize_delta\x18\x04 \x01(\x03R\tsizeDelta\x12"\n\nexpires_at\x18\x05 \x01(\x03H\x01R\texpiresAt\x88\x01\x01\x12;\n\rtime_in_force\x18\x06 \x01(\x0e\x32\x17.vega.Order.TimeInForceR\x0btimeInForce\x12#\n\rpegged_offset\x18\x07 \x01(\tR\x0cpeggedOffset\x12@\n\x10pegged_reference\x18\x08 \x01(\x0e\x32\x15.vega.PeggedReferenceR\x0fpeggedReferenceB\x08\n\x06_priceB\r\n\x0b_expires_at"\xee\x01\n\x1cLiquidityProvisionSubmission\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12+\n\x11\x63ommitment_amount\x18\x02 \x01(\tR\x10\x63ommitmentAmount\x12\x10\n\x03\x66\x65\x65\x18\x03 \x01(\tR\x03\x66\x65\x65\x12*\n\x05sells\x18\x04 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x05sells\x12(\n\x04\x62uys\x18\x05 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x04\x62uys\x12\x1c\n\treference\x18\x06 \x01(\tR\treference"=\n\x1eLiquidityProvisionCancellation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"\xed\x01\n\x1bLiquidityProvisionAmendment\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12+\n\x11\x63ommitment_amount\x18\x02 \x01(\tR\x10\x63ommitmentAmount\x12\x10\n\x03\x66\x65\x65\x18\x03 \x01(\tR\x03\x66\x65\x65\x12*\n\x05sells\x18\x04 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x05sells\x12(\n\x04\x62uys\x18\x05 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x04\x62uys\x12\x1c\n\treference\x18\x06 \x01(\tR\treference"g\n\x12WithdrawSubmission\x12\x16\n\x06\x61mount\x18\x01 \x01(\tR\x06\x61mount\x12\x14\n\x05\x61sset\x18\x02 \x01(\tR\x05\x61sset\x12#\n\x03\x65xt\x18\x03 \x01(\x0b\x32\x11.vega.WithdrawExtR\x03\x65xt"\x94\x01\n\x12ProposalSubmission\x12\x1c\n\treference\x18\x01 \x01(\tR\treference\x12)\n\x05terms\x18\x02 \x01(\x0b\x32\x13.vega.ProposalTermsR\x05terms\x12\x35\n\trationale\x18\x03 \x01(\x0b\x32\x17.vega.ProposalRationaleR\trationale"Y\n\x0eVoteSubmission\x12\x1f\n\x0bproposal_id\x18\x01 \x01(\tR\nproposalId\x12&\n\x05value\x18\x02 \x01(\x0e\x32\x10.vega.Vote.ValueR\x05value"E\n\x12\x44\x65legateSubmission\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount"\xe2\x01\n\x14UndelegateSubmission\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x45\n\x06method\x18\x03 \x01(\x0e\x32-.vega.commands.v1.UndelegateSubmission.MethodR\x06method"R\n\x06Method\x12\x16\n\x12METHOD_UNSPECIFIED\x10\x00\x12\x0e\n\nMETHOD_NOW\x10\x01\x12\x1a\n\x16METHOD_AT_END_OF_EPOCH\x10\x02"\x04\x08\x03\x10\x03"\xea\x02\n\x08Transfer\x12=\n\x11\x66rom_account_type\x18\x01 \x01(\x0e\x32\x11.vega.AccountTypeR\x0f\x66romAccountType\x12\x0e\n\x02to\x18\x02 \x01(\tR\x02to\x12\x39\n\x0fto_account_type\x18\x03 \x01(\x0e\x32\x11.vega.AccountTypeR\rtoAccountType\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x1c\n\treference\x18\x06 \x01(\tR\treference\x12;\n\x07one_off\x18\x65 \x01(\x0b\x32 .vega.commands.v1.OneOffTransferH\x00R\x06oneOff\x12\x43\n\trecurring\x18\x66 \x01(\x0b\x32#.vega.commands.v1.RecurringTransferH\x00R\trecurringB\x06\n\x04kind"/\n\x0eOneOffTransfer\x12\x1d\n\ndeliver_on\x18\x01 \x01(\x03R\tdeliverOn"\xc1\x01\n\x11RecurringTransfer\x12\x1f\n\x0bstart_epoch\x18\x01 \x01(\x04R\nstartEpoch\x12 \n\tend_epoch\x18\x02 \x01(\x04H\x00R\x08\x65ndEpoch\x88\x01\x01\x12\x16\n\x06\x66\x61\x63tor\x18\x03 \x01(\tR\x06\x66\x61\x63tor\x12\x43\n\x11\x64ispatch_strategy\x18\x04 \x01(\x0b\x32\x16.vega.DispatchStrategyR\x10\x64ispatchStrategyB\x0c\n\n_end_epoch"1\n\x0e\x43\x61ncelTransfer\x12\x1f\n\x0btransfer_id\x18\x01 \x01(\tR\ntransferIdB3Z1code.vegaprotocol.io/vega/protos/vega/commands/v1b\x06proto3' + b'\n\x1fvega/commands/v1/commands.proto\x12\x10vega.commands.v1\x1a\x15vega/governance.proto\x1a\x0fvega/vega.proto\x1a)vega/commands/v1/validator_commands.proto"\xeb\x01\n\x17\x42\x61tchMarketInstructions\x12I\n\rcancellations\x18\x01 \x03(\x0b\x32#.vega.commands.v1.OrderCancellationR\rcancellations\x12@\n\namendments\x18\x02 \x03(\x0b\x32 .vega.commands.v1.OrderAmendmentR\namendments\x12\x43\n\x0bsubmissions\x18\x03 \x03(\x0b\x32!.vega.commands.v1.OrderSubmissionR\x0bsubmissions"\xce\x02\n\x0fOrderSubmission\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12\x12\n\x04size\x18\x03 \x01(\x04R\x04size\x12\x1e\n\x04side\x18\x04 \x01(\x0e\x32\n.vega.SideR\x04side\x12;\n\rtime_in_force\x18\x05 \x01(\x0e\x32\x17.vega.Order.TimeInForceR\x0btimeInForce\x12\x1d\n\nexpires_at\x18\x06 \x01(\x03R\texpiresAt\x12$\n\x04type\x18\x07 \x01(\x0e\x32\x10.vega.Order.TypeR\x04type\x12\x1c\n\treference\x18\x08 \x01(\tR\treference\x12\x34\n\x0cpegged_order\x18\t \x01(\x0b\x32\x11.vega.PeggedOrderR\x0bpeggedOrder"K\n\x11OrderCancellation\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId"\xe3\x02\n\x0eOrderAmendment\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x05price\x18\x03 \x01(\tH\x00R\x05price\x88\x01\x01\x12\x1d\n\nsize_delta\x18\x04 \x01(\x03R\tsizeDelta\x12"\n\nexpires_at\x18\x05 \x01(\x03H\x01R\texpiresAt\x88\x01\x01\x12;\n\rtime_in_force\x18\x06 \x01(\x0e\x32\x17.vega.Order.TimeInForceR\x0btimeInForce\x12#\n\rpegged_offset\x18\x07 \x01(\tR\x0cpeggedOffset\x12@\n\x10pegged_reference\x18\x08 \x01(\x0e\x32\x15.vega.PeggedReferenceR\x0fpeggedReferenceB\x08\n\x06_priceB\r\n\x0b_expires_at"\xee\x01\n\x1cLiquidityProvisionSubmission\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12+\n\x11\x63ommitment_amount\x18\x02 \x01(\tR\x10\x63ommitmentAmount\x12\x10\n\x03\x66\x65\x65\x18\x03 \x01(\tR\x03\x66\x65\x65\x12*\n\x05sells\x18\x04 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x05sells\x12(\n\x04\x62uys\x18\x05 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x04\x62uys\x12\x1c\n\treference\x18\x06 \x01(\tR\treference"=\n\x1eLiquidityProvisionCancellation\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId"\xed\x01\n\x1bLiquidityProvisionAmendment\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12+\n\x11\x63ommitment_amount\x18\x02 \x01(\tR\x10\x63ommitmentAmount\x12\x10\n\x03\x66\x65\x65\x18\x03 \x01(\tR\x03\x66\x65\x65\x12*\n\x05sells\x18\x04 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x05sells\x12(\n\x04\x62uys\x18\x05 \x03(\x0b\x32\x14.vega.LiquidityOrderR\x04\x62uys\x12\x1c\n\treference\x18\x06 \x01(\tR\treference"g\n\x12WithdrawSubmission\x12\x16\n\x06\x61mount\x18\x01 \x01(\tR\x06\x61mount\x12\x14\n\x05\x61sset\x18\x02 \x01(\tR\x05\x61sset\x12#\n\x03\x65xt\x18\x03 \x01(\x0b\x32\x11.vega.WithdrawExtR\x03\x65xt"\x94\x01\n\x12ProposalSubmission\x12\x1c\n\treference\x18\x01 \x01(\tR\treference\x12)\n\x05terms\x18\x02 \x01(\x0b\x32\x13.vega.ProposalTermsR\x05terms\x12\x35\n\trationale\x18\x03 \x01(\x0b\x32\x17.vega.ProposalRationaleR\trationale"Y\n\x0eVoteSubmission\x12\x1f\n\x0bproposal_id\x18\x01 \x01(\tR\nproposalId\x12&\n\x05value\x18\x02 \x01(\x0e\x32\x10.vega.Vote.ValueR\x05value"E\n\x12\x44\x65legateSubmission\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount"\xe2\x01\n\x14UndelegateSubmission\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x02 \x01(\tR\x06\x61mount\x12\x45\n\x06method\x18\x03 \x01(\x0e\x32-.vega.commands.v1.UndelegateSubmission.MethodR\x06method"R\n\x06Method\x12\x16\n\x12METHOD_UNSPECIFIED\x10\x00\x12\x0e\n\nMETHOD_NOW\x10\x01\x12\x1a\n\x16METHOD_AT_END_OF_EPOCH\x10\x02"\x04\x08\x03\x10\x03"\xea\x02\n\x08Transfer\x12=\n\x11\x66rom_account_type\x18\x01 \x01(\x0e\x32\x11.vega.AccountTypeR\x0f\x66romAccountType\x12\x0e\n\x02to\x18\x02 \x01(\tR\x02to\x12\x39\n\x0fto_account_type\x18\x03 \x01(\x0e\x32\x11.vega.AccountTypeR\rtoAccountType\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x1c\n\treference\x18\x06 \x01(\tR\treference\x12;\n\x07one_off\x18\x65 \x01(\x0b\x32 .vega.commands.v1.OneOffTransferH\x00R\x06oneOff\x12\x43\n\trecurring\x18\x66 \x01(\x0b\x32#.vega.commands.v1.RecurringTransferH\x00R\trecurringB\x06\n\x04kind"/\n\x0eOneOffTransfer\x12\x1d\n\ndeliver_on\x18\x01 \x01(\x03R\tdeliverOn"\xc1\x01\n\x11RecurringTransfer\x12\x1f\n\x0bstart_epoch\x18\x01 \x01(\x04R\nstartEpoch\x12 \n\tend_epoch\x18\x02 \x01(\x04H\x00R\x08\x65ndEpoch\x88\x01\x01\x12\x16\n\x06\x66\x61\x63tor\x18\x03 \x01(\tR\x06\x66\x61\x63tor\x12\x43\n\x11\x64ispatch_strategy\x18\x04 \x01(\x0b\x32\x16.vega.DispatchStrategyR\x10\x64ispatchStrategyB\x0c\n\n_end_epoch"1\n\x0e\x43\x61ncelTransfer\x12\x1f\n\x0btransfer_id\x18\x01 \x01(\tR\ntransferId"\x94\x01\n\x0fIssueSignatures\x12\x1c\n\tsubmitter\x18\x01 \x01(\tR\tsubmitter\x12\x37\n\x04kind\x18\x02 \x01(\x0e\x32#.vega.commands.v1.NodeSignatureKindR\x04kind\x12*\n\x11validator_node_id\x18\x03 \x01(\tR\x0fvalidatorNodeIdB3Z1code.vegaprotocol.io/vega/protos/vega/commands/v1b\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -29,38 +32,40 @@ DESCRIPTOR._serialized_options = ( b"Z1code.vegaprotocol.io/vega/protos/vega/commands/v1" ) - _BATCHMARKETINSTRUCTIONS._serialized_start = 94 - _BATCHMARKETINSTRUCTIONS._serialized_end = 329 - _ORDERSUBMISSION._serialized_start = 332 - _ORDERSUBMISSION._serialized_end = 666 - _ORDERCANCELLATION._serialized_start = 668 - _ORDERCANCELLATION._serialized_end = 743 - _ORDERAMENDMENT._serialized_start = 746 - _ORDERAMENDMENT._serialized_end = 1101 - _LIQUIDITYPROVISIONSUBMISSION._serialized_start = 1104 - _LIQUIDITYPROVISIONSUBMISSION._serialized_end = 1342 - _LIQUIDITYPROVISIONCANCELLATION._serialized_start = 1344 - _LIQUIDITYPROVISIONCANCELLATION._serialized_end = 1405 - _LIQUIDITYPROVISIONAMENDMENT._serialized_start = 1408 - _LIQUIDITYPROVISIONAMENDMENT._serialized_end = 1645 - _WITHDRAWSUBMISSION._serialized_start = 1647 - _WITHDRAWSUBMISSION._serialized_end = 1750 - _PROPOSALSUBMISSION._serialized_start = 1753 - _PROPOSALSUBMISSION._serialized_end = 1901 - _VOTESUBMISSION._serialized_start = 1903 - _VOTESUBMISSION._serialized_end = 1992 - _DELEGATESUBMISSION._serialized_start = 1994 - _DELEGATESUBMISSION._serialized_end = 2063 - _UNDELEGATESUBMISSION._serialized_start = 2066 - _UNDELEGATESUBMISSION._serialized_end = 2292 - _UNDELEGATESUBMISSION_METHOD._serialized_start = 2210 - _UNDELEGATESUBMISSION_METHOD._serialized_end = 2292 - _TRANSFER._serialized_start = 2295 - _TRANSFER._serialized_end = 2657 - _ONEOFFTRANSFER._serialized_start = 2659 - _ONEOFFTRANSFER._serialized_end = 2706 - _RECURRINGTRANSFER._serialized_start = 2709 - _RECURRINGTRANSFER._serialized_end = 2902 - _CANCELTRANSFER._serialized_start = 2904 - _CANCELTRANSFER._serialized_end = 2953 + _BATCHMARKETINSTRUCTIONS._serialized_start = 137 + _BATCHMARKETINSTRUCTIONS._serialized_end = 372 + _ORDERSUBMISSION._serialized_start = 375 + _ORDERSUBMISSION._serialized_end = 709 + _ORDERCANCELLATION._serialized_start = 711 + _ORDERCANCELLATION._serialized_end = 786 + _ORDERAMENDMENT._serialized_start = 789 + _ORDERAMENDMENT._serialized_end = 1144 + _LIQUIDITYPROVISIONSUBMISSION._serialized_start = 1147 + _LIQUIDITYPROVISIONSUBMISSION._serialized_end = 1385 + _LIQUIDITYPROVISIONCANCELLATION._serialized_start = 1387 + _LIQUIDITYPROVISIONCANCELLATION._serialized_end = 1448 + _LIQUIDITYPROVISIONAMENDMENT._serialized_start = 1451 + _LIQUIDITYPROVISIONAMENDMENT._serialized_end = 1688 + _WITHDRAWSUBMISSION._serialized_start = 1690 + _WITHDRAWSUBMISSION._serialized_end = 1793 + _PROPOSALSUBMISSION._serialized_start = 1796 + _PROPOSALSUBMISSION._serialized_end = 1944 + _VOTESUBMISSION._serialized_start = 1946 + _VOTESUBMISSION._serialized_end = 2035 + _DELEGATESUBMISSION._serialized_start = 2037 + _DELEGATESUBMISSION._serialized_end = 2106 + _UNDELEGATESUBMISSION._serialized_start = 2109 + _UNDELEGATESUBMISSION._serialized_end = 2335 + _UNDELEGATESUBMISSION_METHOD._serialized_start = 2253 + _UNDELEGATESUBMISSION_METHOD._serialized_end = 2335 + _TRANSFER._serialized_start = 2338 + _TRANSFER._serialized_end = 2700 + _ONEOFFTRANSFER._serialized_start = 2702 + _ONEOFFTRANSFER._serialized_end = 2749 + _RECURRINGTRANSFER._serialized_start = 2752 + _RECURRINGTRANSFER._serialized_end = 2945 + _CANCELTRANSFER._serialized_start = 2947 + _CANCELTRANSFER._serialized_end = 2996 + _ISSUESIGNATURES._serialized_start = 2999 + _ISSUESIGNATURES._serialized_end = 3147 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/vega/commands/v1/validator_commands_pb2.py b/vega_sim/proto/vega/commands/v1/validator_commands_pb2.py index ae3161221..42fb5ca71 100644 --- a/vega_sim/proto/vega/commands/v1/validator_commands_pb2.py +++ b/vega_sim/proto/vega/commands/v1/validator_commands_pb2.py @@ -18,7 +18,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n)vega/commands/v1/validator_commands.proto\x12\x10vega.commands.v1\x1a\x0fvega/vega.proto\x1a\x17vega/chain_events.proto\x1a vega/commands/v1/signature.proto"\xbd\x01\n\x12ValidatorHeartbeat\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12J\n\x12\x65thereum_signature\x18\x02 \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\x11\x65thereumSignature\x12\x42\n\x0evega_signature\x18\x03 \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\rvegaSignature"\x80\x04\n\x0c\x41nnounceNode\x12 \n\x0cvega_pub_key\x18\x01 \x01(\tR\nvegaPubKey\x12)\n\x10\x65thereum_address\x18\x02 \x01(\tR\x0f\x65thereumAddress\x12"\n\rchain_pub_key\x18\x03 \x01(\tR\x0b\x63hainPubKey\x12\x19\n\x08info_url\x18\x04 \x01(\tR\x07infoUrl\x12\x18\n\x07\x63ountry\x18\x05 \x01(\tR\x07\x63ountry\x12\x0e\n\x02id\x18\x06 \x01(\tR\x02id\x12\x12\n\x04name\x18\x07 \x01(\tR\x04name\x12\x1d\n\navatar_url\x18\x08 \x01(\tR\tavatarUrl\x12+\n\x12vega_pub_key_index\x18\t \x01(\rR\x0fvegaPubKeyIndex\x12\x1d\n\nfrom_epoch\x18\n \x01(\x04R\tfromEpoch\x12J\n\x12\x65thereum_signature\x18\x0b \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\x11\x65thereumSignature\x12\x42\n\x0evega_signature\x18\x0c \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\rvegaSignature\x12+\n\x11submitter_address\x18\r \x01(\tR\x10submitterAddress"\xc0\x03\n\x08NodeVote\x12\x1c\n\treference\x18\x02 \x01(\tR\treference\x12\x33\n\x04type\x18\x03 \x01(\x0e\x32\x1f.vega.commands.v1.NodeVote.TypeR\x04type"\xda\x02\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14TYPE_STAKE_DEPOSITED\x10\x01\x12\x16\n\x12TYPE_STAKE_REMOVED\x10\x02\x12\x18\n\x14TYPE_FUNDS_DEPOSITED\x10\x03\x12\x15\n\x11TYPE_SIGNER_ADDED\x10\x04\x12\x17\n\x13TYPE_SIGNER_REMOVED\x10\x05\x12\x17\n\x13TYPE_BRIDGE_STOPPED\x10\x06\x12\x17\n\x13TYPE_BRIDGE_RESUMED\x10\x07\x12\x15\n\x11TYPE_ASSET_LISTED\x10\x08\x12\x17\n\x13TYPE_LIMITS_UPDATED\x10\t\x12\x1b\n\x17TYPE_STAKE_TOTAL_SUPPLY\x10\n\x12\x1d\n\x19TYPE_SIGNER_THRESHOLD_SET\x10\x0b\x12"\n\x1eTYPE_GOVERNANCE_VALIDATE_ASSET\x10\x0cJ\x04\x08\x01\x10\x02"j\n\rNodeSignature\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03sig\x18\x02 \x01(\x0cR\x03sig\x12\x37\n\x04kind\x18\x03 \x01(\x0e\x32#.vega.commands.v1.NodeSignatureKindR\x04kind"\xb1\x02\n\nChainEvent\x12\x13\n\x05tx_id\x18\x01 \x01(\tR\x04txId\x12\x14\n\x05nonce\x18\x02 \x01(\x04R\x05nonce\x12\x34\n\x07\x62uiltin\x18\xe9\x07 \x01(\x0b\x32\x17.vega.BuiltinAssetEventH\x00R\x07\x62uiltin\x12)\n\x05\x65rc20\x18\xea\x07 \x01(\x0b\x32\x10.vega.ERC20EventH\x00R\x05\x65rc20\x12:\n\rstaking_event\x18\xed\x07 \x01(\x0b\x32\x12.vega.StakingEventH\x00R\x0cstakingEvent\x12\x42\n\x0e\x65rc20_multisig\x18\xee\x07 \x01(\x0b\x32\x18.vega.ERC20MultiSigEventH\x00R\rerc20MultisigB\x07\n\x05\x65ventJ\x06\x08\xeb\x07\x10\xec\x07J\x06\x08\xec\x07\x10\xed\x07"\xb4\x01\n\x13KeyRotateSubmission\x12)\n\x11new_pub_key_index\x18\x01 \x01(\rR\x0enewPubKeyIndex\x12!\n\x0ctarget_block\x18\x02 \x01(\x04R\x0btargetBlock\x12\x1e\n\x0bnew_pub_key\x18\x03 \x01(\tR\tnewPubKey\x12/\n\x14\x63urrent_pub_key_hash\x18\x04 \x01(\tR\x11\x63urrentPubKeyHash"\x83\x02\n\x1b\x45thereumKeyRotateSubmission\x12!\n\x0ctarget_block\x18\x01 \x01(\x04R\x0btargetBlock\x12\x1f\n\x0bnew_address\x18\x02 \x01(\tR\nnewAddress\x12\'\n\x0f\x63urrent_address\x18\x03 \x01(\tR\x0e\x63urrentAddress\x12+\n\x11submitter_address\x18\x04 \x01(\tR\x10submitterAddress\x12J\n\x12\x65thereum_signature\x18\x05 \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\x11\x65thereumSignature"M\n\x15StateVariableProposal\x12\x34\n\x08proposal\x18\x01 \x01(\x0b\x32\x18.vega.StateValueProposalR\x08proposal"u\n\x17ProtocolUpgradeProposal\x12\x30\n\x14upgrade_block_height\x18\x01 \x01(\x04R\x12upgradeBlockHeight\x12(\n\x10vega_release_tag\x18\x02 \x01(\tR\x0evegaReleaseTag"\x94\x01\n\x0fIssueSignatures\x12\x1c\n\tsubmitter\x18\x01 \x01(\tR\tsubmitter\x12\x37\n\x04kind\x18\x02 \x01(\x0e\x32#.vega.commands.v1.NodeSignatureKindR\x04kind\x12*\n\x11validator_node_id\x18\x03 \x01(\tR\x0fvalidatorNodeId*\x97\x02\n\x11NodeSignatureKind\x12#\n\x1fNODE_SIGNATURE_KIND_UNSPECIFIED\x10\x00\x12!\n\x1dNODE_SIGNATURE_KIND_ASSET_NEW\x10\x01\x12(\n$NODE_SIGNATURE_KIND_ASSET_WITHDRAWAL\x10\x02\x12\x33\n/NODE_SIGNATURE_KIND_ERC20_MULTISIG_SIGNER_ADDED\x10\x03\x12\x35\n1NODE_SIGNATURE_KIND_ERC20_MULTISIG_SIGNER_REMOVED\x10\x04\x12$\n NODE_SIGNATURE_KIND_ASSET_UPDATE\x10\x05\x42\x33Z1code.vegaprotocol.io/vega/protos/vega/commands/v1b\x06proto3' + b'\n)vega/commands/v1/validator_commands.proto\x12\x10vega.commands.v1\x1a\x0fvega/vega.proto\x1a\x17vega/chain_events.proto\x1a vega/commands/v1/signature.proto"\xbd\x01\n\x12ValidatorHeartbeat\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12J\n\x12\x65thereum_signature\x18\x02 \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\x11\x65thereumSignature\x12\x42\n\x0evega_signature\x18\x03 \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\rvegaSignature"\x80\x04\n\x0c\x41nnounceNode\x12 \n\x0cvega_pub_key\x18\x01 \x01(\tR\nvegaPubKey\x12)\n\x10\x65thereum_address\x18\x02 \x01(\tR\x0f\x65thereumAddress\x12"\n\rchain_pub_key\x18\x03 \x01(\tR\x0b\x63hainPubKey\x12\x19\n\x08info_url\x18\x04 \x01(\tR\x07infoUrl\x12\x18\n\x07\x63ountry\x18\x05 \x01(\tR\x07\x63ountry\x12\x0e\n\x02id\x18\x06 \x01(\tR\x02id\x12\x12\n\x04name\x18\x07 \x01(\tR\x04name\x12\x1d\n\navatar_url\x18\x08 \x01(\tR\tavatarUrl\x12+\n\x12vega_pub_key_index\x18\t \x01(\rR\x0fvegaPubKeyIndex\x12\x1d\n\nfrom_epoch\x18\n \x01(\x04R\tfromEpoch\x12J\n\x12\x65thereum_signature\x18\x0b \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\x11\x65thereumSignature\x12\x42\n\x0evega_signature\x18\x0c \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\rvegaSignature\x12+\n\x11submitter_address\x18\r \x01(\tR\x10submitterAddress"\xc0\x03\n\x08NodeVote\x12\x1c\n\treference\x18\x02 \x01(\tR\treference\x12\x33\n\x04type\x18\x03 \x01(\x0e\x32\x1f.vega.commands.v1.NodeVote.TypeR\x04type"\xda\x02\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14TYPE_STAKE_DEPOSITED\x10\x01\x12\x16\n\x12TYPE_STAKE_REMOVED\x10\x02\x12\x18\n\x14TYPE_FUNDS_DEPOSITED\x10\x03\x12\x15\n\x11TYPE_SIGNER_ADDED\x10\x04\x12\x17\n\x13TYPE_SIGNER_REMOVED\x10\x05\x12\x17\n\x13TYPE_BRIDGE_STOPPED\x10\x06\x12\x17\n\x13TYPE_BRIDGE_RESUMED\x10\x07\x12\x15\n\x11TYPE_ASSET_LISTED\x10\x08\x12\x17\n\x13TYPE_LIMITS_UPDATED\x10\t\x12\x1b\n\x17TYPE_STAKE_TOTAL_SUPPLY\x10\n\x12\x1d\n\x19TYPE_SIGNER_THRESHOLD_SET\x10\x0b\x12"\n\x1eTYPE_GOVERNANCE_VALIDATE_ASSET\x10\x0cJ\x04\x08\x01\x10\x02"j\n\rNodeSignature\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03sig\x18\x02 \x01(\x0cR\x03sig\x12\x37\n\x04kind\x18\x03 \x01(\x0e\x32#.vega.commands.v1.NodeSignatureKindR\x04kind"\xb1\x02\n\nChainEvent\x12\x13\n\x05tx_id\x18\x01 \x01(\tR\x04txId\x12\x14\n\x05nonce\x18\x02 \x01(\x04R\x05nonce\x12\x34\n\x07\x62uiltin\x18\xe9\x07 \x01(\x0b\x32\x17.vega.BuiltinAssetEventH\x00R\x07\x62uiltin\x12)\n\x05\x65rc20\x18\xea\x07 \x01(\x0b\x32\x10.vega.ERC20EventH\x00R\x05\x65rc20\x12:\n\rstaking_event\x18\xed\x07 \x01(\x0b\x32\x12.vega.StakingEventH\x00R\x0cstakingEvent\x12\x42\n\x0e\x65rc20_multisig\x18\xee\x07 \x01(\x0b\x32\x18.vega.ERC20MultiSigEventH\x00R\rerc20MultisigB\x07\n\x05\x65ventJ\x06\x08\xeb\x07\x10\xec\x07J\x06\x08\xec\x07\x10\xed\x07"\xb4\x01\n\x13KeyRotateSubmission\x12)\n\x11new_pub_key_index\x18\x01 \x01(\rR\x0enewPubKeyIndex\x12!\n\x0ctarget_block\x18\x02 \x01(\x04R\x0btargetBlock\x12\x1e\n\x0bnew_pub_key\x18\x03 \x01(\tR\tnewPubKey\x12/\n\x14\x63urrent_pub_key_hash\x18\x04 \x01(\tR\x11\x63urrentPubKeyHash"\x83\x02\n\x1b\x45thereumKeyRotateSubmission\x12!\n\x0ctarget_block\x18\x01 \x01(\x04R\x0btargetBlock\x12\x1f\n\x0bnew_address\x18\x02 \x01(\tR\nnewAddress\x12\'\n\x0f\x63urrent_address\x18\x03 \x01(\tR\x0e\x63urrentAddress\x12+\n\x11submitter_address\x18\x04 \x01(\tR\x10submitterAddress\x12J\n\x12\x65thereum_signature\x18\x05 \x01(\x0b\x32\x1b.vega.commands.v1.SignatureR\x11\x65thereumSignature"M\n\x15StateVariableProposal\x12\x34\n\x08proposal\x18\x01 \x01(\x0b\x32\x18.vega.StateValueProposalR\x08proposal"u\n\x17ProtocolUpgradeProposal\x12\x30\n\x14upgrade_block_height\x18\x01 \x01(\x04R\x12upgradeBlockHeight\x12(\n\x10vega_release_tag\x18\x02 \x01(\tR\x0evegaReleaseTag*\x97\x02\n\x11NodeSignatureKind\x12#\n\x1fNODE_SIGNATURE_KIND_UNSPECIFIED\x10\x00\x12!\n\x1dNODE_SIGNATURE_KIND_ASSET_NEW\x10\x01\x12(\n$NODE_SIGNATURE_KIND_ASSET_WITHDRAWAL\x10\x02\x12\x33\n/NODE_SIGNATURE_KIND_ERC20_MULTISIG_SIGNER_ADDED\x10\x03\x12\x35\n1NODE_SIGNATURE_KIND_ERC20_MULTISIG_SIGNER_REMOVED\x10\x04\x12$\n NODE_SIGNATURE_KIND_ASSET_UPDATE\x10\x05\x42\x33Z1code.vegaprotocol.io/vega/protos/vega/commands/v1b\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -30,8 +30,8 @@ DESCRIPTOR._serialized_options = ( b"Z1code.vegaprotocol.io/vega/protos/vega/commands/v1" ) - _NODESIGNATUREKIND._serialized_start = 2508 - _NODESIGNATUREKIND._serialized_end = 2787 + _NODESIGNATUREKIND._serialized_start = 2357 + _NODESIGNATUREKIND._serialized_end = 2636 _VALIDATORHEARTBEAT._serialized_start = 140 _VALIDATORHEARTBEAT._serialized_end = 329 _ANNOUNCENODE._serialized_start = 332 @@ -52,6 +52,4 @@ _STATEVARIABLEPROPOSAL._serialized_end = 2235 _PROTOCOLUPGRADEPROPOSAL._serialized_start = 2237 _PROTOCOLUPGRADEPROPOSAL._serialized_end = 2354 - _ISSUESIGNATURES._serialized_start = 2357 - _ISSUESIGNATURES._serialized_end = 2505 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/vega/events/v1/events_pb2.py b/vega_sim/proto/vega/events/v1/events_pb2.py index a0ff1beea..57d7fbcc7 100644 --- a/vega_sim/proto/vega/events/v1/events_pb2.py +++ b/vega_sim/proto/vega/events/v1/events_pb2.py @@ -25,7 +25,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x1bvega/events/v1/events.proto\x12\x0evega.events.v1\x1a\x12vega/markets.proto\x1a\x11vega/assets.proto\x1a\x15vega/governance.proto\x1a\x0fvega/vega.proto\x1a\x11vega/oracle.proto\x1a\x1fvega/commands/v1/commands.proto\x1a\x1bvega/commands/v1/data.proto\x1a)vega/commands/v1/validator_commands.proto"\xee\x01\n\x18\x45RC20MultiSigSignerAdded\x12!\n\x0csignature_id\x18\x01 \x01(\tR\x0bsignatureId\x12!\n\x0cvalidator_id\x18\x02 \x01(\tR\x0bvalidatorId\x12\x1c\n\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\x12\x1d\n\nnew_signer\x18\x04 \x01(\tR\tnewSigner\x12\x1c\n\tsubmitter\x18\x05 \x01(\tR\tsubmitter\x12\x14\n\x05nonce\x18\x06 \x01(\tR\x05nonce\x12\x1b\n\tepoch_seq\x18\x07 \x01(\tR\x08\x65pochSeq"f\n#ERC20MultiSigSignerRemovedSubmitter\x12!\n\x0csignature_id\x18\x01 \x01(\tR\x0bsignatureId\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter"\x97\x02\n\x1a\x45RC20MultiSigSignerRemoved\x12\x66\n\x14signature_submitters\x18\x01 \x03(\x0b\x32\x33.vega.events.v1.ERC20MultiSigSignerRemovedSubmitterR\x13signatureSubmitters\x12!\n\x0cvalidator_id\x18\x02 \x01(\tR\x0bvalidatorId\x12\x1c\n\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\x12\x1d\n\nold_signer\x18\x04 \x01(\tR\toldSigner\x12\x14\n\x05nonce\x18\x05 \x01(\tR\x05nonce\x12\x1b\n\tepoch_seq\x18\x06 \x01(\tR\x08\x65pochSeq"\x90\x05\n\x08Transfer\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04\x66rom\x18\x02 \x01(\tR\x04\x66rom\x12=\n\x11\x66rom_account_type\x18\x03 \x01(\x0e\x32\x11.vega.AccountTypeR\x0f\x66romAccountType\x12\x0e\n\x02to\x18\x04 \x01(\tR\x02to\x12\x39\n\x0fto_account_type\x18\x05 \x01(\x0e\x32\x11.vega.AccountTypeR\rtoAccountType\x12\x14\n\x05\x61sset\x18\x06 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x1c\n\treference\x18\x08 \x01(\tR\treference\x12\x37\n\x06status\x18\t \x01(\x0e\x32\x1f.vega.events.v1.Transfer.StatusR\x06status\x12\x1c\n\ttimestamp\x18\n \x01(\x03R\ttimestamp\x12\x1b\n\x06reason\x18\x0b \x01(\tH\x01R\x06reason\x88\x01\x01\x12\x39\n\x07one_off\x18\x65 \x01(\x0b\x32\x1e.vega.events.v1.OneOffTransferH\x00R\x06oneOff\x12\x41\n\trecurring\x18\x66 \x01(\x0b\x32!.vega.events.v1.RecurringTransferH\x00R\trecurring"\x84\x01\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATUS_PENDING\x10\x01\x12\x0f\n\x0bSTATUS_DONE\x10\x02\x12\x13\n\x0fSTATUS_REJECTED\x10\x03\x12\x12\n\x0eSTATUS_STOPPED\x10\x04\x12\x14\n\x10STATUS_CANCELLED\x10\x05\x42\x06\n\x04kindB\t\n\x07_reason"/\n\x0eOneOffTransfer\x12\x1d\n\ndeliver_on\x18\x01 \x01(\x03R\tdeliverOn"\xc1\x01\n\x11RecurringTransfer\x12\x1f\n\x0bstart_epoch\x18\x01 \x01(\x04R\nstartEpoch\x12 \n\tend_epoch\x18\x02 \x01(\x04H\x00R\x08\x65ndEpoch\x88\x01\x01\x12\x16\n\x06\x66\x61\x63tor\x18\x03 \x01(\tR\x06\x66\x61\x63tor\x12\x43\n\x11\x64ispatch_strategy\x18\x04 \x01(\x0b\x32\x16.vega.DispatchStrategyR\x10\x64ispatchStrategyB\x0c\n\n_end_epoch"\xb4\x04\n\x0cStakeLinking\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x35\n\x04type\x18\x02 \x01(\x0e\x32!.vega.events.v1.StakeLinking.TypeR\x04type\x12\x0e\n\x02ts\x18\x03 \x01(\x03R\x02ts\x12\x14\n\x05party\x18\x04 \x01(\tR\x05party\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12;\n\x06status\x18\x06 \x01(\x0e\x32#.vega.events.v1.StakeLinking.StatusR\x06status\x12!\n\x0c\x66inalized_at\x18\x07 \x01(\x03R\x0b\x66inalizedAt\x12\x17\n\x07tx_hash\x18\x08 \x01(\tR\x06txHash\x12!\n\x0c\x62lock_height\x18\t \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\n \x01(\x03R\tblockTime\x12\x1b\n\tlog_index\x18\x0b \x01(\x04R\x08logIndex\x12)\n\x10\x65thereum_address\x18\x0c \x01(\tR\x0f\x65thereumAddress"<\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\r\n\tTYPE_LINK\x10\x01\x12\x0f\n\x0bTYPE_UNLINK\x10\x02"^\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATUS_PENDING\x10\x01\x12\x13\n\x0fSTATUS_ACCEPTED\x10\x02\x12\x13\n\x0fSTATUS_REJECTED\x10\x03"\xd3\x02\n\x18\x45RC20MultiSigSignerEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x41\n\x04type\x18\x02 \x01(\x0e\x32-.vega.events.v1.ERC20MultiSigSignerEvent.TypeR\x04type\x12\x16\n\x06signer\x18\x03 \x01(\tR\x06signer\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1d\n\nblock_time\x18\x05 \x01(\x03R\tblockTime\x12\x17\n\x07tx_hash\x18\x06 \x01(\tR\x06txHash\x12\x1b\n\tlog_index\x18\x07 \x01(\x04R\x08logIndex\x12!\n\x0c\x62lock_number\x18\x08 \x01(\x04R\x0b\x62lockNumber">\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_ADDED\x10\x01\x12\x10\n\x0cTYPE_REMOVED\x10\x02"\xe3\x01\n\x1e\x45RC20MultiSigThresholdSetEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12#\n\rnew_threshold\x18\x02 \x01(\rR\x0cnewThreshold\x12\x14\n\x05nonce\x18\x03 \x01(\tR\x05nonce\x12\x1d\n\nblock_time\x18\x04 \x01(\x03R\tblockTime\x12\x17\n\x07tx_hash\x18\x05 \x01(\tR\x06txHash\x12\x1b\n\tlog_index\x18\x06 \x01(\x04R\x08logIndex\x12!\n\x0c\x62lock_number\x18\x07 \x01(\x04R\x0b\x62lockNumber"g\n\x0f\x43heckpointEvent\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12!\n\x0c\x62lock_height\x18\x03 \x01(\x04R\x0b\x62lockHeight"-\n\x10StreamStartEvent\x12\x19\n\x08\x63hain_id\x18\x01 \x01(\tR\x07\x63hainId"\x82\x02\n\x11RewardPayoutEvent\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x1b\n\tepoch_seq\x18\x02 \x01(\tR\x08\x65pochSeq\x12\x14\n\x05\x61sset\x18\x03 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x04 \x01(\tR\x06\x61mount\x12\x35\n\x17percent_of_total_reward\x18\x05 \x01(\tR\x14percentOfTotalReward\x12\x1c\n\ttimestamp\x18\x06 \x01(\x03R\ttimestamp\x12\x1f\n\x0breward_type\x18\x07 \x01(\tR\nrewardType\x12\x16\n\x06market\x18\x08 \x01(\tR\x06market"\xd6\x02\n\x13ValidatorScoreEvent\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1b\n\tepoch_seq\x18\x02 \x01(\tR\x08\x65pochSeq\x12\'\n\x0fvalidator_score\x18\x03 \x01(\tR\x0evalidatorScore\x12)\n\x10normalised_score\x18\x04 \x01(\tR\x0fnormalisedScore\x12\x33\n\x15validator_performance\x18\x05 \x01(\tR\x14validatorPerformance\x12.\n\x13raw_validator_score\x18\x06 \x01(\tR\x11rawValidatorScore\x12)\n\x10validator_status\x18\x07 \x01(\tR\x0fvalidatorStatus\x12%\n\x0emultisig_score\x18\x08 \x01(\tR\rmultisigScore"|\n\x16\x44\x65legationBalanceEvent\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x17\n\x07node_id\x18\x02 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1b\n\tepoch_seq\x18\x04 \x01(\tR\x08\x65pochSeq"D\n\x0bMarketEvent\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x18\n\x07payload\x18\x02 \x01(\tR\x07payload"\xed\x10\n\x11TransactionResult\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x16\n\x06status\x18\x02 \x01(\x08R\x06status\x12\x12\n\x04hash\x18\x03 \x01(\tR\x04hash\x12N\n\x10order_submission\x18\x65 \x01(\x0b\x32!.vega.commands.v1.OrderSubmissionH\x00R\x0forderSubmission\x12K\n\x0forder_amendment\x18\x66 \x01(\x0b\x32 .vega.commands.v1.OrderAmendmentH\x00R\x0eorderAmendment\x12T\n\x12order_cancellation\x18g \x01(\x0b\x32#.vega.commands.v1.OrderCancellationH\x00R\x11orderCancellation\x12\x42\n\x08proposal\x18h \x01(\x0b\x32$.vega.commands.v1.ProposalSubmissionH\x00R\x08proposal\x12K\n\x0fvote_submission\x18i \x01(\x0b\x32 .vega.commands.v1.VoteSubmissionH\x00R\x0evoteSubmission\x12v\n\x1eliquidity_provision_submission\x18j \x01(\x0b\x32..vega.commands.v1.LiquidityProvisionSubmissionH\x00R\x1cliquidityProvisionSubmission\x12W\n\x13withdraw_submission\x18k \x01(\x0b\x32$.vega.commands.v1.WithdrawSubmissionH\x00R\x12withdrawSubmission\x12W\n\x13\x64\x65legate_submission\x18l \x01(\x0b\x32$.vega.commands.v1.DelegateSubmissionH\x00R\x12\x64\x65legateSubmission\x12]\n\x15undelegate_submission\x18m \x01(\x0b\x32&.vega.commands.v1.UndelegateSubmissionH\x00R\x14undelegateSubmission\x12|\n liquidity_provision_cancellation\x18o \x01(\x0b\x32\x30.vega.commands.v1.LiquidityProvisionCancellationH\x00R\x1eliquidityProvisionCancellation\x12s\n\x1dliquidity_provision_amendment\x18p \x01(\x0b\x32-.vega.commands.v1.LiquidityProvisionAmendmentH\x00R\x1bliquidityProvisionAmendment\x12\x38\n\x08transfer\x18q \x01(\x0b\x32\x1a.vega.commands.v1.TransferH\x00R\x08transfer\x12K\n\x0f\x63\x61ncel_transfer\x18r \x01(\x0b\x32 .vega.commands.v1.CancelTransferH\x00R\x0e\x63\x61ncelTransfer\x12\x45\n\rannounce_node\x18s \x01(\x0b\x32\x1e.vega.commands.v1.AnnounceNodeH\x00R\x0c\x61nnounceNode\x12^\n\x16oracle_data_submission\x18t \x01(\x0b\x32&.vega.commands.v1.OracleDataSubmissionH\x00R\x14oracleDataSubmission\x12g\n\x19protocol_upgrade_proposal\x18u \x01(\x0b\x32).vega.commands.v1.ProtocolUpgradeProposalH\x00R\x17protocolUpgradeProposal\x12N\n\x10issue_signatures\x18v \x01(\x0b\x32!.vega.commands.v1.IssueSignaturesH\x00R\x0fissueSignatures\x12g\n\x19\x62\x61tch_market_instructions\x18w \x01(\x0b\x32).vega.commands.v1.BatchMarketInstructionsH\x00R\x17\x62\x61tchMarketInstructions\x12[\n\x15key_rotate_submission\x18x \x01(\x0b\x32%.vega.commands.v1.KeyRotateSubmissionH\x00R\x13keyRotateSubmission\x12t\n\x1e\x65thereum_key_rotate_submission\x18y \x01(\x0b\x32-.vega.commands.v1.EthereumKeyRotateSubmissionH\x00R\x1b\x65thereumKeyRotateSubmission\x12M\n\x07success\x18\xe9\x07 \x01(\x0b\x32\x30.vega.events.v1.TransactionResult.SuccessDetailsH\x01R\x07success\x12M\n\x07\x66\x61ilure\x18\xea\x07 \x01(\x0b\x32\x30.vega.events.v1.TransactionResult.FailureDetailsH\x01R\x07\x66\x61ilure\x1a\x10\n\x0eSuccessDetails\x1a&\n\x0e\x46\x61ilureDetails\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rrorB\r\n\x0btransactionB\x07\n\x05\x65xtra"\xa7\r\n\x0cTxErrorEvent\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x17\n\x07\x65rr_msg\x18\x02 \x01(\tR\x06\x65rrMsg\x12N\n\x10order_submission\x18\x65 \x01(\x0b\x32!.vega.commands.v1.OrderSubmissionH\x00R\x0forderSubmission\x12K\n\x0forder_amendment\x18\x66 \x01(\x0b\x32 .vega.commands.v1.OrderAmendmentH\x00R\x0eorderAmendment\x12T\n\x12order_cancellation\x18g \x01(\x0b\x32#.vega.commands.v1.OrderCancellationH\x00R\x11orderCancellation\x12\x42\n\x08proposal\x18h \x01(\x0b\x32$.vega.commands.v1.ProposalSubmissionH\x00R\x08proposal\x12K\n\x0fvote_submission\x18i \x01(\x0b\x32 .vega.commands.v1.VoteSubmissionH\x00R\x0evoteSubmission\x12v\n\x1eliquidity_provision_submission\x18j \x01(\x0b\x32..vega.commands.v1.LiquidityProvisionSubmissionH\x00R\x1cliquidityProvisionSubmission\x12W\n\x13withdraw_submission\x18k \x01(\x0b\x32$.vega.commands.v1.WithdrawSubmissionH\x00R\x12withdrawSubmission\x12W\n\x13\x64\x65legate_submission\x18l \x01(\x0b\x32$.vega.commands.v1.DelegateSubmissionH\x00R\x12\x64\x65legateSubmission\x12]\n\x15undelegate_submission\x18m \x01(\x0b\x32&.vega.commands.v1.UndelegateSubmissionH\x00R\x14undelegateSubmission\x12|\n liquidity_provision_cancellation\x18o \x01(\x0b\x32\x30.vega.commands.v1.LiquidityProvisionCancellationH\x00R\x1eliquidityProvisionCancellation\x12s\n\x1dliquidity_provision_amendment\x18p \x01(\x0b\x32-.vega.commands.v1.LiquidityProvisionAmendmentH\x00R\x1bliquidityProvisionAmendment\x12\x38\n\x08transfer\x18q \x01(\x0b\x32\x1a.vega.commands.v1.TransferH\x00R\x08transfer\x12K\n\x0f\x63\x61ncel_transfer\x18r \x01(\x0b\x32 .vega.commands.v1.CancelTransferH\x00R\x0e\x63\x61ncelTransfer\x12\x45\n\rannounce_node\x18s \x01(\x0b\x32\x1e.vega.commands.v1.AnnounceNodeH\x00R\x0c\x61nnounceNode\x12^\n\x16oracle_data_submission\x18t \x01(\x0b\x32&.vega.commands.v1.OracleDataSubmissionH\x00R\x14oracleDataSubmission\x12g\n\x19protocol_upgrade_proposal\x18u \x01(\x0b\x32).vega.commands.v1.ProtocolUpgradeProposalH\x00R\x17protocolUpgradeProposal\x12N\n\x10issue_signatures\x18v \x01(\x0b\x32!.vega.commands.v1.IssueSignaturesH\x00R\x0fissueSignatures\x12g\n\x19\x62\x61tch_market_instructions\x18w \x01(\x0b\x32).vega.commands.v1.BatchMarketInstructionsH\x00R\x17\x62\x61tchMarketInstructionsB\r\n\x0btransactionJ\x04\x08n\x10o"*\n\nTimeUpdate\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp"\xa4\x01\n\nEpochEvent\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12)\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x11.vega.EpochActionR\x06\x61\x63tion\x12\x1d\n\nstart_time\x18\x03 \x01(\x03R\tstartTime\x12\x1f\n\x0b\x65xpire_time\x18\x04 \x01(\x03R\nexpireTime\x12\x19\n\x08\x65nd_time\x18\x05 \x01(\x03R\x07\x65ndTime"R\n\x0fLedgerMovements\x12?\n\x10ledger_movements\x18\x01 \x03(\x0b\x32\x14.vega.LedgerMovementR\x0fledgerMovements"\x88\x01\n\x12PositionResolution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1e\n\ndistressed\x18\x02 \x01(\x03R\ndistressed\x12\x16\n\x06\x63losed\x18\x03 \x01(\x03R\x06\x63losed\x12\x1d\n\nmark_price\x18\x04 \x01(\tR\tmarkPrice"c\n\x11LossSocialization\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount"^\n\x0fTradeSettlement\x12\x12\n\x04size\x18\x01 \x01(\x03R\x04size\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12!\n\x0cmarket_price\x18\x03 \x01(\tR\x0bmarketPrice"\xd5\x01\n\x0eSettlePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x14\n\x05price\x18\x03 \x01(\tR\x05price\x12L\n\x11trade_settlements\x18\x04 \x03(\x0b\x32\x1f.vega.events.v1.TradeSettlementR\x10tradeSettlements\x12\'\n\x0fposition_factor\x18\x05 \x01(\tR\x0epositionFactor"j\n\x0cSettleMarket\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12\'\n\x0fposition_factor\x18\x03 \x01(\tR\x0epositionFactor"\xf6\x01\n\x12PositionStateEvent\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x12\n\x04size\x18\x03 \x01(\x03R\x04size\x12%\n\x0epotential_buys\x18\x04 \x01(\x03R\rpotentialBuys\x12\'\n\x0fpotential_sells\x18\x05 \x01(\x03R\x0epotentialSells\x12 \n\x0cvw_buy_price\x18\x06 \x01(\tR\nvwBuyPrice\x12"\n\rvw_sell_price\x18\x07 \x01(\tR\x0bvwSellPrice"x\n\x10SettleDistressed\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06margin\x18\x03 \x01(\tR\x06margin\x12\x14\n\x05price\x18\x04 \x01(\tR\x05price"0\n\nMarketTick\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04time\x18\x02 \x01(\x03R\x04time"\x85\x02\n\x0c\x41uctionEvent\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0fopening_auction\x18\x02 \x01(\x08R\x0eopeningAuction\x12\x14\n\x05leave\x18\x03 \x01(\x08R\x05leave\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12.\n\x07trigger\x18\x06 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x07trigger\x12\x41\n\x11\x65xtension_trigger\x18\x07 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x10\x65xtensionTrigger"\xa9\x03\n\x0fValidatorUpdate\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12 \n\x0cvega_pub_key\x18\x02 \x01(\tR\nvegaPubKey\x12)\n\x10\x65thereum_address\x18\x03 \x01(\tR\x0f\x65thereumAddress\x12\x1c\n\ntm_pub_key\x18\x04 \x01(\tR\x08tmPubKey\x12\x19\n\x08info_url\x18\x05 \x01(\tR\x07infoUrl\x12\x18\n\x07\x63ountry\x18\x06 \x01(\tR\x07\x63ountry\x12\x12\n\x04name\x18\x07 \x01(\tR\x04name\x12\x1d\n\navatar_url\x18\x08 \x01(\tR\tavatarUrl\x12+\n\x12vega_pub_key_index\x18\t \x01(\rR\x0fvegaPubKeyIndex\x12\x14\n\x05\x61\x64\x64\x65\x64\x18\n \x01(\x08R\x05\x61\x64\x64\x65\x64\x12\x1d\n\nfrom_epoch\x18\x0b \x01(\x04R\tfromEpoch\x12+\n\x11submitter_address\x18\x0c \x01(\tR\x10submitterAddress\x12\x1b\n\tepoch_seq\x18\r \x01(\x04R\x08\x65pochSeq"\xb2\x02\n\x15ValidatorRankingEvent\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1f\n\x0bstake_score\x18\x02 \x01(\tR\nstakeScore\x12+\n\x11performance_score\x18\x03 \x01(\tR\x10performanceScore\x12#\n\rranking_score\x18\x04 \x01(\tR\x0crankingScore\x12\'\n\x0fprevious_status\x18\x05 \x01(\tR\x0epreviousStatus\x12\x1f\n\x0bnext_status\x18\x06 \x01(\tR\nnextStatus\x12\x1b\n\tepoch_seq\x18\x07 \x01(\tR\x08\x65pochSeq\x12&\n\x0ftm_voting_power\x18\x08 \x01(\rR\rtmVotingPower"\x89\x01\n\x0bKeyRotation\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1e\n\x0bold_pub_key\x18\x02 \x01(\tR\toldPubKey\x12\x1e\n\x0bnew_pub_key\x18\x03 \x01(\tR\tnewPubKey\x12!\n\x0c\x62lock_height\x18\x04 \x01(\x04R\x0b\x62lockHeight"\x93\x01\n\x13\x45thereumKeyRotation\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1f\n\x0bold_address\x18\x02 \x01(\tR\noldAddress\x12\x1f\n\x0bnew_address\x18\x03 \x01(\tR\nnewAddress\x12!\n\x0c\x62lock_height\x18\x04 \x01(\x04R\x0b\x62lockHeight"\xd7\x01\n\x14ProtocolUpgradeEvent\x12\x30\n\x14upgrade_block_height\x18\x01 \x01(\x04R\x12upgradeBlockHeight\x12(\n\x10vega_release_tag\x18\x02 \x01(\tR\x0evegaReleaseTag\x12\x1c\n\tapprovers\x18\x03 \x03(\tR\tapprovers\x12\x45\n\x06status\x18\x04 \x01(\x0e\x32-.vega.events.v1.ProtocolUpgradeProposalStatusR\x06status"K\n\x08StateVar\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n\x08\x65vent_id\x18\x02 \x01(\tR\x07\x65ventId\x12\x14\n\x05state\x18\x03 \x01(\tR\x05state"V\n\nBeginBlock\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1c\n\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x12\n\x04hash\x18\x03 \x01(\tR\x04hash""\n\x08\x45ndBlock\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height"D\n\x16ProtocolUpgradeStarted\x12*\n\x11last_block_height\x18\x01 \x01(\x04R\x0flastBlockHeight"J\n\x1cProtocolUpgradeDataNodeReady\x12*\n\x11last_block_height\x18\x01 \x01(\x04R\x0flastBlockHeight"\xad\x01\n\x10\x43oreSnapshotData\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12!\n\x0c\x63ore_version\x18\x03 \x01(\tR\x0b\x63oreVersion\x12\x34\n\x16protocol_upgrade_block\x18\x04 \x01(\x08R\x14protocolUpgradeBlock"\xc2\x1f\n\x08\x42usEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n\x05\x62lock\x18\x02 \x01(\tR\x05\x62lock\x12\x30\n\x04type\x18\x03 \x01(\x0e\x32\x1c.vega.events.v1.BusEventTypeR\x04type\x12=\n\x0btime_update\x18\x65 \x01(\x0b\x32\x1a.vega.events.v1.TimeUpdateH\x00R\ntimeUpdate\x12L\n\x10ledger_movements\x18\x66 \x01(\x0b\x32\x1f.vega.events.v1.LedgerMovementsH\x00R\x0fledgerMovements\x12U\n\x13position_resolution\x18g \x01(\x0b\x32".vega.events.v1.PositionResolutionH\x00R\x12positionResolution\x12#\n\x05order\x18h \x01(\x0b\x32\x0b.vega.OrderH\x00R\x05order\x12)\n\x07\x61\x63\x63ount\x18i \x01(\x0b\x32\r.vega.AccountH\x00R\x07\x61\x63\x63ount\x12#\n\x05party\x18j \x01(\x0b\x32\x0b.vega.PartyH\x00R\x05party\x12#\n\x05trade\x18k \x01(\x0b\x32\x0b.vega.TradeH\x00R\x05trade\x12\x39\n\rmargin_levels\x18l \x01(\x0b\x32\x12.vega.MarginLevelsH\x00R\x0cmarginLevels\x12,\n\x08proposal\x18m \x01(\x0b\x32\x0e.vega.ProposalH\x00R\x08proposal\x12 \n\x04vote\x18n \x01(\x0b\x32\n.vega.VoteH\x00R\x04vote\x12\x33\n\x0bmarket_data\x18o \x01(\x0b\x32\x10.vega.MarketDataH\x00R\nmarketData\x12H\n\x0enode_signature\x18p \x01(\x0b\x32\x1f.vega.commands.v1.NodeSignatureH\x00R\rnodeSignature\x12R\n\x12loss_socialization\x18q \x01(\x0b\x32!.vega.events.v1.LossSocializationH\x00R\x11lossSocialization\x12I\n\x0fsettle_position\x18r \x01(\x0b\x32\x1e.vega.events.v1.SettlePositionH\x00R\x0esettlePosition\x12O\n\x11settle_distressed\x18s \x01(\x0b\x32 .vega.events.v1.SettleDistressedH\x00R\x10settleDistressed\x12\x35\n\x0emarket_created\x18t \x01(\x0b\x32\x0c.vega.MarketH\x00R\rmarketCreated\x12#\n\x05\x61sset\x18u \x01(\x0b\x32\x0b.vega.AssetH\x00R\x05\x61sset\x12=\n\x0bmarket_tick\x18v \x01(\x0b\x32\x1a.vega.events.v1.MarketTickH\x00R\nmarketTick\x12\x32\n\nwithdrawal\x18w \x01(\x0b\x32\x10.vega.WithdrawalH\x00R\nwithdrawal\x12)\n\x07\x64\x65posit\x18x \x01(\x0b\x32\r.vega.DepositH\x00R\x07\x64\x65posit\x12\x38\n\x07\x61uction\x18y \x01(\x0b\x32\x1c.vega.events.v1.AuctionEventH\x00R\x07\x61uction\x12\x33\n\x0brisk_factor\x18z \x01(\x0b\x32\x10.vega.RiskFactorH\x00R\nriskFactor\x12\x45\n\x11network_parameter\x18{ \x01(\x0b\x32\x16.vega.NetworkParameterH\x00R\x10networkParameter\x12K\n\x13liquidity_provision\x18| \x01(\x0b\x32\x18.vega.LiquidityProvisionH\x00R\x12liquidityProvision\x12\x35\n\x0emarket_updated\x18} \x01(\x0b\x32\x0c.vega.MarketH\x00R\rmarketUpdated\x12\x33\n\x0boracle_spec\x18~ \x01(\x0b\x32\x10.vega.OracleSpecH\x00R\noracleSpec\x12\x33\n\x0boracle_data\x18\x7f \x01(\x0b\x32\x10.vega.OracleDataH\x00R\noracleData\x12X\n\x12\x64\x65legation_balance\x18\x81\x01 \x01(\x0b\x32&.vega.events.v1.DelegationBalanceEventH\x00R\x11\x64\x65legationBalance\x12O\n\x0fvalidator_score\x18\x82\x01 \x01(\x0b\x32#.vega.events.v1.ValidatorScoreEventH\x00R\x0evalidatorScore\x12>\n\x0b\x65poch_event\x18\x83\x01 \x01(\x0b\x32\x1a.vega.events.v1.EpochEventH\x00R\nepochEvent\x12M\n\x10validator_update\x18\x84\x01 \x01(\x0b\x32\x1f.vega.events.v1.ValidatorUpdateH\x00R\x0fvalidatorUpdate\x12\x44\n\rstake_linking\x18\x85\x01 \x01(\x0b\x32\x1c.vega.events.v1.StakeLinkingH\x00R\x0cstakeLinking\x12I\n\rreward_payout\x18\x86\x01 \x01(\x0b\x32!.vega.events.v1.RewardPayoutEventH\x00R\x0crewardPayout\x12\x42\n\ncheckpoint\x18\x87\x01 \x01(\x0b\x32\x1f.vega.events.v1.CheckpointEventH\x00R\ncheckpoint\x12\x41\n\x0ckey_rotation\x18\x88\x01 \x01(\x0b\x32\x1b.vega.events.v1.KeyRotationH\x00R\x0bkeyRotation\x12\x38\n\tstate_var\x18\x89\x01 \x01(\x0b\x32\x18.vega.events.v1.StateVarH\x00R\x08stateVar\x12=\n\x0enetwork_limits\x18\x8a\x01 \x01(\x0b\x32\x13.vega.NetworkLimitsH\x00R\rnetworkLimits\x12\x37\n\x08transfer\x18\x8b\x01 \x01(\x0b\x32\x18.vega.events.v1.TransferH\x00R\x08transfer\x12M\n\rranking_event\x18\x8c\x01 \x01(\x0b\x32%.vega.events.v1.ValidatorRankingEventH\x00R\x0crankingEvent\x12j\n\x1b\x65rc20_multisig_signer_event\x18\x8d\x01 \x01(\x0b\x32(.vega.events.v1.ERC20MultiSigSignerEventH\x00R\x18\x65rc20MultisigSignerEvent\x12}\n"erc20_multisig_set_threshold_event\x18\x8e\x01 \x01(\x0b\x32..vega.events.v1.ERC20MultiSigThresholdSetEventH\x00R\x1e\x65rc20MultisigSetThresholdEvent\x12j\n\x1b\x65rc20_multisig_signer_added\x18\x8f\x01 \x01(\x0b\x32(.vega.events.v1.ERC20MultiSigSignerAddedH\x00R\x18\x65rc20MultisigSignerAdded\x12p\n\x1d\x65rc20_multisig_signer_removed\x18\x90\x01 \x01(\x0b\x32*.vega.events.v1.ERC20MultiSigSignerRemovedH\x00R\x1a\x65rc20MultisigSignerRemoved\x12W\n\x14position_state_event\x18\x91\x01 \x01(\x0b\x32".vega.events.v1.PositionStateEventH\x00R\x12positionStateEvent\x12Z\n\x15\x65thereum_key_rotation\x18\x92\x01 \x01(\x0b\x32#.vega.events.v1.EthereumKeyRotationH\x00R\x13\x65thereumKeyRotation\x12]\n\x16protocol_upgrade_event\x18\x93\x01 \x01(\x0b\x32$.vega.events.v1.ProtocolUpgradeEventH\x00R\x14protocolUpgradeEvent\x12>\n\x0b\x62\x65gin_block\x18\x94\x01 \x01(\x0b\x32\x1a.vega.events.v1.BeginBlockH\x00R\nbeginBlock\x12\x38\n\tend_block\x18\x95\x01 \x01(\x0b\x32\x18.vega.events.v1.EndBlockH\x00R\x08\x65ndBlock\x12\x63\n\x18protocol_upgrade_started\x18\x96\x01 \x01(\x0b\x32&.vega.events.v1.ProtocolUpgradeStartedH\x00R\x16protocolUpgradeStarted\x12\x44\n\rsettle_market\x18\x97\x01 \x01(\x0b\x32\x1c.vega.events.v1.SettleMarketH\x00R\x0csettleMarket\x12S\n\x12transaction_result\x18\x98\x01 \x01(\x0b\x32!.vega.events.v1.TransactionResultH\x00R\x11transactionResult\x12S\n\x13\x63ore_snapshot_event\x18\x99\x01 \x01(\x0b\x32 .vega.events.v1.CoreSnapshotDataH\x00R\x11\x63oreSnapshotEvent\x12w\n protocol_upgrade_data_node_ready\x18\x9a\x01 \x01(\x0b\x32,.vega.events.v1.ProtocolUpgradeDataNodeReadyH\x00R\x1cprotocolUpgradeDataNodeReady\x12\x36\n\x06market\x18\xe9\x07 \x01(\x0b\x32\x1b.vega.events.v1.MarketEventH\x00R\x06market\x12\x41\n\x0ctx_err_event\x18\xd1\x0f \x01(\x0b\x32\x1c.vega.events.v1.TxErrorEventH\x00R\ntxErrEvent\x12\x18\n\x07version\x18\x04 \x01(\rR\x07version\x12\x19\n\x08\x63hain_id\x18\x05 \x01(\tR\x07\x63hainId\x12\x17\n\x07tx_hash\x18\x06 \x01(\tR\x06txHashB\x07\n\x05\x65vent*\xdd\x01\n\x1dProtocolUpgradeProposalStatus\x12\x30\n,PROTOCOL_UPGRADE_PROPOSAL_STATUS_UNSPECIFIED\x10\x00\x12,\n(PROTOCOL_UPGRADE_PROPOSAL_STATUS_PENDING\x10\x01\x12-\n)PROTOCOL_UPGRADE_PROPOSAL_STATUS_APPROVED\x10\x02\x12-\n)PROTOCOL_UPGRADE_PROPOSAL_STATUS_REJECTED\x10\x03*\xf5\x0f\n\x0c\x42usEventType\x12\x1e\n\x1a\x42US_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x42US_EVENT_TYPE_ALL\x10\x01\x12\x1e\n\x1a\x42US_EVENT_TYPE_TIME_UPDATE\x10\x02\x12#\n\x1f\x42US_EVENT_TYPE_LEDGER_MOVEMENTS\x10\x03\x12&\n"BUS_EVENT_TYPE_POSITION_RESOLUTION\x10\x04\x12\x18\n\x14\x42US_EVENT_TYPE_ORDER\x10\x05\x12\x1a\n\x16\x42US_EVENT_TYPE_ACCOUNT\x10\x06\x12\x18\n\x14\x42US_EVENT_TYPE_PARTY\x10\x07\x12\x18\n\x14\x42US_EVENT_TYPE_TRADE\x10\x08\x12 \n\x1c\x42US_EVENT_TYPE_MARGIN_LEVELS\x10\t\x12\x1b\n\x17\x42US_EVENT_TYPE_PROPOSAL\x10\n\x12\x17\n\x13\x42US_EVENT_TYPE_VOTE\x10\x0b\x12\x1e\n\x1a\x42US_EVENT_TYPE_MARKET_DATA\x10\x0c\x12!\n\x1d\x42US_EVENT_TYPE_NODE_SIGNATURE\x10\r\x12%\n!BUS_EVENT_TYPE_LOSS_SOCIALIZATION\x10\x0e\x12"\n\x1e\x42US_EVENT_TYPE_SETTLE_POSITION\x10\x0f\x12$\n BUS_EVENT_TYPE_SETTLE_DISTRESSED\x10\x10\x12!\n\x1d\x42US_EVENT_TYPE_MARKET_CREATED\x10\x11\x12\x18\n\x14\x42US_EVENT_TYPE_ASSET\x10\x12\x12\x1e\n\x1a\x42US_EVENT_TYPE_MARKET_TICK\x10\x13\x12\x1d\n\x19\x42US_EVENT_TYPE_WITHDRAWAL\x10\x14\x12\x1a\n\x16\x42US_EVENT_TYPE_DEPOSIT\x10\x15\x12\x1a\n\x16\x42US_EVENT_TYPE_AUCTION\x10\x16\x12\x1e\n\x1a\x42US_EVENT_TYPE_RISK_FACTOR\x10\x17\x12$\n BUS_EVENT_TYPE_NETWORK_PARAMETER\x10\x18\x12&\n"BUS_EVENT_TYPE_LIQUIDITY_PROVISION\x10\x19\x12!\n\x1d\x42US_EVENT_TYPE_MARKET_UPDATED\x10\x1a\x12\x1e\n\x1a\x42US_EVENT_TYPE_ORACLE_SPEC\x10\x1b\x12\x1e\n\x1a\x42US_EVENT_TYPE_ORACLE_DATA\x10\x1c\x12%\n!BUS_EVENT_TYPE_DELEGATION_BALANCE\x10\x1d\x12"\n\x1e\x42US_EVENT_TYPE_VALIDATOR_SCORE\x10\x1e\x12\x1f\n\x1b\x42US_EVENT_TYPE_EPOCH_UPDATE\x10\x1f\x12#\n\x1f\x42US_EVENT_TYPE_VALIDATOR_UPDATE\x10 \x12 \n\x1c\x42US_EVENT_TYPE_STAKE_LINKING\x10!\x12&\n"BUS_EVENT_TYPE_REWARD_PAYOUT_EVENT\x10"\x12\x1d\n\x19\x42US_EVENT_TYPE_CHECKPOINT\x10#\x12\x1f\n\x1b\x42US_EVENT_TYPE_STREAM_START\x10$\x12\x1f\n\x1b\x42US_EVENT_TYPE_KEY_ROTATION\x10%\x12\x1c\n\x18\x42US_EVENT_TYPE_STATE_VAR\x10&\x12!\n\x1d\x42US_EVENT_TYPE_NETWORK_LIMITS\x10\'\x12\x1b\n\x17\x42US_EVENT_TYPE_TRANSFER\x10(\x12$\n BUS_EVENT_TYPE_VALIDATOR_RANKING\x10)\x12/\n+BUS_EVENT_TYPE_ERC20_MULTI_SIG_SIGNER_EVENT\x10*\x12\x30\n,BUS_EVENT_TYPE_ERC20_MULTI_SIG_SET_THRESHOLD\x10+\x12/\n+BUS_EVENT_TYPE_ERC20_MULTI_SIG_SIGNER_ADDED\x10,\x12\x31\n-BUS_EVENT_TYPE_ERC20_MULTI_SIG_SIGNER_REMOVED\x10-\x12!\n\x1d\x42US_EVENT_TYPE_POSITION_STATE\x10.\x12(\n$BUS_EVENT_TYPE_ETHEREUM_KEY_ROTATION\x10/\x12,\n(BUS_EVENT_TYPE_PROTOCOL_UPGRADE_PROPOSAL\x10\x30\x12\x1e\n\x1a\x42US_EVENT_TYPE_BEGIN_BLOCK\x10\x31\x12\x1c\n\x18\x42US_EVENT_TYPE_END_BLOCK\x10\x32\x12+\n\'BUS_EVENT_TYPE_PROTOCOL_UPGRADE_STARTED\x10\x33\x12 \n\x1c\x42US_EVENT_TYPE_SETTLE_MARKET\x10\x34\x12%\n!BUS_EVENT_TYPE_TRANSACTION_RESULT\x10\x35\x12!\n\x1d\x42US_EVENT_TYPE_SNAPSHOT_TAKEN\x10\x36\x12\x33\n/BUS_EVENT_TYPE_PROTOCOL_UPGRADE_DATA_NODE_READY\x10\x37\x12\x19\n\x15\x42US_EVENT_TYPE_MARKET\x10\x65\x12\x1c\n\x17\x42US_EVENT_TYPE_TX_ERROR\x10\xc9\x01\x42\x31Z/code.vegaprotocol.io/vega/protos/vega/events/v1b\x06proto3' + b'\n\x1bvega/events/v1/events.proto\x12\x0evega.events.v1\x1a\x12vega/markets.proto\x1a\x11vega/assets.proto\x1a\x15vega/governance.proto\x1a\x0fvega/vega.proto\x1a\x11vega/oracle.proto\x1a\x1fvega/commands/v1/commands.proto\x1a\x1bvega/commands/v1/data.proto\x1a)vega/commands/v1/validator_commands.proto"\xee\x01\n\x18\x45RC20MultiSigSignerAdded\x12!\n\x0csignature_id\x18\x01 \x01(\tR\x0bsignatureId\x12!\n\x0cvalidator_id\x18\x02 \x01(\tR\x0bvalidatorId\x12\x1c\n\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\x12\x1d\n\nnew_signer\x18\x04 \x01(\tR\tnewSigner\x12\x1c\n\tsubmitter\x18\x05 \x01(\tR\tsubmitter\x12\x14\n\x05nonce\x18\x06 \x01(\tR\x05nonce\x12\x1b\n\tepoch_seq\x18\x07 \x01(\tR\x08\x65pochSeq"f\n#ERC20MultiSigSignerRemovedSubmitter\x12!\n\x0csignature_id\x18\x01 \x01(\tR\x0bsignatureId\x12\x1c\n\tsubmitter\x18\x02 \x01(\tR\tsubmitter"\x97\x02\n\x1a\x45RC20MultiSigSignerRemoved\x12\x66\n\x14signature_submitters\x18\x01 \x03(\x0b\x32\x33.vega.events.v1.ERC20MultiSigSignerRemovedSubmitterR\x13signatureSubmitters\x12!\n\x0cvalidator_id\x18\x02 \x01(\tR\x0bvalidatorId\x12\x1c\n\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\x12\x1d\n\nold_signer\x18\x04 \x01(\tR\toldSigner\x12\x14\n\x05nonce\x18\x05 \x01(\tR\x05nonce\x12\x1b\n\tepoch_seq\x18\x06 \x01(\tR\x08\x65pochSeq"\x90\x05\n\x08Transfer\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04\x66rom\x18\x02 \x01(\tR\x04\x66rom\x12=\n\x11\x66rom_account_type\x18\x03 \x01(\x0e\x32\x11.vega.AccountTypeR\x0f\x66romAccountType\x12\x0e\n\x02to\x18\x04 \x01(\tR\x02to\x12\x39\n\x0fto_account_type\x18\x05 \x01(\x0e\x32\x11.vega.AccountTypeR\rtoAccountType\x12\x14\n\x05\x61sset\x18\x06 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x07 \x01(\tR\x06\x61mount\x12\x1c\n\treference\x18\x08 \x01(\tR\treference\x12\x37\n\x06status\x18\t \x01(\x0e\x32\x1f.vega.events.v1.Transfer.StatusR\x06status\x12\x1c\n\ttimestamp\x18\n \x01(\x03R\ttimestamp\x12\x1b\n\x06reason\x18\x0b \x01(\tH\x01R\x06reason\x88\x01\x01\x12\x39\n\x07one_off\x18\x65 \x01(\x0b\x32\x1e.vega.events.v1.OneOffTransferH\x00R\x06oneOff\x12\x41\n\trecurring\x18\x66 \x01(\x0b\x32!.vega.events.v1.RecurringTransferH\x00R\trecurring"\x84\x01\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATUS_PENDING\x10\x01\x12\x0f\n\x0bSTATUS_DONE\x10\x02\x12\x13\n\x0fSTATUS_REJECTED\x10\x03\x12\x12\n\x0eSTATUS_STOPPED\x10\x04\x12\x14\n\x10STATUS_CANCELLED\x10\x05\x42\x06\n\x04kindB\t\n\x07_reason"/\n\x0eOneOffTransfer\x12\x1d\n\ndeliver_on\x18\x01 \x01(\x03R\tdeliverOn"\xc1\x01\n\x11RecurringTransfer\x12\x1f\n\x0bstart_epoch\x18\x01 \x01(\x04R\nstartEpoch\x12 \n\tend_epoch\x18\x02 \x01(\x04H\x00R\x08\x65ndEpoch\x88\x01\x01\x12\x16\n\x06\x66\x61\x63tor\x18\x03 \x01(\tR\x06\x66\x61\x63tor\x12\x43\n\x11\x64ispatch_strategy\x18\x04 \x01(\x0b\x32\x16.vega.DispatchStrategyR\x10\x64ispatchStrategyB\x0c\n\n_end_epoch"\xb4\x04\n\x0cStakeLinking\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x35\n\x04type\x18\x02 \x01(\x0e\x32!.vega.events.v1.StakeLinking.TypeR\x04type\x12\x0e\n\x02ts\x18\x03 \x01(\x03R\x02ts\x12\x14\n\x05party\x18\x04 \x01(\tR\x05party\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12;\n\x06status\x18\x06 \x01(\x0e\x32#.vega.events.v1.StakeLinking.StatusR\x06status\x12!\n\x0c\x66inalized_at\x18\x07 \x01(\x03R\x0b\x66inalizedAt\x12\x17\n\x07tx_hash\x18\x08 \x01(\tR\x06txHash\x12!\n\x0c\x62lock_height\x18\t \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_time\x18\n \x01(\x03R\tblockTime\x12\x1b\n\tlog_index\x18\x0b \x01(\x04R\x08logIndex\x12)\n\x10\x65thereum_address\x18\x0c \x01(\tR\x0f\x65thereumAddress"<\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\r\n\tTYPE_LINK\x10\x01\x12\x0f\n\x0bTYPE_UNLINK\x10\x02"^\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATUS_PENDING\x10\x01\x12\x13\n\x0fSTATUS_ACCEPTED\x10\x02\x12\x13\n\x0fSTATUS_REJECTED\x10\x03"\xd3\x02\n\x18\x45RC20MultiSigSignerEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x41\n\x04type\x18\x02 \x01(\x0e\x32-.vega.events.v1.ERC20MultiSigSignerEvent.TypeR\x04type\x12\x16\n\x06signer\x18\x03 \x01(\tR\x06signer\x12\x14\n\x05nonce\x18\x04 \x01(\tR\x05nonce\x12\x1d\n\nblock_time\x18\x05 \x01(\x03R\tblockTime\x12\x17\n\x07tx_hash\x18\x06 \x01(\tR\x06txHash\x12\x1b\n\tlog_index\x18\x07 \x01(\x04R\x08logIndex\x12!\n\x0c\x62lock_number\x18\x08 \x01(\x04R\x0b\x62lockNumber">\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_ADDED\x10\x01\x12\x10\n\x0cTYPE_REMOVED\x10\x02"\xe3\x01\n\x1e\x45RC20MultiSigThresholdSetEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12#\n\rnew_threshold\x18\x02 \x01(\rR\x0cnewThreshold\x12\x14\n\x05nonce\x18\x03 \x01(\tR\x05nonce\x12\x1d\n\nblock_time\x18\x04 \x01(\x03R\tblockTime\x12\x17\n\x07tx_hash\x18\x05 \x01(\tR\x06txHash\x12\x1b\n\tlog_index\x18\x06 \x01(\x04R\x08logIndex\x12!\n\x0c\x62lock_number\x18\x07 \x01(\x04R\x0b\x62lockNumber"g\n\x0f\x43heckpointEvent\x12\x12\n\x04hash\x18\x01 \x01(\tR\x04hash\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12!\n\x0c\x62lock_height\x18\x03 \x01(\x04R\x0b\x62lockHeight"-\n\x10StreamStartEvent\x12\x19\n\x08\x63hain_id\x18\x01 \x01(\tR\x07\x63hainId"\x82\x02\n\x11RewardPayoutEvent\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x1b\n\tepoch_seq\x18\x02 \x01(\tR\x08\x65pochSeq\x12\x14\n\x05\x61sset\x18\x03 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x04 \x01(\tR\x06\x61mount\x12\x35\n\x17percent_of_total_reward\x18\x05 \x01(\tR\x14percentOfTotalReward\x12\x1c\n\ttimestamp\x18\x06 \x01(\x03R\ttimestamp\x12\x1f\n\x0breward_type\x18\x07 \x01(\tR\nrewardType\x12\x16\n\x06market\x18\x08 \x01(\tR\x06market"\xd6\x02\n\x13ValidatorScoreEvent\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1b\n\tepoch_seq\x18\x02 \x01(\tR\x08\x65pochSeq\x12\'\n\x0fvalidator_score\x18\x03 \x01(\tR\x0evalidatorScore\x12)\n\x10normalised_score\x18\x04 \x01(\tR\x0fnormalisedScore\x12\x33\n\x15validator_performance\x18\x05 \x01(\tR\x14validatorPerformance\x12.\n\x13raw_validator_score\x18\x06 \x01(\tR\x11rawValidatorScore\x12)\n\x10validator_status\x18\x07 \x01(\tR\x0fvalidatorStatus\x12%\n\x0emultisig_score\x18\x08 \x01(\tR\rmultisigScore"|\n\x16\x44\x65legationBalanceEvent\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x17\n\x07node_id\x18\x02 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1b\n\tepoch_seq\x18\x04 \x01(\tR\x08\x65pochSeq"D\n\x0bMarketEvent\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x18\n\x07payload\x18\x02 \x01(\tR\x07payload"\xed\x10\n\x11TransactionResult\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x16\n\x06status\x18\x02 \x01(\x08R\x06status\x12\x12\n\x04hash\x18\x03 \x01(\tR\x04hash\x12N\n\x10order_submission\x18\x65 \x01(\x0b\x32!.vega.commands.v1.OrderSubmissionH\x00R\x0forderSubmission\x12K\n\x0forder_amendment\x18\x66 \x01(\x0b\x32 .vega.commands.v1.OrderAmendmentH\x00R\x0eorderAmendment\x12T\n\x12order_cancellation\x18g \x01(\x0b\x32#.vega.commands.v1.OrderCancellationH\x00R\x11orderCancellation\x12\x42\n\x08proposal\x18h \x01(\x0b\x32$.vega.commands.v1.ProposalSubmissionH\x00R\x08proposal\x12K\n\x0fvote_submission\x18i \x01(\x0b\x32 .vega.commands.v1.VoteSubmissionH\x00R\x0evoteSubmission\x12v\n\x1eliquidity_provision_submission\x18j \x01(\x0b\x32..vega.commands.v1.LiquidityProvisionSubmissionH\x00R\x1cliquidityProvisionSubmission\x12W\n\x13withdraw_submission\x18k \x01(\x0b\x32$.vega.commands.v1.WithdrawSubmissionH\x00R\x12withdrawSubmission\x12W\n\x13\x64\x65legate_submission\x18l \x01(\x0b\x32$.vega.commands.v1.DelegateSubmissionH\x00R\x12\x64\x65legateSubmission\x12]\n\x15undelegate_submission\x18m \x01(\x0b\x32&.vega.commands.v1.UndelegateSubmissionH\x00R\x14undelegateSubmission\x12|\n liquidity_provision_cancellation\x18o \x01(\x0b\x32\x30.vega.commands.v1.LiquidityProvisionCancellationH\x00R\x1eliquidityProvisionCancellation\x12s\n\x1dliquidity_provision_amendment\x18p \x01(\x0b\x32-.vega.commands.v1.LiquidityProvisionAmendmentH\x00R\x1bliquidityProvisionAmendment\x12\x38\n\x08transfer\x18q \x01(\x0b\x32\x1a.vega.commands.v1.TransferH\x00R\x08transfer\x12K\n\x0f\x63\x61ncel_transfer\x18r \x01(\x0b\x32 .vega.commands.v1.CancelTransferH\x00R\x0e\x63\x61ncelTransfer\x12\x45\n\rannounce_node\x18s \x01(\x0b\x32\x1e.vega.commands.v1.AnnounceNodeH\x00R\x0c\x61nnounceNode\x12^\n\x16oracle_data_submission\x18t \x01(\x0b\x32&.vega.commands.v1.OracleDataSubmissionH\x00R\x14oracleDataSubmission\x12g\n\x19protocol_upgrade_proposal\x18u \x01(\x0b\x32).vega.commands.v1.ProtocolUpgradeProposalH\x00R\x17protocolUpgradeProposal\x12N\n\x10issue_signatures\x18v \x01(\x0b\x32!.vega.commands.v1.IssueSignaturesH\x00R\x0fissueSignatures\x12g\n\x19\x62\x61tch_market_instructions\x18w \x01(\x0b\x32).vega.commands.v1.BatchMarketInstructionsH\x00R\x17\x62\x61tchMarketInstructions\x12[\n\x15key_rotate_submission\x18x \x01(\x0b\x32%.vega.commands.v1.KeyRotateSubmissionH\x00R\x13keyRotateSubmission\x12t\n\x1e\x65thereum_key_rotate_submission\x18y \x01(\x0b\x32-.vega.commands.v1.EthereumKeyRotateSubmissionH\x00R\x1b\x65thereumKeyRotateSubmission\x12M\n\x07success\x18\xe9\x07 \x01(\x0b\x32\x30.vega.events.v1.TransactionResult.SuccessDetailsH\x01R\x07success\x12M\n\x07\x66\x61ilure\x18\xea\x07 \x01(\x0b\x32\x30.vega.events.v1.TransactionResult.FailureDetailsH\x01R\x07\x66\x61ilure\x1a\x10\n\x0eSuccessDetails\x1a&\n\x0e\x46\x61ilureDetails\x12\x14\n\x05\x65rror\x18\x01 \x01(\tR\x05\x65rrorB\r\n\x0btransactionB\x07\n\x05\x65xtra"\xa7\r\n\x0cTxErrorEvent\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x17\n\x07\x65rr_msg\x18\x02 \x01(\tR\x06\x65rrMsg\x12N\n\x10order_submission\x18\x65 \x01(\x0b\x32!.vega.commands.v1.OrderSubmissionH\x00R\x0forderSubmission\x12K\n\x0forder_amendment\x18\x66 \x01(\x0b\x32 .vega.commands.v1.OrderAmendmentH\x00R\x0eorderAmendment\x12T\n\x12order_cancellation\x18g \x01(\x0b\x32#.vega.commands.v1.OrderCancellationH\x00R\x11orderCancellation\x12\x42\n\x08proposal\x18h \x01(\x0b\x32$.vega.commands.v1.ProposalSubmissionH\x00R\x08proposal\x12K\n\x0fvote_submission\x18i \x01(\x0b\x32 .vega.commands.v1.VoteSubmissionH\x00R\x0evoteSubmission\x12v\n\x1eliquidity_provision_submission\x18j \x01(\x0b\x32..vega.commands.v1.LiquidityProvisionSubmissionH\x00R\x1cliquidityProvisionSubmission\x12W\n\x13withdraw_submission\x18k \x01(\x0b\x32$.vega.commands.v1.WithdrawSubmissionH\x00R\x12withdrawSubmission\x12W\n\x13\x64\x65legate_submission\x18l \x01(\x0b\x32$.vega.commands.v1.DelegateSubmissionH\x00R\x12\x64\x65legateSubmission\x12]\n\x15undelegate_submission\x18m \x01(\x0b\x32&.vega.commands.v1.UndelegateSubmissionH\x00R\x14undelegateSubmission\x12|\n liquidity_provision_cancellation\x18o \x01(\x0b\x32\x30.vega.commands.v1.LiquidityProvisionCancellationH\x00R\x1eliquidityProvisionCancellation\x12s\n\x1dliquidity_provision_amendment\x18p \x01(\x0b\x32-.vega.commands.v1.LiquidityProvisionAmendmentH\x00R\x1bliquidityProvisionAmendment\x12\x38\n\x08transfer\x18q \x01(\x0b\x32\x1a.vega.commands.v1.TransferH\x00R\x08transfer\x12K\n\x0f\x63\x61ncel_transfer\x18r \x01(\x0b\x32 .vega.commands.v1.CancelTransferH\x00R\x0e\x63\x61ncelTransfer\x12\x45\n\rannounce_node\x18s \x01(\x0b\x32\x1e.vega.commands.v1.AnnounceNodeH\x00R\x0c\x61nnounceNode\x12^\n\x16oracle_data_submission\x18t \x01(\x0b\x32&.vega.commands.v1.OracleDataSubmissionH\x00R\x14oracleDataSubmission\x12g\n\x19protocol_upgrade_proposal\x18u \x01(\x0b\x32).vega.commands.v1.ProtocolUpgradeProposalH\x00R\x17protocolUpgradeProposal\x12N\n\x10issue_signatures\x18v \x01(\x0b\x32!.vega.commands.v1.IssueSignaturesH\x00R\x0fissueSignatures\x12g\n\x19\x62\x61tch_market_instructions\x18w \x01(\x0b\x32).vega.commands.v1.BatchMarketInstructionsH\x00R\x17\x62\x61tchMarketInstructionsB\r\n\x0btransactionJ\x04\x08n\x10o"*\n\nTimeUpdate\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp"\xa4\x01\n\nEpochEvent\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12)\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x11.vega.EpochActionR\x06\x61\x63tion\x12\x1d\n\nstart_time\x18\x03 \x01(\x03R\tstartTime\x12\x1f\n\x0b\x65xpire_time\x18\x04 \x01(\x03R\nexpireTime\x12\x19\n\x08\x65nd_time\x18\x05 \x01(\x03R\x07\x65ndTime"R\n\x0fLedgerMovements\x12?\n\x10ledger_movements\x18\x01 \x03(\x0b\x32\x14.vega.LedgerMovementR\x0fledgerMovements"\x88\x01\n\x12PositionResolution\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x1e\n\ndistressed\x18\x02 \x01(\x03R\ndistressed\x12\x16\n\x06\x63losed\x18\x03 \x01(\x03R\x06\x63losed\x12\x1d\n\nmark_price\x18\x04 \x01(\tR\tmarkPrice"c\n\x11LossSocialization\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount"^\n\x0fTradeSettlement\x12\x12\n\x04size\x18\x01 \x01(\x03R\x04size\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12!\n\x0cmarket_price\x18\x03 \x01(\tR\x0bmarketPrice"\xd5\x01\n\x0eSettlePosition\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x14\n\x05price\x18\x03 \x01(\tR\x05price\x12L\n\x11trade_settlements\x18\x04 \x03(\x0b\x32\x1f.vega.events.v1.TradeSettlementR\x10tradeSettlements\x12\'\n\x0fposition_factor\x18\x05 \x01(\tR\x0epositionFactor"j\n\x0cSettleMarket\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price\x12\'\n\x0fposition_factor\x18\x03 \x01(\tR\x0epositionFactor"\xf6\x01\n\x12PositionStateEvent\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x12\n\x04size\x18\x03 \x01(\x03R\x04size\x12%\n\x0epotential_buys\x18\x04 \x01(\x03R\rpotentialBuys\x12\'\n\x0fpotential_sells\x18\x05 \x01(\x03R\x0epotentialSells\x12 \n\x0cvw_buy_price\x18\x06 \x01(\tR\nvwBuyPrice\x12"\n\rvw_sell_price\x18\x07 \x01(\tR\x0bvwSellPrice"x\n\x10SettleDistressed\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06margin\x18\x03 \x01(\tR\x06margin\x12\x14\n\x05price\x18\x04 \x01(\tR\x05price"I\n\x10\x44istressedOrders\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x18\n\x07parties\x18\x02 \x03(\tR\x07parties"0\n\nMarketTick\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04time\x18\x02 \x01(\x03R\x04time"\x85\x02\n\x0c\x41uctionEvent\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\'\n\x0fopening_auction\x18\x02 \x01(\x08R\x0eopeningAuction\x12\x14\n\x05leave\x18\x03 \x01(\x08R\x05leave\x12\x14\n\x05start\x18\x04 \x01(\x03R\x05start\x12\x10\n\x03\x65nd\x18\x05 \x01(\x03R\x03\x65nd\x12.\n\x07trigger\x18\x06 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x07trigger\x12\x41\n\x11\x65xtension_trigger\x18\x07 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x10\x65xtensionTrigger"\xa9\x03\n\x0fValidatorUpdate\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12 \n\x0cvega_pub_key\x18\x02 \x01(\tR\nvegaPubKey\x12)\n\x10\x65thereum_address\x18\x03 \x01(\tR\x0f\x65thereumAddress\x12\x1c\n\ntm_pub_key\x18\x04 \x01(\tR\x08tmPubKey\x12\x19\n\x08info_url\x18\x05 \x01(\tR\x07infoUrl\x12\x18\n\x07\x63ountry\x18\x06 \x01(\tR\x07\x63ountry\x12\x12\n\x04name\x18\x07 \x01(\tR\x04name\x12\x1d\n\navatar_url\x18\x08 \x01(\tR\tavatarUrl\x12+\n\x12vega_pub_key_index\x18\t \x01(\rR\x0fvegaPubKeyIndex\x12\x14\n\x05\x61\x64\x64\x65\x64\x18\n \x01(\x08R\x05\x61\x64\x64\x65\x64\x12\x1d\n\nfrom_epoch\x18\x0b \x01(\x04R\tfromEpoch\x12+\n\x11submitter_address\x18\x0c \x01(\tR\x10submitterAddress\x12\x1b\n\tepoch_seq\x18\r \x01(\x04R\x08\x65pochSeq"\xb2\x02\n\x15ValidatorRankingEvent\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1f\n\x0bstake_score\x18\x02 \x01(\tR\nstakeScore\x12+\n\x11performance_score\x18\x03 \x01(\tR\x10performanceScore\x12#\n\rranking_score\x18\x04 \x01(\tR\x0crankingScore\x12\'\n\x0fprevious_status\x18\x05 \x01(\tR\x0epreviousStatus\x12\x1f\n\x0bnext_status\x18\x06 \x01(\tR\nnextStatus\x12\x1b\n\tepoch_seq\x18\x07 \x01(\tR\x08\x65pochSeq\x12&\n\x0ftm_voting_power\x18\x08 \x01(\rR\rtmVotingPower"\x89\x01\n\x0bKeyRotation\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1e\n\x0bold_pub_key\x18\x02 \x01(\tR\toldPubKey\x12\x1e\n\x0bnew_pub_key\x18\x03 \x01(\tR\tnewPubKey\x12!\n\x0c\x62lock_height\x18\x04 \x01(\x04R\x0b\x62lockHeight"\x93\x01\n\x13\x45thereumKeyRotation\x12\x17\n\x07node_id\x18\x01 \x01(\tR\x06nodeId\x12\x1f\n\x0bold_address\x18\x02 \x01(\tR\noldAddress\x12\x1f\n\x0bnew_address\x18\x03 \x01(\tR\nnewAddress\x12!\n\x0c\x62lock_height\x18\x04 \x01(\x04R\x0b\x62lockHeight"\xd7\x01\n\x14ProtocolUpgradeEvent\x12\x30\n\x14upgrade_block_height\x18\x01 \x01(\x04R\x12upgradeBlockHeight\x12(\n\x10vega_release_tag\x18\x02 \x01(\tR\x0evegaReleaseTag\x12\x1c\n\tapprovers\x18\x03 \x03(\tR\tapprovers\x12\x45\n\x06status\x18\x04 \x01(\x0e\x32-.vega.events.v1.ProtocolUpgradeProposalStatusR\x06status"K\n\x08StateVar\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n\x08\x65vent_id\x18\x02 \x01(\tR\x07\x65ventId\x12\x14\n\x05state\x18\x03 \x01(\tR\x05state"V\n\nBeginBlock\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height\x12\x1c\n\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x12\n\x04hash\x18\x03 \x01(\tR\x04hash""\n\x08\x45ndBlock\x12\x16\n\x06height\x18\x01 \x01(\x04R\x06height"D\n\x16ProtocolUpgradeStarted\x12*\n\x11last_block_height\x18\x01 \x01(\x04R\x0flastBlockHeight"J\n\x1cProtocolUpgradeDataNodeReady\x12*\n\x11last_block_height\x18\x01 \x01(\x04R\x0flastBlockHeight"\xad\x01\n\x10\x43oreSnapshotData\x12!\n\x0c\x62lock_height\x18\x01 \x01(\x04R\x0b\x62lockHeight\x12\x1d\n\nblock_hash\x18\x02 \x01(\tR\tblockHash\x12!\n\x0c\x63ore_version\x18\x03 \x01(\tR\x0b\x63oreVersion\x12\x34\n\x16protocol_upgrade_block\x18\x04 \x01(\x08R\x14protocolUpgradeBlock"\x94 \n\x08\x42usEvent\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n\x05\x62lock\x18\x02 \x01(\tR\x05\x62lock\x12\x30\n\x04type\x18\x03 \x01(\x0e\x32\x1c.vega.events.v1.BusEventTypeR\x04type\x12=\n\x0btime_update\x18\x65 \x01(\x0b\x32\x1a.vega.events.v1.TimeUpdateH\x00R\ntimeUpdate\x12L\n\x10ledger_movements\x18\x66 \x01(\x0b\x32\x1f.vega.events.v1.LedgerMovementsH\x00R\x0fledgerMovements\x12U\n\x13position_resolution\x18g \x01(\x0b\x32".vega.events.v1.PositionResolutionH\x00R\x12positionResolution\x12#\n\x05order\x18h \x01(\x0b\x32\x0b.vega.OrderH\x00R\x05order\x12)\n\x07\x61\x63\x63ount\x18i \x01(\x0b\x32\r.vega.AccountH\x00R\x07\x61\x63\x63ount\x12#\n\x05party\x18j \x01(\x0b\x32\x0b.vega.PartyH\x00R\x05party\x12#\n\x05trade\x18k \x01(\x0b\x32\x0b.vega.TradeH\x00R\x05trade\x12\x39\n\rmargin_levels\x18l \x01(\x0b\x32\x12.vega.MarginLevelsH\x00R\x0cmarginLevels\x12,\n\x08proposal\x18m \x01(\x0b\x32\x0e.vega.ProposalH\x00R\x08proposal\x12 \n\x04vote\x18n \x01(\x0b\x32\n.vega.VoteH\x00R\x04vote\x12\x33\n\x0bmarket_data\x18o \x01(\x0b\x32\x10.vega.MarketDataH\x00R\nmarketData\x12H\n\x0enode_signature\x18p \x01(\x0b\x32\x1f.vega.commands.v1.NodeSignatureH\x00R\rnodeSignature\x12R\n\x12loss_socialization\x18q \x01(\x0b\x32!.vega.events.v1.LossSocializationH\x00R\x11lossSocialization\x12I\n\x0fsettle_position\x18r \x01(\x0b\x32\x1e.vega.events.v1.SettlePositionH\x00R\x0esettlePosition\x12O\n\x11settle_distressed\x18s \x01(\x0b\x32 .vega.events.v1.SettleDistressedH\x00R\x10settleDistressed\x12\x35\n\x0emarket_created\x18t \x01(\x0b\x32\x0c.vega.MarketH\x00R\rmarketCreated\x12#\n\x05\x61sset\x18u \x01(\x0b\x32\x0b.vega.AssetH\x00R\x05\x61sset\x12=\n\x0bmarket_tick\x18v \x01(\x0b\x32\x1a.vega.events.v1.MarketTickH\x00R\nmarketTick\x12\x32\n\nwithdrawal\x18w \x01(\x0b\x32\x10.vega.WithdrawalH\x00R\nwithdrawal\x12)\n\x07\x64\x65posit\x18x \x01(\x0b\x32\r.vega.DepositH\x00R\x07\x64\x65posit\x12\x38\n\x07\x61uction\x18y \x01(\x0b\x32\x1c.vega.events.v1.AuctionEventH\x00R\x07\x61uction\x12\x33\n\x0brisk_factor\x18z \x01(\x0b\x32\x10.vega.RiskFactorH\x00R\nriskFactor\x12\x45\n\x11network_parameter\x18{ \x01(\x0b\x32\x16.vega.NetworkParameterH\x00R\x10networkParameter\x12K\n\x13liquidity_provision\x18| \x01(\x0b\x32\x18.vega.LiquidityProvisionH\x00R\x12liquidityProvision\x12\x35\n\x0emarket_updated\x18} \x01(\x0b\x32\x0c.vega.MarketH\x00R\rmarketUpdated\x12\x33\n\x0boracle_spec\x18~ \x01(\x0b\x32\x10.vega.OracleSpecH\x00R\noracleSpec\x12\x33\n\x0boracle_data\x18\x7f \x01(\x0b\x32\x10.vega.OracleDataH\x00R\noracleData\x12X\n\x12\x64\x65legation_balance\x18\x81\x01 \x01(\x0b\x32&.vega.events.v1.DelegationBalanceEventH\x00R\x11\x64\x65legationBalance\x12O\n\x0fvalidator_score\x18\x82\x01 \x01(\x0b\x32#.vega.events.v1.ValidatorScoreEventH\x00R\x0evalidatorScore\x12>\n\x0b\x65poch_event\x18\x83\x01 \x01(\x0b\x32\x1a.vega.events.v1.EpochEventH\x00R\nepochEvent\x12M\n\x10validator_update\x18\x84\x01 \x01(\x0b\x32\x1f.vega.events.v1.ValidatorUpdateH\x00R\x0fvalidatorUpdate\x12\x44\n\rstake_linking\x18\x85\x01 \x01(\x0b\x32\x1c.vega.events.v1.StakeLinkingH\x00R\x0cstakeLinking\x12I\n\rreward_payout\x18\x86\x01 \x01(\x0b\x32!.vega.events.v1.RewardPayoutEventH\x00R\x0crewardPayout\x12\x42\n\ncheckpoint\x18\x87\x01 \x01(\x0b\x32\x1f.vega.events.v1.CheckpointEventH\x00R\ncheckpoint\x12\x41\n\x0ckey_rotation\x18\x88\x01 \x01(\x0b\x32\x1b.vega.events.v1.KeyRotationH\x00R\x0bkeyRotation\x12\x38\n\tstate_var\x18\x89\x01 \x01(\x0b\x32\x18.vega.events.v1.StateVarH\x00R\x08stateVar\x12=\n\x0enetwork_limits\x18\x8a\x01 \x01(\x0b\x32\x13.vega.NetworkLimitsH\x00R\rnetworkLimits\x12\x37\n\x08transfer\x18\x8b\x01 \x01(\x0b\x32\x18.vega.events.v1.TransferH\x00R\x08transfer\x12M\n\rranking_event\x18\x8c\x01 \x01(\x0b\x32%.vega.events.v1.ValidatorRankingEventH\x00R\x0crankingEvent\x12j\n\x1b\x65rc20_multisig_signer_event\x18\x8d\x01 \x01(\x0b\x32(.vega.events.v1.ERC20MultiSigSignerEventH\x00R\x18\x65rc20MultisigSignerEvent\x12}\n"erc20_multisig_set_threshold_event\x18\x8e\x01 \x01(\x0b\x32..vega.events.v1.ERC20MultiSigThresholdSetEventH\x00R\x1e\x65rc20MultisigSetThresholdEvent\x12j\n\x1b\x65rc20_multisig_signer_added\x18\x8f\x01 \x01(\x0b\x32(.vega.events.v1.ERC20MultiSigSignerAddedH\x00R\x18\x65rc20MultisigSignerAdded\x12p\n\x1d\x65rc20_multisig_signer_removed\x18\x90\x01 \x01(\x0b\x32*.vega.events.v1.ERC20MultiSigSignerRemovedH\x00R\x1a\x65rc20MultisigSignerRemoved\x12W\n\x14position_state_event\x18\x91\x01 \x01(\x0b\x32".vega.events.v1.PositionStateEventH\x00R\x12positionStateEvent\x12Z\n\x15\x65thereum_key_rotation\x18\x92\x01 \x01(\x0b\x32#.vega.events.v1.EthereumKeyRotationH\x00R\x13\x65thereumKeyRotation\x12]\n\x16protocol_upgrade_event\x18\x93\x01 \x01(\x0b\x32$.vega.events.v1.ProtocolUpgradeEventH\x00R\x14protocolUpgradeEvent\x12>\n\x0b\x62\x65gin_block\x18\x94\x01 \x01(\x0b\x32\x1a.vega.events.v1.BeginBlockH\x00R\nbeginBlock\x12\x38\n\tend_block\x18\x95\x01 \x01(\x0b\x32\x18.vega.events.v1.EndBlockH\x00R\x08\x65ndBlock\x12\x63\n\x18protocol_upgrade_started\x18\x96\x01 \x01(\x0b\x32&.vega.events.v1.ProtocolUpgradeStartedH\x00R\x16protocolUpgradeStarted\x12\x44\n\rsettle_market\x18\x97\x01 \x01(\x0b\x32\x1c.vega.events.v1.SettleMarketH\x00R\x0csettleMarket\x12S\n\x12transaction_result\x18\x98\x01 \x01(\x0b\x32!.vega.events.v1.TransactionResultH\x00R\x11transactionResult\x12S\n\x13\x63ore_snapshot_event\x18\x99\x01 \x01(\x0b\x32 .vega.events.v1.CoreSnapshotDataH\x00R\x11\x63oreSnapshotEvent\x12w\n protocol_upgrade_data_node_ready\x18\x9a\x01 \x01(\x0b\x32,.vega.events.v1.ProtocolUpgradeDataNodeReadyH\x00R\x1cprotocolUpgradeDataNodeReady\x12P\n\x11\x64istressed_orders\x18\x9b\x01 \x01(\x0b\x32 .vega.events.v1.DistressedOrdersH\x00R\x10\x64istressedOrders\x12\x36\n\x06market\x18\xe9\x07 \x01(\x0b\x32\x1b.vega.events.v1.MarketEventH\x00R\x06market\x12\x41\n\x0ctx_err_event\x18\xd1\x0f \x01(\x0b\x32\x1c.vega.events.v1.TxErrorEventH\x00R\ntxErrEvent\x12\x18\n\x07version\x18\x04 \x01(\rR\x07version\x12\x19\n\x08\x63hain_id\x18\x05 \x01(\tR\x07\x63hainId\x12\x17\n\x07tx_hash\x18\x06 \x01(\tR\x06txHashB\x07\n\x05\x65vent*\xdd\x01\n\x1dProtocolUpgradeProposalStatus\x12\x30\n,PROTOCOL_UPGRADE_PROPOSAL_STATUS_UNSPECIFIED\x10\x00\x12,\n(PROTOCOL_UPGRADE_PROPOSAL_STATUS_PENDING\x10\x01\x12-\n)PROTOCOL_UPGRADE_PROPOSAL_STATUS_APPROVED\x10\x02\x12-\n)PROTOCOL_UPGRADE_PROPOSAL_STATUS_REJECTED\x10\x03*\xa2\x10\n\x0c\x42usEventType\x12\x1e\n\x1a\x42US_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x42US_EVENT_TYPE_ALL\x10\x01\x12\x1e\n\x1a\x42US_EVENT_TYPE_TIME_UPDATE\x10\x02\x12#\n\x1f\x42US_EVENT_TYPE_LEDGER_MOVEMENTS\x10\x03\x12&\n"BUS_EVENT_TYPE_POSITION_RESOLUTION\x10\x04\x12\x18\n\x14\x42US_EVENT_TYPE_ORDER\x10\x05\x12\x1a\n\x16\x42US_EVENT_TYPE_ACCOUNT\x10\x06\x12\x18\n\x14\x42US_EVENT_TYPE_PARTY\x10\x07\x12\x18\n\x14\x42US_EVENT_TYPE_TRADE\x10\x08\x12 \n\x1c\x42US_EVENT_TYPE_MARGIN_LEVELS\x10\t\x12\x1b\n\x17\x42US_EVENT_TYPE_PROPOSAL\x10\n\x12\x17\n\x13\x42US_EVENT_TYPE_VOTE\x10\x0b\x12\x1e\n\x1a\x42US_EVENT_TYPE_MARKET_DATA\x10\x0c\x12!\n\x1d\x42US_EVENT_TYPE_NODE_SIGNATURE\x10\r\x12%\n!BUS_EVENT_TYPE_LOSS_SOCIALIZATION\x10\x0e\x12"\n\x1e\x42US_EVENT_TYPE_SETTLE_POSITION\x10\x0f\x12$\n BUS_EVENT_TYPE_SETTLE_DISTRESSED\x10\x10\x12!\n\x1d\x42US_EVENT_TYPE_MARKET_CREATED\x10\x11\x12\x18\n\x14\x42US_EVENT_TYPE_ASSET\x10\x12\x12\x1e\n\x1a\x42US_EVENT_TYPE_MARKET_TICK\x10\x13\x12\x1d\n\x19\x42US_EVENT_TYPE_WITHDRAWAL\x10\x14\x12\x1a\n\x16\x42US_EVENT_TYPE_DEPOSIT\x10\x15\x12\x1a\n\x16\x42US_EVENT_TYPE_AUCTION\x10\x16\x12\x1e\n\x1a\x42US_EVENT_TYPE_RISK_FACTOR\x10\x17\x12$\n BUS_EVENT_TYPE_NETWORK_PARAMETER\x10\x18\x12&\n"BUS_EVENT_TYPE_LIQUIDITY_PROVISION\x10\x19\x12!\n\x1d\x42US_EVENT_TYPE_MARKET_UPDATED\x10\x1a\x12\x1e\n\x1a\x42US_EVENT_TYPE_ORACLE_SPEC\x10\x1b\x12\x1e\n\x1a\x42US_EVENT_TYPE_ORACLE_DATA\x10\x1c\x12%\n!BUS_EVENT_TYPE_DELEGATION_BALANCE\x10\x1d\x12"\n\x1e\x42US_EVENT_TYPE_VALIDATOR_SCORE\x10\x1e\x12\x1f\n\x1b\x42US_EVENT_TYPE_EPOCH_UPDATE\x10\x1f\x12#\n\x1f\x42US_EVENT_TYPE_VALIDATOR_UPDATE\x10 \x12 \n\x1c\x42US_EVENT_TYPE_STAKE_LINKING\x10!\x12&\n"BUS_EVENT_TYPE_REWARD_PAYOUT_EVENT\x10"\x12\x1d\n\x19\x42US_EVENT_TYPE_CHECKPOINT\x10#\x12\x1f\n\x1b\x42US_EVENT_TYPE_STREAM_START\x10$\x12\x1f\n\x1b\x42US_EVENT_TYPE_KEY_ROTATION\x10%\x12\x1c\n\x18\x42US_EVENT_TYPE_STATE_VAR\x10&\x12!\n\x1d\x42US_EVENT_TYPE_NETWORK_LIMITS\x10\'\x12\x1b\n\x17\x42US_EVENT_TYPE_TRANSFER\x10(\x12$\n BUS_EVENT_TYPE_VALIDATOR_RANKING\x10)\x12/\n+BUS_EVENT_TYPE_ERC20_MULTI_SIG_SIGNER_EVENT\x10*\x12\x30\n,BUS_EVENT_TYPE_ERC20_MULTI_SIG_SET_THRESHOLD\x10+\x12/\n+BUS_EVENT_TYPE_ERC20_MULTI_SIG_SIGNER_ADDED\x10,\x12\x31\n-BUS_EVENT_TYPE_ERC20_MULTI_SIG_SIGNER_REMOVED\x10-\x12!\n\x1d\x42US_EVENT_TYPE_POSITION_STATE\x10.\x12(\n$BUS_EVENT_TYPE_ETHEREUM_KEY_ROTATION\x10/\x12,\n(BUS_EVENT_TYPE_PROTOCOL_UPGRADE_PROPOSAL\x10\x30\x12\x1e\n\x1a\x42US_EVENT_TYPE_BEGIN_BLOCK\x10\x31\x12\x1c\n\x18\x42US_EVENT_TYPE_END_BLOCK\x10\x32\x12+\n\'BUS_EVENT_TYPE_PROTOCOL_UPGRADE_STARTED\x10\x33\x12 \n\x1c\x42US_EVENT_TYPE_SETTLE_MARKET\x10\x34\x12%\n!BUS_EVENT_TYPE_TRANSACTION_RESULT\x10\x35\x12!\n\x1d\x42US_EVENT_TYPE_SNAPSHOT_TAKEN\x10\x36\x12\x33\n/BUS_EVENT_TYPE_PROTOCOL_UPGRADE_DATA_NODE_READY\x10\x37\x12+\n\'BUS_EVENT_TYPE_DISTRESSED_ORDERS_CLOSED\x10\x38\x12\x19\n\x15\x42US_EVENT_TYPE_MARKET\x10\x65\x12\x1c\n\x17\x42US_EVENT_TYPE_TX_ERROR\x10\xc9\x01\x42\x31Z/code.vegaprotocol.io/vega/protos/vega/events/v1b\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -37,10 +37,10 @@ DESCRIPTOR._serialized_options = ( b"Z/code.vegaprotocol.io/vega/protos/vega/events/v1" ) - _PROTOCOLUPGRADEPROPOSALSTATUS._serialized_start = 15186 - _PROTOCOLUPGRADEPROPOSALSTATUS._serialized_end = 15407 - _BUSEVENTTYPE._serialized_start = 15410 - _BUSEVENTTYPE._serialized_end = 17447 + _PROTOCOLUPGRADEPROPOSALSTATUS._serialized_start = 15343 + _PROTOCOLUPGRADEPROPOSALSTATUS._serialized_end = 15564 + _BUSEVENTTYPE._serialized_start = 15567 + _BUSEVENTTYPE._serialized_end = 17649 _ERC20MULTISIGSIGNERADDED._serialized_start = 251 _ERC20MULTISIGSIGNERADDED._serialized_end = 489 _ERC20MULTISIGSIGNERREMOVEDSUBMITTER._serialized_start = 491 @@ -107,32 +107,34 @@ _POSITIONSTATEEVENT._serialized_end = 8942 _SETTLEDISTRESSED._serialized_start = 8944 _SETTLEDISTRESSED._serialized_end = 9064 - _MARKETTICK._serialized_start = 9066 - _MARKETTICK._serialized_end = 9114 - _AUCTIONEVENT._serialized_start = 9117 - _AUCTIONEVENT._serialized_end = 9378 - _VALIDATORUPDATE._serialized_start = 9381 - _VALIDATORUPDATE._serialized_end = 9806 - _VALIDATORRANKINGEVENT._serialized_start = 9809 - _VALIDATORRANKINGEVENT._serialized_end = 10115 - _KEYROTATION._serialized_start = 10118 - _KEYROTATION._serialized_end = 10255 - _ETHEREUMKEYROTATION._serialized_start = 10258 - _ETHEREUMKEYROTATION._serialized_end = 10405 - _PROTOCOLUPGRADEEVENT._serialized_start = 10408 - _PROTOCOLUPGRADEEVENT._serialized_end = 10623 - _STATEVAR._serialized_start = 10625 - _STATEVAR._serialized_end = 10700 - _BEGINBLOCK._serialized_start = 10702 - _BEGINBLOCK._serialized_end = 10788 - _ENDBLOCK._serialized_start = 10790 - _ENDBLOCK._serialized_end = 10824 - _PROTOCOLUPGRADESTARTED._serialized_start = 10826 - _PROTOCOLUPGRADESTARTED._serialized_end = 10894 - _PROTOCOLUPGRADEDATANODEREADY._serialized_start = 10896 - _PROTOCOLUPGRADEDATANODEREADY._serialized_end = 10970 - _CORESNAPSHOTDATA._serialized_start = 10973 - _CORESNAPSHOTDATA._serialized_end = 11146 - _BUSEVENT._serialized_start = 11149 - _BUSEVENT._serialized_end = 15183 + _DISTRESSEDORDERS._serialized_start = 9066 + _DISTRESSEDORDERS._serialized_end = 9139 + _MARKETTICK._serialized_start = 9141 + _MARKETTICK._serialized_end = 9189 + _AUCTIONEVENT._serialized_start = 9192 + _AUCTIONEVENT._serialized_end = 9453 + _VALIDATORUPDATE._serialized_start = 9456 + _VALIDATORUPDATE._serialized_end = 9881 + _VALIDATORRANKINGEVENT._serialized_start = 9884 + _VALIDATORRANKINGEVENT._serialized_end = 10190 + _KEYROTATION._serialized_start = 10193 + _KEYROTATION._serialized_end = 10330 + _ETHEREUMKEYROTATION._serialized_start = 10333 + _ETHEREUMKEYROTATION._serialized_end = 10480 + _PROTOCOLUPGRADEEVENT._serialized_start = 10483 + _PROTOCOLUPGRADEEVENT._serialized_end = 10698 + _STATEVAR._serialized_start = 10700 + _STATEVAR._serialized_end = 10775 + _BEGINBLOCK._serialized_start = 10777 + _BEGINBLOCK._serialized_end = 10863 + _ENDBLOCK._serialized_start = 10865 + _ENDBLOCK._serialized_end = 10899 + _PROTOCOLUPGRADESTARTED._serialized_start = 10901 + _PROTOCOLUPGRADESTARTED._serialized_end = 10969 + _PROTOCOLUPGRADEDATANODEREADY._serialized_start = 10971 + _PROTOCOLUPGRADEDATANODEREADY._serialized_end = 11045 + _CORESNAPSHOTDATA._serialized_start = 11048 + _CORESNAPSHOTDATA._serialized_end = 11221 + _BUSEVENT._serialized_start = 11224 + _BUSEVENT._serialized_end = 15340 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/vega/governance_pb2.py b/vega_sim/proto/vega/governance_pb2.py index 5ffa40e10..e0f73e294 100644 --- a/vega_sim/proto/vega/governance_pb2.py +++ b/vega_sim/proto/vega/governance_pb2.py @@ -19,7 +19,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x15vega/governance.proto\x12\x04vega\x1a\x12vega/markets.proto\x1a\x0fvega/vega.proto\x1a\x11vega/assets.proto\x1a\x16vega/data_source.proto"\x95\x03\n\rFutureProduct\x12)\n\x10settlement_asset\x18\x01 \x01(\tR\x0fsettlementAsset\x12\x1d\n\nquote_name\x18\x02 \x01(\tR\tquoteName\x12i\n$data_source_spec_for_settlement_data\x18\x03 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR\x1f\x64\x61taSourceSpecForSettlementData\x12q\n(data_source_spec_for_trading_termination\x18\x04 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR#dataSourceSpecForTradingTermination\x12\\\n\x18\x64\x61ta_source_spec_binding\x18\x05 \x01(\x0b\x32#.vega.DataSourceSpecToFutureBindingR\x15\x64\x61taSourceSpecBinding"{\n\x17InstrumentConfiguration\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04\x63ode\x18\x02 \x01(\tR\x04\x63ode\x12-\n\x06\x66uture\x18\x64 \x01(\x0b\x32\x13.vega.FutureProductH\x00R\x06\x66utureB\t\n\x07product"\xc7\x04\n\x16NewMarketConfiguration\x12=\n\ninstrument\x18\x01 \x01(\x0b\x32\x1d.vega.InstrumentConfigurationR\ninstrument\x12%\n\x0e\x64\x65\x63imal_places\x18\x02 \x01(\x04R\rdecimalPlaces\x12\x1a\n\x08metadata\x18\x03 \x03(\tR\x08metadata\x12_\n\x1bprice_monitoring_parameters\x18\x04 \x01(\x0b\x32\x1f.vega.PriceMonitoringParametersR\x19priceMonitoringParameters\x12k\n\x1fliquidity_monitoring_parameters\x18\x05 \x01(\x0b\x32#.vega.LiquidityMonitoringParametersR\x1dliquidityMonitoringParameters\x12\x31\n\x06simple\x18\x64 \x01(\x0b\x32\x17.vega.SimpleModelParamsH\x00R\x06simple\x12\x39\n\nlog_normal\x18\x65 \x01(\x0b\x32\x18.vega.LogNormalRiskModelH\x00R\tlogNormal\x12\x36\n\x17position_decimal_places\x18\x06 \x01(\x03R\x15positionDecimalPlaces\x12$\n\x0elp_price_range\x18\x08 \x01(\tR\x0clpPriceRangeB\x11\n\x0frisk_parameters"C\n\tNewMarket\x12\x36\n\x07\x63hanges\x18\x01 \x01(\x0b\x32\x1c.vega.NewMarketConfigurationR\x07\x63hanges"f\n\x0cUpdateMarket\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x39\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x1f.vega.UpdateMarketConfigurationR\x07\x63hanges"\xf1\x03\n\x19UpdateMarketConfiguration\x12\x43\n\ninstrument\x18\x01 \x01(\x0b\x32#.vega.UpdateInstrumentConfigurationR\ninstrument\x12\x1a\n\x08metadata\x18\x02 \x03(\tR\x08metadata\x12_\n\x1bprice_monitoring_parameters\x18\x03 \x01(\x0b\x32\x1f.vega.PriceMonitoringParametersR\x19priceMonitoringParameters\x12k\n\x1fliquidity_monitoring_parameters\x18\x04 \x01(\x0b\x32#.vega.LiquidityMonitoringParametersR\x1dliquidityMonitoringParameters\x12\x31\n\x06simple\x18\x64 \x01(\x0b\x32\x17.vega.SimpleModelParamsH\x00R\x06simple\x12\x39\n\nlog_normal\x18\x65 \x01(\x0b\x32\x18.vega.LogNormalRiskModelH\x00R\tlogNormal\x12$\n\x0elp_price_range\x18\x05 \x01(\tR\x0clpPriceRangeB\x11\n\x0frisk_parameters"s\n\x1dUpdateInstrumentConfiguration\x12\x12\n\x04\x63ode\x18\x01 \x01(\tR\x04\x63ode\x12\x33\n\x06\x66uture\x18\x64 \x01(\x0b\x32\x19.vega.UpdateFutureProductH\x00R\x06\x66utureB\t\n\x07product"\xf0\x02\n\x13UpdateFutureProduct\x12\x1d\n\nquote_name\x18\x01 \x01(\tR\tquoteName\x12i\n$data_source_spec_for_settlement_data\x18\x02 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR\x1f\x64\x61taSourceSpecForSettlementData\x12q\n(data_source_spec_for_trading_termination\x18\x03 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR#dataSourceSpecForTradingTermination\x12\\\n\x18\x64\x61ta_source_spec_binding\x18\x04 \x01(\x0b\x32#.vega.DataSourceSpecToFutureBindingR\x15\x64\x61taSourceSpecBinding"J\n\x16UpdateNetworkParameter\x12\x30\n\x07\x63hanges\x18\x01 \x01(\x0b\x32\x16.vega.NetworkParameterR\x07\x63hanges"8\n\x08NewAsset\x12,\n\x07\x63hanges\x18\x01 \x01(\x0b\x32\x12.vega.AssetDetailsR\x07\x63hanges"\\\n\x0bUpdateAsset\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x32\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x18.vega.AssetDetailsUpdateR\x07\x63hanges"\r\n\x0bNewFreeform"\x90\x04\n\rProposalTerms\x12+\n\x11\x63losing_timestamp\x18\x01 \x01(\x03R\x10\x63losingTimestamp\x12/\n\x13\x65nactment_timestamp\x18\x02 \x01(\x03R\x12\x65nactmentTimestamp\x12\x31\n\x14validation_timestamp\x18\x03 \x01(\x03R\x13validationTimestamp\x12\x39\n\rupdate_market\x18\x65 \x01(\x0b\x32\x12.vega.UpdateMarketH\x00R\x0cupdateMarket\x12\x30\n\nnew_market\x18\x66 \x01(\x0b\x32\x0f.vega.NewMarketH\x00R\tnewMarket\x12X\n\x18update_network_parameter\x18g \x01(\x0b\x32\x1c.vega.UpdateNetworkParameterH\x00R\x16updateNetworkParameter\x12-\n\tnew_asset\x18h \x01(\x0b\x32\x0e.vega.NewAssetH\x00R\x08newAsset\x12\x36\n\x0cnew_freeform\x18i \x01(\x0b\x32\x11.vega.NewFreeformH\x00R\x0bnewFreeform\x12\x36\n\x0cupdate_asset\x18j \x01(\x0b\x32\x11.vega.UpdateAssetH\x00R\x0bupdateAssetB\x08\n\x06\x63hange"W\n\x11ProposalRationale\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x14\n\x05title\x18\x04 \x01(\tR\x05titleJ\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"\x86\x03\n\x0eGovernanceData\x12*\n\x08proposal\x18\x01 \x01(\x0b\x32\x0e.vega.ProposalR\x08proposal\x12\x1c\n\x03yes\x18\x02 \x03(\x0b\x32\n.vega.VoteR\x03yes\x12\x1a\n\x02no\x18\x03 \x03(\x0b\x32\n.vega.VoteR\x02no\x12?\n\tyes_party\x18\x04 \x03(\x0b\x32".vega.GovernanceData.YesPartyEntryR\x08yesParty\x12<\n\x08no_party\x18\x05 \x03(\x0b\x32!.vega.GovernanceData.NoPartyEntryR\x07noParty\x1aG\n\rYesPartyEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12 \n\x05value\x18\x02 \x01(\x0b\x32\n.vega.VoteR\x05value:\x02\x38\x01\x1a\x46\n\x0cNoPartyEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12 \n\x05value\x18\x02 \x01(\x0b\x32\n.vega.VoteR\x05value:\x02\x38\x01"\x9a\x07\n\x08Proposal\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n\treference\x18\x02 \x01(\tR\treference\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12*\n\x05state\x18\x04 \x01(\x0e\x32\x14.vega.Proposal.StateR\x05state\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12)\n\x05terms\x18\x06 \x01(\x0b\x32\x13.vega.ProposalTermsR\x05terms\x12\x30\n\x06reason\x18\x07 \x01(\x0e\x32\x13.vega.ProposalErrorH\x00R\x06reason\x88\x01\x01\x12(\n\rerror_details\x18\x08 \x01(\tH\x01R\x0c\x65rrorDetails\x88\x01\x01\x12\x35\n\trationale\x18\t \x01(\x0b\x32\x17.vega.ProposalRationaleR\trationale\x12\x35\n\x16required_participation\x18\n \x01(\tR\x15requiredParticipation\x12+\n\x11required_majority\x18\x0b \x01(\tR\x10requiredMajority\x12^\n)required_liquidity_provider_participation\x18\x0c \x01(\tH\x02R&requiredLiquidityProviderParticipation\x88\x01\x01\x12T\n$required_liquidity_provider_majority\x18\r \x01(\tH\x03R!requiredLiquidityProviderMajority\x88\x01\x01"\xae\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x10\n\x0cSTATE_FAILED\x10\x01\x12\x0e\n\nSTATE_OPEN\x10\x02\x12\x10\n\x0cSTATE_PASSED\x10\x03\x12\x12\n\x0eSTATE_REJECTED\x10\x04\x12\x12\n\x0eSTATE_DECLINED\x10\x05\x12\x11\n\rSTATE_ENACTED\x10\x06\x12\x1f\n\x1bSTATE_WAITING_FOR_NODE_VOTE\x10\x07\x42\t\n\x07_reasonB\x10\n\x0e_error_detailsB,\n*_required_liquidity_provider_participationB\'\n%_required_liquidity_provider_majority"\x91\x03\n\x04Vote\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12&\n\x05value\x18\x02 \x01(\x0e\x32\x10.vega.Vote.ValueR\x05value\x12\x1f\n\x0bproposal_id\x18\x03 \x01(\tR\nproposalId\x12\x1c\n\ttimestamp\x18\x04 \x01(\x03R\ttimestamp\x12\x43\n\x1etotal_governance_token_balance\x18\x05 \x01(\tR\x1btotalGovernanceTokenBalance\x12\x41\n\x1dtotal_governance_token_weight\x18\x06 \x01(\tR\x1atotalGovernanceTokenWeight\x12\x42\n\x1etotal_equity_like_share_weight\x18\x07 \x01(\tR\x1atotalEquityLikeShareWeight";\n\x05Value\x12\x15\n\x11VALUE_UNSPECIFIED\x10\x00\x12\x0c\n\x08VALUE_NO\x10\x01\x12\r\n\tVALUE_YES\x10\x02*\xad\r\n\rProposalError\x12\x1e\n\x1aPROPOSAL_ERROR_UNSPECIFIED\x10\x00\x12&\n"PROPOSAL_ERROR_CLOSE_TIME_TOO_SOON\x10\x01\x12&\n"PROPOSAL_ERROR_CLOSE_TIME_TOO_LATE\x10\x02\x12&\n"PROPOSAL_ERROR_ENACT_TIME_TOO_SOON\x10\x03\x12&\n"PROPOSAL_ERROR_ENACT_TIME_TOO_LATE\x10\x04\x12&\n"PROPOSAL_ERROR_INSUFFICIENT_TOKENS\x10\x05\x12.\n*PROPOSAL_ERROR_INVALID_INSTRUMENT_SECURITY\x10\x06\x12\x1d\n\x19PROPOSAL_ERROR_NO_PRODUCT\x10\x07\x12&\n"PROPOSAL_ERROR_UNSUPPORTED_PRODUCT\x10\x08\x12"\n\x1ePROPOSAL_ERROR_NO_TRADING_MODE\x10\x0b\x12+\n\'PROPOSAL_ERROR_UNSUPPORTED_TRADING_MODE\x10\x0c\x12)\n%PROPOSAL_ERROR_NODE_VALIDATION_FAILED\x10\r\x12.\n*PROPOSAL_ERROR_MISSING_BUILTIN_ASSET_FIELD\x10\x0e\x12\x31\n-PROPOSAL_ERROR_MISSING_ERC20_CONTRACT_ADDRESS\x10\x0f\x12 \n\x1cPROPOSAL_ERROR_INVALID_ASSET\x10\x10\x12*\n&PROPOSAL_ERROR_INCOMPATIBLE_TIMESTAMPS\x10\x11\x12%\n!PROPOSAL_ERROR_NO_RISK_PARAMETERS\x10\x12\x12\x30\n,PROPOSAL_ERROR_NETWORK_PARAMETER_INVALID_KEY\x10\x13\x12\x32\n.PROPOSAL_ERROR_NETWORK_PARAMETER_INVALID_VALUE\x10\x14\x12\x36\n2PROPOSAL_ERROR_NETWORK_PARAMETER_VALIDATION_FAILED\x10\x15\x12\x35\n1PROPOSAL_ERROR_OPENING_AUCTION_DURATION_TOO_SMALL\x10\x16\x12\x35\n1PROPOSAL_ERROR_OPENING_AUCTION_DURATION_TOO_LARGE\x10\x17\x12/\n+PROPOSAL_ERROR_COULD_NOT_INSTANTIATE_MARKET\x10\x19\x12)\n%PROPOSAL_ERROR_INVALID_FUTURE_PRODUCT\x10\x1a\x12)\n%PROPOSAL_ERROR_INVALID_RISK_PARAMETER\x10\x1e\x12\x31\n-PROPOSAL_ERROR_MAJORITY_THRESHOLD_NOT_REACHED\x10\x1f\x12\x36\n2PROPOSAL_ERROR_PARTICIPATION_THRESHOLD_NOT_REACHED\x10 \x12(\n$PROPOSAL_ERROR_INVALID_ASSET_DETAILS\x10!\x12\x1f\n\x1bPROPOSAL_ERROR_UNKNOWN_TYPE\x10"\x12.\n*PROPOSAL_ERROR_UNKNOWN_RISK_PARAMETER_TYPE\x10#\x12#\n\x1fPROPOSAL_ERROR_INVALID_FREEFORM\x10$\x12\x31\n-PROPOSAL_ERROR_INSUFFICIENT_EQUITY_LIKE_SHARE\x10%\x12!\n\x1dPROPOSAL_ERROR_INVALID_MARKET\x10&\x12\x31\n-PROPOSAL_ERROR_TOO_MANY_MARKET_DECIMAL_PLACES\x10\'\x12\x35\n1PROPOSAL_ERROR_TOO_MANY_PRICE_MONITORING_TRIGGERS\x10(\x12/\n+PROPOSAL_ERROR_ERC20_ADDRESS_ALREADY_IN_USE\x10)\x12-\n)PROPOSAL_ERROR_LP_PRICE_RANGE_NONPOSITIVE\x10*\x12+\n\'PROPOSAL_ERROR_LP_PRICE_RANGE_TOO_LARGE\x10+B\'Z%code.vegaprotocol.io/vega/protos/vegab\x06proto3' + b'\n\x15vega/governance.proto\x12\x04vega\x1a\x12vega/markets.proto\x1a\x0fvega/vega.proto\x1a\x11vega/assets.proto\x1a\x16vega/data_source.proto"\x95\x03\n\rFutureProduct\x12)\n\x10settlement_asset\x18\x01 \x01(\tR\x0fsettlementAsset\x12\x1d\n\nquote_name\x18\x02 \x01(\tR\tquoteName\x12i\n$data_source_spec_for_settlement_data\x18\x03 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR\x1f\x64\x61taSourceSpecForSettlementData\x12q\n(data_source_spec_for_trading_termination\x18\x04 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR#dataSourceSpecForTradingTermination\x12\\\n\x18\x64\x61ta_source_spec_binding\x18\x05 \x01(\x0b\x32#.vega.DataSourceSpecToFutureBindingR\x15\x64\x61taSourceSpecBinding"{\n\x17InstrumentConfiguration\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n\x04\x63ode\x18\x02 \x01(\tR\x04\x63ode\x12-\n\x06\x66uture\x18\x64 \x01(\x0b\x32\x13.vega.FutureProductH\x00R\x06\x66utureB\t\n\x07product"\xb9\x05\n\x16NewMarketConfiguration\x12=\n\ninstrument\x18\x01 \x01(\x0b\x32\x1d.vega.InstrumentConfigurationR\ninstrument\x12%\n\x0e\x64\x65\x63imal_places\x18\x02 \x01(\x04R\rdecimalPlaces\x12\x1a\n\x08metadata\x18\x03 \x03(\tR\x08metadata\x12_\n\x1bprice_monitoring_parameters\x18\x04 \x01(\x0b\x32\x1f.vega.PriceMonitoringParametersR\x19priceMonitoringParameters\x12k\n\x1fliquidity_monitoring_parameters\x18\x05 \x01(\x0b\x32#.vega.LiquidityMonitoringParametersR\x1dliquidityMonitoringParameters\x12\x31\n\x06simple\x18\x64 \x01(\x0b\x32\x17.vega.SimpleModelParamsH\x00R\x06simple\x12\x39\n\nlog_normal\x18\x65 \x01(\x0b\x32\x18.vega.LogNormalRiskModelH\x00R\tlogNormal\x12\x36\n\x17position_decimal_places\x18\x06 \x01(\x03R\x15positionDecimalPlaces\x12$\n\x0elp_price_range\x18\x08 \x01(\tR\x0clpPriceRange\x12\x34\n\x16linear_slippage_factor\x18\t \x01(\tR\x14linearSlippageFactor\x12:\n\x19quadratic_slippage_factor\x18\n \x01(\tR\x17quadraticSlippageFactorB\x11\n\x0frisk_parameters"C\n\tNewMarket\x12\x36\n\x07\x63hanges\x18\x01 \x01(\x0b\x32\x1c.vega.NewMarketConfigurationR\x07\x63hanges"f\n\x0cUpdateMarket\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x39\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x1f.vega.UpdateMarketConfigurationR\x07\x63hanges"\xe3\x04\n\x19UpdateMarketConfiguration\x12\x43\n\ninstrument\x18\x01 \x01(\x0b\x32#.vega.UpdateInstrumentConfigurationR\ninstrument\x12\x1a\n\x08metadata\x18\x02 \x03(\tR\x08metadata\x12_\n\x1bprice_monitoring_parameters\x18\x03 \x01(\x0b\x32\x1f.vega.PriceMonitoringParametersR\x19priceMonitoringParameters\x12k\n\x1fliquidity_monitoring_parameters\x18\x04 \x01(\x0b\x32#.vega.LiquidityMonitoringParametersR\x1dliquidityMonitoringParameters\x12\x31\n\x06simple\x18\x64 \x01(\x0b\x32\x17.vega.SimpleModelParamsH\x00R\x06simple\x12\x39\n\nlog_normal\x18\x65 \x01(\x0b\x32\x18.vega.LogNormalRiskModelH\x00R\tlogNormal\x12$\n\x0elp_price_range\x18\x05 \x01(\tR\x0clpPriceRange\x12\x34\n\x16linear_slippage_factor\x18\x06 \x01(\tR\x14linearSlippageFactor\x12:\n\x19quadratic_slippage_factor\x18\x07 \x01(\tR\x17quadraticSlippageFactorB\x11\n\x0frisk_parameters"s\n\x1dUpdateInstrumentConfiguration\x12\x12\n\x04\x63ode\x18\x01 \x01(\tR\x04\x63ode\x12\x33\n\x06\x66uture\x18\x64 \x01(\x0b\x32\x19.vega.UpdateFutureProductH\x00R\x06\x66utureB\t\n\x07product"\xf0\x02\n\x13UpdateFutureProduct\x12\x1d\n\nquote_name\x18\x01 \x01(\tR\tquoteName\x12i\n$data_source_spec_for_settlement_data\x18\x02 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR\x1f\x64\x61taSourceSpecForSettlementData\x12q\n(data_source_spec_for_trading_termination\x18\x03 \x01(\x0b\x32\x1a.vega.DataSourceDefinitionR#dataSourceSpecForTradingTermination\x12\\\n\x18\x64\x61ta_source_spec_binding\x18\x04 \x01(\x0b\x32#.vega.DataSourceSpecToFutureBindingR\x15\x64\x61taSourceSpecBinding"J\n\x16UpdateNetworkParameter\x12\x30\n\x07\x63hanges\x18\x01 \x01(\x0b\x32\x16.vega.NetworkParameterR\x07\x63hanges"8\n\x08NewAsset\x12,\n\x07\x63hanges\x18\x01 \x01(\x0b\x32\x12.vega.AssetDetailsR\x07\x63hanges"\\\n\x0bUpdateAsset\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x32\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x18.vega.AssetDetailsUpdateR\x07\x63hanges"\r\n\x0bNewFreeform"\x90\x04\n\rProposalTerms\x12+\n\x11\x63losing_timestamp\x18\x01 \x01(\x03R\x10\x63losingTimestamp\x12/\n\x13\x65nactment_timestamp\x18\x02 \x01(\x03R\x12\x65nactmentTimestamp\x12\x31\n\x14validation_timestamp\x18\x03 \x01(\x03R\x13validationTimestamp\x12\x39\n\rupdate_market\x18\x65 \x01(\x0b\x32\x12.vega.UpdateMarketH\x00R\x0cupdateMarket\x12\x30\n\nnew_market\x18\x66 \x01(\x0b\x32\x0f.vega.NewMarketH\x00R\tnewMarket\x12X\n\x18update_network_parameter\x18g \x01(\x0b\x32\x1c.vega.UpdateNetworkParameterH\x00R\x16updateNetworkParameter\x12-\n\tnew_asset\x18h \x01(\x0b\x32\x0e.vega.NewAssetH\x00R\x08newAsset\x12\x36\n\x0cnew_freeform\x18i \x01(\x0b\x32\x11.vega.NewFreeformH\x00R\x0bnewFreeform\x12\x36\n\x0cupdate_asset\x18j \x01(\x0b\x32\x11.vega.UpdateAssetH\x00R\x0bupdateAssetB\x08\n\x06\x63hange"W\n\x11ProposalRationale\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x14\n\x05title\x18\x04 \x01(\tR\x05titleJ\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"\x86\x03\n\x0eGovernanceData\x12*\n\x08proposal\x18\x01 \x01(\x0b\x32\x0e.vega.ProposalR\x08proposal\x12\x1c\n\x03yes\x18\x02 \x03(\x0b\x32\n.vega.VoteR\x03yes\x12\x1a\n\x02no\x18\x03 \x03(\x0b\x32\n.vega.VoteR\x02no\x12?\n\tyes_party\x18\x04 \x03(\x0b\x32".vega.GovernanceData.YesPartyEntryR\x08yesParty\x12<\n\x08no_party\x18\x05 \x03(\x0b\x32!.vega.GovernanceData.NoPartyEntryR\x07noParty\x1aG\n\rYesPartyEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12 \n\x05value\x18\x02 \x01(\x0b\x32\n.vega.VoteR\x05value:\x02\x38\x01\x1a\x46\n\x0cNoPartyEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12 \n\x05value\x18\x02 \x01(\x0b\x32\n.vega.VoteR\x05value:\x02\x38\x01"\x9a\x07\n\x08Proposal\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n\treference\x18\x02 \x01(\tR\treference\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12*\n\x05state\x18\x04 \x01(\x0e\x32\x14.vega.Proposal.StateR\x05state\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12)\n\x05terms\x18\x06 \x01(\x0b\x32\x13.vega.ProposalTermsR\x05terms\x12\x30\n\x06reason\x18\x07 \x01(\x0e\x32\x13.vega.ProposalErrorH\x00R\x06reason\x88\x01\x01\x12(\n\rerror_details\x18\x08 \x01(\tH\x01R\x0c\x65rrorDetails\x88\x01\x01\x12\x35\n\trationale\x18\t \x01(\x0b\x32\x17.vega.ProposalRationaleR\trationale\x12\x35\n\x16required_participation\x18\n \x01(\tR\x15requiredParticipation\x12+\n\x11required_majority\x18\x0b \x01(\tR\x10requiredMajority\x12^\n)required_liquidity_provider_participation\x18\x0c \x01(\tH\x02R&requiredLiquidityProviderParticipation\x88\x01\x01\x12T\n$required_liquidity_provider_majority\x18\r \x01(\tH\x03R!requiredLiquidityProviderMajority\x88\x01\x01"\xae\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x10\n\x0cSTATE_FAILED\x10\x01\x12\x0e\n\nSTATE_OPEN\x10\x02\x12\x10\n\x0cSTATE_PASSED\x10\x03\x12\x12\n\x0eSTATE_REJECTED\x10\x04\x12\x12\n\x0eSTATE_DECLINED\x10\x05\x12\x11\n\rSTATE_ENACTED\x10\x06\x12\x1f\n\x1bSTATE_WAITING_FOR_NODE_VOTE\x10\x07\x42\t\n\x07_reasonB\x10\n\x0e_error_detailsB,\n*_required_liquidity_provider_participationB\'\n%_required_liquidity_provider_majority"\x91\x03\n\x04Vote\x12\x19\n\x08party_id\x18\x01 \x01(\tR\x07partyId\x12&\n\x05value\x18\x02 \x01(\x0e\x32\x10.vega.Vote.ValueR\x05value\x12\x1f\n\x0bproposal_id\x18\x03 \x01(\tR\nproposalId\x12\x1c\n\ttimestamp\x18\x04 \x01(\x03R\ttimestamp\x12\x43\n\x1etotal_governance_token_balance\x18\x05 \x01(\tR\x1btotalGovernanceTokenBalance\x12\x41\n\x1dtotal_governance_token_weight\x18\x06 \x01(\tR\x1atotalGovernanceTokenWeight\x12\x42\n\x1etotal_equity_like_share_weight\x18\x07 \x01(\tR\x1atotalEquityLikeShareWeight";\n\x05Value\x12\x15\n\x11VALUE_UNSPECIFIED\x10\x00\x12\x0c\n\x08VALUE_NO\x10\x01\x12\r\n\tVALUE_YES\x10\x02*\xa0\x0e\n\rProposalError\x12\x1e\n\x1aPROPOSAL_ERROR_UNSPECIFIED\x10\x00\x12&\n"PROPOSAL_ERROR_CLOSE_TIME_TOO_SOON\x10\x01\x12&\n"PROPOSAL_ERROR_CLOSE_TIME_TOO_LATE\x10\x02\x12&\n"PROPOSAL_ERROR_ENACT_TIME_TOO_SOON\x10\x03\x12&\n"PROPOSAL_ERROR_ENACT_TIME_TOO_LATE\x10\x04\x12&\n"PROPOSAL_ERROR_INSUFFICIENT_TOKENS\x10\x05\x12.\n*PROPOSAL_ERROR_INVALID_INSTRUMENT_SECURITY\x10\x06\x12\x1d\n\x19PROPOSAL_ERROR_NO_PRODUCT\x10\x07\x12&\n"PROPOSAL_ERROR_UNSUPPORTED_PRODUCT\x10\x08\x12"\n\x1ePROPOSAL_ERROR_NO_TRADING_MODE\x10\x0b\x12+\n\'PROPOSAL_ERROR_UNSUPPORTED_TRADING_MODE\x10\x0c\x12)\n%PROPOSAL_ERROR_NODE_VALIDATION_FAILED\x10\r\x12.\n*PROPOSAL_ERROR_MISSING_BUILTIN_ASSET_FIELD\x10\x0e\x12\x31\n-PROPOSAL_ERROR_MISSING_ERC20_CONTRACT_ADDRESS\x10\x0f\x12 \n\x1cPROPOSAL_ERROR_INVALID_ASSET\x10\x10\x12*\n&PROPOSAL_ERROR_INCOMPATIBLE_TIMESTAMPS\x10\x11\x12%\n!PROPOSAL_ERROR_NO_RISK_PARAMETERS\x10\x12\x12\x30\n,PROPOSAL_ERROR_NETWORK_PARAMETER_INVALID_KEY\x10\x13\x12\x32\n.PROPOSAL_ERROR_NETWORK_PARAMETER_INVALID_VALUE\x10\x14\x12\x36\n2PROPOSAL_ERROR_NETWORK_PARAMETER_VALIDATION_FAILED\x10\x15\x12\x35\n1PROPOSAL_ERROR_OPENING_AUCTION_DURATION_TOO_SMALL\x10\x16\x12\x35\n1PROPOSAL_ERROR_OPENING_AUCTION_DURATION_TOO_LARGE\x10\x17\x12/\n+PROPOSAL_ERROR_COULD_NOT_INSTANTIATE_MARKET\x10\x19\x12)\n%PROPOSAL_ERROR_INVALID_FUTURE_PRODUCT\x10\x1a\x12)\n%PROPOSAL_ERROR_INVALID_RISK_PARAMETER\x10\x1e\x12\x31\n-PROPOSAL_ERROR_MAJORITY_THRESHOLD_NOT_REACHED\x10\x1f\x12\x36\n2PROPOSAL_ERROR_PARTICIPATION_THRESHOLD_NOT_REACHED\x10 \x12(\n$PROPOSAL_ERROR_INVALID_ASSET_DETAILS\x10!\x12\x1f\n\x1bPROPOSAL_ERROR_UNKNOWN_TYPE\x10"\x12.\n*PROPOSAL_ERROR_UNKNOWN_RISK_PARAMETER_TYPE\x10#\x12#\n\x1fPROPOSAL_ERROR_INVALID_FREEFORM\x10$\x12\x31\n-PROPOSAL_ERROR_INSUFFICIENT_EQUITY_LIKE_SHARE\x10%\x12!\n\x1dPROPOSAL_ERROR_INVALID_MARKET\x10&\x12\x31\n-PROPOSAL_ERROR_TOO_MANY_MARKET_DECIMAL_PLACES\x10\'\x12\x35\n1PROPOSAL_ERROR_TOO_MANY_PRICE_MONITORING_TRIGGERS\x10(\x12/\n+PROPOSAL_ERROR_ERC20_ADDRESS_ALREADY_IN_USE\x10)\x12-\n)PROPOSAL_ERROR_LP_PRICE_RANGE_NONPOSITIVE\x10*\x12+\n\'PROPOSAL_ERROR_LP_PRICE_RANGE_TOO_LARGE\x10+\x12\x36\n2PROPOSAL_ERROR_LINEAR_SLIPPAGE_FACTOR_OUT_OF_RANGE\x10,\x12\x39\n5PROPOSAL_ERROR_QUADRATIC_SLIPPAGE_FACTOR_OUT_OF_RANGE\x10-B\'Z%code.vegaprotocol.io/vega/protos/vegab\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -31,48 +31,48 @@ _GOVERNANCEDATA_YESPARTYENTRY._serialized_options = b"8\001" _GOVERNANCEDATA_NOPARTYENTRY._options = None _GOVERNANCEDATA_NOPARTYENTRY._serialized_options = b"8\001" - _PROPOSALERROR._serialized_start = 4977 - _PROPOSALERROR._serialized_end = 6686 + _PROPOSALERROR._serialized_start = 5205 + _PROPOSALERROR._serialized_end = 7029 _FUTUREPRODUCT._serialized_start = 112 _FUTUREPRODUCT._serialized_end = 517 _INSTRUMENTCONFIGURATION._serialized_start = 519 _INSTRUMENTCONFIGURATION._serialized_end = 642 _NEWMARKETCONFIGURATION._serialized_start = 645 - _NEWMARKETCONFIGURATION._serialized_end = 1228 - _NEWMARKET._serialized_start = 1230 - _NEWMARKET._serialized_end = 1297 - _UPDATEMARKET._serialized_start = 1299 - _UPDATEMARKET._serialized_end = 1401 - _UPDATEMARKETCONFIGURATION._serialized_start = 1404 - _UPDATEMARKETCONFIGURATION._serialized_end = 1901 - _UPDATEINSTRUMENTCONFIGURATION._serialized_start = 1903 - _UPDATEINSTRUMENTCONFIGURATION._serialized_end = 2018 - _UPDATEFUTUREPRODUCT._serialized_start = 2021 - _UPDATEFUTUREPRODUCT._serialized_end = 2389 - _UPDATENETWORKPARAMETER._serialized_start = 2391 - _UPDATENETWORKPARAMETER._serialized_end = 2465 - _NEWASSET._serialized_start = 2467 - _NEWASSET._serialized_end = 2523 - _UPDATEASSET._serialized_start = 2525 - _UPDATEASSET._serialized_end = 2617 - _NEWFREEFORM._serialized_start = 2619 - _NEWFREEFORM._serialized_end = 2632 - _PROPOSALTERMS._serialized_start = 2635 - _PROPOSALTERMS._serialized_end = 3163 - _PROPOSALRATIONALE._serialized_start = 3165 - _PROPOSALRATIONALE._serialized_end = 3252 - _GOVERNANCEDATA._serialized_start = 3255 - _GOVERNANCEDATA._serialized_end = 3645 - _GOVERNANCEDATA_YESPARTYENTRY._serialized_start = 3502 - _GOVERNANCEDATA_YESPARTYENTRY._serialized_end = 3573 - _GOVERNANCEDATA_NOPARTYENTRY._serialized_start = 3575 - _GOVERNANCEDATA_NOPARTYENTRY._serialized_end = 3645 - _PROPOSAL._serialized_start = 3648 - _PROPOSAL._serialized_end = 4570 - _PROPOSAL_STATE._serialized_start = 4280 - _PROPOSAL_STATE._serialized_end = 4454 - _VOTE._serialized_start = 4573 - _VOTE._serialized_end = 4974 - _VOTE_VALUE._serialized_start = 4915 - _VOTE_VALUE._serialized_end = 4974 + _NEWMARKETCONFIGURATION._serialized_end = 1342 + _NEWMARKET._serialized_start = 1344 + _NEWMARKET._serialized_end = 1411 + _UPDATEMARKET._serialized_start = 1413 + _UPDATEMARKET._serialized_end = 1515 + _UPDATEMARKETCONFIGURATION._serialized_start = 1518 + _UPDATEMARKETCONFIGURATION._serialized_end = 2129 + _UPDATEINSTRUMENTCONFIGURATION._serialized_start = 2131 + _UPDATEINSTRUMENTCONFIGURATION._serialized_end = 2246 + _UPDATEFUTUREPRODUCT._serialized_start = 2249 + _UPDATEFUTUREPRODUCT._serialized_end = 2617 + _UPDATENETWORKPARAMETER._serialized_start = 2619 + _UPDATENETWORKPARAMETER._serialized_end = 2693 + _NEWASSET._serialized_start = 2695 + _NEWASSET._serialized_end = 2751 + _UPDATEASSET._serialized_start = 2753 + _UPDATEASSET._serialized_end = 2845 + _NEWFREEFORM._serialized_start = 2847 + _NEWFREEFORM._serialized_end = 2860 + _PROPOSALTERMS._serialized_start = 2863 + _PROPOSALTERMS._serialized_end = 3391 + _PROPOSALRATIONALE._serialized_start = 3393 + _PROPOSALRATIONALE._serialized_end = 3480 + _GOVERNANCEDATA._serialized_start = 3483 + _GOVERNANCEDATA._serialized_end = 3873 + _GOVERNANCEDATA_YESPARTYENTRY._serialized_start = 3730 + _GOVERNANCEDATA_YESPARTYENTRY._serialized_end = 3801 + _GOVERNANCEDATA_NOPARTYENTRY._serialized_start = 3803 + _GOVERNANCEDATA_NOPARTYENTRY._serialized_end = 3873 + _PROPOSAL._serialized_start = 3876 + _PROPOSAL._serialized_end = 4798 + _PROPOSAL_STATE._serialized_start = 4508 + _PROPOSAL_STATE._serialized_end = 4682 + _VOTE._serialized_start = 4801 + _VOTE._serialized_end = 5202 + _VOTE_VALUE._serialized_start = 5143 + _VOTE_VALUE._serialized_end = 5202 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/vega/markets_pb2.py b/vega_sim/proto/vega/markets_pb2.py index 793a83123..8179705c5 100644 --- a/vega_sim/proto/vega/markets_pb2.py +++ b/vega_sim/proto/vega/markets_pb2.py @@ -16,7 +16,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x12vega/markets.proto\x12\x04vega\x1a\x16vega/data_source.proto"E\n\x0f\x41uctionDuration\x12\x1a\n\x08\x64uration\x18\x01 \x01(\x03R\x08\x64uration\x12\x16\n\x06volume\x18\x02 \x01(\x04R\x06volume"\x82\x03\n\x06\x46uture\x12)\n\x10settlement_asset\x18\x01 \x01(\tR\x0fsettlementAsset\x12\x1d\n\nquote_name\x18\x02 \x01(\tR\tquoteName\x12\x63\n$data_source_spec_for_settlement_data\x18\x03 \x01(\x0b\x32\x14.vega.DataSourceSpecR\x1f\x64\x61taSourceSpecForSettlementData\x12k\n(data_source_spec_for_trading_termination\x18\x04 \x01(\x0b\x32\x14.vega.DataSourceSpecR#dataSourceSpecForTradingTermination\x12\\\n\x18\x64\x61ta_source_spec_binding\x18\x05 \x01(\x0b\x32#.vega.DataSourceSpecToFutureBindingR\x15\x64\x61taSourceSpecBinding"\x9b\x01\n\x1d\x44\x61taSourceSpecToFutureBinding\x12\x38\n\x18settlement_data_property\x18\x01 \x01(\tR\x16settlementDataProperty\x12@\n\x1ctrading_termination_property\x18\x02 \x01(\tR\x1atradingTerminationProperty"(\n\x12InstrumentMetadata\x12\x12\n\x04tags\x18\x01 \x03(\tR\x04tags"\xad\x01\n\nInstrument\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04\x63ode\x18\x02 \x01(\tR\x04\x63ode\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x34\n\x08metadata\x18\x04 \x01(\x0b\x32\x18.vega.InstrumentMetadataR\x08metadata\x12&\n\x06\x66uture\x18\x64 \x01(\x0b\x32\x0c.vega.FutureH\x00R\x06\x66utureB\t\n\x07product"\x92\x01\n\x12LogNormalRiskModel\x12\x36\n\x17risk_aversion_parameter\x18\x01 \x01(\x01R\x15riskAversionParameter\x12\x10\n\x03tau\x18\x02 \x01(\x01R\x03tau\x12\x32\n\x06params\x18\x03 \x01(\x0b\x32\x1a.vega.LogNormalModelParamsR\x06params"J\n\x14LogNormalModelParams\x12\x0e\n\x02mu\x18\x01 \x01(\x01R\x02mu\x12\x0c\n\x01r\x18\x02 \x01(\x01R\x01r\x12\x14\n\x05sigma\x18\x03 \x01(\x01R\x05sigma"B\n\x0fSimpleRiskModel\x12/\n\x06params\x18\x01 \x01(\x0b\x32\x17.vega.SimpleModelParamsR\x06params"\xd1\x01\n\x11SimpleModelParams\x12\x1f\n\x0b\x66\x61\x63tor_long\x18\x01 \x01(\x01R\nfactorLong\x12!\n\x0c\x66\x61\x63tor_short\x18\x02 \x01(\x01R\x0b\x66\x61\x63torShort\x12\x1e\n\x0bmax_move_up\x18\x03 \x01(\x01R\tmaxMoveUp\x12"\n\rmin_move_down\x18\x04 \x01(\x01R\x0bminMoveDown\x12\x34\n\x16probability_of_trading\x18\x05 \x01(\x01R\x14probabilityOfTrading"\x89\x01\n\x0eScalingFactors\x12!\n\x0csearch_level\x18\x01 \x01(\x01R\x0bsearchLevel\x12%\n\x0einitial_margin\x18\x02 \x01(\x01R\rinitialMargin\x12-\n\x12\x63ollateral_release\x18\x03 \x01(\x01R\x11\x63ollateralRelease"Q\n\x10MarginCalculator\x12=\n\x0fscaling_factors\x18\x01 \x01(\x0b\x32\x14.vega.ScalingFactorsR\x0escalingFactors"\xad\x02\n\x12TradableInstrument\x12\x30\n\ninstrument\x18\x01 \x01(\x0b\x32\x10.vega.InstrumentR\ninstrument\x12\x43\n\x11margin_calculator\x18\x02 \x01(\x0b\x32\x16.vega.MarginCalculatorR\x10marginCalculator\x12M\n\x15log_normal_risk_model\x18\x64 \x01(\x0b\x32\x18.vega.LogNormalRiskModelH\x00R\x12logNormalRiskModel\x12\x43\n\x11simple_risk_model\x18\x65 \x01(\x0b\x32\x15.vega.SimpleRiskModelH\x00R\x0fsimpleRiskModelB\x0c\n\nrisk_model"}\n\nFeeFactors\x12\x1b\n\tmaker_fee\x18\x01 \x01(\tR\x08makerFee\x12-\n\x12infrastructure_fee\x18\x02 \x01(\tR\x11infrastructureFee\x12#\n\rliquidity_fee\x18\x03 \x01(\tR\x0cliquidityFee"2\n\x04\x46\x65\x65s\x12*\n\x07\x66\x61\x63tors\x18\x01 \x01(\x0b\x32\x10.vega.FeeFactorsR\x07\x66\x61\x63tors"\x81\x01\n\x16PriceMonitoringTrigger\x12\x18\n\x07horizon\x18\x01 \x01(\x03R\x07horizon\x12 \n\x0bprobability\x18\x02 \x01(\tR\x0bprobability\x12+\n\x11\x61uction_extension\x18\x03 \x01(\x03R\x10\x61uctionExtension"U\n\x19PriceMonitoringParameters\x12\x38\n\x08triggers\x18\x01 \x03(\x0b\x32\x1c.vega.PriceMonitoringTriggerR\x08triggers"Z\n\x17PriceMonitoringSettings\x12?\n\nparameters\x18\x01 \x01(\x0b\x32\x1f.vega.PriceMonitoringParametersR\nparameters"\xcc\x01\n\x1dLiquidityMonitoringParameters\x12S\n\x17target_stake_parameters\x18\x01 \x01(\x0b\x32\x1b.vega.TargetStakeParametersR\x15targetStakeParameters\x12)\n\x10triggering_ratio\x18\x02 \x01(\tR\x0ftriggeringRatio\x12+\n\x11\x61uction_extension\x18\x03 \x01(\x03R\x10\x61uctionExtension"_\n\x15TargetStakeParameters\x12\x1f\n\x0btime_window\x18\x01 \x01(\x03R\ntimeWindow\x12%\n\x0escaling_factor\x18\x02 \x01(\x01R\rscalingFactor"\xe6\x08\n\x06Market\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12I\n\x13tradable_instrument\x18\x02 \x01(\x0b\x32\x18.vega.TradableInstrumentR\x12tradableInstrument\x12%\n\x0e\x64\x65\x63imal_places\x18\x03 \x01(\x04R\rdecimalPlaces\x12\x1e\n\x04\x66\x65\x65s\x18\x04 \x01(\x0b\x32\n.vega.FeesR\x04\x66\x65\x65s\x12>\n\x0fopening_auction\x18\x05 \x01(\x0b\x32\x15.vega.AuctionDurationR\x0eopeningAuction\x12Y\n\x19price_monitoring_settings\x18\x06 \x01(\x0b\x32\x1d.vega.PriceMonitoringSettingsR\x17priceMonitoringSettings\x12k\n\x1fliquidity_monitoring_parameters\x18\x07 \x01(\x0b\x32#.vega.LiquidityMonitoringParametersR\x1dliquidityMonitoringParameters\x12;\n\x0ctrading_mode\x18\x08 \x01(\x0e\x32\x18.vega.Market.TradingModeR\x0btradingMode\x12(\n\x05state\x18\t \x01(\x0e\x32\x12.vega.Market.StateR\x05state\x12\x43\n\x11market_timestamps\x18\n \x01(\x0b\x32\x16.vega.MarketTimestampsR\x10marketTimestamps\x12\x36\n\x17position_decimal_places\x18\x0b \x01(\x03R\x15positionDecimalPlaces\x12$\n\x0elp_price_range\x18\x0c \x01(\tR\x0clpPriceRange"\xd8\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATE_PROPOSED\x10\x01\x12\x12\n\x0eSTATE_REJECTED\x10\x02\x12\x11\n\rSTATE_PENDING\x10\x03\x12\x13\n\x0fSTATE_CANCELLED\x10\x04\x12\x10\n\x0cSTATE_ACTIVE\x10\x05\x12\x13\n\x0fSTATE_SUSPENDED\x10\x06\x12\x10\n\x0cSTATE_CLOSED\x10\x07\x12\x1c\n\x18STATE_TRADING_TERMINATED\x10\x08\x12\x11\n\rSTATE_SETTLED\x10\t"\xcc\x01\n\x0bTradingMode\x12\x1c\n\x18TRADING_MODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17TRADING_MODE_CONTINUOUS\x10\x01\x12\x1e\n\x1aTRADING_MODE_BATCH_AUCTION\x10\x02\x12 \n\x1cTRADING_MODE_OPENING_AUCTION\x10\x03\x12#\n\x1fTRADING_MODE_MONITORING_AUCTION\x10\x04\x12\x1b\n\x17TRADING_MODE_NO_TRADING\x10\x05"r\n\x10MarketTimestamps\x12\x1a\n\x08proposed\x18\x01 \x01(\x03R\x08proposed\x12\x18\n\x07pending\x18\x02 \x01(\x03R\x07pending\x12\x12\n\x04open\x18\x03 \x01(\x03R\x04open\x12\x14\n\x05\x63lose\x18\x04 \x01(\x03R\x05\x63loseB\'Z%code.vegaprotocol.io/vega/protos/vegab\x06proto3' + b'\n\x12vega/markets.proto\x12\x04vega\x1a\x16vega/data_source.proto"E\n\x0f\x41uctionDuration\x12\x1a\n\x08\x64uration\x18\x01 \x01(\x03R\x08\x64uration\x12\x16\n\x06volume\x18\x02 \x01(\x04R\x06volume"\x82\x03\n\x06\x46uture\x12)\n\x10settlement_asset\x18\x01 \x01(\tR\x0fsettlementAsset\x12\x1d\n\nquote_name\x18\x02 \x01(\tR\tquoteName\x12\x63\n$data_source_spec_for_settlement_data\x18\x03 \x01(\x0b\x32\x14.vega.DataSourceSpecR\x1f\x64\x61taSourceSpecForSettlementData\x12k\n(data_source_spec_for_trading_termination\x18\x04 \x01(\x0b\x32\x14.vega.DataSourceSpecR#dataSourceSpecForTradingTermination\x12\\\n\x18\x64\x61ta_source_spec_binding\x18\x05 \x01(\x0b\x32#.vega.DataSourceSpecToFutureBindingR\x15\x64\x61taSourceSpecBinding"\x9b\x01\n\x1d\x44\x61taSourceSpecToFutureBinding\x12\x38\n\x18settlement_data_property\x18\x01 \x01(\tR\x16settlementDataProperty\x12@\n\x1ctrading_termination_property\x18\x02 \x01(\tR\x1atradingTerminationProperty"(\n\x12InstrumentMetadata\x12\x12\n\x04tags\x18\x01 \x03(\tR\x04tags"\xad\x01\n\nInstrument\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04\x63ode\x18\x02 \x01(\tR\x04\x63ode\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x34\n\x08metadata\x18\x04 \x01(\x0b\x32\x18.vega.InstrumentMetadataR\x08metadata\x12&\n\x06\x66uture\x18\x64 \x01(\x0b\x32\x0c.vega.FutureH\x00R\x06\x66utureB\t\n\x07product"\x92\x01\n\x12LogNormalRiskModel\x12\x36\n\x17risk_aversion_parameter\x18\x01 \x01(\x01R\x15riskAversionParameter\x12\x10\n\x03tau\x18\x02 \x01(\x01R\x03tau\x12\x32\n\x06params\x18\x03 \x01(\x0b\x32\x1a.vega.LogNormalModelParamsR\x06params"J\n\x14LogNormalModelParams\x12\x0e\n\x02mu\x18\x01 \x01(\x01R\x02mu\x12\x0c\n\x01r\x18\x02 \x01(\x01R\x01r\x12\x14\n\x05sigma\x18\x03 \x01(\x01R\x05sigma"B\n\x0fSimpleRiskModel\x12/\n\x06params\x18\x01 \x01(\x0b\x32\x17.vega.SimpleModelParamsR\x06params"\xd1\x01\n\x11SimpleModelParams\x12\x1f\n\x0b\x66\x61\x63tor_long\x18\x01 \x01(\x01R\nfactorLong\x12!\n\x0c\x66\x61\x63tor_short\x18\x02 \x01(\x01R\x0b\x66\x61\x63torShort\x12\x1e\n\x0bmax_move_up\x18\x03 \x01(\x01R\tmaxMoveUp\x12"\n\rmin_move_down\x18\x04 \x01(\x01R\x0bminMoveDown\x12\x34\n\x16probability_of_trading\x18\x05 \x01(\x01R\x14probabilityOfTrading"\x89\x01\n\x0eScalingFactors\x12!\n\x0csearch_level\x18\x01 \x01(\x01R\x0bsearchLevel\x12%\n\x0einitial_margin\x18\x02 \x01(\x01R\rinitialMargin\x12-\n\x12\x63ollateral_release\x18\x03 \x01(\x01R\x11\x63ollateralRelease"Q\n\x10MarginCalculator\x12=\n\x0fscaling_factors\x18\x01 \x01(\x0b\x32\x14.vega.ScalingFactorsR\x0escalingFactors"\xad\x02\n\x12TradableInstrument\x12\x30\n\ninstrument\x18\x01 \x01(\x0b\x32\x10.vega.InstrumentR\ninstrument\x12\x43\n\x11margin_calculator\x18\x02 \x01(\x0b\x32\x16.vega.MarginCalculatorR\x10marginCalculator\x12M\n\x15log_normal_risk_model\x18\x64 \x01(\x0b\x32\x18.vega.LogNormalRiskModelH\x00R\x12logNormalRiskModel\x12\x43\n\x11simple_risk_model\x18\x65 \x01(\x0b\x32\x15.vega.SimpleRiskModelH\x00R\x0fsimpleRiskModelB\x0c\n\nrisk_model"}\n\nFeeFactors\x12\x1b\n\tmaker_fee\x18\x01 \x01(\tR\x08makerFee\x12-\n\x12infrastructure_fee\x18\x02 \x01(\tR\x11infrastructureFee\x12#\n\rliquidity_fee\x18\x03 \x01(\tR\x0cliquidityFee"2\n\x04\x46\x65\x65s\x12*\n\x07\x66\x61\x63tors\x18\x01 \x01(\x0b\x32\x10.vega.FeeFactorsR\x07\x66\x61\x63tors"\x81\x01\n\x16PriceMonitoringTrigger\x12\x18\n\x07horizon\x18\x01 \x01(\x03R\x07horizon\x12 \n\x0bprobability\x18\x02 \x01(\tR\x0bprobability\x12+\n\x11\x61uction_extension\x18\x03 \x01(\x03R\x10\x61uctionExtension"U\n\x19PriceMonitoringParameters\x12\x38\n\x08triggers\x18\x01 \x03(\x0b\x32\x1c.vega.PriceMonitoringTriggerR\x08triggers"Z\n\x17PriceMonitoringSettings\x12?\n\nparameters\x18\x01 \x01(\x0b\x32\x1f.vega.PriceMonitoringParametersR\nparameters"\xcc\x01\n\x1dLiquidityMonitoringParameters\x12S\n\x17target_stake_parameters\x18\x01 \x01(\x0b\x32\x1b.vega.TargetStakeParametersR\x15targetStakeParameters\x12)\n\x10triggering_ratio\x18\x02 \x01(\tR\x0ftriggeringRatio\x12+\n\x11\x61uction_extension\x18\x03 \x01(\x03R\x10\x61uctionExtension"_\n\x15TargetStakeParameters\x12\x1f\n\x0btime_window\x18\x01 \x01(\x03R\ntimeWindow\x12%\n\x0escaling_factor\x18\x02 \x01(\x01R\rscalingFactor"\xd8\t\n\x06Market\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12I\n\x13tradable_instrument\x18\x02 \x01(\x0b\x32\x18.vega.TradableInstrumentR\x12tradableInstrument\x12%\n\x0e\x64\x65\x63imal_places\x18\x03 \x01(\x04R\rdecimalPlaces\x12\x1e\n\x04\x66\x65\x65s\x18\x04 \x01(\x0b\x32\n.vega.FeesR\x04\x66\x65\x65s\x12>\n\x0fopening_auction\x18\x05 \x01(\x0b\x32\x15.vega.AuctionDurationR\x0eopeningAuction\x12Y\n\x19price_monitoring_settings\x18\x06 \x01(\x0b\x32\x1d.vega.PriceMonitoringSettingsR\x17priceMonitoringSettings\x12k\n\x1fliquidity_monitoring_parameters\x18\x07 \x01(\x0b\x32#.vega.LiquidityMonitoringParametersR\x1dliquidityMonitoringParameters\x12;\n\x0ctrading_mode\x18\x08 \x01(\x0e\x32\x18.vega.Market.TradingModeR\x0btradingMode\x12(\n\x05state\x18\t \x01(\x0e\x32\x12.vega.Market.StateR\x05state\x12\x43\n\x11market_timestamps\x18\n \x01(\x0b\x32\x16.vega.MarketTimestampsR\x10marketTimestamps\x12\x36\n\x17position_decimal_places\x18\x0b \x01(\x03R\x15positionDecimalPlaces\x12$\n\x0elp_price_range\x18\x0c \x01(\tR\x0clpPriceRange\x12\x34\n\x16linear_slippage_factor\x18\r \x01(\tR\x14linearSlippageFactor\x12:\n\x19quadratic_slippage_factor\x18\x0e \x01(\tR\x17quadraticSlippageFactor"\xd8\x01\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTATE_PROPOSED\x10\x01\x12\x12\n\x0eSTATE_REJECTED\x10\x02\x12\x11\n\rSTATE_PENDING\x10\x03\x12\x13\n\x0fSTATE_CANCELLED\x10\x04\x12\x10\n\x0cSTATE_ACTIVE\x10\x05\x12\x13\n\x0fSTATE_SUSPENDED\x10\x06\x12\x10\n\x0cSTATE_CLOSED\x10\x07\x12\x1c\n\x18STATE_TRADING_TERMINATED\x10\x08\x12\x11\n\rSTATE_SETTLED\x10\t"\xcc\x01\n\x0bTradingMode\x12\x1c\n\x18TRADING_MODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17TRADING_MODE_CONTINUOUS\x10\x01\x12\x1e\n\x1aTRADING_MODE_BATCH_AUCTION\x10\x02\x12 \n\x1cTRADING_MODE_OPENING_AUCTION\x10\x03\x12#\n\x1fTRADING_MODE_MONITORING_AUCTION\x10\x04\x12\x1b\n\x17TRADING_MODE_NO_TRADING\x10\x05"r\n\x10MarketTimestamps\x12\x1a\n\x08proposed\x18\x01 \x01(\x03R\x08proposed\x12\x18\n\x07pending\x18\x02 \x01(\x03R\x07pending\x12\x12\n\x04open\x18\x03 \x01(\x03R\x04open\x12\x14\n\x05\x63lose\x18\x04 \x01(\x03R\x05\x63loseB\'Z%code.vegaprotocol.io/vega/protos/vegab\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -63,11 +63,11 @@ _TARGETSTAKEPARAMETERS._serialized_start = 2617 _TARGETSTAKEPARAMETERS._serialized_end = 2712 _MARKET._serialized_start = 2715 - _MARKET._serialized_end = 3841 - _MARKET_STATE._serialized_start = 3418 - _MARKET_STATE._serialized_end = 3634 - _MARKET_TRADINGMODE._serialized_start = 3637 - _MARKET_TRADINGMODE._serialized_end = 3841 - _MARKETTIMESTAMPS._serialized_start = 3843 - _MARKETTIMESTAMPS._serialized_end = 3957 + _MARKET._serialized_end = 3955 + _MARKET_STATE._serialized_start = 3532 + _MARKET_STATE._serialized_end = 3748 + _MARKET_TRADINGMODE._serialized_start = 3751 + _MARKET_TRADINGMODE._serialized_end = 3955 + _MARKETTIMESTAMPS._serialized_start = 3957 + _MARKETTIMESTAMPS._serialized_end = 4071 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/proto/vega/vega_pb2.py b/vega_sim/proto/vega/vega_pb2.py index c8f351768..9f21de12a 100644 --- a/vega_sim/proto/vega/vega_pb2.py +++ b/vega_sim/proto/vega/vega_pb2.py @@ -16,7 +16,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x0fvega/vega.proto\x12\x04vega\x1a\x12vega/markets.proto"\x17\n\x05Party\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"N\n\nRiskFactor\x12\x16\n\x06market\x18\x01 \x01(\tR\x06market\x12\x14\n\x05short\x18\x02 \x01(\tR\x05short\x12\x12\n\x04long\x18\x03 \x01(\tR\x04long"Z\n\x0bPeggedOrder\x12\x33\n\treference\x18\x01 \x01(\x0e\x32\x15.vega.PeggedReferenceR\treference\x12\x16\n\x06offset\x18\x02 \x01(\tR\x06offset"\xf2\x08\n\x05Order\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x1e\n\x04side\x18\x04 \x01(\x0e\x32\n.vega.SideR\x04side\x12\x14\n\x05price\x18\x05 \x01(\tR\x05price\x12\x12\n\x04size\x18\x06 \x01(\x04R\x04size\x12\x1c\n\tremaining\x18\x07 \x01(\x04R\tremaining\x12;\n\rtime_in_force\x18\x08 \x01(\x0e\x32\x17.vega.Order.TimeInForceR\x0btimeInForce\x12$\n\x04type\x18\t \x01(\x0e\x32\x10.vega.Order.TypeR\x04type\x12\x1d\n\ncreated_at\x18\n \x01(\x03R\tcreatedAt\x12*\n\x06status\x18\x0b \x01(\x0e\x32\x12.vega.Order.StatusR\x06status\x12\x1d\n\nexpires_at\x18\x0c \x01(\x03R\texpiresAt\x12\x1c\n\treference\x18\r \x01(\tR\treference\x12-\n\x06reason\x18\x0e \x01(\x0e\x32\x10.vega.OrderErrorH\x00R\x06reason\x88\x01\x01\x12\x1d\n\nupdated_at\x18\x0f \x01(\x03R\tupdatedAt\x12\x18\n\x07version\x18\x10 \x01(\x04R\x07version\x12\x19\n\x08\x62\x61tch_id\x18\x11 \x01(\x04R\x07\x62\x61tchId\x12\x34\n\x0cpegged_order\x18\x12 \x01(\x0b\x32\x11.vega.PeggedOrderR\x0bpeggedOrder\x12\x34\n\x16liquidity_provision_id\x18\x13 \x01(\tR\x14liquidityProvisionId"\xb6\x01\n\x0bTimeInForce\x12\x1d\n\x19TIME_IN_FORCE_UNSPECIFIED\x10\x00\x12\x15\n\x11TIME_IN_FORCE_GTC\x10\x01\x12\x15\n\x11TIME_IN_FORCE_GTT\x10\x02\x12\x15\n\x11TIME_IN_FORCE_IOC\x10\x03\x12\x15\n\x11TIME_IN_FORCE_FOK\x10\x04\x12\x15\n\x11TIME_IN_FORCE_GFA\x10\x05\x12\x15\n\x11TIME_IN_FORCE_GFN\x10\x06"O\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_LIMIT\x10\x01\x12\x0f\n\x0bTYPE_MARKET\x10\x02\x12\x10\n\x0cTYPE_NETWORK\x10\x03"\xc9\x01\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x11\n\rSTATUS_ACTIVE\x10\x01\x12\x12\n\x0eSTATUS_EXPIRED\x10\x02\x12\x14\n\x10STATUS_CANCELLED\x10\x03\x12\x12\n\x0eSTATUS_STOPPED\x10\x04\x12\x11\n\rSTATUS_FILLED\x10\x05\x12\x13\n\x0fSTATUS_REJECTED\x10\x06\x12\x1b\n\x17STATUS_PARTIALLY_FILLED\x10\x07\x12\x11\n\rSTATUS_PARKED\x10\x08\x42\t\n\x07_reason"B\n\x1dOrderCancellationConfirmation\x12!\n\x05order\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x05order"\xa0\x01\n\x11OrderConfirmation\x12!\n\x05order\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x05order\x12#\n\x06trades\x18\x02 \x03(\x0b\x32\x0b.vega.TradeR\x06trades\x12\x43\n\x17passive_orders_affected\x18\x03 \x03(\x0b\x32\x0b.vega.OrderR\x15passiveOrdersAffected"\xd3\x01\n\x16\x41uctionIndicativeState\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12)\n\x10indicative_price\x18\x02 \x01(\tR\x0findicativePrice\x12+\n\x11indicative_volume\x18\x03 \x01(\x04R\x10indicativeVolume\x12#\n\rauction_start\x18\x04 \x01(\x03R\x0c\x61uctionStart\x12\x1f\n\x0b\x61uction_end\x18\x05 \x01(\x03R\nauctionEnd"\xdb\x04\n\x05Trade\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x03 \x01(\tR\x05price\x12\x12\n\x04size\x18\x04 \x01(\x04R\x04size\x12\x14\n\x05\x62uyer\x18\x05 \x01(\tR\x05\x62uyer\x12\x16\n\x06seller\x18\x06 \x01(\tR\x06seller\x12(\n\taggressor\x18\x07 \x01(\x0e\x32\n.vega.SideR\taggressor\x12\x1b\n\tbuy_order\x18\x08 \x01(\tR\x08\x62uyOrder\x12\x1d\n\nsell_order\x18\t \x01(\tR\tsellOrder\x12\x1c\n\ttimestamp\x18\n \x01(\x03R\ttimestamp\x12$\n\x04type\x18\x0b \x01(\x0e\x32\x10.vega.Trade.TypeR\x04type\x12&\n\tbuyer_fee\x18\x0c \x01(\x0b\x32\t.vega.FeeR\x08\x62uyerFee\x12(\n\nseller_fee\x18\r \x01(\x0b\x32\t.vega.FeeR\tsellerFee\x12.\n\x13\x62uyer_auction_batch\x18\x0e \x01(\x04R\x11\x62uyerAuctionBatch\x12\x30\n\x14seller_auction_batch\x18\x0f \x01(\x04R\x12sellerAuctionBatch"o\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x10\n\x0cTYPE_DEFAULT\x10\x01\x12\x1f\n\x1bTYPE_NETWORK_CLOSE_OUT_GOOD\x10\x02\x12\x1e\n\x1aTYPE_NETWORK_CLOSE_OUT_BAD\x10\x03"v\n\x03\x46\x65\x65\x12\x1b\n\tmaker_fee\x18\x01 \x01(\tR\x08makerFee\x12-\n\x12infrastructure_fee\x18\x02 \x01(\tR\x11infrastructureFee\x12#\n\rliquidity_fee\x18\x03 \x01(\tR\x0cliquidityFee"/\n\x08TradeSet\x12#\n\x06trades\x18\x01 \x03(\x0b\x32\x0b.vega.TradeR\x06trades"\xd6\x01\n\x06\x43\x61ndle\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x1a\n\x08\x64\x61tetime\x18\x02 \x01(\tR\x08\x64\x61tetime\x12\x12\n\x04high\x18\x03 \x01(\tR\x04high\x12\x10\n\x03low\x18\x04 \x01(\tR\x03low\x12\x12\n\x04open\x18\x05 \x01(\tR\x04open\x12\x14\n\x05\x63lose\x18\x06 \x01(\tR\x05\x63lose\x12\x16\n\x06volume\x18\x07 \x01(\x04R\x06volume\x12*\n\x08interval\x18\x08 \x01(\x0e\x32\x0e.vega.IntervalR\x08interval"d\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12(\n\x10number_of_orders\x18\x02 \x01(\x04R\x0enumberOfOrders\x12\x16\n\x06volume\x18\x03 \x01(\x04R\x06volume"\x9d\x01\n\x0bMarketDepth\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12"\n\x03\x62uy\x18\x02 \x03(\x0b\x32\x10.vega.PriceLevelR\x03\x62uy\x12$\n\x04sell\x18\x03 \x03(\x0b\x32\x10.vega.PriceLevelR\x04sell\x12\'\n\x0fsequence_number\x18\x04 \x01(\x04R\x0esequenceNumber"\xdd\x01\n\x11MarketDepthUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12"\n\x03\x62uy\x18\x02 \x03(\x0b\x32\x10.vega.PriceLevelR\x03\x62uy\x12$\n\x04sell\x18\x03 \x03(\x0b\x32\x10.vega.PriceLevelR\x04sell\x12\'\n\x0fsequence_number\x18\x04 \x01(\x04R\x0esequenceNumber\x12\x38\n\x18previous_sequence_number\x18\x05 \x01(\x04R\x16previousSequenceNumber"\xfc\x01\n\x08Position\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x1f\n\x0bopen_volume\x18\x03 \x01(\x03R\nopenVolume\x12!\n\x0crealised_pnl\x18\x04 \x01(\tR\x0brealisedPnl\x12%\n\x0eunrealised_pnl\x18\x05 \x01(\tR\runrealisedPnl\x12.\n\x13\x61verage_entry_price\x18\x06 \x01(\tR\x11\x61verageEntryPrice\x12\x1d\n\nupdated_at\x18\x07 \x01(\x03R\tupdatedAt"=\n\rPositionTrade\x12\x16\n\x06volume\x18\x01 \x01(\x03R\x06volume\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price"\xe4\x02\n\x07\x44\x65posit\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12,\n\x06status\x18\x02 \x01(\x0e\x32\x14.vega.Deposit.StatusR\x06status\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x17\n\x07tx_hash\x18\x06 \x01(\tR\x06txHash\x12-\n\x12\x63redited_timestamp\x18\x07 \x01(\x03R\x11\x63reditedTimestamp\x12+\n\x11\x63reated_timestamp\x18\x08 \x01(\x03R\x10\x63reatedTimestamp"]\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0f\n\x0bSTATUS_OPEN\x10\x01\x12\x14\n\x10STATUS_CANCELLED\x10\x02\x12\x14\n\x10STATUS_FINALIZED\x10\x03"\xa8\x03\n\nWithdrawal\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12/\n\x06status\x18\x05 \x01(\x0e\x32\x17.vega.Withdrawal.StatusR\x06status\x12\x10\n\x03ref\x18\x06 \x01(\tR\x03ref\x12\x17\n\x07tx_hash\x18\x08 \x01(\tR\x06txHash\x12+\n\x11\x63reated_timestamp\x18\t \x01(\x03R\x10\x63reatedTimestamp\x12/\n\x13withdrawn_timestamp\x18\n \x01(\x03R\x12withdrawnTimestamp\x12#\n\x03\x65xt\x18\x0b \x01(\x0b\x32\x11.vega.WithdrawExtR\x03\x65xt"\\\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0f\n\x0bSTATUS_OPEN\x10\x01\x12\x13\n\x0fSTATUS_REJECTED\x10\x02\x12\x14\n\x10STATUS_FINALIZED\x10\x03J\x04\x08\x07\x10\x08"D\n\x0bWithdrawExt\x12.\n\x05\x65rc20\x18\x01 \x01(\x0b\x32\x16.vega.Erc20WithdrawExtH\x00R\x05\x65rc20B\x05\n\x03\x65xt"=\n\x10\x45rc20WithdrawExt\x12)\n\x10receiver_address\x18\x01 \x01(\tR\x0freceiverAddress"\xa3\x01\n\x07\x41\x63\x63ount\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n\x05owner\x18\x02 \x01(\tR\x05owner\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId\x12%\n\x04type\x18\x06 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type"?\n\x0f\x46inancialAmount\x12\x16\n\x06\x61mount\x18\x01 \x01(\tR\x06\x61mount\x12\x14\n\x05\x61sset\x18\x02 \x01(\tR\x05\x61sset"\xb3\x01\n\x08Transfer\x12\x14\n\x05owner\x18\x01 \x01(\tR\x05owner\x12-\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x15.vega.FinancialAmountR\x06\x61mount\x12&\n\x04type\x18\x03 \x01(\x0e\x32\x12.vega.TransferTypeR\x04type\x12\x1d\n\nmin_amount\x18\x04 \x01(\tR\tminAmount\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId"\x84\x01\n\x10\x44ispatchStrategy\x12(\n\x10\x61sset_for_metric\x18\x01 \x01(\tR\x0e\x61ssetForMetric\x12,\n\x06metric\x18\x02 \x01(\x0e\x32\x14.vega.DispatchMetricR\x06metric\x12\x18\n\x07markets\x18\x03 \x03(\tR\x07markets"\xe6\x01\n\x0fTransferRequest\x12\x30\n\x0c\x66rom_account\x18\x01 \x03(\x0b\x32\r.vega.AccountR\x0b\x66romAccount\x12,\n\nto_account\x18\x02 \x03(\x0b\x32\r.vega.AccountR\ttoAccount\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1d\n\nmin_amount\x18\x04 \x01(\tR\tminAmount\x12\x14\n\x05\x61sset\x18\x05 \x01(\tR\x05\x61sset\x12&\n\x04type\x18\x07 \x01(\x0e\x32\x12.vega.TransferTypeR\x04type"\xa7\x01\n\x0e\x41\x63\x63ountDetails\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12%\n\x04type\x18\x02 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type\x12\x19\n\x05owner\x18\x03 \x01(\tH\x00R\x05owner\x88\x01\x01\x12 \n\tmarket_id\x18\x04 \x01(\tH\x01R\x08marketId\x88\x01\x01\x42\x08\n\x06_ownerB\x0c\n\n_market_id"\xb9\x02\n\x0bLedgerEntry\x12\x37\n\x0c\x66rom_account\x18\x01 \x01(\x0b\x32\x14.vega.AccountDetailsR\x0b\x66romAccount\x12\x33\n\nto_account\x18\x02 \x01(\x0b\x32\x14.vega.AccountDetailsR\ttoAccount\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12&\n\x04type\x18\x04 \x01(\x0e\x32\x12.vega.TransferTypeR\x04type\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x30\n\x14\x66rom_account_balance\x18\x06 \x01(\tR\x12\x66romAccountBalance\x12,\n\x12to_account_balance\x18\x07 \x01(\tR\x10toAccountBalance"_\n\x13PostTransferBalance\x12.\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0b\x32\x14.vega.AccountDetailsR\x07\x61\x63\x63ount\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance"t\n\x0eLedgerMovement\x12+\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x11.vega.LedgerEntryR\x07\x65ntries\x12\x35\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32\x19.vega.PostTransferBalanceR\x08\x62\x61lances"\xad\x02\n\x0cMarginLevels\x12-\n\x12maintenance_margin\x18\x01 \x01(\tR\x11maintenanceMargin\x12!\n\x0csearch_level\x18\x02 \x01(\tR\x0bsearchLevel\x12%\n\x0einitial_margin\x18\x03 \x01(\tR\rinitialMargin\x12\x38\n\x18\x63ollateral_release_level\x18\x04 \x01(\tR\x16\x63ollateralReleaseLevel\x12\x19\n\x08party_id\x18\x05 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x06 \x01(\tR\x08marketId\x12\x14\n\x05\x61sset\x18\x07 \x01(\tR\x05\x61sset\x12\x1c\n\ttimestamp\x18\x08 \x01(\x03R\ttimestamp"\xe5\n\n\nMarketData\x12\x1d\n\nmark_price\x18\x01 \x01(\tR\tmarkPrice\x12$\n\x0e\x62\x65st_bid_price\x18\x02 \x01(\tR\x0c\x62\x65stBidPrice\x12&\n\x0f\x62\x65st_bid_volume\x18\x03 \x01(\x04R\rbestBidVolume\x12(\n\x10\x62\x65st_offer_price\x18\x04 \x01(\tR\x0e\x62\x65stOfferPrice\x12*\n\x11\x62\x65st_offer_volume\x18\x05 \x01(\x04R\x0f\x62\x65stOfferVolume\x12\x31\n\x15\x62\x65st_static_bid_price\x18\x06 \x01(\tR\x12\x62\x65stStaticBidPrice\x12\x33\n\x16\x62\x65st_static_bid_volume\x18\x07 \x01(\x04R\x13\x62\x65stStaticBidVolume\x12\x35\n\x17\x62\x65st_static_offer_price\x18\x08 \x01(\tR\x14\x62\x65stStaticOfferPrice\x12\x37\n\x18\x62\x65st_static_offer_volume\x18\t \x01(\x04R\x15\x62\x65stStaticOfferVolume\x12\x1b\n\tmid_price\x18\n \x01(\tR\x08midPrice\x12(\n\x10static_mid_price\x18\x0b \x01(\tR\x0estaticMidPrice\x12\x16\n\x06market\x18\x0c \x01(\tR\x06market\x12\x1c\n\ttimestamp\x18\r \x01(\x03R\ttimestamp\x12#\n\ropen_interest\x18\x0e \x01(\x04R\x0copenInterest\x12\x1f\n\x0b\x61uction_end\x18\x0f \x01(\x03R\nauctionEnd\x12#\n\rauction_start\x18\x10 \x01(\x03R\x0c\x61uctionStart\x12)\n\x10indicative_price\x18\x11 \x01(\tR\x0findicativePrice\x12+\n\x11indicative_volume\x18\x12 \x01(\x04R\x10indicativeVolume\x12H\n\x13market_trading_mode\x18\x13 \x01(\x0e\x32\x18.vega.Market.TradingModeR\x11marketTradingMode\x12.\n\x07trigger\x18\x14 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x07trigger\x12\x41\n\x11\x65xtension_trigger\x18\x15 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x10\x65xtensionTrigger\x12!\n\x0ctarget_stake\x18\x16 \x01(\tR\x0btargetStake\x12%\n\x0esupplied_stake\x18\x17 \x01(\tR\rsuppliedStake\x12S\n\x17price_monitoring_bounds\x18\x18 \x03(\x0b\x32\x1b.vega.PriceMonitoringBoundsR\x15priceMonitoringBounds\x12,\n\x12market_value_proxy\x18\x19 \x01(\tR\x10marketValueProxy\x12`\n\x1cliquidity_provider_fee_share\x18\x1a \x03(\x0b\x32\x1f.vega.LiquidityProviderFeeShareR\x19liquidityProviderFeeShare\x12\x35\n\x0cmarket_state\x18\x1b \x01(\x0e\x32\x12.vega.Market.StateR\x0bmarketState\x12-\n\x13next_mark_to_market\x18\x1c \x01(\x03R\x10nextMarkToMarket\x12*\n\x11last_traded_price\x18\x1d \x01(\tR\x0flastTradedPrice"\xba\x01\n\x19LiquidityProviderFeeShare\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12*\n\x11\x65quity_like_share\x18\x02 \x01(\tR\x0f\x65quityLikeShare\x12\x36\n\x17\x61verage_entry_valuation\x18\x03 \x01(\tR\x15\x61verageEntryValuation\x12#\n\raverage_score\x18\x04 \x01(\tR\x0c\x61verageScore"\xc8\x01\n\x15PriceMonitoringBounds\x12&\n\x0fmin_valid_price\x18\x01 \x01(\tR\rminValidPrice\x12&\n\x0fmax_valid_price\x18\x02 \x01(\tR\rmaxValidPrice\x12\x36\n\x07trigger\x18\x03 \x01(\x0b\x32\x1c.vega.PriceMonitoringTriggerR\x07trigger\x12\'\n\x0freference_price\x18\x04 \x01(\tR\x0ereferencePrice"Q\n\x0b\x45rrorDetail\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x14\n\x05inner\x18\x03 \x01(\tR\x05inner":\n\x10NetworkParameter\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value"\x82\x03\n\rNetworkLimits\x12,\n\x12\x63\x61n_propose_market\x18\x01 \x01(\x08R\x10\x63\x61nProposeMarket\x12*\n\x11\x63\x61n_propose_asset\x18\x02 \x01(\x08R\x0f\x63\x61nProposeAsset\x12\x34\n\x16propose_market_enabled\x18\x04 \x01(\x08R\x14proposeMarketEnabled\x12\x32\n\x15propose_asset_enabled\x18\x05 \x01(\x08R\x13proposeAssetEnabled\x12%\n\x0egenesis_loaded\x18\x07 \x01(\x08R\rgenesisLoaded\x12=\n\x1bpropose_market_enabled_from\x18\x08 \x01(\x03R\x18proposeMarketEnabledFrom\x12;\n\x1apropose_asset_enabled_from\x18\t \x01(\x03R\x17proposeAssetEnabledFromJ\x04\x08\x03\x10\x04J\x04\x08\x06\x10\x07"}\n\x0eLiquidityOrder\x12\x33\n\treference\x18\x01 \x01(\x0e\x32\x15.vega.PeggedReferenceR\treference\x12\x1e\n\nproportion\x18\x02 \x01(\rR\nproportion\x12\x16\n\x06offset\x18\x03 \x01(\tR\x06offset"s\n\x17LiquidityOrderReference\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12=\n\x0fliquidity_order\x18\x02 \x01(\x0b\x32\x14.vega.LiquidityOrderR\x0eliquidityOrder"\xd2\x04\n\x12LiquidityProvision\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x1d\n\ncreated_at\x18\x03 \x01(\x03R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x04 \x01(\x03R\tupdatedAt\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId\x12+\n\x11\x63ommitment_amount\x18\x06 \x01(\tR\x10\x63ommitmentAmount\x12\x10\n\x03\x66\x65\x65\x18\x07 \x01(\tR\x03\x66\x65\x65\x12\x33\n\x05sells\x18\x08 \x03(\x0b\x32\x1d.vega.LiquidityOrderReferenceR\x05sells\x12\x31\n\x04\x62uys\x18\t \x03(\x0b\x32\x1d.vega.LiquidityOrderReferenceR\x04\x62uys\x12\x18\n\x07version\x18\n \x01(\x04R\x07version\x12\x37\n\x06status\x18\x0b \x01(\x0e\x32\x1f.vega.LiquidityProvision.StatusR\x06status\x12\x1c\n\treference\x18\x0c \x01(\tR\treference"\x9d\x01\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x11\n\rSTATUS_ACTIVE\x10\x01\x12\x12\n\x0eSTATUS_STOPPED\x10\x02\x12\x14\n\x10STATUS_CANCELLED\x10\x03\x12\x13\n\x0fSTATUS_REJECTED\x10\x04\x12\x15\n\x11STATUS_UNDEPLOYED\x10\x05\x12\x12\n\x0eSTATUS_PENDING\x10\x06"\xd0\x03\n\x0e\x45thereumConfig\x12\x1d\n\nnetwork_id\x18\x01 \x01(\tR\tnetworkId\x12\x19\n\x08\x63hain_id\x18\x02 \x01(\tR\x07\x63hainId\x12Z\n\x1a\x63ollateral_bridge_contract\x18\x03 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x18\x63ollateralBridgeContract\x12$\n\rconfirmations\x18\x04 \x01(\rR\rconfirmations\x12T\n\x17staking_bridge_contract\x18\x05 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x15stakingBridgeContract\x12R\n\x16token_vesting_contract\x18\x06 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x14tokenVestingContract\x12X\n\x19multisig_control_contract\x18\x07 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x17multisigControlContract"j\n\x16\x45thereumContractConfig\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x36\n\x17\x64\x65ployment_block_height\x18\x06 \x01(\x04R\x15\x64\x65ploymentBlockHeight"\xac\x01\n\x0f\x45pochTimestamps\x12\x1d\n\nstart_time\x18\x01 \x01(\x03R\tstartTime\x12\x1f\n\x0b\x65xpiry_time\x18\x02 \x01(\x03R\nexpiryTime\x12\x19\n\x08\x65nd_time\x18\x03 \x01(\x03R\x07\x65ndTime\x12\x1f\n\x0b\x66irst_block\x18\x04 \x01(\x04R\nfirstBlock\x12\x1d\n\nlast_block\x18\x05 \x01(\x04R\tlastBlock"\xb0\x01\n\x05\x45poch\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12\x35\n\ntimestamps\x18\x02 \x01(\x0b\x32\x15.vega.EpochTimestampsR\ntimestamps\x12*\n\nvalidators\x18\x03 \x03(\x0b\x32\n.vega.NodeR\nvalidators\x12\x32\n\x0b\x64\x65legations\x18\x04 \x03(\x0b\x32\x10.vega.DelegationR\x0b\x64\x65legations"\x8e\x01\n\x12\x45pochParticipation\x12!\n\x05\x65poch\x18\x01 \x01(\x0b\x32\x0b.vega.EpochR\x05\x65poch\x12\x18\n\x07offline\x18\x02 \x01(\x04R\x07offline\x12\x16\n\x06online\x18\x03 \x01(\x04R\x06online\x12#\n\rtotal_rewards\x18\x04 \x01(\x01R\x0ctotalRewards"S\n\tEpochData\x12\x14\n\x05total\x18\x01 \x01(\x05R\x05total\x12\x18\n\x07offline\x18\x02 \x01(\x05R\x07offline\x12\x16\n\x06online\x18\x03 \x01(\x05R\x06online"\x9b\x02\n\x0cRankingScore\x12\x1f\n\x0bstake_score\x18\x01 \x01(\tR\nstakeScore\x12+\n\x11performance_score\x18\x02 \x01(\tR\x10performanceScore\x12\x42\n\x0fprevious_status\x18\x03 \x01(\x0e\x32\x19.vega.ValidatorNodeStatusR\x0epreviousStatus\x12\x31\n\x06status\x18\x04 \x01(\x0e\x32\x19.vega.ValidatorNodeStatusR\x06status\x12!\n\x0cvoting_power\x18\x05 \x01(\rR\x0bvotingPower\x12#\n\rranking_score\x18\x06 \x01(\tR\x0crankingScore"\xab\x02\n\x0bRewardScore\x12.\n\x13raw_validator_score\x18\x01 \x01(\tR\x11rawValidatorScore\x12+\n\x11performance_score\x18\x02 \x01(\tR\x10performanceScore\x12%\n\x0emultisig_score\x18\x03 \x01(\tR\rmultisigScore\x12\'\n\x0fvalidator_score\x18\x04 \x01(\tR\x0evalidatorScore\x12)\n\x10normalised_score\x18\x05 \x01(\tR\x0fnormalisedScore\x12\x44\n\x10validator_status\x18\x06 \x01(\x0e\x32\x19.vega.ValidatorNodeStatusR\x0fvalidatorStatus"\xb3\x05\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n\x07pub_key\x18\x02 \x01(\tR\x06pubKey\x12\x1c\n\ntm_pub_key\x18\x03 \x01(\tR\x08tmPubKey\x12)\n\x10\x65thereum_address\x18\x04 \x01(\tR\x0f\x65thereumAddress\x12\x19\n\x08info_url\x18\x05 \x01(\tR\x07infoUrl\x12\x1a\n\x08location\x18\x06 \x01(\tR\x08location\x12,\n\x12staked_by_operator\x18\x07 \x01(\tR\x10stakedByOperator\x12.\n\x13staked_by_delegates\x18\x08 \x01(\tR\x11stakedByDelegates\x12!\n\x0cstaked_total\x18\t \x01(\tR\x0bstakedTotal\x12,\n\x12max_intended_stake\x18\n \x01(\tR\x10maxIntendedStake\x12#\n\rpending_stake\x18\x0b \x01(\tR\x0cpendingStake\x12.\n\nepoch_data\x18\x0c \x01(\x0b\x32\x0f.vega.EpochDataR\tepochData\x12(\n\x06status\x18\r \x01(\x0e\x32\x10.vega.NodeStatusR\x06status\x12\x32\n\x0b\x64\x65legations\x18\x0e \x03(\x0b\x32\x10.vega.DelegationR\x0b\x64\x65legations\x12\x34\n\x0creward_score\x18\x0f \x01(\x0b\x32\x11.vega.RewardScoreR\x0brewardScore\x12\x37\n\rranking_score\x18\x10 \x01(\x0b\x32\x12.vega.RankingScoreR\x0crankingScore\x12\x12\n\x04name\x18\x11 \x01(\tR\x04name\x12\x1d\n\navatar_url\x18\x12 \x01(\tR\tavatarUrl"\x9c\x01\n\x07NodeSet\x12\x14\n\x05total\x18\x01 \x01(\rR\x05total\x12\x1a\n\x08inactive\x18\x02 \x01(\rR\x08inactive\x12\x1a\n\x08promoted\x18\x03 \x03(\tR\x08promoted\x12\x18\n\x07\x64\x65moted\x18\x04 \x03(\tR\x07\x64\x65moted\x12\x1d\n\x07maximum\x18\x05 \x01(\rH\x00R\x07maximum\x88\x01\x01\x42\n\n\x08_maximum"\xad\x02\n\x08NodeData\x12!\n\x0cstaked_total\x18\x01 \x01(\tR\x0bstakedTotal\x12\x1f\n\x0btotal_nodes\x18\x02 \x01(\rR\ntotalNodes\x12%\n\x0einactive_nodes\x18\x03 \x01(\rR\rinactiveNodes\x12\x38\n\x10tendermint_nodes\x18\x04 \x01(\x0b\x32\r.vega.NodeSetR\x0ftendermintNodes\x12\x30\n\x0c\x65rsatz_nodes\x18\x05 \x01(\x0b\x32\r.vega.NodeSetR\x0b\x65rsatzNodes\x12\x32\n\rpending_nodes\x18\x06 \x01(\x0b\x32\r.vega.NodeSetR\x0cpendingNodes\x12\x16\n\x06uptime\x18\x07 \x01(\x02R\x06uptime"p\n\nDelegation\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x17\n\x07node_id\x18\x02 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1b\n\tepoch_seq\x18\x04 \x01(\tR\x08\x65pochSeq"\xfb\x01\n\x06Reward\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x14\n\x05\x65poch\x18\x03 \x01(\x04R\x05\x65poch\x12\x16\n\x06\x61mount\x18\x04 \x01(\tR\x06\x61mount\x12.\n\x13percentage_of_total\x18\x05 \x01(\tR\x11percentageOfTotal\x12\x1f\n\x0breceived_at\x18\x06 \x01(\x03R\nreceivedAt\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12\x1f\n\x0breward_type\x18\x08 \x01(\tR\nrewardType"]\n\rRewardSummary\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount"\x9b\x01\n\x12\x45pochRewardSummary\x12\x14\n\x05\x65poch\x18\x01 \x01(\x04R\x05\x65poch\x12\x19\n\x08\x61sset_id\x18\x02 \x01(\tR\x07\x61ssetId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x1f\n\x0breward_type\x18\x04 \x01(\tR\nrewardType\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount"y\n\x12StateValueProposal\x12 \n\x0cstate_var_id\x18\x01 \x01(\tR\nstateVarId\x12\x19\n\x08\x65vent_id\x18\x02 \x01(\tR\x07\x65ventId\x12&\n\x03kvb\x18\x03 \x03(\x0b\x32\x14.vega.KeyValueBundleR\x03kvb"k\n\x0eKeyValueBundle\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1c\n\ttolerance\x18\x02 \x01(\tR\ttolerance\x12)\n\x05value\x18\x03 \x01(\x0b\x32\x13.vega.StateVarValueR\x05value"\xb4\x01\n\rStateVarValue\x12\x32\n\nscalar_val\x18\x01 \x01(\x0b\x32\x11.vega.ScalarValueH\x00R\tscalarVal\x12\x32\n\nvector_val\x18\x02 \x01(\x0b\x32\x11.vega.VectorValueH\x00R\tvectorVal\x12\x32\n\nmatrix_val\x18\x03 \x01(\x0b\x32\x11.vega.MatrixValueH\x00R\tmatrixValB\x07\n\x05value"#\n\x0bScalarValue\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value"#\n\x0bVectorValue\x12\x14\n\x05value\x18\x01 \x03(\tR\x05value"6\n\x0bMatrixValue\x12\'\n\x05value\x18\x01 \x03(\x0b\x32\x11.vega.VectorValueR\x05value*9\n\x04Side\x12\x14\n\x10SIDE_UNSPECIFIED\x10\x00\x12\x0c\n\x08SIDE_BUY\x10\x01\x12\r\n\tSIDE_SELL\x10\x02*\x98\x01\n\x08Interval\x12\x18\n\x14INTERVAL_UNSPECIFIED\x10\x00\x12\x10\n\x0cINTERVAL_I1M\x10<\x12\x11\n\x0cINTERVAL_I5M\x10\xac\x02\x12\x12\n\rINTERVAL_I15M\x10\x84\x07\x12\x11\n\x0cINTERVAL_I1H\x10\x90\x1c\x12\x12\n\x0cINTERVAL_I6H\x10\xe0\xa8\x01\x12\x12\n\x0cINTERVAL_I1D\x10\x80\xa3\x05*\xa3\x01\n\x0e\x41uctionTrigger\x12\x1f\n\x1b\x41UCTION_TRIGGER_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41UCTION_TRIGGER_BATCH\x10\x01\x12\x1b\n\x17\x41UCTION_TRIGGER_OPENING\x10\x02\x12\x19\n\x15\x41UCTION_TRIGGER_PRICE\x10\x03\x12\x1d\n\x19\x41UCTION_TRIGGER_LIQUIDITY\x10\x04*\x8b\x01\n\x0fPeggedReference\x12 \n\x1cPEGGED_REFERENCE_UNSPECIFIED\x10\x00\x12\x18\n\x14PEGGED_REFERENCE_MID\x10\x01\x12\x1d\n\x19PEGGED_REFERENCE_BEST_BID\x10\x02\x12\x1d\n\x19PEGGED_REFERENCE_BEST_ASK\x10\x03*\xdf\x0f\n\nOrderError\x12\x1b\n\x17ORDER_ERROR_UNSPECIFIED\x10\x00\x12!\n\x1dORDER_ERROR_INVALID_MARKET_ID\x10\x01\x12 \n\x1cORDER_ERROR_INVALID_ORDER_ID\x10\x02\x12\x1f\n\x1bORDER_ERROR_OUT_OF_SEQUENCE\x10\x03\x12&\n"ORDER_ERROR_INVALID_REMAINING_SIZE\x10\x04\x12\x1c\n\x18ORDER_ERROR_TIME_FAILURE\x10\x05\x12\x1f\n\x1bORDER_ERROR_REMOVAL_FAILURE\x10\x06\x12+\n\'ORDER_ERROR_INVALID_EXPIRATION_DATETIME\x10\x07\x12\'\n#ORDER_ERROR_INVALID_ORDER_REFERENCE\x10\x08\x12 \n\x1cORDER_ERROR_EDIT_NOT_ALLOWED\x10\t\x12\x1d\n\x19ORDER_ERROR_AMEND_FAILURE\x10\n\x12\x19\n\x15ORDER_ERROR_NOT_FOUND\x10\x0b\x12 \n\x1cORDER_ERROR_INVALID_PARTY_ID\x10\x0c\x12\x1d\n\x19ORDER_ERROR_MARKET_CLOSED\x10\r\x12#\n\x1fORDER_ERROR_MARGIN_CHECK_FAILED\x10\x0e\x12\'\n#ORDER_ERROR_MISSING_GENERAL_ACCOUNT\x10\x0f\x12\x1e\n\x1aORDER_ERROR_INTERNAL_ERROR\x10\x10\x12\x1c\n\x18ORDER_ERROR_INVALID_SIZE\x10\x11\x12#\n\x1fORDER_ERROR_INVALID_PERSISTENCE\x10\x12\x12\x1c\n\x18ORDER_ERROR_INVALID_TYPE\x10\x13\x12\x1c\n\x18ORDER_ERROR_SELF_TRADING\x10\x14\x12.\n*ORDER_ERROR_INSUFFICIENT_FUNDS_TO_PAY_FEES\x10\x15\x12%\n!ORDER_ERROR_INCORRECT_MARKET_TYPE\x10\x16\x12%\n!ORDER_ERROR_INVALID_TIME_IN_FORCE\x10\x17\x12\x37\n3ORDER_ERROR_CANNOT_SEND_GFN_ORDER_DURING_AN_AUCTION\x10\x18\x12?\n;ORDER_ERROR_CANNOT_SEND_GFA_ORDER_DURING_CONTINUOUS_TRADING\x10\x19\x12\x34\n0ORDER_ERROR_CANNOT_AMEND_TO_GTT_WITHOUT_EXPIRYAT\x10\x1a\x12)\n%ORDER_ERROR_EXPIRYAT_BEFORE_CREATEDAT\x10\x1b\x12,\n(ORDER_ERROR_CANNOT_HAVE_GTC_AND_EXPIRYAT\x10\x1c\x12*\n&ORDER_ERROR_CANNOT_AMEND_TO_FOK_OR_IOC\x10\x1d\x12*\n&ORDER_ERROR_CANNOT_AMEND_TO_GFA_OR_GFN\x10\x1e\x12,\n(ORDER_ERROR_CANNOT_AMEND_FROM_GFA_OR_GFN\x10\x1f\x12\x34\n0ORDER_ERROR_CANNOT_SEND_IOC_ORDER_DURING_AUCTION\x10 \x12\x34\n0ORDER_ERROR_CANNOT_SEND_FOK_ORDER_DURING_AUCTION\x10!\x12#\n\x1fORDER_ERROR_MUST_BE_LIMIT_ORDER\x10"\x12"\n\x1eORDER_ERROR_MUST_BE_GTT_OR_GTC\x10#\x12\'\n#ORDER_ERROR_WITHOUT_REFERENCE_PRICE\x10$\x12\x33\n/ORDER_ERROR_BUY_CANNOT_REFERENCE_BEST_ASK_PRICE\x10%\x12\x37\n3ORDER_ERROR_OFFSET_MUST_BE_GREATER_OR_EQUAL_TO_ZERO\x10(\x12\x34\n0ORDER_ERROR_SELL_CANNOT_REFERENCE_BEST_BID_PRICE\x10)\x12\x30\n,ORDER_ERROR_OFFSET_MUST_BE_GREATER_THAN_ZERO\x10*\x12*\n&ORDER_ERROR_INSUFFICIENT_ASSET_BALANCE\x10+\x12\x45\nAORDER_ERROR_CANNOT_AMEND_PEGGED_ORDER_DETAILS_ON_NON_PEGGED_ORDER\x10,\x12.\n*ORDER_ERROR_UNABLE_TO_REPRICE_PEGGED_ORDER\x10-\x12\x35\n1ORDER_ERROR_UNABLE_TO_AMEND_PRICE_ON_PEGGED_ORDER\x10.\x12\x38\n4ORDER_ERROR_NON_PERSISTENT_ORDER_OUT_OF_PRICE_BOUNDS\x10/\x12&\n"ORDER_ERROR_TOO_MANY_PEGGED_ORDERS\x10\x30"\x04\x08&\x10&"\x04\x08\'\x10\'*\x82\x01\n\x0b\x43hainStatus\x12\x1c\n\x18\x43HAIN_STATUS_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x43HAIN_STATUS_DISCONNECTED\x10\x01\x12\x1a\n\x16\x43HAIN_STATUS_REPLAYING\x10\x02\x12\x1a\n\x16\x43HAIN_STATUS_CONNECTED\x10\x03*\xc4\x04\n\x0b\x41\x63\x63ountType\x12\x1c\n\x18\x41\x43\x43OUNT_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x41\x43\x43OUNT_TYPE_INSURANCE\x10\x01\x12\x1b\n\x17\x41\x43\x43OUNT_TYPE_SETTLEMENT\x10\x02\x12\x17\n\x13\x41\x43\x43OUNT_TYPE_MARGIN\x10\x03\x12\x18\n\x14\x41\x43\x43OUNT_TYPE_GENERAL\x10\x04\x12$\n ACCOUNT_TYPE_FEES_INFRASTRUCTURE\x10\x05\x12\x1f\n\x1b\x41\x43\x43OUNT_TYPE_FEES_LIQUIDITY\x10\x06\x12\x1b\n\x17\x41\x43\x43OUNT_TYPE_FEES_MAKER\x10\x07\x12\x15\n\x11\x41\x43\x43OUNT_TYPE_BOND\x10\t\x12\x19\n\x15\x41\x43\x43OUNT_TYPE_EXTERNAL\x10\n\x12!\n\x1d\x41\x43\x43OUNT_TYPE_GLOBAL_INSURANCE\x10\x0b\x12\x1e\n\x1a\x41\x43\x43OUNT_TYPE_GLOBAL_REWARD\x10\x0c\x12"\n\x1e\x41\x43\x43OUNT_TYPE_PENDING_TRANSFERS\x10\r\x12\'\n#ACCOUNT_TYPE_REWARD_MAKER_PAID_FEES\x10\x0e\x12+\n\'ACCOUNT_TYPE_REWARD_MAKER_RECEIVED_FEES\x10\x0f\x12(\n$ACCOUNT_TYPE_REWARD_LP_RECEIVED_FEES\x10\x10\x12(\n$ACCOUNT_TYPE_REWARD_MARKET_PROPOSERS\x10\x11"\x04\x08\x08\x10\x08*\xc9\x06\n\x0cTransferType\x12\x1d\n\x19TRANSFER_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12TRANSFER_TYPE_LOSS\x10\x01\x12\x15\n\x11TRANSFER_TYPE_WIN\x10\x02\x12\x1a\n\x16TRANSFER_TYPE_MTM_LOSS\x10\x04\x12\x19\n\x15TRANSFER_TYPE_MTM_WIN\x10\x05\x12\x1c\n\x18TRANSFER_TYPE_MARGIN_LOW\x10\x06\x12\x1d\n\x19TRANSFER_TYPE_MARGIN_HIGH\x10\x07\x12$\n TRANSFER_TYPE_MARGIN_CONFISCATED\x10\x08\x12\x1f\n\x1bTRANSFER_TYPE_MAKER_FEE_PAY\x10\t\x12#\n\x1fTRANSFER_TYPE_MAKER_FEE_RECEIVE\x10\n\x12(\n$TRANSFER_TYPE_INFRASTRUCTURE_FEE_PAY\x10\x0b\x12/\n+TRANSFER_TYPE_INFRASTRUCTURE_FEE_DISTRIBUTE\x10\x0c\x12#\n\x1fTRANSFER_TYPE_LIQUIDITY_FEE_PAY\x10\r\x12*\n&TRANSFER_TYPE_LIQUIDITY_FEE_DISTRIBUTE\x10\x0e\x12\x1a\n\x16TRANSFER_TYPE_BOND_LOW\x10\x0f\x12\x1b\n\x17TRANSFER_TYPE_BOND_HIGH\x10\x10\x12\x1a\n\x16TRANSFER_TYPE_WITHDRAW\x10\x12\x12\x19\n\x15TRANSFER_TYPE_DEPOSIT\x10\x13\x12\x1f\n\x1bTRANSFER_TYPE_BOND_SLASHING\x10\x14\x12\x1f\n\x1bTRANSFER_TYPE_REWARD_PAYOUT\x10\x15\x12%\n!TRANSFER_TYPE_TRANSFER_FUNDS_SEND\x10\x16\x12+\n\'TRANSFER_TYPE_TRANSFER_FUNDS_DISTRIBUTE\x10\x17\x12\x1f\n\x1bTRANSFER_TYPE_CLEAR_ACCOUNT\x10\x18\x12,\n(TRANSFER_TYPE_CHECKPOINT_BALANCE_RESTORE\x10\x19"\x04\x08\x03\x10\x03"\x04\x08\x11\x10\x11*\xc7\x01\n\x0e\x44ispatchMetric\x12\x1f\n\x1b\x44ISPATCH_METRIC_UNSPECIFIED\x10\x00\x12#\n\x1f\x44ISPATCH_METRIC_MAKER_FEES_PAID\x10\x01\x12\'\n#DISPATCH_METRIC_MAKER_FEES_RECEIVED\x10\x02\x12$\n DISPATCH_METRIC_LP_FEES_RECEIVED\x10\x03\x12 \n\x1c\x44ISPATCH_METRIC_MARKET_VALUE\x10\x04*c\n\nNodeStatus\x12\x1b\n\x17NODE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15NODE_STATUS_VALIDATOR\x10\x01\x12\x1d\n\x19NODE_STATUS_NON_VALIDATOR\x10\x02*Y\n\x0b\x45pochAction\x12\x1c\n\x18\x45POCH_ACTION_UNSPECIFIED\x10\x00\x12\x16\n\x12\x45POCH_ACTION_START\x10\x01\x12\x14\n\x10\x45POCH_ACTION_END\x10\x02*\xa7\x01\n\x13ValidatorNodeStatus\x12%\n!VALIDATOR_NODE_STATUS_UNSPECIFIED\x10\x00\x12$\n VALIDATOR_NODE_STATUS_TENDERMINT\x10\x01\x12 \n\x1cVALIDATOR_NODE_STATUS_ERSATZ\x10\x02\x12!\n\x1dVALIDATOR_NODE_STATUS_PENDING\x10\x03\x42\'Z%code.vegaprotocol.io/vega/protos/vegab\x06proto3' + b'\n\x0fvega/vega.proto\x12\x04vega\x1a\x12vega/markets.proto"\x17\n\x05Party\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id"N\n\nRiskFactor\x12\x16\n\x06market\x18\x01 \x01(\tR\x06market\x12\x14\n\x05short\x18\x02 \x01(\tR\x05short\x12\x12\n\x04long\x18\x03 \x01(\tR\x04long"Z\n\x0bPeggedOrder\x12\x33\n\treference\x18\x01 \x01(\x0e\x32\x15.vega.PeggedReferenceR\treference\x12\x16\n\x06offset\x18\x02 \x01(\tR\x06offset"\xf2\x08\n\x05Order\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x1e\n\x04side\x18\x04 \x01(\x0e\x32\n.vega.SideR\x04side\x12\x14\n\x05price\x18\x05 \x01(\tR\x05price\x12\x12\n\x04size\x18\x06 \x01(\x04R\x04size\x12\x1c\n\tremaining\x18\x07 \x01(\x04R\tremaining\x12;\n\rtime_in_force\x18\x08 \x01(\x0e\x32\x17.vega.Order.TimeInForceR\x0btimeInForce\x12$\n\x04type\x18\t \x01(\x0e\x32\x10.vega.Order.TypeR\x04type\x12\x1d\n\ncreated_at\x18\n \x01(\x03R\tcreatedAt\x12*\n\x06status\x18\x0b \x01(\x0e\x32\x12.vega.Order.StatusR\x06status\x12\x1d\n\nexpires_at\x18\x0c \x01(\x03R\texpiresAt\x12\x1c\n\treference\x18\r \x01(\tR\treference\x12-\n\x06reason\x18\x0e \x01(\x0e\x32\x10.vega.OrderErrorH\x00R\x06reason\x88\x01\x01\x12\x1d\n\nupdated_at\x18\x0f \x01(\x03R\tupdatedAt\x12\x18\n\x07version\x18\x10 \x01(\x04R\x07version\x12\x19\n\x08\x62\x61tch_id\x18\x11 \x01(\x04R\x07\x62\x61tchId\x12\x34\n\x0cpegged_order\x18\x12 \x01(\x0b\x32\x11.vega.PeggedOrderR\x0bpeggedOrder\x12\x34\n\x16liquidity_provision_id\x18\x13 \x01(\tR\x14liquidityProvisionId"\xb6\x01\n\x0bTimeInForce\x12\x1d\n\x19TIME_IN_FORCE_UNSPECIFIED\x10\x00\x12\x15\n\x11TIME_IN_FORCE_GTC\x10\x01\x12\x15\n\x11TIME_IN_FORCE_GTT\x10\x02\x12\x15\n\x11TIME_IN_FORCE_IOC\x10\x03\x12\x15\n\x11TIME_IN_FORCE_FOK\x10\x04\x12\x15\n\x11TIME_IN_FORCE_GFA\x10\x05\x12\x15\n\x11TIME_IN_FORCE_GFN\x10\x06"O\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nTYPE_LIMIT\x10\x01\x12\x0f\n\x0bTYPE_MARKET\x10\x02\x12\x10\n\x0cTYPE_NETWORK\x10\x03"\xc9\x01\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x11\n\rSTATUS_ACTIVE\x10\x01\x12\x12\n\x0eSTATUS_EXPIRED\x10\x02\x12\x14\n\x10STATUS_CANCELLED\x10\x03\x12\x12\n\x0eSTATUS_STOPPED\x10\x04\x12\x11\n\rSTATUS_FILLED\x10\x05\x12\x13\n\x0fSTATUS_REJECTED\x10\x06\x12\x1b\n\x17STATUS_PARTIALLY_FILLED\x10\x07\x12\x11\n\rSTATUS_PARKED\x10\x08\x42\t\n\x07_reason"B\n\x1dOrderCancellationConfirmation\x12!\n\x05order\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x05order"\xa0\x01\n\x11OrderConfirmation\x12!\n\x05order\x18\x01 \x01(\x0b\x32\x0b.vega.OrderR\x05order\x12#\n\x06trades\x18\x02 \x03(\x0b\x32\x0b.vega.TradeR\x06trades\x12\x43\n\x17passive_orders_affected\x18\x03 \x03(\x0b\x32\x0b.vega.OrderR\x15passiveOrdersAffected"\xd3\x01\n\x16\x41uctionIndicativeState\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12)\n\x10indicative_price\x18\x02 \x01(\tR\x0findicativePrice\x12+\n\x11indicative_volume\x18\x03 \x01(\x04R\x10indicativeVolume\x12#\n\rauction_start\x18\x04 \x01(\x03R\x0c\x61uctionStart\x12\x1f\n\x0b\x61uction_end\x18\x05 \x01(\x03R\nauctionEnd"\xdb\x04\n\x05Trade\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n\tmarket_id\x18\x02 \x01(\tR\x08marketId\x12\x14\n\x05price\x18\x03 \x01(\tR\x05price\x12\x12\n\x04size\x18\x04 \x01(\x04R\x04size\x12\x14\n\x05\x62uyer\x18\x05 \x01(\tR\x05\x62uyer\x12\x16\n\x06seller\x18\x06 \x01(\tR\x06seller\x12(\n\taggressor\x18\x07 \x01(\x0e\x32\n.vega.SideR\taggressor\x12\x1b\n\tbuy_order\x18\x08 \x01(\tR\x08\x62uyOrder\x12\x1d\n\nsell_order\x18\t \x01(\tR\tsellOrder\x12\x1c\n\ttimestamp\x18\n \x01(\x03R\ttimestamp\x12$\n\x04type\x18\x0b \x01(\x0e\x32\x10.vega.Trade.TypeR\x04type\x12&\n\tbuyer_fee\x18\x0c \x01(\x0b\x32\t.vega.FeeR\x08\x62uyerFee\x12(\n\nseller_fee\x18\r \x01(\x0b\x32\t.vega.FeeR\tsellerFee\x12.\n\x13\x62uyer_auction_batch\x18\x0e \x01(\x04R\x11\x62uyerAuctionBatch\x12\x30\n\x14seller_auction_batch\x18\x0f \x01(\x04R\x12sellerAuctionBatch"o\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x10\n\x0cTYPE_DEFAULT\x10\x01\x12\x1f\n\x1bTYPE_NETWORK_CLOSE_OUT_GOOD\x10\x02\x12\x1e\n\x1aTYPE_NETWORK_CLOSE_OUT_BAD\x10\x03"v\n\x03\x46\x65\x65\x12\x1b\n\tmaker_fee\x18\x01 \x01(\tR\x08makerFee\x12-\n\x12infrastructure_fee\x18\x02 \x01(\tR\x11infrastructureFee\x12#\n\rliquidity_fee\x18\x03 \x01(\tR\x0cliquidityFee"/\n\x08TradeSet\x12#\n\x06trades\x18\x01 \x03(\x0b\x32\x0b.vega.TradeR\x06trades"\xd6\x01\n\x06\x43\x61ndle\x12\x1c\n\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\x12\x1a\n\x08\x64\x61tetime\x18\x02 \x01(\tR\x08\x64\x61tetime\x12\x12\n\x04high\x18\x03 \x01(\tR\x04high\x12\x10\n\x03low\x18\x04 \x01(\tR\x03low\x12\x12\n\x04open\x18\x05 \x01(\tR\x04open\x12\x14\n\x05\x63lose\x18\x06 \x01(\tR\x05\x63lose\x12\x16\n\x06volume\x18\x07 \x01(\x04R\x06volume\x12*\n\x08interval\x18\x08 \x01(\x0e\x32\x0e.vega.IntervalR\x08interval"d\n\nPriceLevel\x12\x14\n\x05price\x18\x01 \x01(\tR\x05price\x12(\n\x10number_of_orders\x18\x02 \x01(\x04R\x0enumberOfOrders\x12\x16\n\x06volume\x18\x03 \x01(\x04R\x06volume"\x9d\x01\n\x0bMarketDepth\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12"\n\x03\x62uy\x18\x02 \x03(\x0b\x32\x10.vega.PriceLevelR\x03\x62uy\x12$\n\x04sell\x18\x03 \x03(\x0b\x32\x10.vega.PriceLevelR\x04sell\x12\'\n\x0fsequence_number\x18\x04 \x01(\x04R\x0esequenceNumber"\xdd\x01\n\x11MarketDepthUpdate\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12"\n\x03\x62uy\x18\x02 \x03(\x0b\x32\x10.vega.PriceLevelR\x03\x62uy\x12$\n\x04sell\x18\x03 \x03(\x0b\x32\x10.vega.PriceLevelR\x04sell\x12\'\n\x0fsequence_number\x18\x04 \x01(\x04R\x0esequenceNumber\x12\x38\n\x18previous_sequence_number\x18\x05 \x01(\x04R\x16previousSequenceNumber"\xf7\x02\n\x08Position\x12\x1b\n\tmarket_id\x18\x01 \x01(\tR\x08marketId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x1f\n\x0bopen_volume\x18\x03 \x01(\x03R\nopenVolume\x12!\n\x0crealised_pnl\x18\x04 \x01(\tR\x0brealisedPnl\x12%\n\x0eunrealised_pnl\x18\x05 \x01(\tR\runrealisedPnl\x12.\n\x13\x61verage_entry_price\x18\x06 \x01(\tR\x11\x61verageEntryPrice\x12\x1d\n\nupdated_at\x18\x07 \x01(\x03R\tupdatedAt\x12:\n\x19loss_socialisation_amount\x18\x08 \x01(\tR\x17lossSocialisationAmount\x12=\n\x0fposition_status\x18\t \x01(\x0e\x32\x14.vega.PositionStatusR\x0epositionStatus"=\n\rPositionTrade\x12\x16\n\x06volume\x18\x01 \x01(\x03R\x06volume\x12\x14\n\x05price\x18\x02 \x01(\tR\x05price"\xe4\x02\n\x07\x44\x65posit\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12,\n\x06status\x18\x02 \x01(\x0e\x32\x14.vega.Deposit.StatusR\x06status\x12\x19\n\x08party_id\x18\x03 \x01(\tR\x07partyId\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount\x12\x17\n\x07tx_hash\x18\x06 \x01(\tR\x06txHash\x12-\n\x12\x63redited_timestamp\x18\x07 \x01(\x03R\x11\x63reditedTimestamp\x12+\n\x11\x63reated_timestamp\x18\x08 \x01(\x03R\x10\x63reatedTimestamp"]\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0f\n\x0bSTATUS_OPEN\x10\x01\x12\x14\n\x10STATUS_CANCELLED\x10\x02\x12\x14\n\x10STATUS_FINALIZED\x10\x03"\xa8\x03\n\nWithdrawal\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12/\n\x06status\x18\x05 \x01(\x0e\x32\x17.vega.Withdrawal.StatusR\x06status\x12\x10\n\x03ref\x18\x06 \x01(\tR\x03ref\x12\x17\n\x07tx_hash\x18\x08 \x01(\tR\x06txHash\x12+\n\x11\x63reated_timestamp\x18\t \x01(\x03R\x10\x63reatedTimestamp\x12/\n\x13withdrawn_timestamp\x18\n \x01(\x03R\x12withdrawnTimestamp\x12#\n\x03\x65xt\x18\x0b \x01(\x0b\x32\x11.vega.WithdrawExtR\x03\x65xt"\\\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0f\n\x0bSTATUS_OPEN\x10\x01\x12\x13\n\x0fSTATUS_REJECTED\x10\x02\x12\x14\n\x10STATUS_FINALIZED\x10\x03J\x04\x08\x07\x10\x08"D\n\x0bWithdrawExt\x12.\n\x05\x65rc20\x18\x01 \x01(\x0b\x32\x16.vega.Erc20WithdrawExtH\x00R\x05\x65rc20B\x05\n\x03\x65xt"=\n\x10\x45rc20WithdrawExt\x12)\n\x10receiver_address\x18\x01 \x01(\tR\x0freceiverAddress"\xa3\x01\n\x07\x41\x63\x63ount\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n\x05owner\x18\x02 \x01(\tR\x05owner\x12\x18\n\x07\x62\x61lance\x18\x03 \x01(\tR\x07\x62\x61lance\x12\x14\n\x05\x61sset\x18\x04 \x01(\tR\x05\x61sset\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId\x12%\n\x04type\x18\x06 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type"?\n\x0f\x46inancialAmount\x12\x16\n\x06\x61mount\x18\x01 \x01(\tR\x06\x61mount\x12\x14\n\x05\x61sset\x18\x02 \x01(\tR\x05\x61sset"\xb3\x01\n\x08Transfer\x12\x14\n\x05owner\x18\x01 \x01(\tR\x05owner\x12-\n\x06\x61mount\x18\x02 \x01(\x0b\x32\x15.vega.FinancialAmountR\x06\x61mount\x12&\n\x04type\x18\x03 \x01(\x0e\x32\x12.vega.TransferTypeR\x04type\x12\x1d\n\nmin_amount\x18\x04 \x01(\tR\tminAmount\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId"\x84\x01\n\x10\x44ispatchStrategy\x12(\n\x10\x61sset_for_metric\x18\x01 \x01(\tR\x0e\x61ssetForMetric\x12,\n\x06metric\x18\x02 \x01(\x0e\x32\x14.vega.DispatchMetricR\x06metric\x12\x18\n\x07markets\x18\x03 \x03(\tR\x07markets"\xe6\x01\n\x0fTransferRequest\x12\x30\n\x0c\x66rom_account\x18\x01 \x03(\x0b\x32\r.vega.AccountR\x0b\x66romAccount\x12,\n\nto_account\x18\x02 \x03(\x0b\x32\r.vega.AccountR\ttoAccount\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1d\n\nmin_amount\x18\x04 \x01(\tR\tminAmount\x12\x14\n\x05\x61sset\x18\x05 \x01(\tR\x05\x61sset\x12&\n\x04type\x18\x07 \x01(\x0e\x32\x12.vega.TransferTypeR\x04type"\xa7\x01\n\x0e\x41\x63\x63ountDetails\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12%\n\x04type\x18\x02 \x01(\x0e\x32\x11.vega.AccountTypeR\x04type\x12\x19\n\x05owner\x18\x03 \x01(\tH\x00R\x05owner\x88\x01\x01\x12 \n\tmarket_id\x18\x04 \x01(\tH\x01R\x08marketId\x88\x01\x01\x42\x08\n\x06_ownerB\x0c\n\n_market_id"\xb9\x02\n\x0bLedgerEntry\x12\x37\n\x0c\x66rom_account\x18\x01 \x01(\x0b\x32\x14.vega.AccountDetailsR\x0b\x66romAccount\x12\x33\n\nto_account\x18\x02 \x01(\x0b\x32\x14.vega.AccountDetailsR\ttoAccount\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12&\n\x04type\x18\x04 \x01(\x0e\x32\x12.vega.TransferTypeR\x04type\x12\x1c\n\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x30\n\x14\x66rom_account_balance\x18\x06 \x01(\tR\x12\x66romAccountBalance\x12,\n\x12to_account_balance\x18\x07 \x01(\tR\x10toAccountBalance"_\n\x13PostTransferBalance\x12.\n\x07\x61\x63\x63ount\x18\x01 \x01(\x0b\x32\x14.vega.AccountDetailsR\x07\x61\x63\x63ount\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\tR\x07\x62\x61lance"t\n\x0eLedgerMovement\x12+\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x11.vega.LedgerEntryR\x07\x65ntries\x12\x35\n\x08\x62\x61lances\x18\x02 \x03(\x0b\x32\x19.vega.PostTransferBalanceR\x08\x62\x61lances"\xad\x02\n\x0cMarginLevels\x12-\n\x12maintenance_margin\x18\x01 \x01(\tR\x11maintenanceMargin\x12!\n\x0csearch_level\x18\x02 \x01(\tR\x0bsearchLevel\x12%\n\x0einitial_margin\x18\x03 \x01(\tR\rinitialMargin\x12\x38\n\x18\x63ollateral_release_level\x18\x04 \x01(\tR\x16\x63ollateralReleaseLevel\x12\x19\n\x08party_id\x18\x05 \x01(\tR\x07partyId\x12\x1b\n\tmarket_id\x18\x06 \x01(\tR\x08marketId\x12\x14\n\x05\x61sset\x18\x07 \x01(\tR\x05\x61sset\x12\x1c\n\ttimestamp\x18\x08 \x01(\x03R\ttimestamp"\xe5\n\n\nMarketData\x12\x1d\n\nmark_price\x18\x01 \x01(\tR\tmarkPrice\x12$\n\x0e\x62\x65st_bid_price\x18\x02 \x01(\tR\x0c\x62\x65stBidPrice\x12&\n\x0f\x62\x65st_bid_volume\x18\x03 \x01(\x04R\rbestBidVolume\x12(\n\x10\x62\x65st_offer_price\x18\x04 \x01(\tR\x0e\x62\x65stOfferPrice\x12*\n\x11\x62\x65st_offer_volume\x18\x05 \x01(\x04R\x0f\x62\x65stOfferVolume\x12\x31\n\x15\x62\x65st_static_bid_price\x18\x06 \x01(\tR\x12\x62\x65stStaticBidPrice\x12\x33\n\x16\x62\x65st_static_bid_volume\x18\x07 \x01(\x04R\x13\x62\x65stStaticBidVolume\x12\x35\n\x17\x62\x65st_static_offer_price\x18\x08 \x01(\tR\x14\x62\x65stStaticOfferPrice\x12\x37\n\x18\x62\x65st_static_offer_volume\x18\t \x01(\x04R\x15\x62\x65stStaticOfferVolume\x12\x1b\n\tmid_price\x18\n \x01(\tR\x08midPrice\x12(\n\x10static_mid_price\x18\x0b \x01(\tR\x0estaticMidPrice\x12\x16\n\x06market\x18\x0c \x01(\tR\x06market\x12\x1c\n\ttimestamp\x18\r \x01(\x03R\ttimestamp\x12#\n\ropen_interest\x18\x0e \x01(\x04R\x0copenInterest\x12\x1f\n\x0b\x61uction_end\x18\x0f \x01(\x03R\nauctionEnd\x12#\n\rauction_start\x18\x10 \x01(\x03R\x0c\x61uctionStart\x12)\n\x10indicative_price\x18\x11 \x01(\tR\x0findicativePrice\x12+\n\x11indicative_volume\x18\x12 \x01(\x04R\x10indicativeVolume\x12H\n\x13market_trading_mode\x18\x13 \x01(\x0e\x32\x18.vega.Market.TradingModeR\x11marketTradingMode\x12.\n\x07trigger\x18\x14 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x07trigger\x12\x41\n\x11\x65xtension_trigger\x18\x15 \x01(\x0e\x32\x14.vega.AuctionTriggerR\x10\x65xtensionTrigger\x12!\n\x0ctarget_stake\x18\x16 \x01(\tR\x0btargetStake\x12%\n\x0esupplied_stake\x18\x17 \x01(\tR\rsuppliedStake\x12S\n\x17price_monitoring_bounds\x18\x18 \x03(\x0b\x32\x1b.vega.PriceMonitoringBoundsR\x15priceMonitoringBounds\x12,\n\x12market_value_proxy\x18\x19 \x01(\tR\x10marketValueProxy\x12`\n\x1cliquidity_provider_fee_share\x18\x1a \x03(\x0b\x32\x1f.vega.LiquidityProviderFeeShareR\x19liquidityProviderFeeShare\x12\x35\n\x0cmarket_state\x18\x1b \x01(\x0e\x32\x12.vega.Market.StateR\x0bmarketState\x12-\n\x13next_mark_to_market\x18\x1c \x01(\x03R\x10nextMarkToMarket\x12*\n\x11last_traded_price\x18\x1d \x01(\tR\x0flastTradedPrice"\xba\x01\n\x19LiquidityProviderFeeShare\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12*\n\x11\x65quity_like_share\x18\x02 \x01(\tR\x0f\x65quityLikeShare\x12\x36\n\x17\x61verage_entry_valuation\x18\x03 \x01(\tR\x15\x61verageEntryValuation\x12#\n\raverage_score\x18\x04 \x01(\tR\x0c\x61verageScore"\xc8\x01\n\x15PriceMonitoringBounds\x12&\n\x0fmin_valid_price\x18\x01 \x01(\tR\rminValidPrice\x12&\n\x0fmax_valid_price\x18\x02 \x01(\tR\rmaxValidPrice\x12\x36\n\x07trigger\x18\x03 \x01(\x0b\x32\x1c.vega.PriceMonitoringTriggerR\x07trigger\x12\'\n\x0freference_price\x18\x04 \x01(\tR\x0ereferencePrice"Q\n\x0b\x45rrorDetail\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x14\n\x05inner\x18\x03 \x01(\tR\x05inner":\n\x10NetworkParameter\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value"\x82\x03\n\rNetworkLimits\x12,\n\x12\x63\x61n_propose_market\x18\x01 \x01(\x08R\x10\x63\x61nProposeMarket\x12*\n\x11\x63\x61n_propose_asset\x18\x02 \x01(\x08R\x0f\x63\x61nProposeAsset\x12\x34\n\x16propose_market_enabled\x18\x04 \x01(\x08R\x14proposeMarketEnabled\x12\x32\n\x15propose_asset_enabled\x18\x05 \x01(\x08R\x13proposeAssetEnabled\x12%\n\x0egenesis_loaded\x18\x07 \x01(\x08R\rgenesisLoaded\x12=\n\x1bpropose_market_enabled_from\x18\x08 \x01(\x03R\x18proposeMarketEnabledFrom\x12;\n\x1apropose_asset_enabled_from\x18\t \x01(\x03R\x17proposeAssetEnabledFromJ\x04\x08\x03\x10\x04J\x04\x08\x06\x10\x07"}\n\x0eLiquidityOrder\x12\x33\n\treference\x18\x01 \x01(\x0e\x32\x15.vega.PeggedReferenceR\treference\x12\x1e\n\nproportion\x18\x02 \x01(\rR\nproportion\x12\x16\n\x06offset\x18\x03 \x01(\tR\x06offset"s\n\x17LiquidityOrderReference\x12\x19\n\x08order_id\x18\x01 \x01(\tR\x07orderId\x12=\n\x0fliquidity_order\x18\x02 \x01(\x0b\x32\x14.vega.LiquidityOrderR\x0eliquidityOrder"\xd2\x04\n\x12LiquidityProvision\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x1d\n\ncreated_at\x18\x03 \x01(\x03R\tcreatedAt\x12\x1d\n\nupdated_at\x18\x04 \x01(\x03R\tupdatedAt\x12\x1b\n\tmarket_id\x18\x05 \x01(\tR\x08marketId\x12+\n\x11\x63ommitment_amount\x18\x06 \x01(\tR\x10\x63ommitmentAmount\x12\x10\n\x03\x66\x65\x65\x18\x07 \x01(\tR\x03\x66\x65\x65\x12\x33\n\x05sells\x18\x08 \x03(\x0b\x32\x1d.vega.LiquidityOrderReferenceR\x05sells\x12\x31\n\x04\x62uys\x18\t \x03(\x0b\x32\x1d.vega.LiquidityOrderReferenceR\x04\x62uys\x12\x18\n\x07version\x18\n \x01(\x04R\x07version\x12\x37\n\x06status\x18\x0b \x01(\x0e\x32\x1f.vega.LiquidityProvision.StatusR\x06status\x12\x1c\n\treference\x18\x0c \x01(\tR\treference"\x9d\x01\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x11\n\rSTATUS_ACTIVE\x10\x01\x12\x12\n\x0eSTATUS_STOPPED\x10\x02\x12\x14\n\x10STATUS_CANCELLED\x10\x03\x12\x13\n\x0fSTATUS_REJECTED\x10\x04\x12\x15\n\x11STATUS_UNDEPLOYED\x10\x05\x12\x12\n\x0eSTATUS_PENDING\x10\x06"\xd0\x03\n\x0e\x45thereumConfig\x12\x1d\n\nnetwork_id\x18\x01 \x01(\tR\tnetworkId\x12\x19\n\x08\x63hain_id\x18\x02 \x01(\tR\x07\x63hainId\x12Z\n\x1a\x63ollateral_bridge_contract\x18\x03 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x18\x63ollateralBridgeContract\x12$\n\rconfirmations\x18\x04 \x01(\rR\rconfirmations\x12T\n\x17staking_bridge_contract\x18\x05 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x15stakingBridgeContract\x12R\n\x16token_vesting_contract\x18\x06 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x14tokenVestingContract\x12X\n\x19multisig_control_contract\x18\x07 \x01(\x0b\x32\x1c.vega.EthereumContractConfigR\x17multisigControlContract"j\n\x16\x45thereumContractConfig\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x36\n\x17\x64\x65ployment_block_height\x18\x06 \x01(\x04R\x15\x64\x65ploymentBlockHeight"\xac\x01\n\x0f\x45pochTimestamps\x12\x1d\n\nstart_time\x18\x01 \x01(\x03R\tstartTime\x12\x1f\n\x0b\x65xpiry_time\x18\x02 \x01(\x03R\nexpiryTime\x12\x19\n\x08\x65nd_time\x18\x03 \x01(\x03R\x07\x65ndTime\x12\x1f\n\x0b\x66irst_block\x18\x04 \x01(\x04R\nfirstBlock\x12\x1d\n\nlast_block\x18\x05 \x01(\x04R\tlastBlock"\xb0\x01\n\x05\x45poch\x12\x10\n\x03seq\x18\x01 \x01(\x04R\x03seq\x12\x35\n\ntimestamps\x18\x02 \x01(\x0b\x32\x15.vega.EpochTimestampsR\ntimestamps\x12*\n\nvalidators\x18\x03 \x03(\x0b\x32\n.vega.NodeR\nvalidators\x12\x32\n\x0b\x64\x65legations\x18\x04 \x03(\x0b\x32\x10.vega.DelegationR\x0b\x64\x65legations"\x8e\x01\n\x12\x45pochParticipation\x12!\n\x05\x65poch\x18\x01 \x01(\x0b\x32\x0b.vega.EpochR\x05\x65poch\x12\x18\n\x07offline\x18\x02 \x01(\x04R\x07offline\x12\x16\n\x06online\x18\x03 \x01(\x04R\x06online\x12#\n\rtotal_rewards\x18\x04 \x01(\x01R\x0ctotalRewards"S\n\tEpochData\x12\x14\n\x05total\x18\x01 \x01(\x05R\x05total\x12\x18\n\x07offline\x18\x02 \x01(\x05R\x07offline\x12\x16\n\x06online\x18\x03 \x01(\x05R\x06online"\x9b\x02\n\x0cRankingScore\x12\x1f\n\x0bstake_score\x18\x01 \x01(\tR\nstakeScore\x12+\n\x11performance_score\x18\x02 \x01(\tR\x10performanceScore\x12\x42\n\x0fprevious_status\x18\x03 \x01(\x0e\x32\x19.vega.ValidatorNodeStatusR\x0epreviousStatus\x12\x31\n\x06status\x18\x04 \x01(\x0e\x32\x19.vega.ValidatorNodeStatusR\x06status\x12!\n\x0cvoting_power\x18\x05 \x01(\rR\x0bvotingPower\x12#\n\rranking_score\x18\x06 \x01(\tR\x0crankingScore"\xab\x02\n\x0bRewardScore\x12.\n\x13raw_validator_score\x18\x01 \x01(\tR\x11rawValidatorScore\x12+\n\x11performance_score\x18\x02 \x01(\tR\x10performanceScore\x12%\n\x0emultisig_score\x18\x03 \x01(\tR\rmultisigScore\x12\'\n\x0fvalidator_score\x18\x04 \x01(\tR\x0evalidatorScore\x12)\n\x10normalised_score\x18\x05 \x01(\tR\x0fnormalisedScore\x12\x44\n\x10validator_status\x18\x06 \x01(\x0e\x32\x19.vega.ValidatorNodeStatusR\x0fvalidatorStatus"\xb3\x05\n\x04Node\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n\x07pub_key\x18\x02 \x01(\tR\x06pubKey\x12\x1c\n\ntm_pub_key\x18\x03 \x01(\tR\x08tmPubKey\x12)\n\x10\x65thereum_address\x18\x04 \x01(\tR\x0f\x65thereumAddress\x12\x19\n\x08info_url\x18\x05 \x01(\tR\x07infoUrl\x12\x1a\n\x08location\x18\x06 \x01(\tR\x08location\x12,\n\x12staked_by_operator\x18\x07 \x01(\tR\x10stakedByOperator\x12.\n\x13staked_by_delegates\x18\x08 \x01(\tR\x11stakedByDelegates\x12!\n\x0cstaked_total\x18\t \x01(\tR\x0bstakedTotal\x12,\n\x12max_intended_stake\x18\n \x01(\tR\x10maxIntendedStake\x12#\n\rpending_stake\x18\x0b \x01(\tR\x0cpendingStake\x12.\n\nepoch_data\x18\x0c \x01(\x0b\x32\x0f.vega.EpochDataR\tepochData\x12(\n\x06status\x18\r \x01(\x0e\x32\x10.vega.NodeStatusR\x06status\x12\x32\n\x0b\x64\x65legations\x18\x0e \x03(\x0b\x32\x10.vega.DelegationR\x0b\x64\x65legations\x12\x34\n\x0creward_score\x18\x0f \x01(\x0b\x32\x11.vega.RewardScoreR\x0brewardScore\x12\x37\n\rranking_score\x18\x10 \x01(\x0b\x32\x12.vega.RankingScoreR\x0crankingScore\x12\x12\n\x04name\x18\x11 \x01(\tR\x04name\x12\x1d\n\navatar_url\x18\x12 \x01(\tR\tavatarUrl"\x9c\x01\n\x07NodeSet\x12\x14\n\x05total\x18\x01 \x01(\rR\x05total\x12\x1a\n\x08inactive\x18\x02 \x01(\rR\x08inactive\x12\x1a\n\x08promoted\x18\x03 \x03(\tR\x08promoted\x12\x18\n\x07\x64\x65moted\x18\x04 \x03(\tR\x07\x64\x65moted\x12\x1d\n\x07maximum\x18\x05 \x01(\rH\x00R\x07maximum\x88\x01\x01\x42\n\n\x08_maximum"\xad\x02\n\x08NodeData\x12!\n\x0cstaked_total\x18\x01 \x01(\tR\x0bstakedTotal\x12\x1f\n\x0btotal_nodes\x18\x02 \x01(\rR\ntotalNodes\x12%\n\x0einactive_nodes\x18\x03 \x01(\rR\rinactiveNodes\x12\x38\n\x10tendermint_nodes\x18\x04 \x01(\x0b\x32\r.vega.NodeSetR\x0ftendermintNodes\x12\x30\n\x0c\x65rsatz_nodes\x18\x05 \x01(\x0b\x32\r.vega.NodeSetR\x0b\x65rsatzNodes\x12\x32\n\rpending_nodes\x18\x06 \x01(\x0b\x32\r.vega.NodeSetR\x0cpendingNodes\x12\x16\n\x06uptime\x18\x07 \x01(\x02R\x06uptime"p\n\nDelegation\x12\x14\n\x05party\x18\x01 \x01(\tR\x05party\x12\x17\n\x07node_id\x18\x02 \x01(\tR\x06nodeId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount\x12\x1b\n\tepoch_seq\x18\x04 \x01(\tR\x08\x65pochSeq"\xfb\x01\n\x06Reward\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x14\n\x05\x65poch\x18\x03 \x01(\x04R\x05\x65poch\x12\x16\n\x06\x61mount\x18\x04 \x01(\tR\x06\x61mount\x12.\n\x13percentage_of_total\x18\x05 \x01(\tR\x11percentageOfTotal\x12\x1f\n\x0breceived_at\x18\x06 \x01(\x03R\nreceivedAt\x12\x1b\n\tmarket_id\x18\x07 \x01(\tR\x08marketId\x12\x1f\n\x0breward_type\x18\x08 \x01(\tR\nrewardType"]\n\rRewardSummary\x12\x19\n\x08\x61sset_id\x18\x01 \x01(\tR\x07\x61ssetId\x12\x19\n\x08party_id\x18\x02 \x01(\tR\x07partyId\x12\x16\n\x06\x61mount\x18\x03 \x01(\tR\x06\x61mount"\x9b\x01\n\x12\x45pochRewardSummary\x12\x14\n\x05\x65poch\x18\x01 \x01(\x04R\x05\x65poch\x12\x19\n\x08\x61sset_id\x18\x02 \x01(\tR\x07\x61ssetId\x12\x1b\n\tmarket_id\x18\x03 \x01(\tR\x08marketId\x12\x1f\n\x0breward_type\x18\x04 \x01(\tR\nrewardType\x12\x16\n\x06\x61mount\x18\x05 \x01(\tR\x06\x61mount"y\n\x12StateValueProposal\x12 \n\x0cstate_var_id\x18\x01 \x01(\tR\nstateVarId\x12\x19\n\x08\x65vent_id\x18\x02 \x01(\tR\x07\x65ventId\x12&\n\x03kvb\x18\x03 \x03(\x0b\x32\x14.vega.KeyValueBundleR\x03kvb"k\n\x0eKeyValueBundle\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x1c\n\ttolerance\x18\x02 \x01(\tR\ttolerance\x12)\n\x05value\x18\x03 \x01(\x0b\x32\x13.vega.StateVarValueR\x05value"\xb4\x01\n\rStateVarValue\x12\x32\n\nscalar_val\x18\x01 \x01(\x0b\x32\x11.vega.ScalarValueH\x00R\tscalarVal\x12\x32\n\nvector_val\x18\x02 \x01(\x0b\x32\x11.vega.VectorValueH\x00R\tvectorVal\x12\x32\n\nmatrix_val\x18\x03 \x01(\x0b\x32\x11.vega.MatrixValueH\x00R\tmatrixValB\x07\n\x05value"#\n\x0bScalarValue\x12\x14\n\x05value\x18\x01 \x01(\tR\x05value"#\n\x0bVectorValue\x12\x14\n\x05value\x18\x01 \x03(\tR\x05value"6\n\x0bMatrixValue\x12\'\n\x05value\x18\x01 \x03(\x0b\x32\x11.vega.VectorValueR\x05value*9\n\x04Side\x12\x14\n\x10SIDE_UNSPECIFIED\x10\x00\x12\x0c\n\x08SIDE_BUY\x10\x01\x12\r\n\tSIDE_SELL\x10\x02*\x98\x01\n\x08Interval\x12\x18\n\x14INTERVAL_UNSPECIFIED\x10\x00\x12\x10\n\x0cINTERVAL_I1M\x10<\x12\x11\n\x0cINTERVAL_I5M\x10\xac\x02\x12\x12\n\rINTERVAL_I15M\x10\x84\x07\x12\x11\n\x0cINTERVAL_I1H\x10\x90\x1c\x12\x12\n\x0cINTERVAL_I6H\x10\xe0\xa8\x01\x12\x12\n\x0cINTERVAL_I1D\x10\x80\xa3\x05*t\n\x0ePositionStatus\x12\x1f\n\x1bPOSITION_STATUS_UNSPECIFIED\x10\x00\x12!\n\x1dPOSITION_STATUS_ORDERS_CLOSED\x10\x01\x12\x1e\n\x1aPOSITION_STATUS_CLOSED_OUT\x10\x02*\xa3\x01\n\x0e\x41uctionTrigger\x12\x1f\n\x1b\x41UCTION_TRIGGER_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41UCTION_TRIGGER_BATCH\x10\x01\x12\x1b\n\x17\x41UCTION_TRIGGER_OPENING\x10\x02\x12\x19\n\x15\x41UCTION_TRIGGER_PRICE\x10\x03\x12\x1d\n\x19\x41UCTION_TRIGGER_LIQUIDITY\x10\x04*\x8b\x01\n\x0fPeggedReference\x12 \n\x1cPEGGED_REFERENCE_UNSPECIFIED\x10\x00\x12\x18\n\x14PEGGED_REFERENCE_MID\x10\x01\x12\x1d\n\x19PEGGED_REFERENCE_BEST_BID\x10\x02\x12\x1d\n\x19PEGGED_REFERENCE_BEST_ASK\x10\x03*\xdf\x0f\n\nOrderError\x12\x1b\n\x17ORDER_ERROR_UNSPECIFIED\x10\x00\x12!\n\x1dORDER_ERROR_INVALID_MARKET_ID\x10\x01\x12 \n\x1cORDER_ERROR_INVALID_ORDER_ID\x10\x02\x12\x1f\n\x1bORDER_ERROR_OUT_OF_SEQUENCE\x10\x03\x12&\n"ORDER_ERROR_INVALID_REMAINING_SIZE\x10\x04\x12\x1c\n\x18ORDER_ERROR_TIME_FAILURE\x10\x05\x12\x1f\n\x1bORDER_ERROR_REMOVAL_FAILURE\x10\x06\x12+\n\'ORDER_ERROR_INVALID_EXPIRATION_DATETIME\x10\x07\x12\'\n#ORDER_ERROR_INVALID_ORDER_REFERENCE\x10\x08\x12 \n\x1cORDER_ERROR_EDIT_NOT_ALLOWED\x10\t\x12\x1d\n\x19ORDER_ERROR_AMEND_FAILURE\x10\n\x12\x19\n\x15ORDER_ERROR_NOT_FOUND\x10\x0b\x12 \n\x1cORDER_ERROR_INVALID_PARTY_ID\x10\x0c\x12\x1d\n\x19ORDER_ERROR_MARKET_CLOSED\x10\r\x12#\n\x1fORDER_ERROR_MARGIN_CHECK_FAILED\x10\x0e\x12\'\n#ORDER_ERROR_MISSING_GENERAL_ACCOUNT\x10\x0f\x12\x1e\n\x1aORDER_ERROR_INTERNAL_ERROR\x10\x10\x12\x1c\n\x18ORDER_ERROR_INVALID_SIZE\x10\x11\x12#\n\x1fORDER_ERROR_INVALID_PERSISTENCE\x10\x12\x12\x1c\n\x18ORDER_ERROR_INVALID_TYPE\x10\x13\x12\x1c\n\x18ORDER_ERROR_SELF_TRADING\x10\x14\x12.\n*ORDER_ERROR_INSUFFICIENT_FUNDS_TO_PAY_FEES\x10\x15\x12%\n!ORDER_ERROR_INCORRECT_MARKET_TYPE\x10\x16\x12%\n!ORDER_ERROR_INVALID_TIME_IN_FORCE\x10\x17\x12\x37\n3ORDER_ERROR_CANNOT_SEND_GFN_ORDER_DURING_AN_AUCTION\x10\x18\x12?\n;ORDER_ERROR_CANNOT_SEND_GFA_ORDER_DURING_CONTINUOUS_TRADING\x10\x19\x12\x34\n0ORDER_ERROR_CANNOT_AMEND_TO_GTT_WITHOUT_EXPIRYAT\x10\x1a\x12)\n%ORDER_ERROR_EXPIRYAT_BEFORE_CREATEDAT\x10\x1b\x12,\n(ORDER_ERROR_CANNOT_HAVE_GTC_AND_EXPIRYAT\x10\x1c\x12*\n&ORDER_ERROR_CANNOT_AMEND_TO_FOK_OR_IOC\x10\x1d\x12*\n&ORDER_ERROR_CANNOT_AMEND_TO_GFA_OR_GFN\x10\x1e\x12,\n(ORDER_ERROR_CANNOT_AMEND_FROM_GFA_OR_GFN\x10\x1f\x12\x34\n0ORDER_ERROR_CANNOT_SEND_IOC_ORDER_DURING_AUCTION\x10 \x12\x34\n0ORDER_ERROR_CANNOT_SEND_FOK_ORDER_DURING_AUCTION\x10!\x12#\n\x1fORDER_ERROR_MUST_BE_LIMIT_ORDER\x10"\x12"\n\x1eORDER_ERROR_MUST_BE_GTT_OR_GTC\x10#\x12\'\n#ORDER_ERROR_WITHOUT_REFERENCE_PRICE\x10$\x12\x33\n/ORDER_ERROR_BUY_CANNOT_REFERENCE_BEST_ASK_PRICE\x10%\x12\x37\n3ORDER_ERROR_OFFSET_MUST_BE_GREATER_OR_EQUAL_TO_ZERO\x10(\x12\x34\n0ORDER_ERROR_SELL_CANNOT_REFERENCE_BEST_BID_PRICE\x10)\x12\x30\n,ORDER_ERROR_OFFSET_MUST_BE_GREATER_THAN_ZERO\x10*\x12*\n&ORDER_ERROR_INSUFFICIENT_ASSET_BALANCE\x10+\x12\x45\nAORDER_ERROR_CANNOT_AMEND_PEGGED_ORDER_DETAILS_ON_NON_PEGGED_ORDER\x10,\x12.\n*ORDER_ERROR_UNABLE_TO_REPRICE_PEGGED_ORDER\x10-\x12\x35\n1ORDER_ERROR_UNABLE_TO_AMEND_PRICE_ON_PEGGED_ORDER\x10.\x12\x38\n4ORDER_ERROR_NON_PERSISTENT_ORDER_OUT_OF_PRICE_BOUNDS\x10/\x12&\n"ORDER_ERROR_TOO_MANY_PEGGED_ORDERS\x10\x30"\x04\x08&\x10&"\x04\x08\'\x10\'*\x82\x01\n\x0b\x43hainStatus\x12\x1c\n\x18\x43HAIN_STATUS_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x43HAIN_STATUS_DISCONNECTED\x10\x01\x12\x1a\n\x16\x43HAIN_STATUS_REPLAYING\x10\x02\x12\x1a\n\x16\x43HAIN_STATUS_CONNECTED\x10\x03*\xc4\x04\n\x0b\x41\x63\x63ountType\x12\x1c\n\x18\x41\x43\x43OUNT_TYPE_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x41\x43\x43OUNT_TYPE_INSURANCE\x10\x01\x12\x1b\n\x17\x41\x43\x43OUNT_TYPE_SETTLEMENT\x10\x02\x12\x17\n\x13\x41\x43\x43OUNT_TYPE_MARGIN\x10\x03\x12\x18\n\x14\x41\x43\x43OUNT_TYPE_GENERAL\x10\x04\x12$\n ACCOUNT_TYPE_FEES_INFRASTRUCTURE\x10\x05\x12\x1f\n\x1b\x41\x43\x43OUNT_TYPE_FEES_LIQUIDITY\x10\x06\x12\x1b\n\x17\x41\x43\x43OUNT_TYPE_FEES_MAKER\x10\x07\x12\x15\n\x11\x41\x43\x43OUNT_TYPE_BOND\x10\t\x12\x19\n\x15\x41\x43\x43OUNT_TYPE_EXTERNAL\x10\n\x12!\n\x1d\x41\x43\x43OUNT_TYPE_GLOBAL_INSURANCE\x10\x0b\x12\x1e\n\x1a\x41\x43\x43OUNT_TYPE_GLOBAL_REWARD\x10\x0c\x12"\n\x1e\x41\x43\x43OUNT_TYPE_PENDING_TRANSFERS\x10\r\x12\'\n#ACCOUNT_TYPE_REWARD_MAKER_PAID_FEES\x10\x0e\x12+\n\'ACCOUNT_TYPE_REWARD_MAKER_RECEIVED_FEES\x10\x0f\x12(\n$ACCOUNT_TYPE_REWARD_LP_RECEIVED_FEES\x10\x10\x12(\n$ACCOUNT_TYPE_REWARD_MARKET_PROPOSERS\x10\x11"\x04\x08\x08\x10\x08*\xc9\x06\n\x0cTransferType\x12\x1d\n\x19TRANSFER_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12TRANSFER_TYPE_LOSS\x10\x01\x12\x15\n\x11TRANSFER_TYPE_WIN\x10\x02\x12\x1a\n\x16TRANSFER_TYPE_MTM_LOSS\x10\x04\x12\x19\n\x15TRANSFER_TYPE_MTM_WIN\x10\x05\x12\x1c\n\x18TRANSFER_TYPE_MARGIN_LOW\x10\x06\x12\x1d\n\x19TRANSFER_TYPE_MARGIN_HIGH\x10\x07\x12$\n TRANSFER_TYPE_MARGIN_CONFISCATED\x10\x08\x12\x1f\n\x1bTRANSFER_TYPE_MAKER_FEE_PAY\x10\t\x12#\n\x1fTRANSFER_TYPE_MAKER_FEE_RECEIVE\x10\n\x12(\n$TRANSFER_TYPE_INFRASTRUCTURE_FEE_PAY\x10\x0b\x12/\n+TRANSFER_TYPE_INFRASTRUCTURE_FEE_DISTRIBUTE\x10\x0c\x12#\n\x1fTRANSFER_TYPE_LIQUIDITY_FEE_PAY\x10\r\x12*\n&TRANSFER_TYPE_LIQUIDITY_FEE_DISTRIBUTE\x10\x0e\x12\x1a\n\x16TRANSFER_TYPE_BOND_LOW\x10\x0f\x12\x1b\n\x17TRANSFER_TYPE_BOND_HIGH\x10\x10\x12\x1a\n\x16TRANSFER_TYPE_WITHDRAW\x10\x12\x12\x19\n\x15TRANSFER_TYPE_DEPOSIT\x10\x13\x12\x1f\n\x1bTRANSFER_TYPE_BOND_SLASHING\x10\x14\x12\x1f\n\x1bTRANSFER_TYPE_REWARD_PAYOUT\x10\x15\x12%\n!TRANSFER_TYPE_TRANSFER_FUNDS_SEND\x10\x16\x12+\n\'TRANSFER_TYPE_TRANSFER_FUNDS_DISTRIBUTE\x10\x17\x12\x1f\n\x1bTRANSFER_TYPE_CLEAR_ACCOUNT\x10\x18\x12,\n(TRANSFER_TYPE_CHECKPOINT_BALANCE_RESTORE\x10\x19"\x04\x08\x03\x10\x03"\x04\x08\x11\x10\x11*\xc7\x01\n\x0e\x44ispatchMetric\x12\x1f\n\x1b\x44ISPATCH_METRIC_UNSPECIFIED\x10\x00\x12#\n\x1f\x44ISPATCH_METRIC_MAKER_FEES_PAID\x10\x01\x12\'\n#DISPATCH_METRIC_MAKER_FEES_RECEIVED\x10\x02\x12$\n DISPATCH_METRIC_LP_FEES_RECEIVED\x10\x03\x12 \n\x1c\x44ISPATCH_METRIC_MARKET_VALUE\x10\x04*c\n\nNodeStatus\x12\x1b\n\x17NODE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15NODE_STATUS_VALIDATOR\x10\x01\x12\x1d\n\x19NODE_STATUS_NON_VALIDATOR\x10\x02*Y\n\x0b\x45pochAction\x12\x1c\n\x18\x45POCH_ACTION_UNSPECIFIED\x10\x00\x12\x16\n\x12\x45POCH_ACTION_START\x10\x01\x12\x14\n\x10\x45POCH_ACTION_END\x10\x02*\xa7\x01\n\x13ValidatorNodeStatus\x12%\n!VALIDATOR_NODE_STATUS_UNSPECIFIED\x10\x00\x12$\n VALIDATOR_NODE_STATUS_TENDERMINT\x10\x01\x12 \n\x1cVALIDATOR_NODE_STATUS_ERSATZ\x10\x02\x12!\n\x1dVALIDATOR_NODE_STATUS_PENDING\x10\x03\x42\'Z%code.vegaprotocol.io/vega/protos/vegab\x06proto3' ) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) @@ -24,30 +24,32 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b"Z%code.vegaprotocol.io/vega/protos/vega" - _SIDE._serialized_start = 13548 - _SIDE._serialized_end = 13605 - _INTERVAL._serialized_start = 13608 - _INTERVAL._serialized_end = 13760 - _AUCTIONTRIGGER._serialized_start = 13763 - _AUCTIONTRIGGER._serialized_end = 13926 - _PEGGEDREFERENCE._serialized_start = 13929 - _PEGGEDREFERENCE._serialized_end = 14068 - _ORDERERROR._serialized_start = 14071 - _ORDERERROR._serialized_end = 16086 - _CHAINSTATUS._serialized_start = 16089 - _CHAINSTATUS._serialized_end = 16219 - _ACCOUNTTYPE._serialized_start = 16222 - _ACCOUNTTYPE._serialized_end = 16802 - _TRANSFERTYPE._serialized_start = 16805 - _TRANSFERTYPE._serialized_end = 17646 - _DISPATCHMETRIC._serialized_start = 17649 - _DISPATCHMETRIC._serialized_end = 17848 - _NODESTATUS._serialized_start = 17850 - _NODESTATUS._serialized_end = 17949 - _EPOCHACTION._serialized_start = 17951 - _EPOCHACTION._serialized_end = 18040 - _VALIDATORNODESTATUS._serialized_start = 18043 - _VALIDATORNODESTATUS._serialized_end = 18210 + _SIDE._serialized_start = 13671 + _SIDE._serialized_end = 13728 + _INTERVAL._serialized_start = 13731 + _INTERVAL._serialized_end = 13883 + _POSITIONSTATUS._serialized_start = 13885 + _POSITIONSTATUS._serialized_end = 14001 + _AUCTIONTRIGGER._serialized_start = 14004 + _AUCTIONTRIGGER._serialized_end = 14167 + _PEGGEDREFERENCE._serialized_start = 14170 + _PEGGEDREFERENCE._serialized_end = 14309 + _ORDERERROR._serialized_start = 14312 + _ORDERERROR._serialized_end = 16327 + _CHAINSTATUS._serialized_start = 16330 + _CHAINSTATUS._serialized_end = 16460 + _ACCOUNTTYPE._serialized_start = 16463 + _ACCOUNTTYPE._serialized_end = 17043 + _TRANSFERTYPE._serialized_start = 17046 + _TRANSFERTYPE._serialized_end = 17887 + _DISPATCHMETRIC._serialized_start = 17890 + _DISPATCHMETRIC._serialized_end = 18089 + _NODESTATUS._serialized_start = 18091 + _NODESTATUS._serialized_end = 18190 + _EPOCHACTION._serialized_start = 18192 + _EPOCHACTION._serialized_end = 18281 + _VALIDATORNODESTATUS._serialized_start = 18284 + _VALIDATORNODESTATUS._serialized_end = 18451 _PARTY._serialized_start = 45 _PARTY._serialized_end = 68 _RISKFACTOR._serialized_start = 70 @@ -85,101 +87,101 @@ _MARKETDEPTHUPDATE._serialized_start = 3083 _MARKETDEPTHUPDATE._serialized_end = 3304 _POSITION._serialized_start = 3307 - _POSITION._serialized_end = 3559 - _POSITIONTRADE._serialized_start = 3561 - _POSITIONTRADE._serialized_end = 3622 - _DEPOSIT._serialized_start = 3625 - _DEPOSIT._serialized_end = 3981 - _DEPOSIT_STATUS._serialized_start = 3888 - _DEPOSIT_STATUS._serialized_end = 3981 - _WITHDRAWAL._serialized_start = 3984 - _WITHDRAWAL._serialized_end = 4408 - _WITHDRAWAL_STATUS._serialized_start = 4310 - _WITHDRAWAL_STATUS._serialized_end = 4402 - _WITHDRAWEXT._serialized_start = 4410 - _WITHDRAWEXT._serialized_end = 4478 - _ERC20WITHDRAWEXT._serialized_start = 4480 - _ERC20WITHDRAWEXT._serialized_end = 4541 - _ACCOUNT._serialized_start = 4544 - _ACCOUNT._serialized_end = 4707 - _FINANCIALAMOUNT._serialized_start = 4709 - _FINANCIALAMOUNT._serialized_end = 4772 - _TRANSFER._serialized_start = 4775 - _TRANSFER._serialized_end = 4954 - _DISPATCHSTRATEGY._serialized_start = 4957 - _DISPATCHSTRATEGY._serialized_end = 5089 - _TRANSFERREQUEST._serialized_start = 5092 - _TRANSFERREQUEST._serialized_end = 5322 - _ACCOUNTDETAILS._serialized_start = 5325 - _ACCOUNTDETAILS._serialized_end = 5492 - _LEDGERENTRY._serialized_start = 5495 - _LEDGERENTRY._serialized_end = 5808 - _POSTTRANSFERBALANCE._serialized_start = 5810 - _POSTTRANSFERBALANCE._serialized_end = 5905 - _LEDGERMOVEMENT._serialized_start = 5907 - _LEDGERMOVEMENT._serialized_end = 6023 - _MARGINLEVELS._serialized_start = 6026 - _MARGINLEVELS._serialized_end = 6327 - _MARKETDATA._serialized_start = 6330 - _MARKETDATA._serialized_end = 7711 - _LIQUIDITYPROVIDERFEESHARE._serialized_start = 7714 - _LIQUIDITYPROVIDERFEESHARE._serialized_end = 7900 - _PRICEMONITORINGBOUNDS._serialized_start = 7903 - _PRICEMONITORINGBOUNDS._serialized_end = 8103 - _ERRORDETAIL._serialized_start = 8105 - _ERRORDETAIL._serialized_end = 8186 - _NETWORKPARAMETER._serialized_start = 8188 - _NETWORKPARAMETER._serialized_end = 8246 - _NETWORKLIMITS._serialized_start = 8249 - _NETWORKLIMITS._serialized_end = 8635 - _LIQUIDITYORDER._serialized_start = 8637 - _LIQUIDITYORDER._serialized_end = 8762 - _LIQUIDITYORDERREFERENCE._serialized_start = 8764 - _LIQUIDITYORDERREFERENCE._serialized_end = 8879 - _LIQUIDITYPROVISION._serialized_start = 8882 - _LIQUIDITYPROVISION._serialized_end = 9476 - _LIQUIDITYPROVISION_STATUS._serialized_start = 9319 - _LIQUIDITYPROVISION_STATUS._serialized_end = 9476 - _ETHEREUMCONFIG._serialized_start = 9479 - _ETHEREUMCONFIG._serialized_end = 9943 - _ETHEREUMCONTRACTCONFIG._serialized_start = 9945 - _ETHEREUMCONTRACTCONFIG._serialized_end = 10051 - _EPOCHTIMESTAMPS._serialized_start = 10054 - _EPOCHTIMESTAMPS._serialized_end = 10226 - _EPOCH._serialized_start = 10229 - _EPOCH._serialized_end = 10405 - _EPOCHPARTICIPATION._serialized_start = 10408 - _EPOCHPARTICIPATION._serialized_end = 10550 - _EPOCHDATA._serialized_start = 10552 - _EPOCHDATA._serialized_end = 10635 - _RANKINGSCORE._serialized_start = 10638 - _RANKINGSCORE._serialized_end = 10921 - _REWARDSCORE._serialized_start = 10924 - _REWARDSCORE._serialized_end = 11223 - _NODE._serialized_start = 11226 - _NODE._serialized_end = 11917 - _NODESET._serialized_start = 11920 - _NODESET._serialized_end = 12076 - _NODEDATA._serialized_start = 12079 - _NODEDATA._serialized_end = 12380 - _DELEGATION._serialized_start = 12382 - _DELEGATION._serialized_end = 12494 - _REWARD._serialized_start = 12497 - _REWARD._serialized_end = 12748 - _REWARDSUMMARY._serialized_start = 12750 - _REWARDSUMMARY._serialized_end = 12843 - _EPOCHREWARDSUMMARY._serialized_start = 12846 - _EPOCHREWARDSUMMARY._serialized_end = 13001 - _STATEVALUEPROPOSAL._serialized_start = 13003 - _STATEVALUEPROPOSAL._serialized_end = 13124 - _KEYVALUEBUNDLE._serialized_start = 13126 - _KEYVALUEBUNDLE._serialized_end = 13233 - _STATEVARVALUE._serialized_start = 13236 - _STATEVARVALUE._serialized_end = 13416 - _SCALARVALUE._serialized_start = 13418 - _SCALARVALUE._serialized_end = 13453 - _VECTORVALUE._serialized_start = 13455 - _VECTORVALUE._serialized_end = 13490 - _MATRIXVALUE._serialized_start = 13492 - _MATRIXVALUE._serialized_end = 13546 + _POSITION._serialized_end = 3682 + _POSITIONTRADE._serialized_start = 3684 + _POSITIONTRADE._serialized_end = 3745 + _DEPOSIT._serialized_start = 3748 + _DEPOSIT._serialized_end = 4104 + _DEPOSIT_STATUS._serialized_start = 4011 + _DEPOSIT_STATUS._serialized_end = 4104 + _WITHDRAWAL._serialized_start = 4107 + _WITHDRAWAL._serialized_end = 4531 + _WITHDRAWAL_STATUS._serialized_start = 4433 + _WITHDRAWAL_STATUS._serialized_end = 4525 + _WITHDRAWEXT._serialized_start = 4533 + _WITHDRAWEXT._serialized_end = 4601 + _ERC20WITHDRAWEXT._serialized_start = 4603 + _ERC20WITHDRAWEXT._serialized_end = 4664 + _ACCOUNT._serialized_start = 4667 + _ACCOUNT._serialized_end = 4830 + _FINANCIALAMOUNT._serialized_start = 4832 + _FINANCIALAMOUNT._serialized_end = 4895 + _TRANSFER._serialized_start = 4898 + _TRANSFER._serialized_end = 5077 + _DISPATCHSTRATEGY._serialized_start = 5080 + _DISPATCHSTRATEGY._serialized_end = 5212 + _TRANSFERREQUEST._serialized_start = 5215 + _TRANSFERREQUEST._serialized_end = 5445 + _ACCOUNTDETAILS._serialized_start = 5448 + _ACCOUNTDETAILS._serialized_end = 5615 + _LEDGERENTRY._serialized_start = 5618 + _LEDGERENTRY._serialized_end = 5931 + _POSTTRANSFERBALANCE._serialized_start = 5933 + _POSTTRANSFERBALANCE._serialized_end = 6028 + _LEDGERMOVEMENT._serialized_start = 6030 + _LEDGERMOVEMENT._serialized_end = 6146 + _MARGINLEVELS._serialized_start = 6149 + _MARGINLEVELS._serialized_end = 6450 + _MARKETDATA._serialized_start = 6453 + _MARKETDATA._serialized_end = 7834 + _LIQUIDITYPROVIDERFEESHARE._serialized_start = 7837 + _LIQUIDITYPROVIDERFEESHARE._serialized_end = 8023 + _PRICEMONITORINGBOUNDS._serialized_start = 8026 + _PRICEMONITORINGBOUNDS._serialized_end = 8226 + _ERRORDETAIL._serialized_start = 8228 + _ERRORDETAIL._serialized_end = 8309 + _NETWORKPARAMETER._serialized_start = 8311 + _NETWORKPARAMETER._serialized_end = 8369 + _NETWORKLIMITS._serialized_start = 8372 + _NETWORKLIMITS._serialized_end = 8758 + _LIQUIDITYORDER._serialized_start = 8760 + _LIQUIDITYORDER._serialized_end = 8885 + _LIQUIDITYORDERREFERENCE._serialized_start = 8887 + _LIQUIDITYORDERREFERENCE._serialized_end = 9002 + _LIQUIDITYPROVISION._serialized_start = 9005 + _LIQUIDITYPROVISION._serialized_end = 9599 + _LIQUIDITYPROVISION_STATUS._serialized_start = 9442 + _LIQUIDITYPROVISION_STATUS._serialized_end = 9599 + _ETHEREUMCONFIG._serialized_start = 9602 + _ETHEREUMCONFIG._serialized_end = 10066 + _ETHEREUMCONTRACTCONFIG._serialized_start = 10068 + _ETHEREUMCONTRACTCONFIG._serialized_end = 10174 + _EPOCHTIMESTAMPS._serialized_start = 10177 + _EPOCHTIMESTAMPS._serialized_end = 10349 + _EPOCH._serialized_start = 10352 + _EPOCH._serialized_end = 10528 + _EPOCHPARTICIPATION._serialized_start = 10531 + _EPOCHPARTICIPATION._serialized_end = 10673 + _EPOCHDATA._serialized_start = 10675 + _EPOCHDATA._serialized_end = 10758 + _RANKINGSCORE._serialized_start = 10761 + _RANKINGSCORE._serialized_end = 11044 + _REWARDSCORE._serialized_start = 11047 + _REWARDSCORE._serialized_end = 11346 + _NODE._serialized_start = 11349 + _NODE._serialized_end = 12040 + _NODESET._serialized_start = 12043 + _NODESET._serialized_end = 12199 + _NODEDATA._serialized_start = 12202 + _NODEDATA._serialized_end = 12503 + _DELEGATION._serialized_start = 12505 + _DELEGATION._serialized_end = 12617 + _REWARD._serialized_start = 12620 + _REWARD._serialized_end = 12871 + _REWARDSUMMARY._serialized_start = 12873 + _REWARDSUMMARY._serialized_end = 12966 + _EPOCHREWARDSUMMARY._serialized_start = 12969 + _EPOCHREWARDSUMMARY._serialized_end = 13124 + _STATEVALUEPROPOSAL._serialized_start = 13126 + _STATEVALUEPROPOSAL._serialized_end = 13247 + _KEYVALUEBUNDLE._serialized_start = 13249 + _KEYVALUEBUNDLE._serialized_end = 13356 + _STATEVARVALUE._serialized_start = 13359 + _STATEVARVALUE._serialized_end = 13539 + _SCALARVALUE._serialized_start = 13541 + _SCALARVALUE._serialized_end = 13576 + _VECTORVALUE._serialized_start = 13578 + _VECTORVALUE._serialized_end = 13613 + _MATRIXVALUE._serialized_start = 13615 + _MATRIXVALUE._serialized_end = 13669 # @@protoc_insertion_point(module_scope) diff --git a/vega_sim/reinforcement/agents/learning_agent.py b/vega_sim/reinforcement/agents/learning_agent.py index 40b07fd9b..1f9a5e043 100644 --- a/vega_sim/reinforcement/agents/learning_agent.py +++ b/vega_sim/reinforcement/agents/learning_agent.py @@ -61,15 +61,14 @@ def __init__( logfile_pnl: str, discount_factor: float, num_levels: int, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, initial_balance: int, position_decimals: int, asset_name: str, inventory_penalty: float = 0.0, ): - super().__init__(wallet_name=wallet_name, wallet_pass=wallet_pass) + super().__init__(key_name=key_name) self.step_num = 0 self.latest_state = None @@ -124,7 +123,7 @@ def initialise(self, vega: VegaServiceNull): self.tdai_id = self.vega.find_asset_id(symbol=self.asset_name) # Top up asset self.vega.mint( - self.wallet_name, + self.key_name, asset=self.tdai_id, amount=self.initial_balance, ) @@ -164,11 +163,11 @@ def create_dataloader(self, batch_size): pass def state(self, vega: VegaServiceNull) -> LAMarketState: - position = self.vega.positions_by_market(self.wallet_name, self.market_id) + position = self.vega.positions_by_market(self.key_name, self.market_id) position = position.open_volume if position else 0 account = self.vega.party_account( - wallet_name=self.wallet_name, + key_name=self.key_name, asset_id=self.tdai_id, market_id=self.market_id, ) @@ -224,7 +223,7 @@ def finalise(self): account = None for i in range(0, numTries): account = self.vega.party_account( - wallet_name=self.wallet_name, + key_name=self.key_name, asset_id=self.tdai_id, market_id=self.market_id, ) diff --git a/vega_sim/reinforcement/agents/learning_agent_MO.py b/vega_sim/reinforcement/agents/learning_agent_MO.py index a414d1046..fde20b7dd 100644 --- a/vega_sim/reinforcement/agents/learning_agent_MO.py +++ b/vega_sim/reinforcement/agents/learning_agent_MO.py @@ -56,8 +56,7 @@ def __init__( logfile_pnl: str, discount_factor: float, num_levels: int, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, initial_balance: int, position_decimals: int, @@ -71,8 +70,7 @@ def __init__( logfile_pnl=logfile_pnl, discount_factor=discount_factor, num_levels=num_levels, - wallet_name=wallet_name, - wallet_pass=wallet_pass, + key_name=key_name, market_name=market_name, initial_balance=initial_balance, position_decimals=position_decimals, @@ -186,7 +184,7 @@ def step(self, vega_state: VegaState): if self.latest_action.buy or self.latest_action.sell: try: self.vega.submit_market_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, side="SIDE_BUY" if self.latest_action.buy else "SIDE_SELL", volume=self.volume, diff --git a/vega_sim/reinforcement/agents/learning_agent_MO_with_vol.py b/vega_sim/reinforcement/agents/learning_agent_MO_with_vol.py index 6fe0a058f..d811b9fc2 100644 --- a/vega_sim/reinforcement/agents/learning_agent_MO_with_vol.py +++ b/vega_sim/reinforcement/agents/learning_agent_MO_with_vol.py @@ -79,8 +79,7 @@ def __init__( logfile_pnl: str, discount_factor: float, num_levels: int, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, initial_balance: int, position_decimals: int, @@ -93,8 +92,7 @@ def __init__( logfile_pnl=logfile_pnl, discount_factor=discount_factor, num_levels=num_levels, - wallet_name=wallet_name, - wallet_pass=wallet_pass, + key_name=key_name, market_name=market_name, initial_balance=initial_balance, position_decimals=position_decimals, @@ -226,7 +224,7 @@ def step(self, vega_state: VegaState): if self.latest_action.buy or self.latest_action.sell: try: self.vega.submit_market_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, side="SIDE_BUY" if self.latest_action.buy else "SIDE_SELL", volume=self.latest_action.volume, diff --git a/vega_sim/reinforcement/agents/learning_agent_heuristic.py b/vega_sim/reinforcement/agents/learning_agent_heuristic.py index 36689de66..a2a845f7a 100644 --- a/vega_sim/reinforcement/agents/learning_agent_heuristic.py +++ b/vega_sim/reinforcement/agents/learning_agent_heuristic.py @@ -64,8 +64,7 @@ def __init__( logfile_pnl: str, discount_factor: float, num_levels: int, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, initial_balance: int, position_decimals: int, @@ -78,8 +77,7 @@ def __init__( logfile_pnl=logfile_pnl, discount_factor=discount_factor, num_levels=num_levels, - wallet_name=wallet_name, - wallet_pass=wallet_pass, + key_name=key_name, market_name=market_name, initial_balance=initial_balance, position_decimals=position_decimals, @@ -189,7 +187,7 @@ def step(self, vega_state: VegaState): if self.latest_action.buy or self.latest_action.sell: try: self.vega.submit_market_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, side="SIDE_BUY" if self.latest_action.buy else "SIDE_SELL", volume=self.volume, diff --git a/vega_sim/reinforcement/agents/simple_agent.py b/vega_sim/reinforcement/agents/simple_agent.py index 7834784d1..dfb2603db 100644 --- a/vega_sim/reinforcement/agents/simple_agent.py +++ b/vega_sim/reinforcement/agents/simple_agent.py @@ -122,7 +122,7 @@ def __init__( def initialise(self, vega: VegaService): # Initialise wallet - super().initialise(vega=vega, create_wallet=True) + super().initialise(vega=vega, create_key=True) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) diff --git a/vega_sim/reinforcement/run_rl_agent.py b/vega_sim/reinforcement/run_rl_agent.py index 9fb5a7c80..8ab389890 100644 --- a/vega_sim/reinforcement/run_rl_agent.py +++ b/vega_sim/reinforcement/run_rl_agent.py @@ -116,8 +116,7 @@ def _run( logfile_pnl=logfile_pnl, discount_factor=0.8, num_levels=1, - wallet_name=LEARNING_WALLET.name, - wallet_pass=LEARNING_WALLET.passphrase, + key_name=LEARNING_WALLET.name, initial_balance=100000, market_name=market_name, position_decimals=position_decimals, diff --git a/vega_sim/scenario/common/agents.py b/vega_sim/scenario/common/agents.py index a52c6ad6a..524a82bf0 100644 --- a/vega_sim/scenario/common/agents.py +++ b/vega_sim/scenario/common/agents.py @@ -20,7 +20,7 @@ from numpy.typing import ArrayLike from vega_sim.api.data import Order, AccountData, MarketDepth, Trade -from vega_sim.environment import VegaState, MarketState +from vega_sim.environment import VegaState from vega_sim.environment.agent import StateAgentWithWallet, StateAgent, Agent from vega_sim.null_service import VegaServiceNull, VegaService from vega_sim.network_service import VegaServiceNetwork @@ -86,8 +86,7 @@ class MarketOrderTrader(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, initial_asset_mint: float = 1000000, @@ -96,12 +95,10 @@ def __init__( tag: str = "", random_state: Optional[np.random.RandomState] = None, base_order_size: float = 1, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, step_bias: Optional[float] = 1, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.initial_asset_mint = initial_asset_mint self.buy_intensity = buy_intensity self.sell_intensity = sell_intensity @@ -116,23 +113,23 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): - # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + # Initialise key + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) # Get asset id self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + key_name=self.key_name, asset=self.asset_id, amount=self.initial_asset_mint, - key_name=self.key_name, + wallet_name=self.wallet_name, ) self.vega.wait_fn(5) self.pdp = self.vega.market_pos_decimals.get(self.market_id, {}) @@ -178,13 +175,13 @@ def place_order(self, vega_state: VegaState, volume: float, side: vega_protos.Si and volume != 0 ): self.vega.submit_market_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, side=side, volume=volume, wait=False, fill_or_kill=False, - key_name=self.key_name, + trading_wallet=self.wallet_name, ) @@ -193,8 +190,7 @@ class PriceSensitiveMarketOrderTrader(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, price_process_generator: Iterable[float], @@ -205,11 +201,9 @@ def __init__( tag: str = "", random_state: Optional[np.random.RandomState] = None, base_order_size: float = 1, - key_name: str = None, + wallet_name: str = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.initial_asset_mint = initial_asset_mint self.buy_intensity = buy_intensity self.sell_intensity = sell_intensity @@ -225,23 +219,23 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) # Get asset id self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + key_name=self.key_name, asset=self.asset_id, amount=self.initial_asset_mint, - key_name=self.key_name, + wallet_name=self.wallet_name, ) self.vega.wait_fn(5) @@ -294,13 +288,13 @@ def place_order(self, vega_state: VegaState, volume: float, side: vega_protos.Si and volume != 0 ): self.vega.submit_market_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, side=side, volume=volume, wait=False, fill_or_kill=False, - key_name=self.key_name, + trading_wallet=self.wallet_name, ) @@ -309,8 +303,7 @@ class PriceSensitiveLimitOrderTrader(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, price_process_generator: Iterable[float], @@ -318,12 +311,10 @@ def __init__( scale: float = 0.5, max_order_size: float = 100, random_state: Optional[np.random.RandomState] = None, - key_name: str = None, + wallet_name: str = None, tag: str = "", ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.market_name = market_name self.asset_name = asset_name self.price_process_generator = price_process_generator @@ -337,23 +328,23 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) # Get asset id self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + key_name=self.key_name, asset=self.asset_id, amount=self.initial_asset_mint, - key_name=self.key_name, + wallet_name=self.wallet_name, ) self.vega.wait_fn(5) @@ -372,8 +363,8 @@ def place_order( price, ): self.vega.submit_order( + trading_key=self.key_name, trading_wallet=self.wallet_name, - key_name=self.key_name, market_id=self.market_id, order_type="TYPE_LIMIT", time_in_force="TIME_IN_FORCE_IOC", @@ -389,8 +380,7 @@ class BackgroundMarket(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, price_process: List[float], @@ -402,11 +392,9 @@ def __init__( base_volume_size: float = 0.1, order_distribution_kappa: float = 1, tag: str = "", - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.price_process = price_process self.initial_asset_mint = initial_asset_mint self.spread = spread @@ -423,20 +411,20 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) # Get asset id asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -471,6 +459,7 @@ def _submit_order( if volume == 0: return self.vega.submit_order( + trading_key=self.key_name, trading_wallet=self.wallet_name, market_id=self.market_id, order_type="TYPE_LIMIT", @@ -505,7 +494,7 @@ def step(self, vega_state: VegaState): self.current_step += 1 orders = self.vega.orders_for_party_from_feed( - self.wallet_name, self.market_id, live_only=True + self.key_name, self.market_id, live_only=True, wallet_name=self.wallet_name ) new_price = self.price_process[self.current_step] new_buy_shape = self._calculate_price_volume_levels( @@ -566,7 +555,8 @@ def _move_side( if i < len(orders): order_to_amend = orders[i] self.vega.amend_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, + wallet_name=self.wallet_name, market_id=self.market_id, order_id=order_to_amend.id, price=new_shape[i][0], @@ -581,14 +571,13 @@ class MultiRegimeBackgroundMarket(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, price_process: List[float], market_regimes: List[MarketRegime], tag: str = "", - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): """Generate a background market acting differently as time passes. Allows specification of varying numbers of non-overlapping regimes @@ -597,10 +586,8 @@ def __init__( Places an exponentially shaped Limit-Order-Book about a moving midprice. Args: - wallet_name: - str, The name of the wallet to use placing background orders - wallet_pass: - str, The password to use for the background order wallet + key_name: + str, The name of the key in the wallet to use market_name: str, The name of the market on which the agent will trade asset_name: @@ -613,12 +600,10 @@ def __init__( a start/end date and are interpreted as a sparse set tag: str, a tag which will be added to the wallet name - key_name: - str, optional, The name of the key in the wallet to use + wallet_name: + str, optional, The name of the wallet to use placing background orders """ - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.price_process = price_process self.current_step = 0 @@ -652,10 +637,11 @@ def _market_regime_sparse_to_dense( ) else: market_regime = next_market_regime - - regimes.append( - market_regime - ) if market_regime.from_timepoint <= i else regimes.append(None) + ( + regimes.append(market_regime) + if market_regime.from_timepoint <= i + else regimes.append(None) + ) else: regimes.append(market_regime) return regimes @@ -663,23 +649,23 @@ def _market_regime_sparse_to_dense( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) # Get asset id asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + key_name=self.key_name, asset=asset_id, amount=200000, - key_name=self.key_name, + wallet_name=self.wallet_name, ) self.vega.wait_fn(2) @@ -715,6 +701,7 @@ def _submit_order( self, side: Union[str, vega_protos.Side], price: float, size: float ) -> None: self.vega.submit_order( + trading_key=self.key_name, trading_wallet=self.wallet_name, market_id=self.market_id, order_type="TYPE_LIMIT", @@ -754,12 +741,17 @@ def step(self, vega_state: VegaState): market_regime = self.market_regimes[self.current_step] orders = self.vega.orders_for_party_from_feed( - self.wallet_name, self.market_id, live_only=True + self.key_name, self.market_id, live_only=True, wallet_name=self.wallet_name ) if market_regime is None: for order in orders.values(): - self.vega.cancel_order(self.wallet_name, self.market_id, order.id) + self.vega.cancel_order( + self.key_name, + self.market_id, + order.id, + wallet_name=self.wallet_name, + ) else: new_price = self.price_process[self.current_step] new_buy_shape = self._calculate_price_volume_levels( @@ -826,7 +818,8 @@ def _move_side( if i < len(orders): order_to_amend = orders[i] self.vega.amend_order( - trading_wallet=self.wallet_name, + wallet_name=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, order_id=order_to_amend.id, price=new_shape[i][0], @@ -845,8 +838,7 @@ class OpenAuctionPass(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, side: str, market_name: str, asset_name: str, @@ -854,11 +846,9 @@ def __init__( initial_price: float = 0.3, opening_auction_trade_amount: float = 1, tag: str = "", - key_name: str = None, + wallet_name: str = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.side = side self.initial_asset_mint = initial_asset_mint self.initial_price = initial_price @@ -869,21 +859,21 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) self.vega.wait_for_total_catchup() # Get asset id asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -900,7 +890,7 @@ def initialise( volume=self.opening_auction_trade_amount, price=self.initial_price, wait=False, - key_name=self.key_name, + trading_key=self.key_name, ) def step(self, vega_state: VegaState): @@ -912,10 +902,8 @@ class MarketManager(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, - terminate_wallet_name: str, - terminate_wallet_pass: str, + key_name: str, + terminate_key_name: str, market_name: str, asset_name: str, asset_decimal: int = 5, @@ -925,14 +913,11 @@ def __init__( commitment_amount: Optional[float] = None, settlement_price: Optional[float] = None, tag: str = "", - key_name: str = None, - terminate_key_name: str = None, + wallet_name: str = None, + terminate_wallet_name: str = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.terminate_wallet_name = terminate_wallet_name - self.terminate_wallet_pass = terminate_wallet_pass self.terminate_key_name = terminate_key_name self.adp = asset_decimal @@ -957,28 +942,30 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet for LP/ Settle Party - super().initialise(vega=vega, create_wallet=create_wallet) - self.vega.create_wallet( - self.terminate_wallet_name, - self.terminate_wallet_pass, - self.terminate_key_name, + super().initialise(vega=vega, create_key=create_key) + self.vega.create_key( + wallet_name=self.terminate_wallet_name, + name=self.terminate_key_name, ) # Faucet vega tokens self.vega.wait_for_total_catchup() self.vega.mint( - self.wallet_name, asset="VOTE", amount=1e4, key_name=self.key_name + wallet_name=self.wallet_name, + asset="VOTE", + amount=1e4, + key_name=self.key_name, ) self.vega.wait_fn(5) self.vega.wait_for_total_catchup() if vega.find_asset_id(symbol=self.asset_name) is None: # Create asset self.vega.create_asset( - self.wallet_name, + wallet_name=self.wallet_name, name=self.asset_name, symbol=self.asset_name, decimals=self.adp, @@ -989,10 +976,10 @@ def initialise( self.vega.wait_for_total_catchup() # Get asset id self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_mint, key_name=self.key_name, @@ -1003,14 +990,14 @@ def initialise( # Set up a future market self.vega.create_simple_market( market_name=self.market_name, - proposal_wallet=self.wallet_name, + wallet_name=self.wallet_name, + proposal_key=self.key_name, settlement_asset_id=self.asset_id, - termination_wallet=self.terminate_wallet_name, market_decimals=self.mdp, position_decimals=self.market_position_decimal, future_asset=self.asset_name, - key_name=self.key_name, termination_key=self.terminate_key_name, + termination_wallet_name=self.terminate_wallet_name, ) self.vega.wait_for_total_catchup() @@ -1031,10 +1018,10 @@ def initialise( def finalise(self): if self.settlement_price is not None: self.vega.settle_market( - self.terminate_wallet_name, + self.terminate_key_name, self.settlement_price, self.market_id, - self.terminate_key_name, + self.terminate_wallet_name, ) self.vega.wait_for_total_catchup() @@ -1054,8 +1041,7 @@ class ShapedMarketMaker(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, price_process_generator: Iterable[float], best_price_offset_fn: Callable[[float, int], Tuple[float, float]], shape_fn: Callable[ @@ -1075,15 +1061,13 @@ def __init__( market_decimal_places: int = 5, asset_decimal_places: int = 0, tag: str = "", - key_name: str = None, + wallet_name: str = None, orders_from_stream: Optional[bool] = True, state_update_freq: Optional[int] = None, safety_factor: Optional[float] = 1.2, max_order_size: float = 10000, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.price_process_generator = price_process_generator self.commitment_amount = commitment_amount self.initial_asset_mint = initial_asset_mint @@ -1113,18 +1097,18 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet for LP/ Settle Party - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get asset id self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -1137,9 +1121,11 @@ def initialise( self._update_state(current_step=self.current_step) if ( - initial_liq := self.liquidity_commitment_fn(None) - if self.liquidity_commitment_fn is not None - else None + initial_liq := ( + self.liquidity_commitment_fn(None) + if self.liquidity_commitment_fn is not None + else None + ) ) is not None: self.vega.submit_liquidity( wallet_name=self.wallet_name, @@ -1185,7 +1171,10 @@ def step(self, vega_state: VegaState): ( vega_state.market_state[self.market_id] .orders.get( - self.vega.wallet.public_key(self.wallet_name, self.key_name), {} + self.vega.wallet.public_key( + wallet_name=self.wallet_name, name=self.key_name + ), + {}, ) .values() ) @@ -1236,9 +1225,11 @@ def step(self, vega_state: VegaState): ) if ( - liq := self.liquidity_commitment_fn(vega_state) - if self.liquidity_commitment_fn is not None - else None + liq := ( + self.liquidity_commitment_fn(vega_state) + if self.liquidity_commitment_fn is not None + else None + ) ) is not None: self.vega.submit_liquidity( wallet_name=self.wallet_name, @@ -1303,7 +1294,7 @@ def _submit_order( self, side: Union[str, vega_protos.Side], price: float, size: float ) -> None: self.vega.submit_order( - trading_wallet=self.wallet_name, + trading_key=self.key_name, market_id=self.market_id, order_type="TYPE_LIMIT", time_in_force="TIME_IN_FORCE_GTC", @@ -1311,7 +1302,7 @@ def _submit_order( volume=size, price=price, wait=False, - key_name=self.key_name, + trading_wallet=self.wallet_name, ) def _move_side( @@ -1404,8 +1395,7 @@ class ExponentialShapedMarketMaker(ShapedMarketMaker): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, num_steps: int, price_process_generator: Iterable[float], initial_asset_mint: float = 1000000, @@ -1425,14 +1415,13 @@ def __init__( market_kappa: float = 1, asset_decimal_places: int = 0, tag: str = "", - key_name: str = None, + wallet_name: str = None, orders_from_stream: Optional[bool] = True, state_update_freq: Optional[int] = None, max_order_size: float = 10000, ): super().__init__( wallet_name=wallet_name, - wallet_pass=wallet_pass, price_process_generator=price_process_generator, initial_asset_mint=initial_asset_mint, market_name=market_name, @@ -1597,8 +1586,7 @@ def _calculate_price_volume_levels( class HedgedMarketMaker(ExponentialShapedMarketMaker): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, num_steps: int, price_process_generator: Iterable[float], internal_key_mint: float = 1000000, @@ -1620,7 +1608,7 @@ def __init__( market_kappa: float = 1, asset_decimal_places: int = 0, tag: str = "", - key_name: str = None, + wallet_name: str = None, external_key_name: Optional[float] = "Hedging Key", orders_from_stream: Optional[bool] = True, state_update_freq: Optional[int] = None, @@ -1631,7 +1619,6 @@ def __init__( ): super().__init__( wallet_name=wallet_name, - wallet_pass=wallet_pass, num_steps=num_steps, price_process_generator=price_process_generator, initial_asset_mint=internal_key_mint, @@ -1671,24 +1658,24 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise the parent ExponentialShapedMarketMaker - super().initialise(vega, create_wallet, mint_wallet) + super().initialise(vega, create_key, mint_key) self.external_market_id = self.vega.find_market_id( name=self.external_market_name ) self._update_state(current_step=self.current_step) - if vega.create_wallet: - vega.create_wallet( - name=self.wallet_name, + if vega.create_key: + vega.create_key( + wallet_name=self.wallet_name, passphrase=self.wallet_pass, - key_name=self.external_key_name, + name=self.external_key_name, ) - if mint_wallet: + if mint_key: vega.mint( wallet_name=self.wallet_name, asset=self.asset_id, @@ -1784,7 +1771,7 @@ def _balance_positions(self): self.vega.submit_market_order( trading_wallet=self.wallet_name, - key_name=self.external_key_name, + trading_key=self.external_key_name, market_id=self.external_market_id, volume=abs(position_delta), side=side, @@ -1818,7 +1805,7 @@ def _balance_accounts(self): transfer.amount for transfer in transfers.get( self.vega.wallet.public_key( - name=self.wallet_name, key_name=self.key_name + name=self.key_name, wallet_name=self.wallet_name ), {}, ).values() @@ -1830,7 +1817,7 @@ def _balance_accounts(self): transfer.amount for transfer in transfers.get( self.vega.wallet.public_key( - name=self.wallet_name, key_name=self.external_key_name + name=self.key_name, wallet_name=self.external_key_name ), {}, ).values() @@ -1896,8 +1883,7 @@ class LimitOrderTrader(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, initial_asset_mint: float = 1000000, @@ -1916,7 +1902,7 @@ def __init__( spread: Optional[float] = None, mean: Optional[float] = 2.0, sigma: Optional[float] = 1.0, - key_name: str = None, + wallet_name: str = None, ): """Init the object and class attributes. @@ -1959,9 +1945,7 @@ def __init__( Standard deviation of the log-normal distribution. """ - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.current_step = 0 @@ -1999,8 +1983,8 @@ def __init__( def initialise( self, vega: VegaService, - create_wallet: bool = True, - mint_wallet: bool = False, + create_key: bool = True, + mint_key: bool = False, ): """Initialise the agents wallet and mint the required market asset. @@ -2009,13 +1993,13 @@ def initialise( Object running a locally-hosted Vega service. """ - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) self.market_id = self.vega.find_market_id(name=self.market_name) self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -2091,12 +2075,15 @@ def _submit_order(self, vega_state: VegaState): wait=False, time_in_force=time_in_force, expires_at=expires_at, - key_name=self.key_name, + trading_key=self.key_name, ) def _cancel_order(self, vega_state: VegaState): orders = vega_state.market_state.get(self.market_id, {}).orders.get( - self.vega.wallet.public_key(self.wallet_name, self.key_name), {} + self.vega.wallet.public_key( + wallet_name=self.wallet_name, name=self.key_name + ), + {}, ) if len(orders) > 0: @@ -2107,7 +2094,7 @@ def _cancel_order(self, vega_state: VegaState): trading_wallet=self.wallet_name, market_id=self.market_id, order_id=order.id, - key_name=self.key_name, + trading_key=self.key_name, ) @@ -2116,8 +2103,7 @@ class InformedTrader(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, price_process: List[float], market_name: str = None, asset_name: str = None, @@ -2127,7 +2113,7 @@ def __init__( lookahead: int = 1, max_abs_position: float = 100, tag: str = "", - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, random_state: Optional[np.random.RandomState] = None, ): """Agent capable of placing informed market orders. @@ -2149,8 +2135,6 @@ def __init__( Args: wallet_name (str): Name of the wallet. - wallet_pass (str): - Passphrase for the wallet. price_process (List[float]): List of price history for agent to look-ahead. market_name (str, optional): @@ -2174,9 +2158,7 @@ def __init__( random_state (Optional[np.random.RandomState], optional): RandomState object used to generate randomness. Defaults to None. """ - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.initial_asset_mint = initial_asset_mint self.price_process = price_process self.current_step = 0 @@ -2198,21 +2180,21 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): # Initialise wallet - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) # Get market id self.market_id = self.vega.find_market_id(name=self.market_name) # Get asset id tDAI_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: # Top up asset self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=tDAI_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -2294,7 +2276,7 @@ def _create_order(self) -> ITOrder: volume=size, wait=False, fill_or_kill=False, - key_name=self.key_name, + trading_key=self.key_name, ) return ITOrder(side=side, size=size) @@ -2324,7 +2306,7 @@ def _close_positions(self, order: ITOrder): volume=order.volume, wait=True, fill_or_kill=False, - key_name=self.key_name, + trading_key=self.key_name, ) except OrderRejectedError: logger.debug("Order rejected") @@ -2335,8 +2317,7 @@ class SimpleLiquidityProvider(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, bid_inner_bound_fn: Callable, @@ -2348,11 +2329,9 @@ def __init__( commitment_amount: float = 6000, fee: float = 0.001, tag: str = "", - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.market_name = market_name self.asset_name = asset_name @@ -2372,16 +2351,16 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) self.market_id = self.vega.find_market_id(name=self.market_name) self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -2463,8 +2442,7 @@ class MomentumTrader(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, + key_name: str, market_name: str, asset_name: str, momentum_strategy: str = "RSI", @@ -2480,11 +2458,9 @@ def __init__( duration: Optional[float] = 120, offset_levels: int = 10, tag: str = "", - key_name: str = None, + wallet_name: str = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) self.market_name = market_name self.asset_name = asset_name self.initial_asset_mint = initial_asset_mint @@ -2524,17 +2500,17 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): - super().initialise(vega=vega, create_wallet=create_wallet) + super().initialise(vega=vega, create_key=create_key) self.market_id = self.vega.find_market_id(name=self.market_name) self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) - if mint_wallet: + if mint_key: self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -2570,7 +2546,7 @@ def step(self, vega_state: VegaState): volume=volume, wait=False, fill_or_kill=False, - key_name=self.key_name, + trading_key=self.key_name, ) else: best_bid, best_ask = self.vega.best_prices(market_id=self.market_id) @@ -2590,7 +2566,7 @@ def step(self, vega_state: VegaState): price=price, expires_at=expires_at, wait=False, - key_name=self.key_name, + trading_key=self.key_name, ) def _MACD(self): diff --git a/vega_sim/scenario/comprehensive_market/scenario.py b/vega_sim/scenario/comprehensive_market/scenario.py index 50b4f0cd0..bc42b7132 100644 --- a/vega_sim/scenario/comprehensive_market/scenario.py +++ b/vega_sim/scenario/comprehensive_market/scenario.py @@ -159,10 +159,8 @@ def configure_agents( ) mm_agent = MarketManager( - wallet_name=MM_WALLET.name, - wallet_pass=MM_WALLET.passphrase, - terminate_wallet_name=TERMINATE_WALLET.name, - terminate_wallet_pass=TERMINATE_WALLET.passphrase, + key_name=MM_WALLET.name, + terminate_key_name=TERMINATE_WALLET.name, asset_decimal=self.asset_decimal, market_decimal=self.market_decimal, market_position_decimal=self.market_position_decimal, @@ -175,8 +173,7 @@ def configure_agents( lp_agents = [ LiquidityProvider( - wallet_name=self.lp_wallets[i].name, - wallet_pass=self.lp_wallets[i].passphrase, + key_name=self.lp_wallets[i].name, initial_asset_mint=self.initial_asset_mint, market_name=market_name, asset_name=asset_name, @@ -190,8 +187,7 @@ def configure_agents( mo_agents = [ MarketOrderTrader( - wallet_name=self.mo_wallets[i].name, - wallet_pass=self.mo_wallets[i].passphrase, + key_name=self.mo_wallets[i].name, initial_asset_mint=self.initial_asset_mint, market_name=market_name, asset_name=asset_name, @@ -206,8 +202,7 @@ def configure_agents( lo_agents = [ LimitOrderTrader( - wallet_name=self.lo_wallets[i].name, - wallet_pass=self.lo_wallets[i].passphrase, + key_name=self.lo_wallets[i].name, initial_asset_mint=self.initial_asset_mint, market_name=market_name, asset_name=asset_name, @@ -231,8 +226,7 @@ def configure_agents( momentum_agents = [ MomentumTrader( - wallet_name=self.momentum_wallets[i].name, - wallet_pass=self.momentum_wallets[i].passphrase, + key_name=self.momentum_wallets[i].name, market_name=market_name, asset_name=asset_name, initial_asset_mint=self.initial_asset_mint, @@ -251,8 +245,7 @@ def configure_agents( ] auctionpass1 = OpenAuctionPass( - wallet_name=AUCTION1_WALLET.name, - wallet_pass=AUCTION1_WALLET.passphrase, + key_name=AUCTION1_WALLET.name, side="SIDE_BUY", initial_asset_mint=self.initial_asset_mint, initial_price=self.initial_price @@ -265,8 +258,7 @@ def configure_agents( ) auctionpass2 = OpenAuctionPass( - wallet_name=AUCTION2_WALLET.name, - wallet_pass=AUCTION2_WALLET.passphrase, + key_name=AUCTION2_WALLET.name, side="SIDE_SELL", initial_asset_mint=self.initial_asset_mint, initial_price=self.initial_price diff --git a/vega_sim/scenario/configurable_market/agents.py b/vega_sim/scenario/configurable_market/agents.py index 719b4e868..8207f112e 100644 --- a/vega_sim/scenario/configurable_market/agents.py +++ b/vega_sim/scenario/configurable_market/agents.py @@ -26,16 +26,14 @@ class ConfigurableMarketManager(StateAgentWithWallet): def __init__( self, - proposal_wallet_name: str, - proposal_wallet_pass: str, - termination_wallet_name: str, - termination_wallet_pass: str, + proposal_key_name: str, + termination_key_name: str, market_name: str, market_code: str, asset_name: str, asset_dp: int, - proposal_key_name: Optional[str] = None, - termination_key_name: Optional[str] = None, + proposal_wallet_name: Optional[str] = None, + termination_wallet_name: Optional[str] = None, market_config: Optional[MarketConfig] = None, tag: Optional[str] = None, settlement_price: Optional[float] = None, @@ -43,13 +41,11 @@ def __init__( ): super().__init__( wallet_name=proposal_wallet_name, - wallet_pass=proposal_wallet_pass, key_name=proposal_key_name, tag=tag, ) self.termination_wallet_name = termination_wallet_name - self.termination_wallet_pass = termination_wallet_pass self.termination_key_name = termination_key_name self.market_name = market_name @@ -69,28 +65,30 @@ def __init__( def initialise( self, vega: Union[VegaServiceNull, VegaServiceNetwork], - create_wallet: bool = True, - mint_wallet: bool = True, + create_key: bool = True, + mint_key: bool = True, ): - super().initialise(vega=vega, create_wallet=create_wallet) - if create_wallet: - self.vega.create_wallet( - self.termination_wallet_name, - self.termination_wallet_pass, - self.termination_key_name, + super().initialise(vega=vega, create_key=create_key) + if create_key: + self.vega.create_key( + wallet_name=self.termination_wallet_name, + name=self.termination_key_name, ) self.vega.wait_for_total_catchup() - if mint_wallet: + if mint_key: self.vega.mint( - self.wallet_name, asset="VOTE", amount=1e4, key_name=self.key_name + wallet_name=self.wallet_name, + asset="VOTE", + amount=1e4, + key_name=self.key_name, ) self.vega.wait_for_total_catchup() if self.vega.find_asset_id(symbol=self.asset_name) is None: self.vega.create_asset( - self.wallet_name, + wallet_name=self.wallet_name, name=self.asset_name, symbol=self.asset_name, decimals=self.asset_dp, @@ -102,9 +100,9 @@ def initialise( self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) self.vega.wait_for_total_catchup() - if mint_wallet: + if mint_key: self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_mint, key_name=self.key_name, @@ -122,7 +120,8 @@ def initialise( self.market_config.set( "instrument.future.terminating_key", self.vega.wallet.public_key( - self.termination_wallet_name, self.termination_key_name + wallet_name=self.termination_wallet_name, + name=self.termination_key_name, ), ) @@ -139,9 +138,9 @@ def initialise( def finalise(self): if self.settlement_price is not None: self.vega.settle_market( - self.termination_wallet_name, + self.termination_key_name, self.settlement_price, self.market_id, - self.termination_key_name, + self.termination_wallet_name, ) self.vega.wait_for_total_catchup() diff --git a/vega_sim/scenario/configurable_market/scenario.py b/vega_sim/scenario/configurable_market/scenario.py index 98e58532f..6c8de4007 100644 --- a/vega_sim/scenario/configurable_market/scenario.py +++ b/vega_sim/scenario/configurable_market/scenario.py @@ -116,10 +116,8 @@ def configure_agents( market_manager = ConfigurableMarketManager( proposal_wallet_name=PROPOSAL_PARTY.wallet_name, - proposal_wallet_pass=PROPOSAL_PARTY.wallet_pass, proposal_key_name=PROPOSAL_PARTY.key_name, termination_wallet_name=TERMINATION_PARTY.wallet_name, - termination_wallet_pass=TERMINATION_PARTY.wallet_pass, termination_key_name=TERMINATION_PARTY.key_name, market_config=market_config, market_name=market_name, @@ -131,7 +129,6 @@ def configure_agents( shaped_mm = ExponentialShapedMarketMaker( wallet_name=MAKER_PARTY.wallet_name, - wallet_pass=MAKER_PARTY.wallet_pass, key_name=MAKER_PARTY.key_name, price_process_generator=iter(price_process), initial_asset_mint=1e9, @@ -153,7 +150,6 @@ def configure_agents( sensitive_mo_trader_a = PriceSensitiveMarketOrderTrader( wallet_name=SENSITIVE_PARTY_A.wallet_name, - wallet_pass=SENSITIVE_PARTY_A.wallet_pass, key_name=SENSITIVE_PARTY_A.key_name, market_name=market_name, asset_name=asset_name, @@ -168,7 +164,6 @@ def configure_agents( sensitive_mo_trader_b = PriceSensitiveMarketOrderTrader( wallet_name=SENSITIVE_PARTY_B.wallet_name, - wallet_pass=SENSITIVE_PARTY_B.wallet_pass, key_name=SENSITIVE_PARTY_B.key_name, market_name=market_name, asset_name=asset_name, @@ -183,7 +178,6 @@ def configure_agents( sensitive_mo_trader_c = PriceSensitiveMarketOrderTrader( wallet_name=SENSITIVE_PARTY_C.wallet_name, - wallet_pass=SENSITIVE_PARTY_C.wallet_pass, key_name=SENSITIVE_PARTY_C.key_name, market_name=market_name, asset_name=asset_name, @@ -198,7 +192,6 @@ def configure_agents( auctionpass1 = OpenAuctionPass( wallet_name=AUCTION_PARTY_A.wallet_name, - wallet_pass=AUCTION_PARTY_A.wallet_pass, key_name=AUCTION_PARTY_A.key_name, side="SIDE_BUY", initial_asset_mint=1e9, @@ -211,7 +204,6 @@ def configure_agents( auctionpass2 = OpenAuctionPass( wallet_name=AUCTION_PARTY_B.wallet_name, - wallet_pass=AUCTION_PARTY_B.wallet_pass, key_name=AUCTION_PARTY_B.key_name, side="SIDE_SELL", initial_asset_mint=1e9, @@ -224,7 +216,6 @@ def configure_agents( info_trader = InformedTrader( wallet_name=INFORMED_PARTY.wallet_name, - wallet_pass=INFORMED_PARTY.wallet_pass, key_name=INFORMED_PARTY.key_name, price_process=price_process, market_name=market_name, diff --git a/vega_sim/scenario/curve_market_maker/scenario.py b/vega_sim/scenario/curve_market_maker/scenario.py index 358df68d0..288557862 100644 --- a/vega_sim/scenario/curve_market_maker/scenario.py +++ b/vega_sim/scenario/curve_market_maker/scenario.py @@ -142,10 +142,8 @@ def configure_agents( ) market_manager = MarketManager( - wallet_name=MM_WALLET.name, - wallet_pass=MM_WALLET.passphrase, - terminate_wallet_name=TERMINATE_WALLET.name, - terminate_wallet_pass=TERMINATE_WALLET.passphrase, + key_name=MM_WALLET.name, + terminate_key_name=TERMINATE_WALLET.name, asset_decimal=self.asset_decimal, market_decimal=self.market_decimal, market_position_decimal=self.market_position_decimal, @@ -156,8 +154,7 @@ def configure_agents( ) shaped_mm = ExponentialShapedMarketMaker( - wallet_name="expon", - wallet_pass="expon", + key_name="expon", price_process_generator=iter(price_process), initial_asset_mint=self.initial_asset_mint, market_name=market_name, @@ -180,8 +177,7 @@ def configure_agents( ) sensitive_mo_trader = PriceSensitiveMarketOrderTrader( - wallet_name=TRADER_WALLET.name, - wallet_pass=TRADER_WALLET.passphrase, + key_name=TRADER_WALLET.name, market_name=market_name, asset_name=asset_name, initial_asset_mint=self.initial_asset_mint, @@ -194,8 +190,7 @@ def configure_agents( ) auctionpass1 = OpenAuctionPass( - wallet_name=AUCTION1_WALLET.name, - wallet_pass=AUCTION1_WALLET.passphrase, + key_name=AUCTION1_WALLET.name, side="SIDE_BUY", initial_asset_mint=self.initial_asset_mint, initial_price=self.initial_price @@ -208,8 +203,7 @@ def configure_agents( ) auctionpass2 = OpenAuctionPass( - wallet_name=AUCTION2_WALLET.name, - wallet_pass=AUCTION2_WALLET.passphrase, + key_name=AUCTION2_WALLET.name, side="SIDE_SELL", initial_asset_mint=self.initial_asset_mint, initial_price=self.initial_price @@ -222,8 +216,7 @@ def configure_agents( ) info_trader = InformedTrader( - wallet_name=INFORMED_WALLET.name, - wallet_pass=INFORMED_WALLET.passphrase, + key_name=INFORMED_WALLET.name, price_process=price_process, market_name=market_name, asset_name=asset_name, diff --git a/vega_sim/scenario/hedged_market_maker/scenario.py b/vega_sim/scenario/hedged_market_maker/scenario.py index 117ef689e..3ab6b0189 100644 --- a/vega_sim/scenario/hedged_market_maker/scenario.py +++ b/vega_sim/scenario/hedged_market_maker/scenario.py @@ -144,7 +144,8 @@ class HedgedMarket(Scenario): Whether to randomly order each agents step action. Defaults to False. transactions_per_block (int, optional): Number of transactions allowed per block. Defaults to 1000. - state_extraction_fn (Optional[ Callable[[VegaServiceNull, List[Agent]], Any] ], optional): + state_extraction_fn (Optional[ Callable[[VegaServiceNull, List[Agent]], Any] ] + , optional): Defines which states to extract and record. Defaults to None. pause_every_n_steps (Optional[int], optional): Number of steps to simulate before pausing the simulation. Defaults to None. @@ -258,10 +259,8 @@ def configure_agents( int_market_manager = MarketManager( wallet_name=MARKET_CREATOR.wallet_name, - wallet_pass=MARKET_CREATOR.wallet_pass, key_name=MARKET_CREATOR.key_name, terminate_wallet_name=MARKET_SETTLER.wallet_name, - terminate_wallet_pass=MARKET_SETTLER.wallet_pass, terminate_key_name=MARKET_SETTLER.key_name, asset_name=self.asset_name, asset_decimal=self.asset_adp, @@ -274,10 +273,8 @@ def configure_agents( ext_market_manager = MarketManager( wallet_name=MARKET_CREATOR.wallet_name, - wallet_pass=MARKET_CREATOR.wallet_pass, key_name=MARKET_CREATOR.key_name, terminate_wallet_name=MARKET_SETTLER.wallet_name, - terminate_wallet_pass=MARKET_SETTLER.wallet_pass, terminate_key_name=MARKET_SETTLER.key_name, asset_name=self.asset_name, asset_decimal=self.asset_adp, @@ -290,7 +287,6 @@ def configure_agents( int_market_maker = HedgedMarketMaker( wallet_name=INT_MARKET_MAKER_KEY_A.wallet_name, - wallet_pass=INT_MARKET_MAKER_KEY_A.wallet_pass, key_name=INT_MARKET_MAKER_KEY_A.key_name, external_key_name=INT_MARKET_MAKER_KEY_B.key_name, price_process_generator=iter(price_process), @@ -319,7 +315,6 @@ def configure_agents( ext_market_maker = ExponentialShapedMarketMaker( wallet_name=EXT_MARKET_MAKER.wallet_name, - wallet_pass=EXT_MARKET_MAKER.wallet_pass, key_name=EXT_MARKET_MAKER.key_name, price_process_generator=iter(price_process), initial_asset_mint=1e10, @@ -342,7 +337,6 @@ def configure_agents( int_auction_pass_bid = OpenAuctionPass( wallet_name=AUCTION_PASS_BID.wallet_name, - wallet_pass=AUCTION_PASS_BID.wallet_pass, key_name=AUCTION_PASS_BID.key_name, side="SIDE_BUY", initial_asset_mint=1e10, @@ -354,7 +348,6 @@ def configure_agents( ) int_auction_pass_ask = OpenAuctionPass( wallet_name=AUCTION_PASS_ASK.wallet_name, - wallet_pass=AUCTION_PASS_ASK.wallet_pass, key_name=AUCTION_PASS_ASK.key_name, side="SIDE_SELL", initial_asset_mint=1e10, @@ -366,7 +359,6 @@ def configure_agents( ) ext_auction_pass_bid = OpenAuctionPass( wallet_name=AUCTION_PASS_BID.wallet_name, - wallet_pass=AUCTION_PASS_BID.wallet_pass, key_name=AUCTION_PASS_BID.key_name, side="SIDE_BUY", initial_asset_mint=1e10, @@ -378,7 +370,6 @@ def configure_agents( ) ext_auction_pass_ask = OpenAuctionPass( wallet_name=AUCTION_PASS_ASK.wallet_name, - wallet_pass=AUCTION_PASS_ASK.wallet_pass, key_name=AUCTION_PASS_ASK.key_name, side="SIDE_SELL", initial_asset_mint=1e10, @@ -391,7 +382,6 @@ def configure_agents( int_random_trader = MarketOrderTrader( wallet_name=INT_RANDOM_TRADER.wallet_name, - wallet_pass=INT_RANDOM_TRADER.wallet_pass, key_name=INT_RANDOM_TRADER.key_name, market_name=self.int_name, asset_name=self.asset_name, @@ -403,7 +393,6 @@ def configure_agents( ) ext_random_trader = MarketOrderTrader( wallet_name=EXT_RANDOM_TRADER.wallet_name, - wallet_pass=EXT_RANDOM_TRADER.wallet_pass, key_name=EXT_RANDOM_TRADER.key_name, market_name=self.ext_name, asset_name=self.asset_name, @@ -416,7 +405,6 @@ def configure_agents( int_informed_trader = InformedTrader( wallet_name=INT_INFORMED_TRADER.wallet_name, - wallet_pass=INT_INFORMED_TRADER.wallet_pass, key_name=INT_INFORMED_TRADER.key_name, asset_name=self.asset_name, market_name=self.int_name, diff --git a/vega_sim/scenario/ideal_market_maker/agents.py b/vega_sim/scenario/ideal_market_maker/agents.py index ad5247204..71f13b44f 100644 --- a/vega_sim/scenario/ideal_market_maker/agents.py +++ b/vega_sim/scenario/ideal_market_maker/agents.py @@ -134,7 +134,7 @@ def finalise(self): def initialise(self, vega: VegaServiceNull): # Initialise wallet for LP/ Settle Party super().initialise(vega=vega) - self.vega.create_wallet(self.terminate_wallet_name, self.terminate_wallet_pass) + self.vega.create_key(self.terminate_wallet_name) # Faucet vega tokens self.vega.wait_for_datanode_sync() diff --git a/vega_sim/scenario/ideal_market_maker_v2/agents.py b/vega_sim/scenario/ideal_market_maker_v2/agents.py index 5f27f5ec8..e0005cb4c 100644 --- a/vega_sim/scenario/ideal_market_maker_v2/agents.py +++ b/vega_sim/scenario/ideal_market_maker_v2/agents.py @@ -45,10 +45,8 @@ class OptimalMarketMaker(StateAgentWithWallet): def __init__( self, - wallet_name: str, - wallet_pass: str, - terminate_wallet_name: str, - terminate_wallet_pass: str, + key_name: str, + terminate_key_name: str, price_process: List[float], initial_asset_mint: float = 1000000, spread: float = 0.002, @@ -69,13 +67,10 @@ def __init__( commitment_amount: float = 6000, settlement_price: Optional[float] = None, tag: str = "", - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): - super().__init__( - wallet_name=wallet_name, wallet_pass=wallet_pass, key_name=key_name, tag=tag - ) - self.terminate_wallet_name = terminate_wallet_name - self.terminate_wallet_pass = terminate_wallet_pass + super().__init__(wallet_name=wallet_name, key_name=key_name, tag=tag) + self.terminate_key_name = terminate_key_name self.price_process = price_process self.spread = spread @@ -132,20 +127,23 @@ def __init__( def finalise(self): if self.settlement_price: self.vega.settle_market( - self.terminate_wallet_name, self.settlement_price, self.market_id + self.terminate_key_name, + self.settlement_price, + self.market_id, + wallet_name=self.wallet_name, ) self.current_step += 1 def initialise(self, vega: VegaServiceNull): # Initialise wallet for LP/ Settle Party super().initialise(vega=vega) - self.vega.create_wallet(self.terminate_wallet_name, self.terminate_wallet_pass) + self.vega.create_key(self.terminate_key_name, self.wallet_name) # Faucet vega tokens self.vega.wait_fn(10) self.vega.wait_for_total_catchup() self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset="VOTE", amount=1e4, key_name=self.key_name, @@ -155,7 +153,7 @@ def initialise(self, vega: VegaServiceNull): if self.set_up_market: # Create asset self.vega.create_asset( - self.wallet_name, + wallet_name=self.wallet_name, name=self.asset_name, symbol=self.asset_name, decimals=self.adp, @@ -167,7 +165,7 @@ def initialise(self, vega: VegaServiceNull): self.asset_id = self.vega.find_asset_id(symbol=self.asset_name) # Top up asset self.vega.mint( - self.wallet_name, + wallet_name=self.wallet_name, asset=self.asset_id, amount=self.initial_asset_mint, key_name=self.key_name, @@ -179,13 +177,14 @@ def initialise(self, vega: VegaServiceNull): # Set up a future market self.vega.create_simple_market( market_name=self.market_name, - proposal_wallet=self.wallet_name, + wallet_name=self.wallet_name, settlement_asset_id=self.asset_id, - termination_wallet=self.terminate_wallet_name, + termination_key=self.terminate_key_name, + termination_wallet_name=self.wallet_name, market_decimals=self.mdp, position_decimals=self.market_position_decimal, future_asset=self.asset_name, - key_name=self.key_name, + proposal_key=self.key_name, ) self.vega.wait_for_total_catchup() @@ -319,7 +318,7 @@ def _place_or_amend_order( order_type=vega_protos.Order.Type.TYPE_LIMIT, wait=False, time_in_force=vega_protos.Order.TimeInForce.TIME_IN_FORCE_GTC, - key_name=self.key_name, + trading_key=self.key_name, ) else: self.vega.amend_order( @@ -329,5 +328,5 @@ def _place_or_amend_order( pegged_reference=reference, pegged_offset=offset, volume_delta=volume - order.size, - key_name=self.key_name, + trading_key=self.key_name, ) diff --git a/vega_sim/scenario/ideal_market_maker_v2/scenario.py b/vega_sim/scenario/ideal_market_maker_v2/scenario.py index 8c76a3ce7..88115ebb3 100644 --- a/vega_sim/scenario/ideal_market_maker_v2/scenario.py +++ b/vega_sim/scenario/ideal_market_maker_v2/scenario.py @@ -129,10 +129,8 @@ def configure_agents( self.price_process = price_process market_maker = OptimalMarketMaker( - wallet_name=MM_WALLET.name, - wallet_pass=MM_WALLET.passphrase, - terminate_wallet_name=TERMINATE_WALLET.name, - terminate_wallet_pass=TERMINATE_WALLET.passphrase, + key_name=MM_WALLET.name, + terminate_key_name=TERMINATE_WALLET.name, initial_asset_mint=self.initial_asset_mint, price_process=price_process, spread=self.spread, @@ -155,8 +153,7 @@ def configure_agents( ) trader = MarketOrderTrader( - wallet_name=TRADER_WALLET.name, - wallet_pass=TRADER_WALLET.passphrase, + key_name=TRADER_WALLET.name, initial_asset_mint=self.initial_asset_mint, market_name=market_name, asset_name=asset_name, @@ -168,8 +165,7 @@ def configure_agents( ) background_market = BackgroundMarket( - wallet_name=BACKGROUND_MARKET.name, - wallet_pass=BACKGROUND_MARKET.passphrase, + key_name=BACKGROUND_MARKET.name, market_name=market_name, asset_name=asset_name, initial_asset_mint=self.initial_asset_mint, @@ -183,8 +179,7 @@ def configure_agents( ) auctionpass1 = OpenAuctionPass( - wallet_name=AUCTION1_WALLET.name, - wallet_pass=AUCTION1_WALLET.passphrase, + key_name=AUCTION1_WALLET.name, side="SIDE_BUY", initial_asset_mint=self.initial_asset_mint, initial_price=self.initial_price @@ -197,8 +192,7 @@ def configure_agents( ) auctionpass2 = OpenAuctionPass( - wallet_name=AUCTION2_WALLET.name, - wallet_pass=AUCTION2_WALLET.passphrase, + key_name=AUCTION2_WALLET.name, side="SIDE_SELL", initial_asset_mint=self.initial_asset_mint, initial_price=self.initial_price @@ -211,8 +205,7 @@ def configure_agents( ) # info_trader = InformedTrader( - # wallet_name=INFORMED_WALLET.name, - # wallet_pass=INFORMED_WALLET.passphrase, + # key_name=INFORMED_WALLET.name, # price_process=price_process, # market_name=market_name, # asset_name=asset_name, diff --git a/vega_sim/scenario/market_crash/scenario.py b/vega_sim/scenario/market_crash/scenario.py index db145874e..703963d35 100644 --- a/vega_sim/scenario/market_crash/scenario.py +++ b/vega_sim/scenario/market_crash/scenario.py @@ -133,10 +133,8 @@ def configure_agents( ) market_maker = MarketManager( - wallet_name=MM_WALLET.name, - wallet_pass=MM_WALLET.passphrase, - terminate_wallet_name=TERMINATE_WALLET.name, - terminate_wallet_pass=TERMINATE_WALLET.passphrase, + key_name=MM_WALLET.name, + terminate_key_name=TERMINATE_WALLET.name, asset_decimal=self.asset_decimal, market_decimal=self.market_decimal, commitment_amount=60000, @@ -152,8 +150,6 @@ def configure_agents( for i in range(self.num_noise_traders): noise_traders.append( MarketOrderTrader( - wallet_name=TRADER_WALLET.name, - wallet_pass=TRADER_WALLET.passphrase, market_name=self.market_name, asset_name=self.asset_name, tag=f"{tag}_noise_{i}", @@ -167,8 +163,6 @@ def configure_agents( for i in range(self.num_position_traders): position_traders.append( MarketOrderTrader( - wallet_name=TRADER_WALLET.name, - wallet_pass=TRADER_WALLET.passphrase, market_name=self.market_name, asset_name=self.asset_name, initial_asset_mint=self.position_taker_mint, @@ -181,8 +175,7 @@ def configure_agents( ) background_market = MultiRegimeBackgroundMarket( - wallet_name=BACKGROUND_MARKET.name, - wallet_pass=BACKGROUND_MARKET.passphrase, + key_name=BACKGROUND_MARKET.name, market_name=self.market_name, asset_name=self.asset_name, market_regimes=[ @@ -202,8 +195,7 @@ def configure_agents( ) auctionpass1 = OpenAuctionPass( - wallet_name=AUCTION1_WALLET.name, - wallet_pass=AUCTION1_WALLET.passphrase, + key_name=AUCTION1_WALLET.name, side="SIDE_BUY", initial_price=self.initial_price, market_name=self.market_name, @@ -213,8 +205,7 @@ def configure_agents( ) auctionpass2 = OpenAuctionPass( - wallet_name=AUCTION2_WALLET.name, - wallet_pass=AUCTION2_WALLET.passphrase, + key_name=AUCTION2_WALLET.name, side="SIDE_SELL", initial_price=self.initial_price, market_name=self.market_name, diff --git a/vega_sim/scenario/multi_market/scenario.py b/vega_sim/scenario/multi_market/scenario.py index 859e4bb3e..8b4f0788c 100644 --- a/vega_sim/scenario/multi_market/scenario.py +++ b/vega_sim/scenario/multi_market/scenario.py @@ -47,7 +47,6 @@ from vega_sim.scenario.scenario import Scenario from vega_sim.environment.environment import MarketEnvironmentWithState from vega_sim.null_service import VegaServiceNull -from vega_sim.scenario.constants import Network from vega_sim.scenario.multi_market.agents import ( MARKET_MANAGERS, MARKET_MAKERS, @@ -187,10 +186,8 @@ def configure_agents( # Create MarketManager agents market_a_manager = MarketManager( wallet_name=MARKET_MANAGERS["MARKET_A_CREATOR"].wallet_name, - wallet_pass=MARKET_MANAGERS["MARKET_A_CREATOR"].wallet_name, key_name=MARKET_MANAGERS["MARKET_A_CREATOR"].key_name, terminate_wallet_name=MARKET_MANAGERS["MARKET_A_SETTLER"].wallet_name, - terminate_wallet_pass=MARKET_MANAGERS["MARKET_A_SETTLER"].wallet_name, terminate_key_name=MARKET_MANAGERS["MARKET_A_SETTLER"].key_name, market_name=self.market_a_args["name"], asset_name=self.market_a_args["asset"], @@ -202,10 +199,8 @@ def configure_agents( ) market_b_manager = MarketManager( wallet_name=MARKET_MANAGERS["MARKET_B_CREATOR"].wallet_name, - wallet_pass=MARKET_MANAGERS["MARKET_B_CREATOR"].wallet_name, key_name=MARKET_MANAGERS["MARKET_B_CREATOR"].key_name, terminate_wallet_name=MARKET_MANAGERS["MARKET_B_SETTLER"].wallet_name, - terminate_wallet_pass=MARKET_MANAGERS["MARKET_B_SETTLER"].wallet_name, terminate_key_name=MARKET_MANAGERS["MARKET_B_SETTLER"].key_name, market_name=self.market_b_args["name"], asset_name=self.market_b_args["asset"], @@ -217,10 +212,8 @@ def configure_agents( ) market_c_manager = MarketManager( wallet_name=MARKET_MANAGERS["MARKET_B_CREATOR"].wallet_name, - wallet_pass=MARKET_MANAGERS["MARKET_B_CREATOR"].wallet_name, key_name=MARKET_MANAGERS["MARKET_B_CREATOR"].key_name, terminate_wallet_name=MARKET_MANAGERS["MARKET_C_SETTLER"].wallet_name, - terminate_wallet_pass=MARKET_MANAGERS["MARKET_C_SETTLER"].wallet_name, terminate_key_name=MARKET_MANAGERS["MARKET_C_SETTLER"].key_name, market_name=self.market_c_args["name"], asset_name=self.market_c_args["asset"], @@ -234,7 +227,6 @@ def configure_agents( # Create ExponentialShapedMarketMaker agents market_a_maker = ExponentialShapedMarketMaker( wallet_name=MARKET_MAKERS["MARKET_A_MAKER"].wallet_name, - wallet_pass=MARKET_MAKERS["MARKET_A_MAKER"].wallet_pass, key_name=MARKET_MAKERS["MARKET_A_MAKER"].key_name, price_process_generator=iter(market_a_price_process), initial_asset_mint=self.initial_asset_mint, @@ -251,7 +243,6 @@ def configure_agents( ) market_b_maker = ExponentialShapedMarketMaker( wallet_name=MARKET_MAKERS["MARKET_B_MAKER"].wallet_name, - wallet_pass=MARKET_MAKERS["MARKET_B_MAKER"].wallet_pass, key_name=MARKET_MAKERS["MARKET_B_MAKER"].key_name, price_process_generator=iter(market_b_price_process), initial_asset_mint=self.initial_asset_mint, @@ -268,7 +259,6 @@ def configure_agents( ) market_c_maker = ExponentialShapedMarketMaker( wallet_name=MARKET_MAKERS["MARKET_C_MAKER"].wallet_name, - wallet_pass=MARKET_MAKERS["MARKET_C_MAKER"].wallet_pass, key_name=MARKET_MAKERS["MARKET_C_MAKER"].key_name, price_process_generator=iter(market_c_price_process), initial_asset_mint=self.initial_asset_mint, @@ -287,7 +277,6 @@ def configure_agents( # Setup agents for passing auction market_a_passer_bid = OpenAuctionPass( wallet_name=MARKET_PASSERS["MARKET_A_PASSER_BID"].wallet_name, - wallet_pass=MARKET_PASSERS["MARKET_A_PASSER_BID"].wallet_pass, key_name=MARKET_PASSERS["MARKET_A_PASSER_BID"].key_name, side="SIDE_BUY", initial_asset_mint=self.initial_asset_mint, @@ -299,7 +288,6 @@ def configure_agents( ) market_a_passer_ask = OpenAuctionPass( wallet_name=MARKET_PASSERS["MARKET_A_PASSER_ASK"].wallet_name, - wallet_pass=MARKET_PASSERS["MARKET_A_PASSER_ASK"].wallet_pass, key_name=MARKET_PASSERS["MARKET_A_PASSER_ASK"].key_name, side="SIDE_SELL", initial_asset_mint=self.initial_asset_mint, @@ -311,7 +299,6 @@ def configure_agents( ) market_b_passer_bid = OpenAuctionPass( wallet_name=MARKET_PASSERS["MARKET_B_PASSER_BID"].wallet_name, - wallet_pass=MARKET_PASSERS["MARKET_B_PASSER_BID"].wallet_pass, key_name=MARKET_PASSERS["MARKET_B_PASSER_BID"].key_name, side="SIDE_BUY", initial_asset_mint=self.initial_asset_mint, @@ -323,7 +310,6 @@ def configure_agents( ) market_b_passer_ask = OpenAuctionPass( wallet_name=MARKET_PASSERS["MARKET_B_PASSER_ASK"].wallet_name, - wallet_pass=MARKET_PASSERS["MARKET_B_PASSER_ASK"].wallet_pass, key_name=MARKET_PASSERS["MARKET_B_PASSER_ASK"].key_name, side="SIDE_SELL", initial_asset_mint=self.initial_asset_mint, @@ -335,7 +321,6 @@ def configure_agents( ) market_c_passer_bid = OpenAuctionPass( wallet_name=MARKET_PASSERS["MARKET_C_PASSER_BID"].wallet_name, - wallet_pass=MARKET_PASSERS["MARKET_C_PASSER_BID"].wallet_pass, key_name=MARKET_PASSERS["MARKET_C_PASSER_BID"].key_name, side="SIDE_BUY", initial_asset_mint=self.initial_asset_mint, @@ -347,7 +332,6 @@ def configure_agents( ) market_c_passer_ask = OpenAuctionPass( wallet_name=MARKET_PASSERS["MARKET_C_PASSER_ASK"].wallet_name, - wallet_pass=MARKET_PASSERS["MARKET_C_PASSER_ASK"].wallet_pass, key_name=MARKET_PASSERS["MARKET_C_PASSER_ASK"].key_name, side="SIDE_SELL", initial_asset_mint=self.initial_asset_mint, diff --git a/vega_sim/scenario/parameter_experiment/scenario.py b/vega_sim/scenario/parameter_experiment/scenario.py index 0a1f77ef3..3b294c1d5 100644 --- a/vega_sim/scenario/parameter_experiment/scenario.py +++ b/vega_sim/scenario/parameter_experiment/scenario.py @@ -142,10 +142,8 @@ def configure_agents( market_manager = ConfigurableMarketManager( proposal_wallet_name="vega", - proposal_wallet_pass="pass", proposal_key_name="market_proposer", termination_wallet_name="vega", - termination_wallet_pass="pass", termination_key_name="market_settler", market_config=market_config, market_name=market_name, @@ -158,7 +156,6 @@ def configure_agents( market_maker = ExponentialShapedMarketMaker( wallet_name="vega", - wallet_pass="pass", key_name="market_maker", price_process_generator=iter(price_process), initial_asset_mint=1e10, @@ -184,7 +181,6 @@ def configure_agents( simple_liquidity_providers = [ SimpleLiquidityProvider( wallet_name="vega", - wallet_pass="pass", key_name="simple_lp_c", market_name=market_name, asset_name=asset_name, @@ -202,7 +198,7 @@ def configure_agents( ask_outer_bound_fn=lambda vega_state, market_id: vega_state.market_state[ market_id ].max_valid_price, - offset_proportion=0.06, + offset_proportion=0.16, fee=0.001, ) for i, offset in enumerate([0.02, 0.04, 0.06]) @@ -211,7 +207,6 @@ def configure_agents( # Create fixed auction pass agents open_auction_pass_bid = OpenAuctionPass( wallet_name="vega", - wallet_pass="pass", key_name="auction_trader_bid", side="SIDE_BUY", initial_asset_mint=1e9, @@ -223,7 +218,6 @@ def configure_agents( ) open_auction_pass_ask = OpenAuctionPass( wallet_name="vega", - wallet_pass="pass", key_name="auction_trader_ask", side="SIDE_SELL", initial_asset_mint=1e9, @@ -236,7 +230,6 @@ def configure_agents( informed_trader = InformedTrader( wallet_name="vega", - wallet_pass="pass", key_name="informed_trade", price_process=price_process, market_name=market_name, @@ -253,7 +246,6 @@ def configure_agents( random_traders = [ MarketOrderTrader( wallet_name="vega", - wallet_pass="pass", key_name=f"random_trader_{i}", market_name=market_name, asset_name=asset_name, @@ -273,7 +265,6 @@ def configure_agents( sensitive_traders = [ PriceSensitiveLimitOrderTrader( wallet_name="vega", - wallet_pass="pass", key_name="sensitive_trader", market_name=market_name, asset_name=asset_name, diff --git a/vega_sim/service.py b/vega_sim/service.py index e557dc27c..e6dfa8f97 100644 --- a/vega_sim/service.py +++ b/vega_sim/service.py @@ -294,32 +294,26 @@ def login(self, name: str, passphrase: str) -> str: """ return self.wallet.login(name=name, passphrase=passphrase) - def create_wallet( - self, name: str, passphrase: str, key_name: Optional[str] = None - ) -> str: - """Logs in to existing wallet in the given vega service. + def create_key(self, name: str, wallet_name: Optional[str] = None) -> str: + """Creates a key within the default wallet. Args: name: - str, The name of the wallet - passphrase: - str, The login passphrase used when creating the wallet - key_name: - str, optional, Name of key in wallet for agent to use. Defaults + str, The name of the key to use + wallet_name: + str, optional, Name of wallet containing key for agent to use. Defaults to value in the environment variable "VEGA_DEFAULT_KEY_NAME". Returns: - str, public key associated to this waller + str, public key associated to this wallet """ - return self.wallet.create_wallet( - name=name, passphrase=passphrase, key_name=key_name - ) + return self.wallet.create_key(wallet_name=wallet_name, name=name) def mint( self, - wallet_name: str, + key_name: Optional[str], asset: str, amount: float, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> None: """Mints a given amount of requested asset into the associated wallet @@ -339,7 +333,7 @@ def mint( ).general faucet.mint( - self.wallet.public_key(wallet_name, key_name), + self.wallet.public_key(wallet_name=wallet_name, name=key_name), asset, num_to_padded_int(amount, asset_decimals), faucet_url=self.faucet_url, @@ -379,13 +373,13 @@ def forward(self, time: str) -> None: def create_asset( self, - wallet_name: str, + key_name: str, name: str, symbol: str, decimals: int = 0, quantum: int = 1, max_faucet_amount: int = 10e9, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): """Creates a simple asset and automatically approves the proposal (assuming the proposing wallet has sufficient governance tokens). @@ -436,9 +430,9 @@ def create_asset( def create_market_from_config( self, - proposal_wallet_name: str, + proposal_key_name: str, market_config: market.MarketConfig, - proposal_key_name: Optional[str] = None, + proposal_wallet_name: Optional[str] = None, ): blockchain_time_seconds = gov.get_blockchain_time(self.trading_data_client_v2) @@ -464,9 +458,9 @@ def create_market_from_config( def create_simple_market( self, market_name: str, - proposal_wallet: str, + proposal_key: str, settlement_asset_id: str, - termination_wallet: str, + termination_key: str, future_asset: Optional[str] = None, position_decimals: Optional[int] = None, market_decimals: Optional[int] = None, @@ -476,34 +470,35 @@ def create_simple_market( price_monitoring_parameters: Optional[ vega_protos.markets.PriceMonitoringParameters ] = None, - key_name: Optional[str] = None, - termination_key: Optional[str] = None, + wallet_name: Optional[str] = None, + termination_wallet_name: Optional[str] = None, ) -> None: """Creates a simple futures market with a predefined reasonable set of parameters. - Args: - market_name:c - str, name of the market - proposal_wallet: - str, the name of the wallet to use for proposing the market - settlement_asset_id: - str, the asset id the market will use for settlement - termination_wallet: - str, the name of the wallet which will be used to send termination data - position_decimals: - int, the decimal place precision to use for positions - (e.g. 2 means 2dp, so 200 => 2.00, 3 would mean 200 => 0.2) - market_decimals: - int, the decimal place precision to use for market prices - (e.g. 2 means 2dp, so 200 => 2.00, 3 would mean 200 => 0.2) - price_monitoring_parameters: - PriceMonitoringParameters, A set of parameters determining when the - market will drop into a price auction. If not passed defaults - to a very permissive setup - key_name: - Optional[str], name of key proposing market. Defaults to None. - termination_key: - Optional[str], name of key settling market. Defaults to None. + Args: + market_name: + str, name of the market + proposal_key: + str, the name of the key to use for proposing the market + settlement_asset_id: + str, the asset id the market will use for settlement + termination_key: + str, the name of the key which will be used to send termination data + position_decimals: + int, the decimal place precision to use for positions + (e.g. 2 means 2dp, so 200 => 2.00, 3 would mean 200 => 0.2) + market_decimals: + int, the decimal place precision to use for market prices + (e.g. 2 means 2dp, so 200 => 2.00, 3 would mean 200 => 0.2) + price_monitoring_parameters: + PriceMonitoringParameters, A set of parameters determining when the + market will drop into a price auction. If not passed defaults + to a very permissive setup + wallet_name: Optional[str] = None, + : + Optional[str], name of wallet proposing market. Defaults to None. + termination_wallet_name: + Optional[str], name of wallet settling market. Defaults to None. """ additional_kwargs = {} @@ -520,12 +515,12 @@ def create_simple_market( proposal_id = gov.propose_future_market( market_name=market_name, wallet=self.wallet, - wallet_name=proposal_wallet, - key_name=key_name, + wallet_name=wallet_name, + key_name=proposal_key, settlement_asset_id=settlement_asset_id, data_client=self.trading_data_client_v2, termination_pub_key=self.wallet.public_key( - termination_wallet, termination_key + wallet_name=termination_wallet_name, name=termination_key ), position_decimals=position_decimals, market_decimals=market_decimals, @@ -539,27 +534,27 @@ def create_simple_market( gov.approve_proposal( proposal_id=proposal_id, wallet=self.wallet, - wallet_name=proposal_wallet, - key_name=key_name, + wallet_name=wallet_name, + key_name=proposal_key, ) self.wait_fn(110) def submit_market_order( self, - trading_wallet: str, + trading_key: str, market_id: str, side: Union[vega_protos.vega.Side, str], volume: float, fill_or_kill: bool = True, wait: bool = True, order_ref: Optional[str] = None, - key_name: Optional[str] = None, + trading_wallet: Optional[str] = None, ) -> str: """Places a simple Market order, either as Fill-Or-Kill or Immediate-Or-Cancel. Args: - trading_wallet: - str, the name of the wallet to use for trading + trading_key: + str, the name of the key to use for trading market_name: str, name of the market side: @@ -571,8 +566,8 @@ def submit_market_order( If true, will raise an error if order is not accepted order_ref: optional str, reference for later identification of order - key_name: - optional str, name of key in wallet to use + wallet_name: + optional str, name of wallet to use Returns: str, The ID of the order @@ -587,12 +582,12 @@ def submit_market_order( volume=volume, wait=wait, order_ref=order_ref, - key_name=key_name, + trading_key=trading_key, ) def submit_order( self, - trading_wallet: str, + trading_key: str, market_id: str, order_type: Union[vega_protos.vega.Order.Type, str], time_in_force: Union[vega_protos.vega.Order.TimeInForce, str], @@ -603,15 +598,15 @@ def submit_order( pegged_order: Optional[PeggedOrder] = None, wait: bool = True, order_ref: Optional[str] = None, - key_name: Optional[str] = None, + trading_wallet: Optional[str] = None, ) -> Optional[str]: """ Submit orders as specified to required pre-existing market. Optionally wait for acceptance of order (raises on non-acceptance) Args: - trading_wallet: - str, the name of the wallet to use for trading + trading_key: + str, the name of the key to use for trading market_id: str, the ID of the required market on vega order_type: @@ -685,20 +680,22 @@ def submit_order( volume=submit_volume, price=str(submit_price) if submit_price is not None else None, expires_at=int(expires_at) if expires_at is not None else None, - pegged_order=vega_protos.vega.PeggedOrder( - reference=pegged_order.reference, - offset=str( - num_to_padded_int( - pegged_order.offset, self.market_price_decimals[market_id] - ) - ), - ) - if pegged_order is not None - else None, + pegged_order=( + vega_protos.vega.PeggedOrder( + reference=pegged_order.reference, + offset=str( + num_to_padded_int( + pegged_order.offset, self.market_price_decimals[market_id] + ) + ), + ) + if pegged_order is not None + else None + ), wait=wait, time_forward_fn=lambda: self.wait_fn(2), order_ref=order_ref, - key_name=key_name, + key_name=trading_key, ) def get_blockchain_time(self) -> int: @@ -707,7 +704,7 @@ def get_blockchain_time(self) -> int: def amend_order( self, - trading_wallet: str, + trading_key: str, market_id: str, order_id: str, price: Optional[float] = None, @@ -716,14 +713,14 @@ def amend_order( pegged_reference: Optional[vega_protos.vega.PeggedReference] = None, volume_delta: float = 0, time_in_force: Optional[Union[vega_protos.vega.Order.TimeInForce, str]] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): """ Amend a Limit order by orderID in the specified market Args: - trading_wallet: - str, the name of the wallet to use for trading + trading_key: + str, the name of the key to use for trading market_id: str, the ID of the required market on vega order_type: @@ -741,46 +738,50 @@ def amend_order( TIME_IN_FORCE_FOK) See API documentation for full list of options Defaults to Fill or Kill - key_name: - optional str, name of key in wallet to use + wallet_name: + optional str, name of wallet to use """ trading.amend_order( wallet=self.wallet, - wallet_name=trading_wallet, + key_name=trading_key, + wallet_name=wallet_name, market_id=market_id, order_id=order_id, - price=str( - num_to_padded_int( - price, - self.market_price_decimals[market_id], + price=( + str( + num_to_padded_int( + price, + self.market_price_decimals[market_id], + ) ) - ) - if price is not None - else None, + if price is not None + else None + ), expires_at=expires_at, - pegged_offset=str( - num_to_padded_int( - pegged_offset, - self.market_price_decimals[market_id], + pegged_offset=( + str( + num_to_padded_int( + pegged_offset, + self.market_price_decimals[market_id], + ) ) - ) - if pegged_offset is not None - else None, + if pegged_offset is not None + else None + ), pegged_reference=pegged_reference, volume_delta=num_to_padded_int( volume_delta, self.market_pos_decimals[market_id], ), time_in_force=time_in_force, - key_name=key_name, ) def cancel_order( self, - trading_wallet: str, + trading_key: str, market_id: str, order_id: str, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): """ Cancel Order @@ -795,14 +796,14 @@ def cancel_order( """ trading.cancel_order( wallet=self.wallet, - wallet_name=trading_wallet, + wallet_name=wallet_name, market_id=market_id, order_id=order_id, - key_name=key_name, + key_name=trading_key, ) def update_network_parameter( - self, proposal_wallet: str, parameter: str, new_value: str, key_name: str = None + self, proposal_key: str, parameter: str, new_value: str, wallet_name: str = None ): """Updates a network parameter by first proposing and then voting to approve the change, followed by advancing the network time period forwards. @@ -811,14 +812,14 @@ def update_network_parameter( the proposal will be approved. Otherwise others may need to vote too. Args: - proposal_wallet: - str, the wallet proposing the change + proposal_key: + str, the key proposing the change parameter: str, the parameter to change new_value: str, the new value to set - key_name: - str, optional, the wallet key proposing the change + wallet_name: + str, optional, the wallet proposing the change Returns: str, the ID of the proposal """ @@ -828,24 +829,24 @@ def update_network_parameter( parameter=parameter, value=new_value, wallet=self.wallet, - wallet_name=proposal_wallet, + wallet_name=wallet_name, data_client=self.trading_data_client_v2, closing_time=blockchain_time_seconds + self.seconds_per_block * 90, enactment_time=blockchain_time_seconds + self.seconds_per_block * 100, time_forward_fn=lambda: self.wait_fn(2), - key_name=key_name, + key_name=proposal_key, ) gov.approve_proposal( proposal_id=proposal_id, wallet=self.wallet, - wallet_name=proposal_wallet, - key_name=key_name, + wallet_name=wallet_name, + key_name=proposal_key, ) self.wait_fn(110) def update_market( self, - proposal_wallet: str, + proposal_key: str, market_id: str, updated_instrument: Optional[UpdateInstrumentConfiguration] = None, updated_metadata: Optional[str] = None, @@ -855,16 +856,16 @@ def update_market( ] = None, updated_simple_model_params: Optional[SimpleModelParams] = None, updated_log_normal_risk_model: Optional[LogNormalRiskModel] = None, + wallet_name: Optional[int] = None, updated_lp_price_range: Optional[float] = None, - key_name: Optional[int] = None, ): """Updates a market based on proposal parameters. Will attempt to propose and then immediately vote on the market change before forwarding time for the enactment to also take effect Args: - proposal_wallet: - str, the wallet proposing the change + proposal_key: + str, the key proposing the change market_id: str, the market to change new_value: @@ -928,25 +929,32 @@ def update_market( update_configuration = UpdateMarketConfiguration( instrument=updated_instrument, - price_monitoring_parameters=updated_price_monitoring_parameters - if updated_price_monitoring_parameters is not None - else current_market.price_monitoring_settings.parameters, - liquidity_monitoring_parameters=updated_liquidity_monitoring_parameters - if updated_liquidity_monitoring_parameters is not None - else current_market.liquidity_monitoring_parameters, + price_monitoring_parameters=( + updated_price_monitoring_parameters + if updated_price_monitoring_parameters is not None + else current_market.price_monitoring_settings.parameters + ), + liquidity_monitoring_parameters=( + updated_liquidity_monitoring_parameters + if updated_liquidity_monitoring_parameters is not None + else current_market.liquidity_monitoring_parameters + ), simple=updated_simple_model_params, log_normal=updated_log_normal_risk_model, metadata=updated_metadata, - lp_price_range=str(updated_lp_price_range) - if updated_lp_price_range is not None - else current_market.lp_price_range, + lp_price_range=( + str(updated_lp_price_range) + if updated_lp_price_range is not None + else current_market.lp_price_range + ), ) proposal_id = gov.propose_market_update( market_update=update_configuration, market_id=market_id, wallet=self.wallet, - wallet_name=proposal_wallet, + key_name=proposal_key, + wallet_name=wallet_name, data_client=self.trading_data_client_v2, closing_time=blockchain_time_seconds + self.seconds_per_block * 90, enactment_time=blockchain_time_seconds + self.seconds_per_block * 100, @@ -955,16 +963,17 @@ def update_market( gov.approve_proposal( proposal_id=proposal_id, wallet=self.wallet, - wallet_name=proposal_wallet, + key_name=proposal_key, + wallet_name=wallet_name, ) self.wait_fn(110) def settle_market( self, - settlement_wallet: str, + settlement_key: str, settlement_price: float, market_id: str, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): future_inst = data_raw.market_info( market_id, data_client=self.trading_data_client_v2 @@ -979,25 +988,25 @@ def settle_market( gov.settle_oracle( wallet=self.wallet, - wallet_name=settlement_wallet, + wallet_name=wallet_name, oracle_name=oracle_name, settlement_price=num_to_padded_int( settlement_price, decimals=filter_key.number_decimal_places ), - key_name=key_name, + key_name=settlement_key, ) def party_account( self, - wallet_name: str, + key_name: str, asset_id: str, market_id: str, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> data.PartyMarketAccount: """Output money in general accounts/margin accounts/bond accounts (if exists) of a party.""" return data.party_account( - self.wallet.public_key(wallet_name, key_name), + self.wallet.public_key(wallet_name=wallet_name, name=key_name), asset_id=asset_id, market_id=market_id, data_client=self.trading_data_client_v2, @@ -1028,9 +1037,11 @@ def list_accounts( """ return data.list_accounts( data_client=self.trading_data_client_v2, - pub_key=self.wallet.public_key(wallet_name, key_name) - if wallet_name is not None - else None, + pub_key=( + self.wallet.public_key(wallet_name=wallet_name, name=key_name) + if key_name is not None + else None + ), asset_id=asset_id, market_id=market_id, asset_decimals_map=self.asset_decimals, @@ -1038,13 +1049,13 @@ def list_accounts( def positions_by_market( self, - wallet_name: str, + key_name: str, market_id: Optional[str] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> List[vega_protos.vega.Position]: """Output positions of a party.""" return data.positions_by_market( - pub_key=self.wallet.public_key(wallet_name, key_name), + pub_key=self.wallet.public_key(wallet_name=wallet_name, name=key_name), market_id=market_id, data_client=self.trading_data_client_v2, market_price_decimals_map=self.market_price_decimals, @@ -1204,7 +1215,7 @@ def open_orders_by_market( def submit_simple_liquidity( self, - wallet_name: str, + key_name: str, market_id: str, commitment_amount: float, fee: float, @@ -1213,13 +1224,13 @@ def submit_simple_liquidity( delta_buy: float, delta_sell: float, is_amendment: Optional[bool] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): """Submit/Amend a simple liquidity commitment (LP) with a single amount on each side. Args: - wallet_name: - str, The name of the wallet which is placing the order + key_name: + str, The name of the key which is placing the order market_id: str, The ID of the market to place the commitment on commitment_amount: @@ -1236,6 +1247,8 @@ def submit_simple_liquidity( float, the offset from reference point for the buy side of LP delta_sell: float, the offset from reference point for the sell side of LP + wallet_name: + str, The name of the wallet which is placing the order """ asset_id = data_raw.market_info( market_id=market_id, data_client=self.trading_data_client_v2 @@ -1271,34 +1284,32 @@ def submit_simple_liquidity( def has_liquidity_provision( self, - wallet_name: str, + key_name: str, market_id: str, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): return data.has_liquidity_provision( self.trading_data_client_v2, market_id, - party_id=self.wallet.public_key(wallet_name, key_name), + party_id=self.wallet.public_key(wallet_name=wallet_name, name=key_name), ) def submit_liquidity( self, - wallet_name: str, + key_name: str, market_id: str, commitment_amount: float, fee: float, buy_specs: List[Tuple[str, float, int]], sell_specs: List[Tuple[str, float, int]], is_amendment: Optional[bool] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): """Submit/Amend a custom liquidity profile. Args: - wallet_name: - str, the wallet name performing the action - wallet: - Wallet, wallet client + key_name: + str, the key name performing the action market_id: str, The ID of the market to place the commitment on commitment_amount: @@ -1315,8 +1326,11 @@ def submit_liquidity( List[Tuple[str, int, int]], List of tuples, each containing a reference point in their first position, a desired offset in their second and a proportion in third - key_name: - optional, str name of key in wallet to use + is_amendment: + Optional bool, Is the submission an amendment to an existing provision + If None, will query the network to check. + wallet_name: + optional, str name of wallet to use """ asset_id = self.market_to_asset[market_id] market_decimals = self.market_price_decimals[market_id] @@ -1428,12 +1442,12 @@ def order_status_from_feed( def orders_for_party_from_feed( self, - wallet_name: str, + key_name: str, market_id: str, live_only: bool = True, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> Dict[str, data.Order]: - party_id = self.wallet.public_key(wallet_name, key_name) + party_id = self.wallet.public_key(wallet_name=wallet_name, name=key_name) return self.data_cache.orders_for_party_from_feed( party_id=party_id, market_id=market_id, live_only=live_only ) @@ -1475,56 +1489,59 @@ def liquidity_provisions( def party_liquidity_provisions( self, - wallet_name: str, + key_name: str, market_id: Optional[str] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> Optional[List[vega_protos.vega.LiquidityProvision]]: """Loads the current liquidity provision(s) for a given market and/or party. Args: + key_name: + str, key name stored in metadata. market_id: Optional[str], the ID of the market from which to pull liquidity provisions party_id: Optional[str], the ID of the party from which to pull liquidity provisions - key_name: - Optional[str], key name stored in metadata. Defaults to None. + wallet_name: + Optional[str], Specify a different wallet name to default Returns: List[LiquidityProvision], list of liquidity provisions (if any exist) """ return self.liquidity_provisions( - market_id=market_id, party_id=self.wallet.public_key(wallet_name, key_name) + market_id=market_id, + party_id=self.wallet.public_key(wallet_name=wallet_name, name=key_name), ) def margin_levels( self, - wallet_name: str, + key_name: str = None, market_id: Optional[str] = None, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ) -> List[data.MarginLevels]: return data.margin_levels( self.trading_data_client_v2, - party_id=self.wallet.public_key(wallet_name, key_name), + party_id=self.wallet.public_key(wallet_name=wallet_name, name=key_name), market_id=market_id, ) def list_orders( self, - wallet_name: str, key_name: str, market_id: str, + wallet_name: Optional[str] = None, reference: Optional[str] = None, live_only: Optional[bool] = True, ) -> List[data.Order]: """Return a list of orders for the specified market and party. Args: - wallet_name (str): - Name of wallet to return orders for. key_name (str): Name of key to return orders for. + wallet_name (str): + Name of wallet to return orders for. market_id (str): Id of market to return orders from. reference (Optional[str]): @@ -1539,7 +1556,7 @@ def list_orders( return data.list_orders( data_client=self.trading_data_client_v2, market_id=market_id, - party_id=self.wallet.public_key(name=wallet_name, key_name=key_name), + party_id=self.wallet.public_key(wallet_name=wallet_name, name=key_name), reference=reference, live_only=live_only, ) @@ -1553,16 +1570,16 @@ def get_ledger_entries_from_stream( transfer_type: Optional[str] = None, ) -> List[data.LedgerEntry]: return self.data_cache.get_ledger_entries_from_stream( - party_id_from=self.wallet.public_key( - name=wallet_name_from, key_name=key_name_from - ) - if wallet_name_from is not None - else None, - party_id_to=self.wallet.public_key( - name=wallet_name_to, key_name=key_name_to - ) - if wallet_name_to is not None - else None, + party_id_from=( + self.wallet.public_key(wallet_name=wallet_name_from, name=key_name_from) + if wallet_name_from is not None + else None + ), + party_id_to=( + self.wallet.public_key(wallet_name=wallet_name_to, name=key_name_to) + if wallet_name_to is not None + else None + ), transfer_type=transfer_type, ) @@ -1594,7 +1611,7 @@ def get_trades_from_stream( restrictions. """ party_id = ( - self.wallet.public_key(wallet_name, key_name) + self.wallet.public_key(wallet_name=wallet_name, name=key_name) if key_name is not None else None ) @@ -1635,14 +1652,16 @@ def get_trades( asset_dp = self.asset_decimals[self.market_to_asset[market_id]] return data.get_trades( self.trading_data_client_v2, - party_id=self.wallet.public_key(wallet_name, key_name) - if key_name is not None - else None, + party_id=( + self.wallet.public_key(wallet_name=wallet_name, name=key_name) + if key_name is not None + else None + ), market_id=market_id, order_id=order_id, - market_asset_decimals_map={market_id: asset_dp} - if market_id is not None - else None, + market_asset_decimals_map=( + {market_id: asset_dp} if market_id is not None else None + ), market_position_decimals_map=self.market_pos_decimals, market_price_decimals_map=self.market_price_decimals, ) @@ -1723,9 +1742,9 @@ def create_order_amendment( size_delta=size_delta, expires_at=expires_at, time_in_force=time_in_force, - pegged_offset=str(pegged_offset) - if pegged_offset is not None - else pegged_offset, + pegged_offset=( + str(pegged_offset) if pegged_offset is not None else pegged_offset + ), pegged_reference=pegged_reference, ) @@ -1858,8 +1877,8 @@ def create_order_submission( def submit_instructions( self, - wallet_name: str, - key_name: Optional[str] = None, + key_name: str, + wallet_name: Optional[str] = None, cancellations: Optional[List[OrderCancellation]] = None, amendments: Optional[List[OrderAmendment]] = None, submissions: Optional[List[OrderSubmission]] = None, @@ -1875,10 +1894,10 @@ def submit_instructions( the instructions in multiple batches adhering to the above rules. Args: - wallet_name (str): + key_name (str): + Name of key to submit transaction from. + wallet_name (Optional str): Name of wallet to submit transaction from. - key_name (Optional[str], optional): - Name of key to submit transaction from. Defaults to None. cancellations (Optional[ List[OrderCancellation] ]): List of OrderCancellation objects to submit. Defaults to None. amendments (Optional[ List[OrderAmendment] ]): @@ -1983,24 +2002,24 @@ def ping_datanode(self, max_time_diff: int = 30): def one_off_transfer( self, - from_wallet_name: str, - to_wallet_name: str, + from_key_name: str, + to_key_name: str, from_account_type: vega_protos.vega.AccountType, to_account_type: vega_protos.vega.AccountType, asset: str, amount: float, reference: Optional[str] = None, - from_key_name: Optional[str] = None, - to_key_name: Optional[str] = None, + from_wallet_name: Optional[str] = None, + to_wallet_name: Optional[str] = None, delay: Optional[int] = None, ): """Submit a one off transfer command. Args: - from_wallet_name (str): - Name of wallet to transfer from. - to_wallet_name (str): - Name of wallet to transfer to. + from_key_name (str): + Name of key in wallet to send from. + to_key_name (str): + Name of key in wallet to send to. from_account_type (vega_protos.vega.AccountType): Type of Vega account to transfer from. to_account_type (vega_protos.vega.AccountType): @@ -2011,10 +2030,10 @@ def one_off_transfer( Amount of asset to transfer. reference (Optional[str], optional): Reference to assign to transfer. Defaults to None. - from_key_name (Optional[str], optional): - Name of key in wallet to send from. Defaults to None. - to_key_name (Optional[str], optional): - Name of key in wallet to send to. Defaults to None. + from_wallet_name (Optional[str], optional): + Name of wallet to transfer from. + to_wallet_name (Optional[str], optional): + Name of wallet to transfer to. delay (Optional[int], optional): Delay in seconds to add before transfer is sent. Defaults to None. """ @@ -2030,7 +2049,7 @@ def one_off_transfer( wallet_name=from_wallet_name, key_name=from_key_name, from_account_type=from_account_type, - to=self.wallet.public_key(name=to_wallet_name, key_name=to_key_name), + to=self.wallet.public_key(wallet_name=to_wallet_name, name=to_key_name), to_account_type=to_account_type, asset=asset, amount=str(num_to_padded_int(amount, adp)), @@ -2060,7 +2079,7 @@ def list_transfers( """ party_id = ( - self.wallet.public_key(name=wallet_name, key_name=key_name) + self.wallet.public_key(wallet_name=wallet_name, name=key_name) if wallet_name is not None else None ) @@ -2092,7 +2111,7 @@ def get_liquidity_fee_shares( data_client=self.trading_data_client_v2, market_id=market_id, party_id=( - self.wallet.public_key(name=wallet_name, key_name=key_name) + self.wallet.public_key(wallet_name=wallet_name, name=key_name) if wallet_name is not None else None ), diff --git a/vega_sim/vegahome/config/wallet-service/config.toml b/vega_sim/vegahome/config/wallet-service/config.toml new file mode 100644 index 000000000..72ac22725 --- /dev/null +++ b/vega_sim/vegahome/config/wallet-service/config.toml @@ -0,0 +1,8 @@ +LogLevel = "info" + +[Server] + Port = "TO_BE_SET" + Host = "127.0.0.1" + +[APIV1] + MaximumTokenDuration = "168h0m0s" \ No newline at end of file diff --git a/vega_sim/vegahome/data/wallets/1RkMQOfoswtvmoiXrL1U b/vega_sim/vegahome/data/wallets/1RkMQOfoswtvmoiXrL1U deleted file mode 100755 index 7fa1c2b98..000000000 Binary files a/vega_sim/vegahome/data/wallets/1RkMQOfoswtvmoiXrL1U and /dev/null differ diff --git a/vega_sim/vegahome/data/wallets/AcZ6sIcH b/vega_sim/vegahome/data/wallets/AcZ6sIcH deleted file mode 100644 index ca303d0ee..000000000 --- a/vega_sim/vegahome/data/wallets/AcZ6sIcH +++ /dev/null @@ -1,3 +0,0 @@ - }aYV4RΙm|g% OŅ /@f]=Prn<߯<[/ܛ&v}8I"Tav=1TZCwd),jrK'JB~~O4˴4*J `X%t<̫,vz8@VAQ,,hFYuO^4 ~%9*gb3܆7ʓuNr0a.$WBҢbyoWt{;˯0oQ`5-=~O^,gE!17z-0ǢX%^ -gJϰN`zWc@p-=XqW/9 }W|Cy~N3rER7b*4'~TfeUϐDvs3J6pTg2mQD& -,4Fg!㹹PK@oBR BsSP!P^zDG;ٴ }T.N \ No newline at end of file diff --git a/vega_sim/vegahome/data/wallets/lLK8PvgpGBOwap3v1DdY b/vega_sim/vegahome/data/wallets/lLK8PvgpGBOwap3v1DdY deleted file mode 100644 index 7377ed26d..000000000 Binary files a/vega_sim/vegahome/data/wallets/lLK8PvgpGBOwap3v1DdY and /dev/null differ diff --git a/vega_sim/vegahome/data/wallets/oq8YJHWE b/vega_sim/vegahome/data/wallets/oq8YJHWE deleted file mode 100644 index 5641cdbe5..000000000 Binary files a/vega_sim/vegahome/data/wallets/oq8YJHWE and /dev/null differ diff --git a/vega_sim/vegahome/data/wallets/xztnaIYwkocQNKbm5zG0 b/vega_sim/vegahome/data/wallets/xztnaIYwkocQNKbm5zG0 deleted file mode 100755 index f3b9295b4..000000000 Binary files a/vega_sim/vegahome/data/wallets/xztnaIYwkocQNKbm5zG0 and /dev/null differ diff --git a/vega_sim/vegahome/data/wallets/yxuEAf5rJFFgsNv5dCGn b/vega_sim/vegahome/data/wallets/yxuEAf5rJFFgsNv5dCGn deleted file mode 100755 index 2fc58089d..000000000 Binary files a/vega_sim/vegahome/data/wallets/yxuEAf5rJFFgsNv5dCGn and /dev/null differ diff --git a/vega_sim/wallet/base.py b/vega_sim/wallet/base.py index e44f997b3..1d221a109 100644 --- a/vega_sim/wallet/base.py +++ b/vega_sim/wallet/base.py @@ -1,41 +1,37 @@ -from abc import ABC -from typing import Any +from abc import ABC, abstractmethod +from typing import Any, Optional VEGA_DEFAULT_KEY_NAME = "foo" +DEFAULT_WALLET_NAME = "MarketSim" class Wallet(ABC): - def create_wallet( + @abstractmethod + def create_key( self, name: str, - passphrase: str, + wallet_name: Optional[str] = None, ) -> str: - """Generates a new wallet from a name - passphrase pair in the given vega service. + """Generates a new wallet key in the given vega service. Args: name: - str, The name to use for the wallet - passphrase: - str, The passphrase to use when logging in to created wallet in future + str, The name to use for the wallet key + wallet_name: + str, The wallet to use if not the default Returns: str, login token to use in authenticated requests """ pass - def login(self, name: str, passphrase: str) -> str: - """Logs in to existing wallet in the given vega service. - - Args: - name: - str, The name of the wallet - passphrase: - str, The login passphrase used when creating the wallet - Returns: - str, login token to use in authenticated requests - """ - pass - - def submit_transaction(self, transaction: Any, name: str, transaction_type: str): + @abstractmethod + def submit_transaction( + self, + transaction: Any, + key_name: str, + transaction_type: str, + wallet_name: Optional[str], + ): """Submits a transaction to Vega core via wallet Args: @@ -48,8 +44,13 @@ def submit_transaction(self, transaction: Any, name: str, transaction_type: str) """ pass - def public_key(self, name: str) -> str: - """Return the public key associated with a given wallet name. + @abstractmethod + def public_key( + self, + name: str, + wallet_name: Optional[str] = None, + ) -> str: + """Return the public key associated with a given key name. Args: name: diff --git a/vega_sim/wallet/slim_wallet.py b/vega_sim/wallet/slim_wallet.py index 7914382f9..d67a2bba1 100644 --- a/vega_sim/wallet/slim_wallet.py +++ b/vega_sim/wallet/slim_wallet.py @@ -17,7 +17,7 @@ import vega_sim.proto.vega.commands.v1.transaction_pb2 as transaction_proto import vega_sim.proto.vega.commands.v1.signature_pb2 as signature_proto from vega_sim.wallet.vega_wallet import VegaWallet -from vega_sim.wallet.base import VEGA_DEFAULT_KEY_NAME +from vega_sim.wallet.base import DEFAULT_WALLET_NAME logger = getLogger(__name__) @@ -26,9 +26,7 @@ class SlimWallet(Wallet): def __init__( self, core_client: VegaCoreClient, - height_update_frequency: int = 500, full_wallet: Optional[VegaWallet] = None, - full_wallet_default_pass: str = "passwd", store_transactions: bool = False, log_dir: Optional[str] = None, ): @@ -38,18 +36,10 @@ def __init__( Args: core_client: VegaCoreClient, client for vega core interaction - height_update_frequency: - int, default 500, how frequently to update the block height parameter - for transactions (e.g. 500 will update every 500 calls to - submit_transaction). full_wallet: Optional[VegaWallet], optional full wallet backing. This will be used for creating keypairs instead of generating them locally, making it possible to connect to the Console - full_wallet_default_pass: - str, default 'passwd', If full wallet is passed, the password used - when creating dummy accounts if none are passed. - Use this password to log in to the Vega Console store_transactions: bool, default False, If True will store every transaction sent into a file, allowing replay of the chain without going through full @@ -67,7 +57,6 @@ def __init__( self.block_height = None self.vega_wallet = full_wallet - self.full_wallet_default_pass = full_wallet_default_pass self.store_transactions = store_transactions self.log_dir = log_dir @@ -81,8 +70,8 @@ def __init__( self._create_sigs() dotenv.load_dotenv() - self.vega_default_key_name = os.environ.get( - "VEGA_DEFAULT_KEY_NAME", VEGA_DEFAULT_KEY_NAME + self.vega_default_wallet_name = os.environ.get( + "VEGA_DEFAULT_WALLET_NAME", DEFAULT_WALLET_NAME ) def _create_sigs(self): @@ -105,58 +94,53 @@ def _next_nonce(self) -> int: self._create_nonces() return self.nonces[self.nonce_idx] - def create_wallet( + def create_key( self, name: str, - passphrase: Optional[str] = None, - key_name: Optional[str] = None, - ) -> None: - """Generates a new wallet from a name - passphrase pair in the given vega service. + wallet_name: Optional[str] = None, + ) -> str: + """Generates a new wallet key in the given vega service. Args: name: - str, The name to use for the wallet + str, The name to use for the wallet key + wallet_name: + str, The wallet to use if not the default + Returns: + str, login token to use in authenticated requests """ - passphrase = ( - passphrase if passphrase is not None else self.full_wallet_default_pass + wallet_name = ( + wallet_name if wallet_name is not None else self.vega_default_wallet_name ) - key_name = key_name if key_name is not None else self.vega_default_key_name - if name not in self.keys: - self.keys[name] = {} - if name not in self.pub_keys: - self.pub_keys[name] = {} + if wallet_name not in self.keys: + self.keys[wallet_name] = {} + if wallet_name not in self.pub_keys: + self.pub_keys[wallet_name] = {} if self.vega_wallet is None: - self.keys[name][key_name] = SigningKey.generate() - self.pub_keys[name][key_name] = ( - self.keys[name][key_name].verify_key.encode(encoder=HexEncoder).decode() + self.keys[wallet_name][name] = SigningKey.generate() + self.pub_keys[wallet_name][name] = ( + self.keys[wallet_name][name] + .verify_key.encode(encoder=HexEncoder) + .decode() ) else: - self.vega_wallet.create_wallet( + self.vega_wallet.create_key( name=name, - passphrase=passphrase, - key_name=key_name, + wallet_name=wallet_name, + ) + self.pub_keys[wallet_name][name] = self.vega_wallet.public_key( + name, wallet_name ) - self.pub_keys[name][key_name] = self.vega_wallet.public_key(name, key_name) - - def login(self, name: str, **kwargs) -> None: - """Logs in to existing wallet in the given vega service. - - Args: - name: - str, The name of the wallet - """ - if name not in self.keys: - self.create_wallet(name=name) def submit_transaction( self, - name: str, + key_name: str, transaction: Any, transaction_type: str, - key_name: Optional[str] = None, + wallet_name: Optional[str] = None, ): # if self.remaining_until_height_update <= 0: # self.block_height = self.core_client.LastBlockHeight( @@ -164,7 +148,7 @@ def submit_transaction( # ).height # self.remaining_until_height_update = self.height_update_frequency - pub_key = self.public_key(name=name, key_name=key_name) + pub_key = self.public_key(name=key_name, wallet_name=wallet_name) transaction_info = {transaction_type: transaction} input_data = transaction_proto.InputData( @@ -200,20 +184,20 @@ def submit_raw_transaction(self, transaction: core_proto.SubmitTransactionReques submit_future = self.core_client.SubmitTransaction.future(transaction) self.pool.submit(lambda: submit_future.result()) - def public_key(self, name: str, key_name: Optional[str] = None) -> str: + def public_key(self, name: str, wallet_name: Optional[str] = None) -> str: """Return a public key for the given wallet name and key name. Args: name (str): - Name of the wallet. - key_name (str): - Name of the key. Defaults to None. + Name of the key. + wallet_name (str): + Name of the wallet. Defaults to None. Returns: str, public key """ - if key_name is None: - return self.pub_keys[name][self.vega_default_key_name] + if wallet_name is None: + return self.pub_keys[self.vega_default_wallet_name][name] else: - return self.pub_keys[name][key_name] + return self.pub_keys[wallet_name][name] diff --git a/vega_sim/wallet/vega_wallet.py b/vega_sim/wallet/vega_wallet.py index 469ed0872..7fbec8933 100644 --- a/vega_sim/wallet/vega_wallet.py +++ b/vega_sim/wallet/vega_wallet.py @@ -1,179 +1,288 @@ -import time from typing import Any, Dict, List, Optional, Union import os -import dotenv import inflection + +import json +import subprocess import requests + from google.protobuf.json_format import MessageToDict -from vega_sim.wallet.base import Wallet, VEGA_DEFAULT_KEY_NAME +from vega_sim.wallet.base import Wallet, DEFAULT_WALLET_NAME -WALLET_CREATION_URL = "{wallet_server_url}/api/v1/wallets" -WALLET_LOGIN_URL = "{wallet_server_url}/api/v1/auth/token" -WALLET_KEY_URL = "{wallet_server_url}/api/v1/keys" +WALLET_JSON_RPC_URL = "{wallet_server_url}/api/v2/requests" +WALLET_CREATION_URL = "{wallet_server_url}/api/v2/wallets" +WALLET_LOGIN_URL = "{wallet_server_url}/api/v2/auth/token" +WALLET_KEY_URL = "{wallet_server_url}/api/v2/keys" class VegaWallet(Wallet): - def __init__(self, wallet_url: str): + def __init__( + self, + wallet_url: str, + wallet_path: str, + vega_home_dir: str, + passphrase_file_path: Optional[str] = None, + ): """Creates a wallet to interact with a full running vegawallet instance Args: wallet_url: str, base URL of the wallet service + wallet_path: + str, path to a wallet binary to call CLI functions from + vega_home_dir: + str, dir of vega home configuration files + passphrase_file_path: + str, File containing login passphrase for wallet """ self.wallet_url = wallet_url self.login_tokens = {} self.pub_keys = {} - dotenv.load_dotenv() - self.vega_default_key_name = os.environ.get( - "VEGA_DEFAULT_KEY_NAME", VEGA_DEFAULT_KEY_NAME + self._wallet_path = wallet_path + self._wallet_home = vega_home_dir + self._passphrase_file = passphrase_file_path + + self.vega_default_wallet_name = os.environ.get( + "VEGA_DEFAULT_WALLET_NAME", DEFAULT_WALLET_NAME ) - def create_wallet( - self, name: str, passphrase: str, key_name: Optional[str] = None - ) -> None: - """Generates a new wallet from a name - passphrase pair in the given vega service. + @classmethod + def from_json( + cls, json_path: str, wallet_url: str, wallet_path: str, vega_home_dir: str + ) -> "VegaWallet": + """Creates a wallet to interact with a full running vegawallet instance. + Loads tokens from a given json file in the form + { + wallet_name_1: token, + wallet_name_2: token + } + instead of requiring a wallet password Args: - name: - str, The name to use for the wallet - passphrase: - str, The passphrase to use when logging in to created wallet in future - Returns: - str, login token to use in authenticated requests + json_path: + str, File containing v2 wallet tokens + wallet_url: + str, base URL of the wallet service + wallet_path: + str, path to a wallet binary to call CLI functions from + vega_home_dir: + str, dir of vega home configuration files """ - req = {"wallet": name, "passphrase": passphrase} - - if name not in self.pub_keys: - # Wallet now requires a connection to a live vega service during startup, - # which can slow initialisation a little - for _ in range(5): - try: - response = requests.post( - WALLET_CREATION_URL.format(wallet_server_url=self.wallet_url), - json=req, - ) - response.raise_for_status() - self.login_tokens[name] = response.json()["token"] - break - except requests.exceptions.ConnectionError: - time.sleep(1) - - self.generate_keypair( - token=self.login_tokens[name], - passphrase=passphrase, - metadata=[ - { - "key": "name", - "value": key_name - if key_name is not None - else self.vega_default_key_name, - } - ], + base = cls( + wallet_url=wallet_url, wallet_path=wallet_path, vega_home_dir=vega_home_dir ) - self.pub_keys[name] = self.get_keypairs(wallet_name=name) - def login(self, name: str, passphrase: str) -> str: - """Logs in to existing wallet in the given vega service. + with open(json_path, "r") as f: + base.login_tokens = json.load(f) + return base + + def _load_token(self, wallet_name: str): + if self._passphrase_file is None: + raise Exception("Must set wallet passphrase file path to load tokens") + cmd = subprocess.run( + [ + self._wallet_path, + "api-token", + "list", + "--home", + self._wallet_home, + "--passphrase-file", + self._passphrase_file, + "--output", + "json", + ], + capture_output=True, + universal_newlines=True, + encoding="UTF-8", + ).stdout + + for data in json.loads(cmd)["tokens"]: + if data["description"] == wallet_name: + self.login_tokens[wallet_name] = data["token"] + + def create_key(self, name: str, wallet_name: Optional[str] = None) -> None: + """Generates a new key in the given vega service. Args: name: - str, The name of the wallet + str, The name to use for the wallet key passphrase: - str, The login passphrase used when creating the wallet + str, The passphrase to use when logging in to created wallet in future + wallet_name: + str, The wallet to use if not the default Returns: str, login token to use in authenticated requests """ - req = {"wallet": name, "passphrase": passphrase} - response = requests.post( - WALLET_LOGIN_URL.format(wallet_server_url=self.wallet_url), - json=req, + if self._passphrase_file is None: + raise Exception("Must set wallet passphrase file path to generate keys") + + wallet = ( + wallet_name if wallet_name is not None else self.vega_default_wallet_name ) - response.raise_for_status() - self.login_tokens[name] = response.json()["token"] - self.pub_keys[name] = self.get_keypairs(name) - return self.login_tokens[name] + cmd = subprocess.run( + [ + self._wallet_path, + "key", + "generate", + "--wallet", + wallet, + "--home", + self._wallet_home, + "--passphrase-file", + self._passphrase_file, + "--meta", + f"name:{name}", + "--output", + "json", + ], + capture_output=True, + universal_newlines=True, + encoding="UTF-8", + ).stdout + self.pub_keys.setdefault(wallet, {})[name] = json.loads(cmd)["publicKey"] - def generate_keypair( - self, - token: str, - passphrase: str, - metadata: Optional[List[Dict[str, str]]] = None, - ) -> None: - """Generates a keypair for given token validated wallet. + def create_wallet(self, name: str) -> None: + """Generates a new wallet in the given vega service. Args: - token: - str, token returned from login to wallet - passphrase: - str, passphrase used for login to corresponding wallet - wallet_url: - str, base URL of the wallet service - metadata: - list[dict], metadata which is stored alongside keys to identify them - Returns: - str, public key generated + name: + str, The name to use for the wallet """ - headers = {"Authorization": f"Bearer {token}"} - req = { - "passphrase": passphrase, - "meta": metadata, - } - response = requests.post( - WALLET_KEY_URL.format(wallet_server_url=self.wallet_url), - headers=headers, - json=req, + if self._passphrase_file is None: + raise Exception("Must set wallet passphrase file path to generate wallets") + + # First generate the wallet itself + subprocess.run( + [ + self._wallet_path, + "wallet", + "create", + "--wallet", + name, + "--home", + self._wallet_home, + "--passphrase-file", + self._passphrase_file, + "--output", + "json", + ], + capture_output=True, + universal_newlines=True, + encoding="UTF-8", ) - response.raise_for_status() - return list(response.json()["key"]["pub"]) + + # Then create a token for it + cmd = subprocess.run( + [ + self._wallet_path, + "api-token", + "generate", + "--home", + self._wallet_home, + "--tokens-passphrase-file", + self._passphrase_file, + "--wallet-passphrase-file", + self._passphrase_file, + "--wallet-name", + name, + "--description", + name, + ], + capture_output=True, + universal_newlines=True, + encoding="UTF-8", + ).stdout + + self.login_tokens[name] = json.loads(cmd)["token"] def get_keypairs(self, wallet_name: str) -> dict: - headers = {"Authorization": f"Bearer {self.login_tokens[wallet_name]}"} - response = requests.get( - WALLET_KEY_URL.format(wallet_server_url=self.wallet_url), headers=headers - ) + if wallet_name not in self.login_tokens: + self._load_token(wallet_name=wallet_name) + + headers = { + "Origin": "MarketSim", + "Authorization": f"VWT {self.login_tokens[wallet_name]}", + } + + submission = { + "jsonrpc": "2.0", + "method": "client.list_keys", + "params": [], + "id": "request", + } + + url = f"{self.wallet_url}/api/v2/requests" + + response = requests.post(url, headers=headers, json=submission) response.raise_for_status() - return {key["name"]: key["pub"] for key in response.json()["keys"]} + + return { + key["name"]: key["publicKey"] for key in response.json()["result"]["keys"] + } def submit_transaction( self, - name: str, + key_name: str, transaction: Any, transaction_type: str, - key_name: Optional[int] = None, + wallet_name: Optional[int] = None, ): - pub_key = self.public_key(name=name, key_name=key_name) + wallet_name = ( + wallet_name if wallet_name is not None else self.vega_default_wallet_name + ) + if wallet_name not in self.login_tokens: + self._load_token(wallet_name=wallet_name) + + pub_key = self.public_key(wallet_name=wallet_name, name=key_name) + + headers = { + "Origin": "MarketSim", + "Authorization": f"VWT {self.login_tokens[wallet_name]}", + } - headers = {"Authorization": f"Bearer {self.login_tokens[name]}"} submission = { - inflection.camelize( - transaction_type, uppercase_first_letter=False - ): MessageToDict(transaction), - "pubKey": pub_key, - "propagate": True, + "jsonrpc": "2.0", + "method": "client.send_transaction", + "params": { + "transaction": { + inflection.camelize( + transaction_type, uppercase_first_letter=False + ): MessageToDict(transaction) + }, + "sendingMode": "TYPE_ASYNC", + "publicKey": pub_key, + }, + "id": "request", } - url = f"{self.wallet_url}/api/v1/command/sync" + url = f"{self.wallet_url}/api/v2/requests" response = requests.post(url, headers=headers, json=submission) + response.raise_for_status() - def public_key(self, name: str, key_name: Optional[str] = None) -> str: + def public_key(self, name: str, wallet_name: Optional[str] = None) -> str: """Return a public key for the given wallet name and key name. Args: name (str): - Name of the wallet. - key_name (str): - Name of the key. Defaults to None. + Name of the key. + wallet_name (str): + Name of the wallet. Defaults to None. Returns: str, public key """ + wallet_name = ( + self.vega_default_wallet_name if wallet_name is None else wallet_name + ) + + if wallet_name not in self.pub_keys or name not in self.pub_keys[wallet_name]: + self.pub_keys.setdefault(wallet_name, {}).update( + self.get_keypairs(wallet_name=wallet_name) + ) - if key_name is None: - return self.pub_keys[name][self.vega_default_key_name] - else: - return self.pub_keys[name][key_name] + return self.pub_keys[wallet_name][name]