diff --git a/db/migrations/1776771673268-Data.js b/db/migrations/1777931889628-Data.js similarity index 98% rename from db/migrations/1776771673268-Data.js rename to db/migrations/1777931889628-Data.js index c34ead56..66c30d1f 100644 --- a/db/migrations/1776771673268-Data.js +++ b/db/migrations/1777931889628-Data.js @@ -1,15 +1,37 @@ -module.exports = class Data1776771673268 { - name = 'Data1776771673268' +module.exports = class Data1777931889628 { + name = 'Data1777931889628' async up(db) { await db.query(`CREATE TABLE "util_cache" ("id" character varying NOT NULL, "data" jsonb NOT NULL, CONSTRAINT "PK_d8dba67b2f156e569ad7ecf21d6" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "ogn_daily_stat" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "total_supply" numeric NOT NULL, "total_supply_usd" numeric NOT NULL, "circulating_supply" numeric NOT NULL, "total_staked" numeric NOT NULL, "trading_volume_usd" numeric NOT NULL, "market_cap_usd" numeric NOT NULL, "price_usd" numeric NOT NULL, "holders_over_threshold" integer NOT NULL, CONSTRAINT "PK_c87054f4663051254b7b2afa536" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_cb4297ef85375ee13a3446b240" ON "ogn_daily_stat" ("block_number") `) - await db.query(`CREATE INDEX "IDX_b96b9849e1e479d743ffb547c9" ON "ogn_daily_stat" ("timestamp") `) + await db.query(`CREATE TABLE "exchange_rate" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "pair" text NOT NULL, "base" text NOT NULL, "quote" text NOT NULL, "rate" numeric NOT NULL, "decimals" integer NOT NULL, CONSTRAINT "PK_5c5d27d2b900ef6cdeef0398472" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_2b58051dcc72cf0f02aa41ff14" ON "exchange_rate" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_9e23a3f1bf3634820c873a0fe8" ON "exchange_rate" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_c61a93768eed9e58ce399bbe01" ON "exchange_rate" ("block_number") `) + await db.query(`CREATE TABLE "exchange_rate_daily" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "date" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "pair" text NOT NULL, "base" text NOT NULL, "quote" text NOT NULL, "rate" numeric NOT NULL, "decimals" integer NOT NULL, CONSTRAINT "PK_28948bd4e66a27f171f56ba0b4f" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_75a5e016ee89095c71233c2631" ON "exchange_rate_daily" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_ee06a45adcc9be153ea4d1a4df" ON "exchange_rate_daily" ("date") `) + await db.query(`CREATE INDEX "IDX_c86ebf583f87235cdbdeca9fe9" ON "exchange_rate_daily" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_c46615b7946e1f9d20ebe12986" ON "exchange_rate_daily" ("block_number") `) + await db.query(`CREATE INDEX "IDX_1d24ee5f933fa86496c855a591" ON "exchange_rate_daily" ("pair") `) await db.query(`CREATE TABLE "native_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "account" text NOT NULL, "balance" numeric NOT NULL, CONSTRAINT "PK_62f6bdfe058e52d1914d0c2c1ce" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_45fb48f831ccadcf29f404824a" ON "native_balance" ("timestamp") `) await db.query(`CREATE INDEX "IDX_82d827c3b96fb3c5ab43068502" ON "native_balance" ("block_number") `) - await db.query(`CREATE TABLE "wallet_labels" ("id" character varying NOT NULL, "address" text NOT NULL, "description" text NOT NULL, "labels" text array NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_59edf57a7c32b43605aec86b9e0" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "legacy_staker" ("id" character varying NOT NULL, "input_amount" numeric NOT NULL, "output_amount" numeric NOT NULL, "balance" numeric NOT NULL, "reward_amount" numeric NOT NULL, CONSTRAINT "PK_11a12e3c39ce22c9a05990c9a56" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "curve_pool" ("id" character varying NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "token_count" integer NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "token2" text, CONSTRAINT "PK_c04bba36a8aa877d6efa4eafd6c" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_76c9202c1160ce818f7a29d131" ON "curve_pool" ("address") `) + await db.query(`CREATE TABLE "curve_pool_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "balance0" numeric NOT NULL, "balance1" numeric NOT NULL, "balance2" numeric NOT NULL, CONSTRAINT "PK_40412750bb910ca560aa084dd88" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_ffb0d0f86f03faacef7cb3e092" ON "curve_pool_balance" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_db5522c865eb8ed76fa7aeb4a8" ON "curve_pool_balance" ("block_number") `) + await db.query(`CREATE TABLE "curve_pool_rate" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "rate" numeric NOT NULL, CONSTRAINT "PK_91a04fe55298abe8abd8da1b813" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_561faf9883f4bb00ae6df34cc1" ON "curve_pool_rate" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_cefe6315e78e235fa4ab3de663" ON "curve_pool_rate" ("block_number") `) + await db.query(`CREATE TABLE "protocol_daily_stat" ("id" character varying NOT NULL, "date" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "rate_usd" numeric NOT NULL, "supply" numeric NOT NULL, "earning_tvl" numeric NOT NULL, "tvl" numeric NOT NULL, "yield" numeric NOT NULL, "revenue" numeric NOT NULL, "apy" numeric NOT NULL, "meta" jsonb NOT NULL, CONSTRAINT "PK_70427505fb8a9474c634fd7a154" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_f196efecb1b717f74494c4416b" ON "protocol_daily_stat" ("date") `) + await db.query(`CREATE INDEX "IDX_a5af597a96fb8752dc00093192" ON "protocol_daily_stat" ("timestamp") `) + await db.query(`CREATE TABLE "protocol_daily_stat_detail" ("id" character varying NOT NULL, "date" text NOT NULL, "product" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "rate_usd" numeric NOT NULL, "rate_eth" numeric NOT NULL, "supply" numeric NOT NULL, "earning_tvl" numeric NOT NULL, "tvl" numeric NOT NULL, "yield" numeric NOT NULL, "revenue" numeric NOT NULL, "apy" numeric NOT NULL, "inherited_tvl" numeric NOT NULL, "inherited_yield" numeric NOT NULL, "inherited_revenue" numeric NOT NULL, "bridged_tvl" numeric NOT NULL, CONSTRAINT "PK_279e9e0ad3c5c1b9f34fd93684a" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_25e652f34770b8661d5ea7139e" ON "protocol_daily_stat_detail" ("date") `) + await db.query(`CREATE INDEX "IDX_c0025cac7d806e2a33cd61c0c9" ON "protocol_daily_stat_detail" ("product") `) + await db.query(`CREATE INDEX "IDX_8f2fcc9fbd33954d90f69c280f" ON "protocol_daily_stat_detail" ("timestamp") `) await db.query(`CREATE TABLE "beacon_deposit_pubkey" ("id" character varying NOT NULL, "create_date" TIMESTAMP WITH TIME ZONE NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, "count" integer NOT NULL, CONSTRAINT "PK_4741993dcf81760e9777dec18a7" PRIMARY KEY ("id"))`) await db.query(`CREATE TABLE "beacon_deposit_event" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "caller" text NOT NULL, "withdrawal_credentials" text NOT NULL, "amount" text NOT NULL, "signature" text NOT NULL, "index" text NOT NULL, "pubkey_id" character varying, CONSTRAINT "PK_1ebc083560d266f487bd7098f43" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_4b157d82fc2a709b1cdd1b056a" ON "beacon_deposit_event" ("chain_id") `) @@ -30,30 +52,17 @@ module.exports = class Data1776771673268 { await db.query(`CREATE INDEX "IDX_b883d5666bb2f8b5b1f7d9633a" ON "execution_rewards_collected" ("block_number") `) await db.query(`CREATE INDEX "IDX_adcff42ecde1a20daeb870b3c4" ON "execution_rewards_collected" ("address") `) await db.query(`CREATE INDEX "IDX_41665fa5e546780642bacf96c7" ON "execution_rewards_collected" ("strategy") `) - await db.query(`CREATE TABLE "curve_pool" ("id" character varying NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "token_count" integer NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "token2" text, CONSTRAINT "PK_c04bba36a8aa877d6efa4eafd6c" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_76c9202c1160ce818f7a29d131" ON "curve_pool" ("address") `) - await db.query(`CREATE TABLE "curve_pool_balance" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "balance0" numeric NOT NULL, "balance1" numeric NOT NULL, "balance2" numeric NOT NULL, CONSTRAINT "PK_40412750bb910ca560aa084dd88" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_ffb0d0f86f03faacef7cb3e092" ON "curve_pool_balance" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_db5522c865eb8ed76fa7aeb4a8" ON "curve_pool_balance" ("block_number") `) - await db.query(`CREATE TABLE "curve_pool_rate" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "rate" numeric NOT NULL, CONSTRAINT "PK_91a04fe55298abe8abd8da1b813" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_561faf9883f4bb00ae6df34cc1" ON "curve_pool_rate" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_cefe6315e78e235fa4ab3de663" ON "curve_pool_rate" ("block_number") `) await db.query(`CREATE TABLE "coin_gecko_coin_data" ("id" character varying NOT NULL, "product" text NOT NULL, "date" text NOT NULL, "vs_currency" text NOT NULL, "price" numeric NOT NULL, "market_cap" numeric NOT NULL, "trading_volume" numeric NOT NULL, CONSTRAINT "PK_abb8340f8d830c27b3288a1083c" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_55f8b56cad28caa22a995dfb83" ON "coin_gecko_coin_data" ("product") `) await db.query(`CREATE INDEX "IDX_821542437abc5d0d6aa7959131" ON "coin_gecko_coin_data" ("date") `) - await db.query(`CREATE TABLE "legacy_staker" ("id" character varying NOT NULL, "input_amount" numeric NOT NULL, "output_amount" numeric NOT NULL, "balance" numeric NOT NULL, "reward_amount" numeric NOT NULL, CONSTRAINT "PK_11a12e3c39ce22c9a05990c9a56" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "protocol_daily_stat" ("id" character varying NOT NULL, "date" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "rate_usd" numeric NOT NULL, "supply" numeric NOT NULL, "earning_tvl" numeric NOT NULL, "tvl" numeric NOT NULL, "yield" numeric NOT NULL, "revenue" numeric NOT NULL, "apy" numeric NOT NULL, "meta" jsonb NOT NULL, CONSTRAINT "PK_70427505fb8a9474c634fd7a154" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_f196efecb1b717f74494c4416b" ON "protocol_daily_stat" ("date") `) - await db.query(`CREATE INDEX "IDX_a5af597a96fb8752dc00093192" ON "protocol_daily_stat" ("timestamp") `) - await db.query(`CREATE TABLE "protocol_daily_stat_detail" ("id" character varying NOT NULL, "date" text NOT NULL, "product" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "rate_usd" numeric NOT NULL, "rate_eth" numeric NOT NULL, "supply" numeric NOT NULL, "earning_tvl" numeric NOT NULL, "tvl" numeric NOT NULL, "yield" numeric NOT NULL, "revenue" numeric NOT NULL, "apy" numeric NOT NULL, "inherited_tvl" numeric NOT NULL, "inherited_yield" numeric NOT NULL, "inherited_revenue" numeric NOT NULL, "bridged_tvl" numeric NOT NULL, CONSTRAINT "PK_279e9e0ad3c5c1b9f34fd93684a" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_25e652f34770b8661d5ea7139e" ON "protocol_daily_stat_detail" ("date") `) - await db.query(`CREATE INDEX "IDX_c0025cac7d806e2a33cd61c0c9" ON "protocol_daily_stat_detail" ("product") `) - await db.query(`CREATE INDEX "IDX_8f2fcc9fbd33954d90f69c280f" ON "protocol_daily_stat_detail" ("timestamp") `) await db.query(`CREATE TABLE "ogn_buyback" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "operator" text NOT NULL, "token_sold" text NOT NULL, "amount_sold" numeric NOT NULL, "ogn_bought" numeric NOT NULL, "ogn_bought_usd" numeric NOT NULL, "tx_hash" text NOT NULL, CONSTRAINT "PK_7a3b8c1f6b0f5d5c9ae759744d6" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_daa406e4bd0f1313c9e54aab97" ON "ogn_buyback" ("timestamp") `) await db.query(`CREATE INDEX "IDX_854fb3714182df4d2ba943417a" ON "ogn_buyback" ("block_number") `) await db.query(`CREATE INDEX "IDX_30396766a2f98c53fc916657e6" ON "ogn_buyback" ("operator") `) - await db.query(`CREATE TABLE "morpho_market_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "market_id" text NOT NULL, "total_supply_assets" numeric NOT NULL, "total_supply_shares" numeric NOT NULL, "total_borrow_assets" numeric NOT NULL, "total_borrow_shares" numeric NOT NULL, "last_update" numeric NOT NULL, "fee" numeric NOT NULL, CONSTRAINT "PK_69eee8c1777f06d9de8b4cab68d" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "wallet_labels" ("id" character varying NOT NULL, "address" text NOT NULL, "description" text NOT NULL, "labels" text array NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_59edf57a7c32b43605aec86b9e0" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "ogn_daily_stat" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "total_supply" numeric NOT NULL, "total_supply_usd" numeric NOT NULL, "circulating_supply" numeric NOT NULL, "total_staked" numeric NOT NULL, "trading_volume_usd" numeric NOT NULL, "market_cap_usd" numeric NOT NULL, "price_usd" numeric NOT NULL, "holders_over_threshold" integer NOT NULL, CONSTRAINT "PK_c87054f4663051254b7b2afa536" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_cb4297ef85375ee13a3446b240" ON "ogn_daily_stat" ("block_number") `) + await db.query(`CREATE INDEX "IDX_b96b9849e1e479d743ffb547c9" ON "ogn_daily_stat" ("timestamp") `) await db.query(`CREATE TABLE "ogv" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "circulating" numeric NOT NULL, "staked" numeric NOT NULL, "total" numeric NOT NULL, CONSTRAINT "PK_f16038abf451ce82bd03ea54ee7" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_2418a8b8b92b2f5977be761cf9" ON "ogv" ("timestamp") `) await db.query(`CREATE INDEX "IDX_b8f20bcf48e4aa77e0f48d77db" ON "ogv" ("block_number") `) @@ -74,26 +83,168 @@ module.exports = class Data1776771673268 { await db.query(`CREATE TABLE "ogv_daily_stat" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "total_supply" numeric NOT NULL, "total_supply_usd" numeric NOT NULL, "total_staked" numeric NOT NULL, "trading_volume_usd" numeric NOT NULL, "market_cap_usd" numeric NOT NULL, "price_usd" numeric NOT NULL, "holders_over_threshold" integer NOT NULL, CONSTRAINT "PK_69bc6d866711151e2712481794c" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_c974bde87107cacae6d3654972" ON "ogv_daily_stat" ("block_number") `) await db.query(`CREATE INDEX "IDX_b62fa80951183bb0acf8a5e8b9" ON "ogv_daily_stat" ("timestamp") `) - await db.query(`CREATE TABLE "event_woeth_price_updated" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "old_value" numeric NOT NULL, "new_value" numeric NOT NULL, CONSTRAINT "PK_1c828c028380b7600d024778689" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_cfeca5e039fb3f137b5922a60a" ON "event_woeth_price_updated" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_e05f1c97627f04cb666bfbfd2e" ON "event_woeth_price_updated" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_462441741f17550d40da0cd5c0" ON "event_woeth_price_updated" ("block_number") `) - await db.query(`CREATE INDEX "IDX_dd99dbcb9666973f47c7462593" ON "event_woeth_price_updated" ("address") `) - await db.query(`CREATE TABLE "sfc_withdrawal" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, "created_at_block" integer NOT NULL, "delegator" text NOT NULL, "to_validator_id" text NOT NULL, "wr_id" text NOT NULL, "amount" numeric NOT NULL, "penalty" numeric, "withdrawn_at" TIMESTAMP WITH TIME ZONE, "withdrawn_at_block" integer, CONSTRAINT "PK_ddb6248f9bf2b19ba24e1de1aae" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_098bb05eb0e21825d9f97d7238" ON "sfc_withdrawal" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_c1767bd417033cf6be2fc0dfed" ON "sfc_withdrawal" ("delegator") `) - await db.query(`CREATE INDEX "IDX_7afdeeed7b96e60407ed2cee72" ON "sfc_withdrawal" ("to_validator_id") `) - await db.query(`CREATE INDEX "IDX_8e76d028b9d21884b48a6cfb34" ON "sfc_withdrawal" ("wr_id") `) - await db.query(`CREATE TABLE "exchange_rate" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "pair" text NOT NULL, "base" text NOT NULL, "quote" text NOT NULL, "rate" numeric NOT NULL, "decimals" integer NOT NULL, CONSTRAINT "PK_5c5d27d2b900ef6cdeef0398472" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_2b58051dcc72cf0f02aa41ff14" ON "exchange_rate" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_9e23a3f1bf3634820c873a0fe8" ON "exchange_rate" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_c61a93768eed9e58ce399bbe01" ON "exchange_rate" ("block_number") `) - await db.query(`CREATE TABLE "exchange_rate_daily" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "date" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "pair" text NOT NULL, "base" text NOT NULL, "quote" text NOT NULL, "rate" numeric NOT NULL, "decimals" integer NOT NULL, CONSTRAINT "PK_28948bd4e66a27f171f56ba0b4f" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_75a5e016ee89095c71233c2631" ON "exchange_rate_daily" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_ee06a45adcc9be153ea4d1a4df" ON "exchange_rate_daily" ("date") `) - await db.query(`CREATE INDEX "IDX_c86ebf583f87235cdbdeca9fe9" ON "exchange_rate_daily" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_c46615b7946e1f9d20ebe12986" ON "exchange_rate_daily" ("block_number") `) - await db.query(`CREATE INDEX "IDX_1d24ee5f933fa86496c855a591" ON "exchange_rate_daily" ("pair") `) + await db.query(`CREATE TABLE "transaction_details" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "from" text NOT NULL, "to" text NOT NULL, "gas_used" numeric NOT NULL, "effective_gas_price" numeric NOT NULL, "transaction_fee" numeric NOT NULL, CONSTRAINT "PK_b9397af1203ca3a78ca6631e4b7" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_035179d5845a24726b74795cb5" ON "transaction_details" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_9e0953446c15e89dfe68dbe5bd" ON "transaction_details" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_ec29c6dbcba374ae8819275f22" ON "transaction_details" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_1ada02a88b8355495e0917b49b" ON "transaction_details" ("block_number") `) + await db.query(`CREATE INDEX "IDX_81a859fb3a14a34f194e1d8606" ON "transaction_details" ("from") `) + await db.query(`CREATE INDEX "IDX_ae3e0f0414a1deb6e4840e2e44" ON "transaction_details" ("to") `) + await db.query(`CREATE TABLE "pool" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "exchange" text NOT NULL, "name" text, "symbol" text, "tokens" text array NOT NULL, "symbols" text array NOT NULL, "decimals" integer array NOT NULL, "type" text NOT NULL, "created_at_block" integer NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_db1bfe411e1516c01120b85f8fe" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_ca7b22bed322c7c1c817d7fefc" ON "pool" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_0764827295d4ed49e259aa398f" ON "pool" ("address") `) + await db.query(`CREATE INDEX "IDX_9a38a7d17d1fff09327de45882" ON "pool" ("exchange") `) + await db.query(`CREATE TABLE "pool_booster" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "registry_address" text NOT NULL, "amm_pool_address" text NOT NULL, "factory_address" text NOT NULL, "pool_booster_type" integer NOT NULL, "active" boolean NOT NULL, CONSTRAINT "PK_85efb2983184555953408176314" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_c46c14abc58edf2c6bbd1e8d09" ON "pool_booster" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_2c38cf60d95bd998304076c11c" ON "pool_booster" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_90136d4e23c9ed49f1b9f3a101" ON "pool_booster" ("block_number") `) + await db.query(`CREATE INDEX "IDX_47dd84c80f040852a6d8789a24" ON "pool_booster" ("address") `) + await db.query(`CREATE INDEX "IDX_ab1662265686664891ee4eeb78" ON "pool_booster" ("registry_address") `) + await db.query(`CREATE INDEX "IDX_6d838f9682498d64417204e3cf" ON "pool_booster" ("amm_pool_address") `) + await db.query(`CREATE INDEX "IDX_373e04b978fa8ec37506b82872" ON "pool_booster" ("factory_address") `) + await db.query(`CREATE TABLE "pool_booster_bribe_executed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "amount" numeric NOT NULL, "fee" numeric NOT NULL, CONSTRAINT "PK_3b9b80d19e643bb171929611e7c" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_3dbdcdcc2418ce9ce520d8ade6" ON "pool_booster_bribe_executed" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_54b5d8f2bbe89855785a038c33" ON "pool_booster_bribe_executed" ("address") `) + await db.query(`CREATE INDEX "IDX_d7693679519921139cb2dcb739" ON "pool_booster_bribe_executed" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_644a87d8df6aced2f35564d43f" ON "pool_booster_bribe_executed" ("block_number") `) + await db.query(`CREATE TABLE "o_token" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "unallocated_supply" numeric NOT NULL, "total_supply" numeric NOT NULL, "rebasing_supply" numeric NOT NULL, "non_rebasing_supply" numeric NOT NULL, "credits_per_token" numeric NOT NULL, "holder_count" integer NOT NULL, CONSTRAINT "PK_4450ef96d5e51ef55bc8ea0b53e" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_1da06ba7d2c0a02d01d1b7a6c0" ON "o_token" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_0851d95d178f682d279a04ebf9" ON "o_token" ("otoken") `) + await db.query(`CREATE INDEX "IDX_7889d6ce061da066df89309e51" ON "o_token" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_4633929013f5ba465cb00e5a95" ON "o_token" ("block_number") `) + await db.query(`CREATE TABLE "o_token_raw_data" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "type" text NOT NULL, "data" jsonb NOT NULL, CONSTRAINT "PK_e676c653d2b14ad3f6a5ac16eee" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_63bab1b33b2d4f56d628108570" ON "o_token_raw_data" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_fc35f1b9da51dfa7ba1cc4bf93" ON "o_token_raw_data" ("otoken") `) + await db.query(`CREATE INDEX "IDX_93bd7ae7b014936b806248edca" ON "o_token_raw_data" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_628cf585ab703cf873fd01d38e" ON "o_token_raw_data" ("block_number") `) + await db.query(`CREATE TABLE "wo_token" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "total_assets" numeric NOT NULL, "total_supply" numeric NOT NULL, "assets_per_share" numeric NOT NULL, CONSTRAINT "PK_4305ea14cb58bef31b227a8e529" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_ed8d2cd8eaa28f1f48af676dcf" ON "wo_token" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_46a8bdc64b39c46a0aa37bb768" ON "wo_token" ("otoken") `) + await db.query(`CREATE INDEX "IDX_3d57d694c426c319d925b846f8" ON "wo_token" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_f14aa07c5a85a39318a017d421" ON "wo_token" ("block_number") `) + await db.query(`CREATE TABLE "o_token_asset" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "address" text NOT NULL, "symbol" text NOT NULL, CONSTRAINT "PK_eb502dc2745e676b217ea3e0323" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_2eb2f24563a058f9d6e746ed47" ON "o_token_asset" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_7a26c80564bf5fe4e414125e99" ON "o_token_asset" ("otoken") `) + await db.query(`CREATE INDEX "IDX_53e8f932900b50984e1c30e7c0" ON "o_token_asset" ("address") `) + await db.query(`CREATE TABLE "o_token_history" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "value" numeric NOT NULL, "balance" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "type" character varying(8) NOT NULL, "address_id" character varying, CONSTRAINT "PK_adba161a29081a0a47532807da8" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_3200b91c04a72dda2312eb518c" ON "o_token_history" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_b4b39e42a6d2604b34082c4c80" ON "o_token_history" ("otoken") `) + await db.query(`CREATE INDEX "IDX_2f1457755464ec5951d1e96542" ON "o_token_history" ("address_id") `) + await db.query(`CREATE INDEX "IDX_42142d191ea0408fb511f9f576" ON "o_token_history" ("block_number") `) + await db.query(`CREATE INDEX "IDX_f87d86cfca9ef211ba1b18d2bc" ON "o_token_history" ("tx_hash") `) + await db.query(`CREATE TABLE "o_token_address" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "address" text NOT NULL, "is_contract" boolean NOT NULL, "rebasing_option" character varying(21) NOT NULL, "credits" numeric NOT NULL, "credits_per_token" numeric NOT NULL, "balance" numeric NOT NULL, "earned" numeric NOT NULL, "yield_to" text, "yield_from" text, "block_number" integer NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, "since" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_5d5d2b6f8a94da6ed63aac85194" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_7cbc465ce1e9ae06dfe3a8c625" ON "o_token_address" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_5342c499e930e396bade7faeb6" ON "o_token_address" ("otoken") `) + await db.query(`CREATE INDEX "IDX_75c7d29bf71b393e99c4407885" ON "o_token_address" ("address") `) + await db.query(`CREATE TABLE "o_token_apy" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text, "date" text NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "apy7_day_avg" numeric NOT NULL, "apy14_day_avg" numeric NOT NULL, "apy30_day_avg" numeric NOT NULL, "rebasing_credits_per_token" numeric NOT NULL, CONSTRAINT "PK_132f1c9570d48b38184ca5ac4cc" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_5d9294486b1c57df8c3aad5145" ON "o_token_apy" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_4d4f1b0d9e7f6903a2038c6c38" ON "o_token_apy" ("otoken") `) + await db.query(`CREATE INDEX "IDX_5b81f5a25e913cc7bf1d4c145a" ON "o_token_apy" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_79f0934481fe045319c864cd84" ON "o_token_apy" ("block_number") `) + await db.query(`CREATE INDEX "IDX_f5f416a1490ee2007a9c7593d0" ON "o_token_apy" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_a98d74fc6af6f3a599fe1ba7fb" ON "o_token_apy" ("date") `) + await db.query(`CREATE TABLE "o_token_rebase" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "total_supply" numeric NOT NULL, "rebasing_credits" numeric NOT NULL, "rebasing_credits_per_token" numeric NOT NULL, "fee" numeric NOT NULL, "fee_eth" numeric NOT NULL, "fee_usd" numeric NOT NULL, "yield" numeric NOT NULL, "yield_eth" numeric NOT NULL, "yield_usd" numeric NOT NULL, "apy_id" character varying, CONSTRAINT "PK_f8e636dc692c399dd1ead98c720" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_83666ab47ff5ef0c56bf40d122" ON "o_token_rebase" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_3fb75a6c8b831ca4d201d60e01" ON "o_token_rebase" ("otoken") `) + await db.query(`CREATE INDEX "IDX_15ef53e2bdcc3034ab8adea1f1" ON "o_token_rebase" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_b0c6feb890a83dcca572302371" ON "o_token_rebase" ("block_number") `) + await db.query(`CREATE INDEX "IDX_7170f89052507f34d8563f7016" ON "o_token_rebase" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_b8653270b96fc932f077b26441" ON "o_token_rebase" ("apy_id") `) + await db.query(`CREATE TABLE "o_token_rebase_option" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "status" character varying(21) NOT NULL, "delegated_to" text, "address_id" character varying, CONSTRAINT "PK_8b52df258c40e8347a66922f63e" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_5dfc53108b110d42994d02a832" ON "o_token_rebase_option" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_5936af713ee8131983812703b2" ON "o_token_rebase_option" ("otoken") `) + await db.query(`CREATE INDEX "IDX_cb07bc901206c5da63eacff7df" ON "o_token_rebase_option" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_95bab764e1a63ea0778dca4038" ON "o_token_rebase_option" ("block_number") `) + await db.query(`CREATE INDEX "IDX_00fff31b07544c1739afce542c" ON "o_token_rebase_option" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_da7296f8011232dc8675477b84" ON "o_token_rebase_option" ("address_id") `) + await db.query(`CREATE TABLE "o_token_vault" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "vault_buffer" numeric NOT NULL, "total_value" numeric NOT NULL, CONSTRAINT "PK_90bb3a4df699017439cd6a44a0c" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_6990f4cd71ea8db6d9d27a0db5" ON "o_token_vault" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_2c88ea3e889e76b037d8f59c96" ON "o_token_vault" ("otoken") `) + await db.query(`CREATE INDEX "IDX_091cfbe0d977006e05144bd1fe" ON "o_token_vault" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_fa92b36d011441a02d9a231860" ON "o_token_vault" ("block_number") `) + await db.query(`CREATE INDEX "IDX_3a2bfb2808c1d7cbb0a568910c" ON "o_token_vault" ("address") `) + await db.query(`CREATE TABLE "o_token_activity" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "account" text, "counterparty" text, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "type" character varying(12), "data" jsonb, CONSTRAINT "PK_a6e9207d04e252b4de591283276" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_9c617918c3dc521bed5220a185" ON "o_token_activity" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_62bfeb1dee3bcefffdbd10172a" ON "o_token_activity" ("otoken") `) + await db.query(`CREATE INDEX "IDX_6030e60850370dc382959fa76c" ON "o_token_activity" ("account") `) + await db.query(`CREATE INDEX "IDX_7d58e25d0c7b1ddb7a17fa844d" ON "o_token_activity" ("counterparty") `) + await db.query(`CREATE INDEX "IDX_57bb1f7d2fd6fe063b9cd434b2" ON "o_token_activity" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_d6cba0877ee9f5332e6d97e758" ON "o_token_activity" ("block_number") `) + await db.query(`CREATE INDEX "IDX_b5826e68934ff671bbe28836ec" ON "o_token_activity" ("tx_hash") `) + await db.query(`CREATE TABLE "o_token_daily_stat" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "date" text NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "apy7" numeric NOT NULL, "apy14" numeric NOT NULL, "apy30" numeric NOT NULL, "peg" numeric NOT NULL, "rate_usd" numeric NOT NULL, "rate_eth" numeric NOT NULL, "rate_native" numeric NOT NULL, "total_supply" numeric NOT NULL, "rebasing_supply" numeric NOT NULL, "non_rebasing_supply" numeric NOT NULL, "wrapped_supply" numeric NOT NULL, "rate_wrapped" numeric NOT NULL, "amo_supply" numeric, "dripper_weth" numeric NOT NULL, "yield" numeric NOT NULL, "fees" numeric NOT NULL, "cumulative_yield" numeric NOT NULL, "cumulative_fees" numeric NOT NULL, "market_cap_usd" numeric NOT NULL, "accounts_over_threshold" integer NOT NULL, CONSTRAINT "PK_eeabae008c52207e32e2171176d" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_98c1ae817f9436c4f602de04c7" ON "o_token_daily_stat" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_8da572d689803a6292f00f687c" ON "o_token_daily_stat" ("block_number") `) + await db.query(`CREATE INDEX "IDX_41df5fb0657b57079c5e011578" ON "o_token_daily_stat" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_7581835374b0582ec62df30f28" ON "o_token_daily_stat" ("otoken") `) + await db.query(`CREATE INDEX "IDX_448a0a2ffd35d4dda520f1a98f" ON "o_token_daily_stat" ("date") `) + await db.query(`CREATE TABLE "o_token_dripper_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "weth_balance" numeric NOT NULL, "available_funds" numeric NOT NULL, "last_collect" numeric NOT NULL, "per_second" numeric NOT NULL, "per_second_target" numeric, "per_second_max" numeric, "drip_duration" numeric NOT NULL, CONSTRAINT "PK_8fd326f8158125b5a2be7e86803" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_7671125bf3c842a221e9ada6da" ON "o_token_dripper_state" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_bd00c38c8ddaf6a21f00d71c7a" ON "o_token_dripper_state" ("block_number") `) + await db.query(`CREATE INDEX "IDX_7db5954d3839261e98ef3f7a9a" ON "o_token_dripper_state" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_a51e66365c5b4b40467ebc9950" ON "o_token_dripper_state" ("otoken") `) + await db.query(`CREATE TABLE "o_token_harvester_yield_sent" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "tx_hash" text NOT NULL, "yield" numeric NOT NULL, "fee" numeric NOT NULL, CONSTRAINT "PK_4618b0b2a790bb9704e9b873197" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_4e6c5f29c015c97c9cc76ab78b" ON "o_token_harvester_yield_sent" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_1c880d32eeaf3388e46ca48893" ON "o_token_harvester_yield_sent" ("block_number") `) + await db.query(`CREATE INDEX "IDX_500946a66f9276c87b7253dfa2" ON "o_token_harvester_yield_sent" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_d0c45975949e6353d4816b52d3" ON "o_token_harvester_yield_sent" ("otoken") `) + await db.query(`CREATE TABLE "o_token_reward_token_collected" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "strategy" text NOT NULL, "recipient" text NOT NULL, "reward_token" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_5c6bade1f1270bea78a42e5b19b" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_70b0a606f9cd642c70b9a47e89" ON "o_token_reward_token_collected" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_f4ab790e094a77b93887966876" ON "o_token_reward_token_collected" ("block_number") `) + await db.query(`CREATE INDEX "IDX_21d1addd6f0b96b016c802141f" ON "o_token_reward_token_collected" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_12a95d40144492a85dc15b9e57" ON "o_token_reward_token_collected" ("otoken") `) + await db.query(`CREATE TABLE "o_token_withdrawal_request" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "request_id" numeric NOT NULL, "withdrawer" text NOT NULL, "amount" numeric NOT NULL, "queued" numeric NOT NULL, "claimed" boolean NOT NULL, "claimed_at" TIMESTAMP WITH TIME ZONE, "queue_wait" numeric, "tx_hash" text NOT NULL, CONSTRAINT "PK_44db9244683cb58e12a51cf3c8b" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_d9844c17dce47a89f23917de31" ON "o_token_withdrawal_request" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_326e6366033bf085a34371d559" ON "o_token_withdrawal_request" ("block_number") `) + await db.query(`CREATE INDEX "IDX_40e7c338b514e19f2319d768bd" ON "o_token_withdrawal_request" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_39091effe13b6c6e2a321c1cad" ON "o_token_withdrawal_request" ("otoken") `) + await db.query(`CREATE INDEX "IDX_f5baa0e3b6dcfe1940cfa02c01" ON "o_token_withdrawal_request" ("tx_hash") `) + await db.query(`CREATE TABLE "o_token_yield_forwarded" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "from" text NOT NULL, "to" text NOT NULL, "from_balance" numeric NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_22bbb6894ff29f1cffa62fa8cca" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_c819776ce5a04915227ada2990" ON "o_token_yield_forwarded" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_74ae9edf4f308f86740b16b7cd" ON "o_token_yield_forwarded" ("block_number") `) + await db.query(`CREATE INDEX "IDX_b8b0b44e2b80be2fbeb211debe" ON "o_token_yield_forwarded" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_8e58218e9917d409803beb1479" ON "o_token_yield_forwarded" ("otoken") `) + await db.query(`CREATE TABLE "morpho_vault_apy" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "vault_address" text NOT NULL, "apy" numeric NOT NULL, CONSTRAINT "PK_1eb48a8bffe750af2755aac0f94" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_ef9b1dc35540b19ffcba78287c" ON "morpho_vault_apy" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_428890d4341fab14d1b350355e" ON "morpho_vault_apy" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_87d21220457c7025845c0d5760" ON "morpho_vault_apy" ("block_number") `) + await db.query(`CREATE INDEX "IDX_c2be559e927f6cf24bba874de4" ON "morpho_vault_apy" ("vault_address") `) + await db.query(`CREATE TABLE "arm" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "symbol" text NOT NULL, "decimals" integer NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, CONSTRAINT "PK_711e2a749a8c4baeccf8365290c" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "arm_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "assets0" numeric NOT NULL, "assets1" numeric NOT NULL, "outstanding_assets1" numeric NOT NULL, "market_assets" numeric NOT NULL, "fees_accrued" numeric NOT NULL, "total_assets" numeric NOT NULL, "total_assets_cap" numeric NOT NULL, "total_supply" numeric NOT NULL, "assets_per_share" numeric NOT NULL, "total_deposits" numeric NOT NULL, "total_withdrawals" numeric NOT NULL, "total_withdrawals_claimed" numeric NOT NULL, "total_yield" numeric NOT NULL, "total_fees" numeric NOT NULL, CONSTRAINT "PK_e58fff61dd95dfeac112204c378" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_68943c1b73a665919e9377027e" ON "arm_state" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_85852cf19a3ddc86a4762398dd" ON "arm_state" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_d9779389f627b43d2f746323de" ON "arm_state" ("block_number") `) + await db.query(`CREATE INDEX "IDX_b9db75a2ca9b9d6e6c5aa744ab" ON "arm_state" ("address") `) + await db.query(`CREATE TABLE "arm_daily_stat" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "date" text NOT NULL, "address" text NOT NULL, "assets0" numeric NOT NULL, "assets1" numeric NOT NULL, "outstanding_assets1" numeric NOT NULL, "market_assets" numeric NOT NULL, "fees_accrued" numeric NOT NULL, "total_assets" numeric NOT NULL, "total_assets_cap" numeric NOT NULL, "total_supply" numeric NOT NULL, "assets_per_share" numeric NOT NULL, "total_deposits" numeric NOT NULL, "total_withdrawals" numeric NOT NULL, "total_withdrawals_claimed" numeric NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "yield" numeric NOT NULL, "fees" numeric NOT NULL, "cumulative_yield" numeric NOT NULL, "cumulative_fees" numeric NOT NULL, "rate_usd" numeric NOT NULL, "rate_eth" numeric NOT NULL, "rate_native" numeric NOT NULL, CONSTRAINT "PK_c780cd8a4ec31366f7173a30fb1" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_6f3bbb5ed2de643316523b59b4" ON "arm_daily_stat" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_9ee28c589c9fa60a45412a64ba" ON "arm_daily_stat" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_052999e1ef63fabca403e9c3b8" ON "arm_daily_stat" ("block_number") `) + await db.query(`CREATE INDEX "IDX_8da1e323ff87677d898da36c4c" ON "arm_daily_stat" ("date") `) + await db.query(`CREATE INDEX "IDX_9dbe5617230d5421831774b4b3" ON "arm_daily_stat" ("address") `) + await db.query(`CREATE TABLE "arm_address_yield" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "arm" text NOT NULL, "address" text NOT NULL, "date" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "balance" numeric NOT NULL, "value" numeric NOT NULL, "cost_basis" numeric NOT NULL, "yield" numeric NOT NULL, "cumulative_yield" numeric NOT NULL, "roi" numeric NOT NULL, "last_r" numeric NOT NULL, "yield_remainder" numeric NOT NULL, CONSTRAINT "PK_4653ba4d0619effbb7dec942253" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_8df13f9e0d70aa65367b24475e" ON "arm_address_yield" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_3b00df42da735a3976408cc68a" ON "arm_address_yield" ("arm") `) + await db.query(`CREATE INDEX "IDX_8fabfa2b0691f4d6ae283bb638" ON "arm_address_yield" ("address") `) + await db.query(`CREATE INDEX "IDX_1706616a44b8303752ec76a045" ON "arm_address_yield" ("date") `) + await db.query(`CREATE INDEX "IDX_d4540a0c059efb82d22fe0e412" ON "arm_address_yield" ("block_number") `) + await db.query(`CREATE TABLE "arm_withdrawal_request" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "request_id" numeric NOT NULL, "amount" numeric NOT NULL, "queued" numeric NOT NULL, "claimed" boolean NOT NULL, "claimed_at" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_13dc23b0e4ee7f803645e930896" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_330af8826e0e9369301bebc3e7" ON "arm_withdrawal_request" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_501cc246901cfad5d624da98d6" ON "arm_withdrawal_request" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_f0634f8590f80c00f646b82867" ON "arm_withdrawal_request" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_f19a1f1ecd4b69d3def526cf6d" ON "arm_withdrawal_request" ("block_number") `) + await db.query(`CREATE INDEX "IDX_a66956c5f52400d8800132b21f" ON "arm_withdrawal_request" ("address") `) + await db.query(`CREATE INDEX "IDX_87f6fbcd7e96024c7d413e0496" ON "arm_withdrawal_request" ("account") `) + await db.query(`CREATE TABLE "arm_swap" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "tx_from" text NOT NULL, "tx_to" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "assets0" numeric NOT NULL, "assets1" numeric NOT NULL, CONSTRAINT "PK_e598ac0f753595d846714dec664" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_00432fd8b1a0b810192cb5a3c7" ON "arm_swap" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_a3664c1263a7551c8283b7f799" ON "arm_swap" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_10f61e220f24b8f06c3eb447a9" ON "arm_swap" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_cf05b522d87effcf53fb673ad1" ON "arm_swap" ("block_number") `) + await db.query(`CREATE INDEX "IDX_b52012d22a97bdb609cb8b7ad5" ON "arm_swap" ("address") `) + await db.query(`CREATE TABLE "traderate_changed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "tx_fee" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "traderate0" numeric NOT NULL, "traderate1" numeric NOT NULL, CONSTRAINT "PK_479a7665a7814427a59d0acf7b9" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_d556cdea4a5d7c1bbe68af5540" ON "traderate_changed" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_705910a32dde2d3bb5afe3baaf" ON "traderate_changed" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_ee5733a47926aa5d45d925e427" ON "traderate_changed" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_8ba4cfdcc71cd663da41d5c683" ON "traderate_changed" ("block_number") `) + await db.query(`CREATE INDEX "IDX_767274005ca866b0c3a89956e1" ON "traderate_changed" ("address") `) await db.query(`CREATE TABLE "erc20" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "decimals" integer NOT NULL, "symbol" text NOT NULL, CONSTRAINT "PK_8d43ce15401ba044c55a72a8ceb" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_905ff854e6782fc32dc4268a25" ON "erc20" ("chain_id") `) await db.query(`CREATE INDEX "IDX_40fd11c1a0d0f2562824894e85" ON "erc20" ("address") `) @@ -124,76 +275,37 @@ module.exports = class Data1776771673268 { await db.query(`CREATE INDEX "IDX_6350ddb2def19c1e3a06d8b3ec" ON "erc20_transfer" ("address") `) await db.query(`CREATE INDEX "IDX_eca70565083880d00e9110b000" ON "erc20_transfer" ("from") `) await db.query(`CREATE INDEX "IDX_9fdc9d58b6ae0cb13b9c7f8226" ON "erc20_transfer" ("to") `) - await db.query(`CREATE TABLE "es_token" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "circulating" numeric NOT NULL, "staked" numeric NOT NULL, "total" numeric NOT NULL, CONSTRAINT "PK_69bef9eb94d9a5d42d726d1e661" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_a234e56547c4f8b9135d80444b" ON "es_token" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_588f0be9f9bdc1d8dd29797fec" ON "es_token" ("block_number") `) - await db.query(`CREATE TABLE "es_account" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "asset_balance" numeric NOT NULL, "staked_balance" numeric NOT NULL, "balance" numeric NOT NULL, "voting_power" numeric NOT NULL, "delegate_to_id" character varying, CONSTRAINT "PK_819b7e05161fa9d1f724b31e1b7" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_eb97a0d869e67af870987d6d85" ON "es_account" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_93fea1d847b38c9982626e5fd1" ON "es_account" ("address") `) - await db.query(`CREATE INDEX "IDX_bc09480c9d1b13806f82337b5e" ON "es_account" ("account") `) - await db.query(`CREATE INDEX "IDX_7b43e7bb90d3b435d074112f57" ON "es_account" ("delegate_to_id") `) - await db.query(`CREATE TABLE "es_yield" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "asset_balance" numeric NOT NULL, "rewards_per_second" numeric NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, CONSTRAINT "PK_52ad2363a2797ab8ce74fa9765a" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_aa3649a103464d797c959294d1" ON "es_yield" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_700ebb527927ee781c0750b0dc" ON "es_yield" ("address") `) - await db.query(`CREATE INDEX "IDX_e2d3a1ddc3f0886f51556442bb" ON "es_yield" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_4fdca11723165347776a9a7110" ON "es_yield" ("block_number") `) - await db.query(`CREATE TABLE "es_lockup_event" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "event" character varying(8) NOT NULL, "lockup_id" character varying, CONSTRAINT "PK_67e28e7f997fad22a59f8fd71c1" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_512bb02117d66720b0c72fe2d2" ON "es_lockup_event" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_953fc73b0a9873292b633601e0" ON "es_lockup_event" ("address") `) - await db.query(`CREATE INDEX "IDX_9584d0dce1144609a1a9a0c579" ON "es_lockup_event" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_bb14524b2db1cbbf66d1729aba" ON "es_lockup_event" ("block_number") `) - await db.query(`CREATE INDEX "IDX_e1eb81715da4d4a8281616a39f" ON "es_lockup_event" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_46d53d4fad340d593995583600" ON "es_lockup_event" ("lockup_id") `) - await db.query(`CREATE TABLE "es_lockup" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "lockup_id" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "tx_hash" text NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" numeric NOT NULL, "end" TIMESTAMP WITH TIME ZONE NOT NULL, "points" numeric NOT NULL, "withdraw_amount" numeric NOT NULL, "penalty" numeric NOT NULL, "state" character varying(6), CONSTRAINT "PK_5b189f92ac5becc0db1e5d1f8ad" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_15e9dc0d375d6f2687def01843" ON "es_lockup" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_f3c10b1e75f626e1aaeaa3cfc3" ON "es_lockup" ("address") `) - await db.query(`CREATE INDEX "IDX_5dd7ffdf1c625829f7eb79ee27" ON "es_lockup" ("account") `) - await db.query(`CREATE INDEX "IDX_31b53c3e4649bde773d707b2a0" ON "es_lockup" ("lockup_id") `) - await db.query(`CREATE INDEX "IDX_2434b29d48e045849fc12cef7c" ON "es_lockup" ("tx_hash") `) - await db.query(`CREATE TABLE "es_delegate_changed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "delegator" text NOT NULL, "from_delegate" text NOT NULL, "to_delegate" text NOT NULL, CONSTRAINT "PK_4d5857f4fe4904dea337644e603" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_76c1740192ed8b589f7b5a21c8" ON "es_delegate_changed" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_ed5ea936cde8d62b485ce45a13" ON "es_delegate_changed" ("address") `) - await db.query(`CREATE INDEX "IDX_22f639893bc36efe524a3bbca7" ON "es_delegate_changed" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_ed12aa7ace584cc494012a0e5b" ON "es_delegate_changed" ("block_number") `) - await db.query(`CREATE INDEX "IDX_e234755c68bb8d7f9cfd511126" ON "es_delegate_changed" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_cda0b80789007b35cf5430966f" ON "es_delegate_changed" ("delegator") `) - await db.query(`CREATE TABLE "es_delegate_votes_changed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "delegate" text NOT NULL, "previous_balance" numeric NOT NULL, "new_balance" numeric NOT NULL, CONSTRAINT "PK_4e8cd459830447ee5dd3a7e802b" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_4e20cdc38777932fadd008f6e4" ON "es_delegate_votes_changed" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_076fb50935afa2f319f1d16752" ON "es_delegate_votes_changed" ("address") `) - await db.query(`CREATE INDEX "IDX_338d2483a33dc74d360d2a44c5" ON "es_delegate_votes_changed" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_e0e6b12e50b95fb9b99c28df90" ON "es_delegate_votes_changed" ("block_number") `) - await db.query(`CREATE INDEX "IDX_60ea37f13fc3b16e491926314f" ON "es_delegate_votes_changed" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_bd6f657c57e5a92a8dd3fe6b4e" ON "es_delegate_votes_changed" ("delegate") `) - await db.query(`CREATE TABLE "es_penalty" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_41b7961c4867c2d18f8afa921cc" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_59fa17e121ecd2bead0a71cf85" ON "es_penalty" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_785a65f92c61edd176415e22ad" ON "es_penalty" ("address") `) - await db.query(`CREATE INDEX "IDX_7402aa565f5e2023e310610240" ON "es_penalty" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_8595139811169d26aa210f8a8d" ON "es_penalty" ("block_number") `) - await db.query(`CREATE INDEX "IDX_9f560f23bcdd81e13141c02125" ON "es_penalty" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_adc7f2fe26e4a36690a343339b" ON "es_penalty" ("account") `) - await db.query(`CREATE TABLE "es_reward" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_52643252c6b05e1a6d337081d9b" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_e05d0476721dfcf9152b58fc30" ON "es_reward" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_f01dea25da96f8d8eaec9b6f60" ON "es_reward" ("address") `) - await db.query(`CREATE INDEX "IDX_2f3b61cc072d95ad0796b9caa3" ON "es_reward" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_a3d39d7235e278255a5217d1df" ON "es_reward" ("block_number") `) - await db.query(`CREATE INDEX "IDX_d17aab47907d6816138ab2a7fa" ON "es_reward" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_b623db55430fefda84dfdf2949" ON "es_reward" ("account") `) - await db.query(`CREATE TABLE "es_stake" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "lockup_id" numeric NOT NULL, "amount" numeric NOT NULL, "end" numeric NOT NULL, "points" numeric NOT NULL, CONSTRAINT "PK_86bb48f03d8a3ca01f8d0339c66" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_385357cc5f41796615d8880190" ON "es_stake" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_e7bcc8120e2c256db6ebd01575" ON "es_stake" ("address") `) - await db.query(`CREATE INDEX "IDX_b95e58860bb9ba46d0ec41d246" ON "es_stake" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_d059ea472eb9d10f6be2025d40" ON "es_stake" ("block_number") `) - await db.query(`CREATE INDEX "IDX_f629f87d82890ea6f515e1a7a7" ON "es_stake" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_2d2f6b568b3145fe6095da5afa" ON "es_stake" ("account") `) - await db.query(`CREATE INDEX "IDX_bcb392795674b2cc0af394864c" ON "es_stake" ("lockup_id") `) - await db.query(`CREATE TABLE "es_unstake" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "lockup_id" numeric NOT NULL, "amount" numeric NOT NULL, "end" numeric NOT NULL, "points" numeric NOT NULL, CONSTRAINT "PK_649003a33f9fb327e2f72d8e5df" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_0c51c706a778668dbd5ed9c817" ON "es_unstake" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_9301687673c195770cdd543049" ON "es_unstake" ("address") `) - await db.query(`CREATE INDEX "IDX_13fbe169018991ddcfeb4912cb" ON "es_unstake" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_06c024c53472178d0f5292330a" ON "es_unstake" ("block_number") `) - await db.query(`CREATE INDEX "IDX_7d988d60b55dc08addc58835d6" ON "es_unstake" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_0adcdd08da131e76d618b73db7" ON "es_unstake" ("account") `) - await db.query(`CREATE INDEX "IDX_cc43898a790e6e1d4bbf145097" ON "es_unstake" ("lockup_id") `) + await db.query(`CREATE TABLE "processing_status" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "start_timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "head_timestamp" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_85f5e2467b74fb70fac1a053021" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "aero_cl_gauge_notify_reward" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_81e9aaf9cedd501f19b631fa24c" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_bc847340db9380bee59cb5f5fe" ON "aero_cl_gauge_notify_reward" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_32ededc6fe2c4d647215206a02" ON "aero_cl_gauge_notify_reward" ("block_number") `) + await db.query(`CREATE INDEX "IDX_0b2e6dc0ffef94a1b390596ca1" ON "aero_cl_gauge_notify_reward" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_f159f93df2550a7c6d67afd326" ON "aero_cl_gauge_notify_reward" ("address") `) + await db.query(`CREATE INDEX "IDX_b789dc0efc58964980fe36ed71" ON "aero_cl_gauge_notify_reward" ("from") `) + await db.query(`CREATE TABLE "aero_gauge_notify_reward" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_cc6cc4555454beeb72e1f69c78b" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_983aada0809852d4dea444aa1b" ON "aero_gauge_notify_reward" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_993e3d42327053b33a5db4ffe4" ON "aero_gauge_notify_reward" ("block_number") `) + await db.query(`CREATE INDEX "IDX_a099b412c12b8d9e8a5ac999ec" ON "aero_gauge_notify_reward" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_7522fbb7adef5aca9de1dc9900" ON "aero_gauge_notify_reward" ("address") `) + await db.query(`CREATE INDEX "IDX_6fd369509b8e29561b1b2b5310" ON "aero_gauge_notify_reward" ("from") `) + await db.query(`CREATE TABLE "aero_pool_created" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "pool" text NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "stable" boolean NOT NULL, CONSTRAINT "PK_92121ac89556a501f1d9d9a3cc4" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_c0420757a8d67132c475450b37" ON "aero_pool_created" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_8e60b2e8b223efda676eff93d9" ON "aero_pool_created" ("block_number") `) + await db.query(`CREATE INDEX "IDX_7f98545a433bc1fa08c9b8d4ed" ON "aero_pool_created" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_6372821d7d9888a53637b6a7ad" ON "aero_pool_created" ("address") `) + await db.query(`CREATE TABLE "aero_cl_pool_created" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "pool" text NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "tick_spacing" integer NOT NULL, CONSTRAINT "PK_3c64e6a99fd4cf16f26d514fe32" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_3b7186dca3828117fb53ef0206" ON "aero_cl_pool_created" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_68fc780d94ec199f1eb50e68f7" ON "aero_cl_pool_created" ("block_number") `) + await db.query(`CREATE INDEX "IDX_ec5ee04a8c72b11d543e28e5e6" ON "aero_cl_pool_created" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_2701b481a50882398b9cb7e05b" ON "aero_cl_pool_created" ("address") `) + await db.query(`CREATE TABLE "aero_voter_gauge_created" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "pool_factory" text NOT NULL, "voting_rewards_factory" text NOT NULL, "gauge_factory" text NOT NULL, "pool" text NOT NULL, "bribe_voting_reward" text NOT NULL, "fee_voting_reward" text NOT NULL, "gauge" text NOT NULL, "creator" text NOT NULL, CONSTRAINT "PK_c96d43e26a5474fe42e6feb8525" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_60842e4b20e928204cc0790128" ON "aero_voter_gauge_created" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_74c2a7bf57c43f69f91b7c3b20" ON "aero_voter_gauge_created" ("block_number") `) + await db.query(`CREATE INDEX "IDX_d8be771bb35fe590c45a7d1af2" ON "aero_voter_gauge_created" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_19b4155090d82294060bb44366" ON "aero_voter_gauge_created" ("address") `) + await db.query(`CREATE INDEX "IDX_40d43ab503f180b7532f42f45a" ON "aero_voter_gauge_created" ("pool_factory") `) + await db.query(`CREATE INDEX "IDX_b4ffd29e88ac91115e44fc5b03" ON "aero_voter_gauge_created" ("voting_rewards_factory") `) + await db.query(`CREATE INDEX "IDX_fe01f00328010eac8a03879936" ON "aero_voter_gauge_created" ("gauge_factory") `) await db.query(`CREATE TABLE "aero_pool_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "total_usd" numeric NOT NULL, "liquidity" numeric NOT NULL, "staked_liquidity" numeric NOT NULL, "asset0" numeric NOT NULL, "asset1" numeric NOT NULL, "vote_weight" numeric NOT NULL, "vote_percentage" numeric NOT NULL, CONSTRAINT "PK_78c7257c7d9124c00362b50bb19" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_9da45b58c4d06201b2de6ed51d" ON "aero_pool_state" ("chain_id") `) await db.query(`CREATE INDEX "IDX_91022eaca5c237c8181574f6c3" ON "aero_pool_state" ("block_number") `) @@ -230,67 +342,6 @@ module.exports = class Data1776771673268 { await db.query(`CREATE INDEX "IDX_b4e54387b76cb3bce1bd725f7a" ON "aero_lp_position" ("pool") `) await db.query(`CREATE INDEX "IDX_b465865a93cb044c6649523287" ON "aero_lp_position" ("position_id") `) await db.query(`CREATE INDEX "IDX_05aaf9416181ddc9012f41da2f" ON "aero_lp_position" ("account") `) - await db.query(`CREATE TABLE "aero_cl_gauge_notify_reward" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_81e9aaf9cedd501f19b631fa24c" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_bc847340db9380bee59cb5f5fe" ON "aero_cl_gauge_notify_reward" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_32ededc6fe2c4d647215206a02" ON "aero_cl_gauge_notify_reward" ("block_number") `) - await db.query(`CREATE INDEX "IDX_0b2e6dc0ffef94a1b390596ca1" ON "aero_cl_gauge_notify_reward" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_f159f93df2550a7c6d67afd326" ON "aero_cl_gauge_notify_reward" ("address") `) - await db.query(`CREATE INDEX "IDX_b789dc0efc58964980fe36ed71" ON "aero_cl_gauge_notify_reward" ("from") `) - await db.query(`CREATE TABLE "aero_gauge_notify_reward" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_cc6cc4555454beeb72e1f69c78b" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_983aada0809852d4dea444aa1b" ON "aero_gauge_notify_reward" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_993e3d42327053b33a5db4ffe4" ON "aero_gauge_notify_reward" ("block_number") `) - await db.query(`CREATE INDEX "IDX_a099b412c12b8d9e8a5ac999ec" ON "aero_gauge_notify_reward" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_7522fbb7adef5aca9de1dc9900" ON "aero_gauge_notify_reward" ("address") `) - await db.query(`CREATE INDEX "IDX_6fd369509b8e29561b1b2b5310" ON "aero_gauge_notify_reward" ("from") `) - await db.query(`CREATE TABLE "aero_pool_created" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "pool" text NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "stable" boolean NOT NULL, CONSTRAINT "PK_92121ac89556a501f1d9d9a3cc4" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_c0420757a8d67132c475450b37" ON "aero_pool_created" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_8e60b2e8b223efda676eff93d9" ON "aero_pool_created" ("block_number") `) - await db.query(`CREATE INDEX "IDX_7f98545a433bc1fa08c9b8d4ed" ON "aero_pool_created" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_6372821d7d9888a53637b6a7ad" ON "aero_pool_created" ("address") `) - await db.query(`CREATE TABLE "aero_cl_pool_created" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "pool" text NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, "tick_spacing" integer NOT NULL, CONSTRAINT "PK_3c64e6a99fd4cf16f26d514fe32" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_3b7186dca3828117fb53ef0206" ON "aero_cl_pool_created" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_68fc780d94ec199f1eb50e68f7" ON "aero_cl_pool_created" ("block_number") `) - await db.query(`CREATE INDEX "IDX_ec5ee04a8c72b11d543e28e5e6" ON "aero_cl_pool_created" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_2701b481a50882398b9cb7e05b" ON "aero_cl_pool_created" ("address") `) - await db.query(`CREATE TABLE "aero_voter_gauge_created" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "address" text NOT NULL, "pool_factory" text NOT NULL, "voting_rewards_factory" text NOT NULL, "gauge_factory" text NOT NULL, "pool" text NOT NULL, "bribe_voting_reward" text NOT NULL, "fee_voting_reward" text NOT NULL, "gauge" text NOT NULL, "creator" text NOT NULL, CONSTRAINT "PK_c96d43e26a5474fe42e6feb8525" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_60842e4b20e928204cc0790128" ON "aero_voter_gauge_created" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_74c2a7bf57c43f69f91b7c3b20" ON "aero_voter_gauge_created" ("block_number") `) - await db.query(`CREATE INDEX "IDX_d8be771bb35fe590c45a7d1af2" ON "aero_voter_gauge_created" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_19b4155090d82294060bb44366" ON "aero_voter_gauge_created" ("address") `) - await db.query(`CREATE INDEX "IDX_40d43ab503f180b7532f42f45a" ON "aero_voter_gauge_created" ("pool_factory") `) - await db.query(`CREATE INDEX "IDX_b4ffd29e88ac91115e44fc5b03" ON "aero_voter_gauge_created" ("voting_rewards_factory") `) - await db.query(`CREATE INDEX "IDX_fe01f00328010eac8a03879936" ON "aero_voter_gauge_created" ("gauge_factory") `) - await db.query(`CREATE TABLE "arm" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "name" text NOT NULL, "symbol" text NOT NULL, "decimals" integer NOT NULL, "token0" text NOT NULL, "token1" text NOT NULL, CONSTRAINT "PK_711e2a749a8c4baeccf8365290c" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "arm_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "assets0" numeric NOT NULL, "assets1" numeric NOT NULL, "outstanding_assets1" numeric NOT NULL, "market_assets" numeric NOT NULL, "fees_accrued" numeric NOT NULL, "total_assets" numeric NOT NULL, "total_assets_cap" numeric NOT NULL, "total_supply" numeric NOT NULL, "assets_per_share" numeric NOT NULL, "total_deposits" numeric NOT NULL, "total_withdrawals" numeric NOT NULL, "total_withdrawals_claimed" numeric NOT NULL, "total_yield" numeric NOT NULL, "total_fees" numeric NOT NULL, CONSTRAINT "PK_e58fff61dd95dfeac112204c378" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_68943c1b73a665919e9377027e" ON "arm_state" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_85852cf19a3ddc86a4762398dd" ON "arm_state" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_d9779389f627b43d2f746323de" ON "arm_state" ("block_number") `) - await db.query(`CREATE INDEX "IDX_b9db75a2ca9b9d6e6c5aa744ab" ON "arm_state" ("address") `) - await db.query(`CREATE TABLE "arm_daily_stat" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "date" text NOT NULL, "address" text NOT NULL, "assets0" numeric NOT NULL, "assets1" numeric NOT NULL, "outstanding_assets1" numeric NOT NULL, "market_assets" numeric NOT NULL, "fees_accrued" numeric NOT NULL, "total_assets" numeric NOT NULL, "total_assets_cap" numeric NOT NULL, "total_supply" numeric NOT NULL, "assets_per_share" numeric NOT NULL, "total_deposits" numeric NOT NULL, "total_withdrawals" numeric NOT NULL, "total_withdrawals_claimed" numeric NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "yield" numeric NOT NULL, "fees" numeric NOT NULL, "cumulative_yield" numeric NOT NULL, "cumulative_fees" numeric NOT NULL, "rate_usd" numeric NOT NULL, "rate_eth" numeric NOT NULL, "rate_native" numeric NOT NULL, CONSTRAINT "PK_c780cd8a4ec31366f7173a30fb1" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_6f3bbb5ed2de643316523b59b4" ON "arm_daily_stat" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_9ee28c589c9fa60a45412a64ba" ON "arm_daily_stat" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_052999e1ef63fabca403e9c3b8" ON "arm_daily_stat" ("block_number") `) - await db.query(`CREATE INDEX "IDX_8da1e323ff87677d898da36c4c" ON "arm_daily_stat" ("date") `) - await db.query(`CREATE INDEX "IDX_9dbe5617230d5421831774b4b3" ON "arm_daily_stat" ("address") `) - await db.query(`CREATE TABLE "arm_withdrawal_request" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "request_id" numeric NOT NULL, "amount" numeric NOT NULL, "queued" numeric NOT NULL, "claimed" boolean NOT NULL, "claimed_at" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_13dc23b0e4ee7f803645e930896" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_330af8826e0e9369301bebc3e7" ON "arm_withdrawal_request" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_501cc246901cfad5d624da98d6" ON "arm_withdrawal_request" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_f0634f8590f80c00f646b82867" ON "arm_withdrawal_request" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_f19a1f1ecd4b69d3def526cf6d" ON "arm_withdrawal_request" ("block_number") `) - await db.query(`CREATE INDEX "IDX_a66956c5f52400d8800132b21f" ON "arm_withdrawal_request" ("address") `) - await db.query(`CREATE INDEX "IDX_87f6fbcd7e96024c7d413e0496" ON "arm_withdrawal_request" ("account") `) - await db.query(`CREATE TABLE "arm_swap" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "tx_from" text NOT NULL, "tx_to" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "from" text NOT NULL, "assets0" numeric NOT NULL, "assets1" numeric NOT NULL, CONSTRAINT "PK_e598ac0f753595d846714dec664" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_00432fd8b1a0b810192cb5a3c7" ON "arm_swap" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_a3664c1263a7551c8283b7f799" ON "arm_swap" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_10f61e220f24b8f06c3eb447a9" ON "arm_swap" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_cf05b522d87effcf53fb673ad1" ON "arm_swap" ("block_number") `) - await db.query(`CREATE INDEX "IDX_b52012d22a97bdb609cb8b7ad5" ON "arm_swap" ("address") `) - await db.query(`CREATE TABLE "traderate_changed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "tx_fee" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "traderate0" numeric NOT NULL, "traderate1" numeric NOT NULL, CONSTRAINT "PK_479a7665a7814427a59d0acf7b9" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_d556cdea4a5d7c1bbe68af5540" ON "traderate_changed" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_705910a32dde2d3bb5afe3baaf" ON "traderate_changed" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_ee5733a47926aa5d45d925e427" ON "traderate_changed" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_8ba4cfdcc71cd663da41d5c683" ON "traderate_changed" ("block_number") `) - await db.query(`CREATE INDEX "IDX_767274005ca866b0c3a89956e1" ON "traderate_changed" ("address") `) await db.query(`CREATE TABLE "governance_proposal" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "proposal_id" numeric NOT NULL, "description" text, "proposer" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "tx_hash" text NOT NULL, "start_block" numeric NOT NULL, "end_block" numeric NOT NULL, "targets" text array NOT NULL, "values" text array NOT NULL, "signatures" text array NOT NULL, "calldatas" text array NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, "status" character varying(9) NOT NULL, "quorum" numeric NOT NULL, "choices" text array NOT NULL, "scores" text array NOT NULL, CONSTRAINT "PK_d71b4171baf362416ecfc414531" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_fe8a40923244f99e670b62c14d" ON "governance_proposal" ("chain_id") `) await db.query(`CREATE INDEX "IDX_eea14b5ba6065f9484dfaa00c6" ON "governance_proposal" ("address") `) @@ -314,13 +365,6 @@ module.exports = class Data1776771673268 { await db.query(`CREATE INDEX "IDX_374659ae3bd149042388e132be" ON "bridge_transfer_state" ("timestamp") `) await db.query(`CREATE INDEX "IDX_74f93b10ec560e63792dcc877e" ON "bridge_transfer_state" ("block_number") `) await db.query(`CREATE INDEX "IDX_df99bdbf11d4ed57bec0e6c511" ON "bridge_transfer_state" ("tx_hash") `) - await db.query(`CREATE TABLE "transaction_details" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "tx_hash" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "from" text NOT NULL, "to" text NOT NULL, "gas_used" numeric NOT NULL, "effective_gas_price" numeric NOT NULL, "transaction_fee" numeric NOT NULL, CONSTRAINT "PK_b9397af1203ca3a78ca6631e4b7" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_035179d5845a24726b74795cb5" ON "transaction_details" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_9e0953446c15e89dfe68dbe5bd" ON "transaction_details" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_ec29c6dbcba374ae8819275f22" ON "transaction_details" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_1ada02a88b8355495e0917b49b" ON "transaction_details" ("block_number") `) - await db.query(`CREATE INDEX "IDX_81a859fb3a14a34f194e1d8606" ON "transaction_details" ("from") `) - await db.query(`CREATE INDEX "IDX_ae3e0f0414a1deb6e4840e2e44" ON "transaction_details" ("to") `) await db.query(`CREATE TABLE "frrs_reward_collected" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "amount_collected" numeric NOT NULL, CONSTRAINT "PK_638be8eac1ed06396ae15065985" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_41ff7fbd84f0e932ddff4aaeda" ON "frrs_reward_collected" ("chain_id") `) await db.query(`CREATE INDEX "IDX_6f8728cf12eedec371ec2b5ac3" ON "frrs_reward_collected" ("address") `) @@ -345,6 +389,76 @@ module.exports = class Data1776771673268 { await db.query(`CREATE INDEX "IDX_301322e4df8e766e7f4cd892fd" ON "frrs_strategist_updated" ("timestamp") `) await db.query(`CREATE INDEX "IDX_7f49f2839212126c3d42fb4bf1" ON "frrs_strategist_updated" ("block_number") `) await db.query(`CREATE INDEX "IDX_aab8ae0cb29505a7014438675b" ON "frrs_strategist_updated" ("tx_hash") `) + await db.query(`CREATE TABLE "es_token" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "circulating" numeric NOT NULL, "staked" numeric NOT NULL, "total" numeric NOT NULL, CONSTRAINT "PK_69bef9eb94d9a5d42d726d1e661" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_a234e56547c4f8b9135d80444b" ON "es_token" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_588f0be9f9bdc1d8dd29797fec" ON "es_token" ("block_number") `) + await db.query(`CREATE TABLE "es_account" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "asset_balance" numeric NOT NULL, "staked_balance" numeric NOT NULL, "balance" numeric NOT NULL, "voting_power" numeric NOT NULL, "delegate_to_id" character varying, CONSTRAINT "PK_819b7e05161fa9d1f724b31e1b7" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_eb97a0d869e67af870987d6d85" ON "es_account" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_93fea1d847b38c9982626e5fd1" ON "es_account" ("address") `) + await db.query(`CREATE INDEX "IDX_bc09480c9d1b13806f82337b5e" ON "es_account" ("account") `) + await db.query(`CREATE INDEX "IDX_7b43e7bb90d3b435d074112f57" ON "es_account" ("delegate_to_id") `) + await db.query(`CREATE TABLE "es_yield" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "asset_balance" numeric NOT NULL, "rewards_per_second" numeric NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, CONSTRAINT "PK_52ad2363a2797ab8ce74fa9765a" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_aa3649a103464d797c959294d1" ON "es_yield" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_700ebb527927ee781c0750b0dc" ON "es_yield" ("address") `) + await db.query(`CREATE INDEX "IDX_e2d3a1ddc3f0886f51556442bb" ON "es_yield" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_4fdca11723165347776a9a7110" ON "es_yield" ("block_number") `) + await db.query(`CREATE TABLE "es_lockup_event" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "event" character varying(8) NOT NULL, "lockup_id" character varying, CONSTRAINT "PK_67e28e7f997fad22a59f8fd71c1" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_512bb02117d66720b0c72fe2d2" ON "es_lockup_event" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_953fc73b0a9873292b633601e0" ON "es_lockup_event" ("address") `) + await db.query(`CREATE INDEX "IDX_9584d0dce1144609a1a9a0c579" ON "es_lockup_event" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_bb14524b2db1cbbf66d1729aba" ON "es_lockup_event" ("block_number") `) + await db.query(`CREATE INDEX "IDX_e1eb81715da4d4a8281616a39f" ON "es_lockup_event" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_46d53d4fad340d593995583600" ON "es_lockup_event" ("lockup_id") `) + await db.query(`CREATE TABLE "es_lockup" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "account" text NOT NULL, "lockup_id" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "tx_hash" text NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" numeric NOT NULL, "end" TIMESTAMP WITH TIME ZONE NOT NULL, "points" numeric NOT NULL, "withdraw_amount" numeric NOT NULL, "penalty" numeric NOT NULL, "state" character varying(6), CONSTRAINT "PK_5b189f92ac5becc0db1e5d1f8ad" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_15e9dc0d375d6f2687def01843" ON "es_lockup" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_f3c10b1e75f626e1aaeaa3cfc3" ON "es_lockup" ("address") `) + await db.query(`CREATE INDEX "IDX_5dd7ffdf1c625829f7eb79ee27" ON "es_lockup" ("account") `) + await db.query(`CREATE INDEX "IDX_31b53c3e4649bde773d707b2a0" ON "es_lockup" ("lockup_id") `) + await db.query(`CREATE INDEX "IDX_2434b29d48e045849fc12cef7c" ON "es_lockup" ("tx_hash") `) + await db.query(`CREATE TABLE "es_delegate_changed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "delegator" text NOT NULL, "from_delegate" text NOT NULL, "to_delegate" text NOT NULL, CONSTRAINT "PK_4d5857f4fe4904dea337644e603" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_76c1740192ed8b589f7b5a21c8" ON "es_delegate_changed" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_ed5ea936cde8d62b485ce45a13" ON "es_delegate_changed" ("address") `) + await db.query(`CREATE INDEX "IDX_22f639893bc36efe524a3bbca7" ON "es_delegate_changed" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_ed12aa7ace584cc494012a0e5b" ON "es_delegate_changed" ("block_number") `) + await db.query(`CREATE INDEX "IDX_e234755c68bb8d7f9cfd511126" ON "es_delegate_changed" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_cda0b80789007b35cf5430966f" ON "es_delegate_changed" ("delegator") `) + await db.query(`CREATE TABLE "es_delegate_votes_changed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "delegate" text NOT NULL, "previous_balance" numeric NOT NULL, "new_balance" numeric NOT NULL, CONSTRAINT "PK_4e8cd459830447ee5dd3a7e802b" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_4e20cdc38777932fadd008f6e4" ON "es_delegate_votes_changed" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_076fb50935afa2f319f1d16752" ON "es_delegate_votes_changed" ("address") `) + await db.query(`CREATE INDEX "IDX_338d2483a33dc74d360d2a44c5" ON "es_delegate_votes_changed" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_e0e6b12e50b95fb9b99c28df90" ON "es_delegate_votes_changed" ("block_number") `) + await db.query(`CREATE INDEX "IDX_60ea37f13fc3b16e491926314f" ON "es_delegate_votes_changed" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_bd6f657c57e5a92a8dd3fe6b4e" ON "es_delegate_votes_changed" ("delegate") `) + await db.query(`CREATE TABLE "es_penalty" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_41b7961c4867c2d18f8afa921cc" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_59fa17e121ecd2bead0a71cf85" ON "es_penalty" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_785a65f92c61edd176415e22ad" ON "es_penalty" ("address") `) + await db.query(`CREATE INDEX "IDX_7402aa565f5e2023e310610240" ON "es_penalty" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_8595139811169d26aa210f8a8d" ON "es_penalty" ("block_number") `) + await db.query(`CREATE INDEX "IDX_9f560f23bcdd81e13141c02125" ON "es_penalty" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_adc7f2fe26e4a36690a343339b" ON "es_penalty" ("account") `) + await db.query(`CREATE TABLE "es_reward" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_52643252c6b05e1a6d337081d9b" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_e05d0476721dfcf9152b58fc30" ON "es_reward" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_f01dea25da96f8d8eaec9b6f60" ON "es_reward" ("address") `) + await db.query(`CREATE INDEX "IDX_2f3b61cc072d95ad0796b9caa3" ON "es_reward" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_a3d39d7235e278255a5217d1df" ON "es_reward" ("block_number") `) + await db.query(`CREATE INDEX "IDX_d17aab47907d6816138ab2a7fa" ON "es_reward" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_b623db55430fefda84dfdf2949" ON "es_reward" ("account") `) + await db.query(`CREATE TABLE "es_stake" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "lockup_id" numeric NOT NULL, "amount" numeric NOT NULL, "end" numeric NOT NULL, "points" numeric NOT NULL, CONSTRAINT "PK_86bb48f03d8a3ca01f8d0339c66" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_385357cc5f41796615d8880190" ON "es_stake" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_e7bcc8120e2c256db6ebd01575" ON "es_stake" ("address") `) + await db.query(`CREATE INDEX "IDX_b95e58860bb9ba46d0ec41d246" ON "es_stake" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_d059ea472eb9d10f6be2025d40" ON "es_stake" ("block_number") `) + await db.query(`CREATE INDEX "IDX_f629f87d82890ea6f515e1a7a7" ON "es_stake" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_2d2f6b568b3145fe6095da5afa" ON "es_stake" ("account") `) + await db.query(`CREATE INDEX "IDX_bcb392795674b2cc0af394864c" ON "es_stake" ("lockup_id") `) + await db.query(`CREATE TABLE "es_unstake" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "account" text NOT NULL, "lockup_id" numeric NOT NULL, "amount" numeric NOT NULL, "end" numeric NOT NULL, "points" numeric NOT NULL, CONSTRAINT "PK_649003a33f9fb327e2f72d8e5df" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_0c51c706a778668dbd5ed9c817" ON "es_unstake" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_9301687673c195770cdd543049" ON "es_unstake" ("address") `) + await db.query(`CREATE INDEX "IDX_13fbe169018991ddcfeb4912cb" ON "es_unstake" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_06c024c53472178d0f5292330a" ON "es_unstake" ("block_number") `) + await db.query(`CREATE INDEX "IDX_7d988d60b55dc08addc58835d6" ON "es_unstake" ("tx_hash") `) + await db.query(`CREATE INDEX "IDX_0adcdd08da131e76d618b73db7" ON "es_unstake" ("account") `) + await db.query(`CREATE INDEX "IDX_cc43898a790e6e1d4bbf145097" ON "es_unstake" ("lockup_id") `) await db.query(`CREATE TABLE "strategy_balance" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "otoken" text NOT NULL, "strategy" text NOT NULL, "asset" text NOT NULL, "symbol" text NOT NULL, "balance" numeric NOT NULL, "balance_eth" numeric NOT NULL, CONSTRAINT "PK_ca6f93229d1392e9546d01dae4f" PRIMARY KEY ("id"))`) await db.query(`CREATE INDEX "IDX_bb5bbdf054deadf169e9e0330a" ON "strategy_balance" ("chain_id") `) await db.query(`CREATE INDEX "IDX_0113bf0b63183bea0d22cd0d08" ON "strategy_balance" ("timestamp") `) @@ -361,125 +475,17 @@ module.exports = class Data1776771673268 { await db.query(`CREATE INDEX "IDX_df364fb6e82d1feeed2a5dfffa" ON "strategy_daily_yield" ("block_number") `) await db.query(`CREATE INDEX "IDX_095c7036449ae511b4ef2a01df" ON "strategy_daily_yield" ("otoken") `) await db.query(`CREATE INDEX "IDX_c6a366374690d7e37b070e5788" ON "strategy_daily_yield" ("strategy") `) - await db.query(`CREATE TABLE "o_token" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "unallocated_supply" numeric NOT NULL, "total_supply" numeric NOT NULL, "rebasing_supply" numeric NOT NULL, "non_rebasing_supply" numeric NOT NULL, "credits_per_token" numeric NOT NULL, "holder_count" integer NOT NULL, CONSTRAINT "PK_4450ef96d5e51ef55bc8ea0b53e" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_1da06ba7d2c0a02d01d1b7a6c0" ON "o_token" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_0851d95d178f682d279a04ebf9" ON "o_token" ("otoken") `) - await db.query(`CREATE INDEX "IDX_7889d6ce061da066df89309e51" ON "o_token" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_4633929013f5ba465cb00e5a95" ON "o_token" ("block_number") `) - await db.query(`CREATE TABLE "o_token_raw_data" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "type" text NOT NULL, "data" jsonb NOT NULL, CONSTRAINT "PK_e676c653d2b14ad3f6a5ac16eee" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_63bab1b33b2d4f56d628108570" ON "o_token_raw_data" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_fc35f1b9da51dfa7ba1cc4bf93" ON "o_token_raw_data" ("otoken") `) - await db.query(`CREATE INDEX "IDX_93bd7ae7b014936b806248edca" ON "o_token_raw_data" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_628cf585ab703cf873fd01d38e" ON "o_token_raw_data" ("block_number") `) - await db.query(`CREATE TABLE "wo_token" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "total_assets" numeric NOT NULL, "total_supply" numeric NOT NULL, "assets_per_share" numeric NOT NULL, CONSTRAINT "PK_4305ea14cb58bef31b227a8e529" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_ed8d2cd8eaa28f1f48af676dcf" ON "wo_token" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_46a8bdc64b39c46a0aa37bb768" ON "wo_token" ("otoken") `) - await db.query(`CREATE INDEX "IDX_3d57d694c426c319d925b846f8" ON "wo_token" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_f14aa07c5a85a39318a017d421" ON "wo_token" ("block_number") `) - await db.query(`CREATE TABLE "o_token_asset" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "address" text NOT NULL, "symbol" text NOT NULL, CONSTRAINT "PK_eb502dc2745e676b217ea3e0323" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_2eb2f24563a058f9d6e746ed47" ON "o_token_asset" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_7a26c80564bf5fe4e414125e99" ON "o_token_asset" ("otoken") `) - await db.query(`CREATE INDEX "IDX_53e8f932900b50984e1c30e7c0" ON "o_token_asset" ("address") `) - await db.query(`CREATE TABLE "o_token_history" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "value" numeric NOT NULL, "balance" numeric NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "type" character varying(8) NOT NULL, "address_id" character varying, CONSTRAINT "PK_adba161a29081a0a47532807da8" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_3200b91c04a72dda2312eb518c" ON "o_token_history" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_b4b39e42a6d2604b34082c4c80" ON "o_token_history" ("otoken") `) - await db.query(`CREATE INDEX "IDX_2f1457755464ec5951d1e96542" ON "o_token_history" ("address_id") `) - await db.query(`CREATE INDEX "IDX_42142d191ea0408fb511f9f576" ON "o_token_history" ("block_number") `) - await db.query(`CREATE INDEX "IDX_f87d86cfca9ef211ba1b18d2bc" ON "o_token_history" ("tx_hash") `) - await db.query(`CREATE TABLE "o_token_address" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "address" text NOT NULL, "is_contract" boolean NOT NULL, "rebasing_option" character varying(21) NOT NULL, "credits" numeric NOT NULL, "credits_per_token" numeric NOT NULL, "balance" numeric NOT NULL, "earned" numeric NOT NULL, "yield_to" text, "yield_from" text, "block_number" integer NOT NULL, "last_updated" TIMESTAMP WITH TIME ZONE NOT NULL, "since" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_5d5d2b6f8a94da6ed63aac85194" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_7cbc465ce1e9ae06dfe3a8c625" ON "o_token_address" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_5342c499e930e396bade7faeb6" ON "o_token_address" ("otoken") `) - await db.query(`CREATE INDEX "IDX_75c7d29bf71b393e99c4407885" ON "o_token_address" ("address") `) - await db.query(`CREATE TABLE "o_token_apy" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text, "date" text NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "apy7_day_avg" numeric NOT NULL, "apy14_day_avg" numeric NOT NULL, "apy30_day_avg" numeric NOT NULL, "rebasing_credits_per_token" numeric NOT NULL, CONSTRAINT "PK_132f1c9570d48b38184ca5ac4cc" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_5d9294486b1c57df8c3aad5145" ON "o_token_apy" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_4d4f1b0d9e7f6903a2038c6c38" ON "o_token_apy" ("otoken") `) - await db.query(`CREATE INDEX "IDX_5b81f5a25e913cc7bf1d4c145a" ON "o_token_apy" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_79f0934481fe045319c864cd84" ON "o_token_apy" ("block_number") `) - await db.query(`CREATE INDEX "IDX_f5f416a1490ee2007a9c7593d0" ON "o_token_apy" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_a98d74fc6af6f3a599fe1ba7fb" ON "o_token_apy" ("date") `) - await db.query(`CREATE TABLE "o_token_rebase" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "total_supply" numeric NOT NULL, "rebasing_credits" numeric NOT NULL, "rebasing_credits_per_token" numeric NOT NULL, "fee" numeric NOT NULL, "fee_eth" numeric NOT NULL, "fee_usd" numeric NOT NULL, "yield" numeric NOT NULL, "yield_eth" numeric NOT NULL, "yield_usd" numeric NOT NULL, "apy_id" character varying, CONSTRAINT "PK_f8e636dc692c399dd1ead98c720" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_83666ab47ff5ef0c56bf40d122" ON "o_token_rebase" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_3fb75a6c8b831ca4d201d60e01" ON "o_token_rebase" ("otoken") `) - await db.query(`CREATE INDEX "IDX_15ef53e2bdcc3034ab8adea1f1" ON "o_token_rebase" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_b0c6feb890a83dcca572302371" ON "o_token_rebase" ("block_number") `) - await db.query(`CREATE INDEX "IDX_7170f89052507f34d8563f7016" ON "o_token_rebase" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_b8653270b96fc932f077b26441" ON "o_token_rebase" ("apy_id") `) - await db.query(`CREATE TABLE "o_token_rebase_option" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "status" character varying(21) NOT NULL, "delegated_to" text, "address_id" character varying, CONSTRAINT "PK_8b52df258c40e8347a66922f63e" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_5dfc53108b110d42994d02a832" ON "o_token_rebase_option" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_5936af713ee8131983812703b2" ON "o_token_rebase_option" ("otoken") `) - await db.query(`CREATE INDEX "IDX_cb07bc901206c5da63eacff7df" ON "o_token_rebase_option" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_95bab764e1a63ea0778dca4038" ON "o_token_rebase_option" ("block_number") `) - await db.query(`CREATE INDEX "IDX_00fff31b07544c1739afce542c" ON "o_token_rebase_option" ("tx_hash") `) - await db.query(`CREATE INDEX "IDX_da7296f8011232dc8675477b84" ON "o_token_rebase_option" ("address_id") `) - await db.query(`CREATE TABLE "o_token_vault" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "vault_buffer" numeric NOT NULL, "total_value" numeric NOT NULL, CONSTRAINT "PK_90bb3a4df699017439cd6a44a0c" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_6990f4cd71ea8db6d9d27a0db5" ON "o_token_vault" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_2c88ea3e889e76b037d8f59c96" ON "o_token_vault" ("otoken") `) - await db.query(`CREATE INDEX "IDX_091cfbe0d977006e05144bd1fe" ON "o_token_vault" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_fa92b36d011441a02d9a231860" ON "o_token_vault" ("block_number") `) - await db.query(`CREATE INDEX "IDX_3a2bfb2808c1d7cbb0a568910c" ON "o_token_vault" ("address") `) - await db.query(`CREATE TABLE "o_token_activity" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "otoken" text NOT NULL, "account" text, "counterparty" text, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "type" character varying(12), "data" jsonb, CONSTRAINT "PK_a6e9207d04e252b4de591283276" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_9c617918c3dc521bed5220a185" ON "o_token_activity" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_62bfeb1dee3bcefffdbd10172a" ON "o_token_activity" ("otoken") `) - await db.query(`CREATE INDEX "IDX_6030e60850370dc382959fa76c" ON "o_token_activity" ("account") `) - await db.query(`CREATE INDEX "IDX_7d58e25d0c7b1ddb7a17fa844d" ON "o_token_activity" ("counterparty") `) - await db.query(`CREATE INDEX "IDX_57bb1f7d2fd6fe063b9cd434b2" ON "o_token_activity" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_d6cba0877ee9f5332e6d97e758" ON "o_token_activity" ("block_number") `) - await db.query(`CREATE INDEX "IDX_b5826e68934ff671bbe28836ec" ON "o_token_activity" ("tx_hash") `) - await db.query(`CREATE TABLE "o_token_daily_stat" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "date" text NOT NULL, "apr" numeric NOT NULL, "apy" numeric NOT NULL, "apy7" numeric NOT NULL, "apy14" numeric NOT NULL, "apy30" numeric NOT NULL, "peg" numeric NOT NULL, "rate_usd" numeric NOT NULL, "rate_eth" numeric NOT NULL, "rate_native" numeric NOT NULL, "total_supply" numeric NOT NULL, "rebasing_supply" numeric NOT NULL, "non_rebasing_supply" numeric NOT NULL, "wrapped_supply" numeric NOT NULL, "rate_wrapped" numeric NOT NULL, "amo_supply" numeric, "dripper_weth" numeric NOT NULL, "yield" numeric NOT NULL, "fees" numeric NOT NULL, "cumulative_yield" numeric NOT NULL, "cumulative_fees" numeric NOT NULL, "market_cap_usd" numeric NOT NULL, "accounts_over_threshold" integer NOT NULL, CONSTRAINT "PK_eeabae008c52207e32e2171176d" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_98c1ae817f9436c4f602de04c7" ON "o_token_daily_stat" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_8da572d689803a6292f00f687c" ON "o_token_daily_stat" ("block_number") `) - await db.query(`CREATE INDEX "IDX_41df5fb0657b57079c5e011578" ON "o_token_daily_stat" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_7581835374b0582ec62df30f28" ON "o_token_daily_stat" ("otoken") `) - await db.query(`CREATE INDEX "IDX_448a0a2ffd35d4dda520f1a98f" ON "o_token_daily_stat" ("date") `) - await db.query(`CREATE TABLE "o_token_dripper_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "weth_balance" numeric NOT NULL, "available_funds" numeric NOT NULL, "last_collect" numeric NOT NULL, "per_second" numeric NOT NULL, "per_second_target" numeric, "per_second_max" numeric, "drip_duration" numeric NOT NULL, CONSTRAINT "PK_8fd326f8158125b5a2be7e86803" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_7671125bf3c842a221e9ada6da" ON "o_token_dripper_state" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_bd00c38c8ddaf6a21f00d71c7a" ON "o_token_dripper_state" ("block_number") `) - await db.query(`CREATE INDEX "IDX_7db5954d3839261e98ef3f7a9a" ON "o_token_dripper_state" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_a51e66365c5b4b40467ebc9950" ON "o_token_dripper_state" ("otoken") `) - await db.query(`CREATE TABLE "o_token_harvester_yield_sent" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "tx_hash" text NOT NULL, "yield" numeric NOT NULL, "fee" numeric NOT NULL, CONSTRAINT "PK_4618b0b2a790bb9704e9b873197" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_4e6c5f29c015c97c9cc76ab78b" ON "o_token_harvester_yield_sent" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_1c880d32eeaf3388e46ca48893" ON "o_token_harvester_yield_sent" ("block_number") `) - await db.query(`CREATE INDEX "IDX_500946a66f9276c87b7253dfa2" ON "o_token_harvester_yield_sent" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_d0c45975949e6353d4816b52d3" ON "o_token_harvester_yield_sent" ("otoken") `) - await db.query(`CREATE TABLE "o_token_reward_token_collected" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "strategy" text NOT NULL, "recipient" text NOT NULL, "reward_token" text NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_5c6bade1f1270bea78a42e5b19b" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_70b0a606f9cd642c70b9a47e89" ON "o_token_reward_token_collected" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_f4ab790e094a77b93887966876" ON "o_token_reward_token_collected" ("block_number") `) - await db.query(`CREATE INDEX "IDX_21d1addd6f0b96b016c802141f" ON "o_token_reward_token_collected" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_12a95d40144492a85dc15b9e57" ON "o_token_reward_token_collected" ("otoken") `) - await db.query(`CREATE TABLE "o_token_withdrawal_request" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "request_id" numeric NOT NULL, "withdrawer" text NOT NULL, "amount" numeric NOT NULL, "queued" numeric NOT NULL, "claimed" boolean NOT NULL, "claimed_at" TIMESTAMP WITH TIME ZONE, "queue_wait" numeric, "tx_hash" text NOT NULL, CONSTRAINT "PK_44db9244683cb58e12a51cf3c8b" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_d9844c17dce47a89f23917de31" ON "o_token_withdrawal_request" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_326e6366033bf085a34371d559" ON "o_token_withdrawal_request" ("block_number") `) - await db.query(`CREATE INDEX "IDX_40e7c338b514e19f2319d768bd" ON "o_token_withdrawal_request" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_39091effe13b6c6e2a321c1cad" ON "o_token_withdrawal_request" ("otoken") `) - await db.query(`CREATE INDEX "IDX_f5baa0e3b6dcfe1940cfa02c01" ON "o_token_withdrawal_request" ("tx_hash") `) - await db.query(`CREATE TABLE "o_token_yield_forwarded" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "otoken" text NOT NULL, "from" text NOT NULL, "to" text NOT NULL, "from_balance" numeric NOT NULL, "amount" numeric NOT NULL, CONSTRAINT "PK_22bbb6894ff29f1cffa62fa8cca" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_c819776ce5a04915227ada2990" ON "o_token_yield_forwarded" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_74ae9edf4f308f86740b16b7cd" ON "o_token_yield_forwarded" ("block_number") `) - await db.query(`CREATE INDEX "IDX_b8b0b44e2b80be2fbeb211debe" ON "o_token_yield_forwarded" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_8e58218e9917d409803beb1479" ON "o_token_yield_forwarded" ("otoken") `) - await db.query(`CREATE TABLE "pool_booster" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "registry_address" text NOT NULL, "amm_pool_address" text NOT NULL, "factory_address" text NOT NULL, "pool_booster_type" integer NOT NULL, "active" boolean NOT NULL, CONSTRAINT "PK_85efb2983184555953408176314" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_c46c14abc58edf2c6bbd1e8d09" ON "pool_booster" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_2c38cf60d95bd998304076c11c" ON "pool_booster" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_90136d4e23c9ed49f1b9f3a101" ON "pool_booster" ("block_number") `) - await db.query(`CREATE INDEX "IDX_47dd84c80f040852a6d8789a24" ON "pool_booster" ("address") `) - await db.query(`CREATE INDEX "IDX_ab1662265686664891ee4eeb78" ON "pool_booster" ("registry_address") `) - await db.query(`CREATE INDEX "IDX_6d838f9682498d64417204e3cf" ON "pool_booster" ("amm_pool_address") `) - await db.query(`CREATE INDEX "IDX_373e04b978fa8ec37506b82872" ON "pool_booster" ("factory_address") `) - await db.query(`CREATE TABLE "pool_booster_bribe_executed" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "tx_hash" text NOT NULL, "amount" numeric NOT NULL, "fee" numeric NOT NULL, CONSTRAINT "PK_3b9b80d19e643bb171929611e7c" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_3dbdcdcc2418ce9ce520d8ade6" ON "pool_booster_bribe_executed" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_54b5d8f2bbe89855785a038c33" ON "pool_booster_bribe_executed" ("address") `) - await db.query(`CREATE INDEX "IDX_d7693679519921139cb2dcb739" ON "pool_booster_bribe_executed" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_644a87d8df6aced2f35564d43f" ON "pool_booster_bribe_executed" ("block_number") `) - await db.query(`CREATE TABLE "processing_status" ("id" character varying NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "start_timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "head_timestamp" TIMESTAMP WITH TIME ZONE, CONSTRAINT "PK_85f5e2467b74fb70fac1a053021" PRIMARY KEY ("id"))`) - await db.query(`CREATE TABLE "morpho_vault_apy" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "vault_address" text NOT NULL, "apy" numeric NOT NULL, CONSTRAINT "PK_1eb48a8bffe750af2755aac0f94" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_ef9b1dc35540b19ffcba78287c" ON "morpho_vault_apy" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_428890d4341fab14d1b350355e" ON "morpho_vault_apy" ("timestamp") `) - await db.query(`CREATE INDEX "IDX_87d21220457c7025845c0d5760" ON "morpho_vault_apy" ("block_number") `) - await db.query(`CREATE INDEX "IDX_c2be559e927f6cf24bba874de4" ON "morpho_vault_apy" ("vault_address") `) - await db.query(`CREATE TABLE "pool" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "address" text NOT NULL, "exchange" text NOT NULL, "name" text, "symbol" text, "tokens" text array NOT NULL, "symbols" text array NOT NULL, "decimals" integer array NOT NULL, "type" text NOT NULL, "created_at_block" integer NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, CONSTRAINT "PK_db1bfe411e1516c01120b85f8fe" PRIMARY KEY ("id"))`) - await db.query(`CREATE INDEX "IDX_ca7b22bed322c7c1c817d7fefc" ON "pool" ("chain_id") `) - await db.query(`CREATE INDEX "IDX_0764827295d4ed49e259aa398f" ON "pool" ("address") `) - await db.query(`CREATE INDEX "IDX_9a38a7d17d1fff09327de45882" ON "pool" ("exchange") `) + await db.query(`CREATE TABLE "sfc_withdrawal" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE NOT NULL, "created_at_block" integer NOT NULL, "delegator" text NOT NULL, "to_validator_id" text NOT NULL, "wr_id" text NOT NULL, "amount" numeric NOT NULL, "penalty" numeric, "withdrawn_at" TIMESTAMP WITH TIME ZONE, "withdrawn_at_block" integer, CONSTRAINT "PK_ddb6248f9bf2b19ba24e1de1aae" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_098bb05eb0e21825d9f97d7238" ON "sfc_withdrawal" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_c1767bd417033cf6be2fc0dfed" ON "sfc_withdrawal" ("delegator") `) + await db.query(`CREATE INDEX "IDX_7afdeeed7b96e60407ed2cee72" ON "sfc_withdrawal" ("to_validator_id") `) + await db.query(`CREATE INDEX "IDX_8e76d028b9d21884b48a6cfb34" ON "sfc_withdrawal" ("wr_id") `) + await db.query(`CREATE TABLE "morpho_market_state" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "market_id" text NOT NULL, "total_supply_assets" numeric NOT NULL, "total_supply_shares" numeric NOT NULL, "total_borrow_assets" numeric NOT NULL, "total_borrow_shares" numeric NOT NULL, "last_update" numeric NOT NULL, "fee" numeric NOT NULL, CONSTRAINT "PK_69eee8c1777f06d9de8b4cab68d" PRIMARY KEY ("id"))`) + await db.query(`CREATE TABLE "event_woeth_price_updated" ("id" character varying NOT NULL, "chain_id" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "block_number" integer NOT NULL, "address" text NOT NULL, "old_value" numeric NOT NULL, "new_value" numeric NOT NULL, CONSTRAINT "PK_1c828c028380b7600d024778689" PRIMARY KEY ("id"))`) + await db.query(`CREATE INDEX "IDX_cfeca5e039fb3f137b5922a60a" ON "event_woeth_price_updated" ("chain_id") `) + await db.query(`CREATE INDEX "IDX_e05f1c97627f04cb666bfbfd2e" ON "event_woeth_price_updated" ("timestamp") `) + await db.query(`CREATE INDEX "IDX_462441741f17550d40da0cd5c0" ON "event_woeth_price_updated" ("block_number") `) + await db.query(`CREATE INDEX "IDX_dd99dbcb9666973f47c7462593" ON "event_woeth_price_updated" ("address") `) await db.query(`ALTER TABLE "beacon_deposit_event" ADD CONSTRAINT "FK_dff55f23cfcfa0ff664964572ff" FOREIGN KEY ("pubkey_id") REFERENCES "beacon_deposit_pubkey"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "ogv_address" ADD CONSTRAINT "FK_49d26f287904b8b1aef6e9ac2b3" FOREIGN KEY ("delegatee_id") REFERENCES "ogv_address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "ogv_lockup" ADD CONSTRAINT "FK_8be94cd63e35b91adf1301a156c" FOREIGN KEY ("address_id") REFERENCES "ogv_address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) @@ -488,25 +494,47 @@ module.exports = class Data1776771673268 { await db.query(`ALTER TABLE "ogv_proposal_tx_log" ADD CONSTRAINT "FK_5d5f5e10892290ee366d26de7dc" FOREIGN KEY ("proposal_id") REFERENCES "ogv_proposal"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "ogv_proposal_vote" ADD CONSTRAINT "FK_58d732bc6523c2609d2725cc0ac" FOREIGN KEY ("proposal_id") REFERENCES "ogv_proposal"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "ogv_proposal_vote" ADD CONSTRAINT "FK_2fd621aea353448fb3f17721bc8" FOREIGN KEY ("voter_id") REFERENCES "ogv_address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) - await db.query(`ALTER TABLE "es_account" ADD CONSTRAINT "FK_7b43e7bb90d3b435d074112f572" FOREIGN KEY ("delegate_to_id") REFERENCES "es_account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) - await db.query(`ALTER TABLE "es_lockup_event" ADD CONSTRAINT "FK_46d53d4fad340d5939955836004" FOREIGN KEY ("lockup_id") REFERENCES "es_lockup"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) - await db.query(`ALTER TABLE "aero_cl_pool_state" ADD CONSTRAINT "FK_02aa86fe0e78999620744402a0c" FOREIGN KEY ("tick_id") REFERENCES "aero_cl_pool_tick"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) - await db.query(`ALTER TABLE "governance_proposal_event" ADD CONSTRAINT "FK_ce984d23fc99c537b8f22fd663a" FOREIGN KEY ("proposal_id") REFERENCES "governance_proposal"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) - await db.query(`ALTER TABLE "governance_proposal_vote" ADD CONSTRAINT "FK_5531af241c24a09c854ead9d551" FOREIGN KEY ("proposal_id") REFERENCES "governance_proposal"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "o_token_history" ADD CONSTRAINT "FK_2f1457755464ec5951d1e96542a" FOREIGN KEY ("address_id") REFERENCES "o_token_address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "o_token_rebase" ADD CONSTRAINT "FK_b8653270b96fc932f077b26441d" FOREIGN KEY ("apy_id") REFERENCES "o_token_apy"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) await db.query(`ALTER TABLE "o_token_rebase_option" ADD CONSTRAINT "FK_da7296f8011232dc8675477b841" FOREIGN KEY ("address_id") REFERENCES "o_token_address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) + await db.query(`ALTER TABLE "aero_cl_pool_state" ADD CONSTRAINT "FK_02aa86fe0e78999620744402a0c" FOREIGN KEY ("tick_id") REFERENCES "aero_cl_pool_tick"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) + await db.query(`ALTER TABLE "governance_proposal_event" ADD CONSTRAINT "FK_ce984d23fc99c537b8f22fd663a" FOREIGN KEY ("proposal_id") REFERENCES "governance_proposal"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) + await db.query(`ALTER TABLE "governance_proposal_vote" ADD CONSTRAINT "FK_5531af241c24a09c854ead9d551" FOREIGN KEY ("proposal_id") REFERENCES "governance_proposal"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) + await db.query(`ALTER TABLE "es_account" ADD CONSTRAINT "FK_7b43e7bb90d3b435d074112f572" FOREIGN KEY ("delegate_to_id") REFERENCES "es_account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) + await db.query(`ALTER TABLE "es_lockup_event" ADD CONSTRAINT "FK_46d53d4fad340d5939955836004" FOREIGN KEY ("lockup_id") REFERENCES "es_lockup"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`) } async down(db) { await db.query(`DROP TABLE "util_cache"`) - await db.query(`DROP TABLE "ogn_daily_stat"`) - await db.query(`DROP INDEX "public"."IDX_cb4297ef85375ee13a3446b240"`) - await db.query(`DROP INDEX "public"."IDX_b96b9849e1e479d743ffb547c9"`) + await db.query(`DROP TABLE "exchange_rate"`) + await db.query(`DROP INDEX "public"."IDX_2b58051dcc72cf0f02aa41ff14"`) + await db.query(`DROP INDEX "public"."IDX_9e23a3f1bf3634820c873a0fe8"`) + await db.query(`DROP INDEX "public"."IDX_c61a93768eed9e58ce399bbe01"`) + await db.query(`DROP TABLE "exchange_rate_daily"`) + await db.query(`DROP INDEX "public"."IDX_75a5e016ee89095c71233c2631"`) + await db.query(`DROP INDEX "public"."IDX_ee06a45adcc9be153ea4d1a4df"`) + await db.query(`DROP INDEX "public"."IDX_c86ebf583f87235cdbdeca9fe9"`) + await db.query(`DROP INDEX "public"."IDX_c46615b7946e1f9d20ebe12986"`) + await db.query(`DROP INDEX "public"."IDX_1d24ee5f933fa86496c855a591"`) await db.query(`DROP TABLE "native_balance"`) await db.query(`DROP INDEX "public"."IDX_45fb48f831ccadcf29f404824a"`) await db.query(`DROP INDEX "public"."IDX_82d827c3b96fb3c5ab43068502"`) - await db.query(`DROP TABLE "wallet_labels"`) + await db.query(`DROP TABLE "legacy_staker"`) + await db.query(`DROP TABLE "curve_pool"`) + await db.query(`DROP INDEX "public"."IDX_76c9202c1160ce818f7a29d131"`) + await db.query(`DROP TABLE "curve_pool_balance"`) + await db.query(`DROP INDEX "public"."IDX_ffb0d0f86f03faacef7cb3e092"`) + await db.query(`DROP INDEX "public"."IDX_db5522c865eb8ed76fa7aeb4a8"`) + await db.query(`DROP TABLE "curve_pool_rate"`) + await db.query(`DROP INDEX "public"."IDX_561faf9883f4bb00ae6df34cc1"`) + await db.query(`DROP INDEX "public"."IDX_cefe6315e78e235fa4ab3de663"`) + await db.query(`DROP TABLE "protocol_daily_stat"`) + await db.query(`DROP INDEX "public"."IDX_f196efecb1b717f74494c4416b"`) + await db.query(`DROP INDEX "public"."IDX_a5af597a96fb8752dc00093192"`) + await db.query(`DROP TABLE "protocol_daily_stat_detail"`) + await db.query(`DROP INDEX "public"."IDX_25e652f34770b8661d5ea7139e"`) + await db.query(`DROP INDEX "public"."IDX_c0025cac7d806e2a33cd61c0c9"`) + await db.query(`DROP INDEX "public"."IDX_8f2fcc9fbd33954d90f69c280f"`) await db.query(`DROP TABLE "beacon_deposit_pubkey"`) await db.query(`DROP TABLE "beacon_deposit_event"`) await db.query(`DROP INDEX "public"."IDX_4b157d82fc2a709b1cdd1b056a"`) @@ -527,30 +555,17 @@ module.exports = class Data1776771673268 { await db.query(`DROP INDEX "public"."IDX_b883d5666bb2f8b5b1f7d9633a"`) await db.query(`DROP INDEX "public"."IDX_adcff42ecde1a20daeb870b3c4"`) await db.query(`DROP INDEX "public"."IDX_41665fa5e546780642bacf96c7"`) - await db.query(`DROP TABLE "curve_pool"`) - await db.query(`DROP INDEX "public"."IDX_76c9202c1160ce818f7a29d131"`) - await db.query(`DROP TABLE "curve_pool_balance"`) - await db.query(`DROP INDEX "public"."IDX_ffb0d0f86f03faacef7cb3e092"`) - await db.query(`DROP INDEX "public"."IDX_db5522c865eb8ed76fa7aeb4a8"`) - await db.query(`DROP TABLE "curve_pool_rate"`) - await db.query(`DROP INDEX "public"."IDX_561faf9883f4bb00ae6df34cc1"`) - await db.query(`DROP INDEX "public"."IDX_cefe6315e78e235fa4ab3de663"`) await db.query(`DROP TABLE "coin_gecko_coin_data"`) await db.query(`DROP INDEX "public"."IDX_55f8b56cad28caa22a995dfb83"`) await db.query(`DROP INDEX "public"."IDX_821542437abc5d0d6aa7959131"`) - await db.query(`DROP TABLE "legacy_staker"`) - await db.query(`DROP TABLE "protocol_daily_stat"`) - await db.query(`DROP INDEX "public"."IDX_f196efecb1b717f74494c4416b"`) - await db.query(`DROP INDEX "public"."IDX_a5af597a96fb8752dc00093192"`) - await db.query(`DROP TABLE "protocol_daily_stat_detail"`) - await db.query(`DROP INDEX "public"."IDX_25e652f34770b8661d5ea7139e"`) - await db.query(`DROP INDEX "public"."IDX_c0025cac7d806e2a33cd61c0c9"`) - await db.query(`DROP INDEX "public"."IDX_8f2fcc9fbd33954d90f69c280f"`) await db.query(`DROP TABLE "ogn_buyback"`) await db.query(`DROP INDEX "public"."IDX_daa406e4bd0f1313c9e54aab97"`) await db.query(`DROP INDEX "public"."IDX_854fb3714182df4d2ba943417a"`) await db.query(`DROP INDEX "public"."IDX_30396766a2f98c53fc916657e6"`) - await db.query(`DROP TABLE "morpho_market_state"`) + await db.query(`DROP TABLE "wallet_labels"`) + await db.query(`DROP TABLE "ogn_daily_stat"`) + await db.query(`DROP INDEX "public"."IDX_cb4297ef85375ee13a3446b240"`) + await db.query(`DROP INDEX "public"."IDX_b96b9849e1e479d743ffb547c9"`) await db.query(`DROP TABLE "ogv"`) await db.query(`DROP INDEX "public"."IDX_2418a8b8b92b2f5977be761cf9"`) await db.query(`DROP INDEX "public"."IDX_b8f20bcf48e4aa77e0f48d77db"`) @@ -571,26 +586,168 @@ module.exports = class Data1776771673268 { await db.query(`DROP TABLE "ogv_daily_stat"`) await db.query(`DROP INDEX "public"."IDX_c974bde87107cacae6d3654972"`) await db.query(`DROP INDEX "public"."IDX_b62fa80951183bb0acf8a5e8b9"`) - await db.query(`DROP TABLE "event_woeth_price_updated"`) - await db.query(`DROP INDEX "public"."IDX_cfeca5e039fb3f137b5922a60a"`) - await db.query(`DROP INDEX "public"."IDX_e05f1c97627f04cb666bfbfd2e"`) - await db.query(`DROP INDEX "public"."IDX_462441741f17550d40da0cd5c0"`) - await db.query(`DROP INDEX "public"."IDX_dd99dbcb9666973f47c7462593"`) - await db.query(`DROP TABLE "sfc_withdrawal"`) - await db.query(`DROP INDEX "public"."IDX_098bb05eb0e21825d9f97d7238"`) - await db.query(`DROP INDEX "public"."IDX_c1767bd417033cf6be2fc0dfed"`) - await db.query(`DROP INDEX "public"."IDX_7afdeeed7b96e60407ed2cee72"`) - await db.query(`DROP INDEX "public"."IDX_8e76d028b9d21884b48a6cfb34"`) - await db.query(`DROP TABLE "exchange_rate"`) - await db.query(`DROP INDEX "public"."IDX_2b58051dcc72cf0f02aa41ff14"`) - await db.query(`DROP INDEX "public"."IDX_9e23a3f1bf3634820c873a0fe8"`) - await db.query(`DROP INDEX "public"."IDX_c61a93768eed9e58ce399bbe01"`) - await db.query(`DROP TABLE "exchange_rate_daily"`) - await db.query(`DROP INDEX "public"."IDX_75a5e016ee89095c71233c2631"`) - await db.query(`DROP INDEX "public"."IDX_ee06a45adcc9be153ea4d1a4df"`) - await db.query(`DROP INDEX "public"."IDX_c86ebf583f87235cdbdeca9fe9"`) - await db.query(`DROP INDEX "public"."IDX_c46615b7946e1f9d20ebe12986"`) - await db.query(`DROP INDEX "public"."IDX_1d24ee5f933fa86496c855a591"`) + await db.query(`DROP TABLE "transaction_details"`) + await db.query(`DROP INDEX "public"."IDX_035179d5845a24726b74795cb5"`) + await db.query(`DROP INDEX "public"."IDX_9e0953446c15e89dfe68dbe5bd"`) + await db.query(`DROP INDEX "public"."IDX_ec29c6dbcba374ae8819275f22"`) + await db.query(`DROP INDEX "public"."IDX_1ada02a88b8355495e0917b49b"`) + await db.query(`DROP INDEX "public"."IDX_81a859fb3a14a34f194e1d8606"`) + await db.query(`DROP INDEX "public"."IDX_ae3e0f0414a1deb6e4840e2e44"`) + await db.query(`DROP TABLE "pool"`) + await db.query(`DROP INDEX "public"."IDX_ca7b22bed322c7c1c817d7fefc"`) + await db.query(`DROP INDEX "public"."IDX_0764827295d4ed49e259aa398f"`) + await db.query(`DROP INDEX "public"."IDX_9a38a7d17d1fff09327de45882"`) + await db.query(`DROP TABLE "pool_booster"`) + await db.query(`DROP INDEX "public"."IDX_c46c14abc58edf2c6bbd1e8d09"`) + await db.query(`DROP INDEX "public"."IDX_2c38cf60d95bd998304076c11c"`) + await db.query(`DROP INDEX "public"."IDX_90136d4e23c9ed49f1b9f3a101"`) + await db.query(`DROP INDEX "public"."IDX_47dd84c80f040852a6d8789a24"`) + await db.query(`DROP INDEX "public"."IDX_ab1662265686664891ee4eeb78"`) + await db.query(`DROP INDEX "public"."IDX_6d838f9682498d64417204e3cf"`) + await db.query(`DROP INDEX "public"."IDX_373e04b978fa8ec37506b82872"`) + await db.query(`DROP TABLE "pool_booster_bribe_executed"`) + await db.query(`DROP INDEX "public"."IDX_3dbdcdcc2418ce9ce520d8ade6"`) + await db.query(`DROP INDEX "public"."IDX_54b5d8f2bbe89855785a038c33"`) + await db.query(`DROP INDEX "public"."IDX_d7693679519921139cb2dcb739"`) + await db.query(`DROP INDEX "public"."IDX_644a87d8df6aced2f35564d43f"`) + await db.query(`DROP TABLE "o_token"`) + await db.query(`DROP INDEX "public"."IDX_1da06ba7d2c0a02d01d1b7a6c0"`) + await db.query(`DROP INDEX "public"."IDX_0851d95d178f682d279a04ebf9"`) + await db.query(`DROP INDEX "public"."IDX_7889d6ce061da066df89309e51"`) + await db.query(`DROP INDEX "public"."IDX_4633929013f5ba465cb00e5a95"`) + await db.query(`DROP TABLE "o_token_raw_data"`) + await db.query(`DROP INDEX "public"."IDX_63bab1b33b2d4f56d628108570"`) + await db.query(`DROP INDEX "public"."IDX_fc35f1b9da51dfa7ba1cc4bf93"`) + await db.query(`DROP INDEX "public"."IDX_93bd7ae7b014936b806248edca"`) + await db.query(`DROP INDEX "public"."IDX_628cf585ab703cf873fd01d38e"`) + await db.query(`DROP TABLE "wo_token"`) + await db.query(`DROP INDEX "public"."IDX_ed8d2cd8eaa28f1f48af676dcf"`) + await db.query(`DROP INDEX "public"."IDX_46a8bdc64b39c46a0aa37bb768"`) + await db.query(`DROP INDEX "public"."IDX_3d57d694c426c319d925b846f8"`) + await db.query(`DROP INDEX "public"."IDX_f14aa07c5a85a39318a017d421"`) + await db.query(`DROP TABLE "o_token_asset"`) + await db.query(`DROP INDEX "public"."IDX_2eb2f24563a058f9d6e746ed47"`) + await db.query(`DROP INDEX "public"."IDX_7a26c80564bf5fe4e414125e99"`) + await db.query(`DROP INDEX "public"."IDX_53e8f932900b50984e1c30e7c0"`) + await db.query(`DROP TABLE "o_token_history"`) + await db.query(`DROP INDEX "public"."IDX_3200b91c04a72dda2312eb518c"`) + await db.query(`DROP INDEX "public"."IDX_b4b39e42a6d2604b34082c4c80"`) + await db.query(`DROP INDEX "public"."IDX_2f1457755464ec5951d1e96542"`) + await db.query(`DROP INDEX "public"."IDX_42142d191ea0408fb511f9f576"`) + await db.query(`DROP INDEX "public"."IDX_f87d86cfca9ef211ba1b18d2bc"`) + await db.query(`DROP TABLE "o_token_address"`) + await db.query(`DROP INDEX "public"."IDX_7cbc465ce1e9ae06dfe3a8c625"`) + await db.query(`DROP INDEX "public"."IDX_5342c499e930e396bade7faeb6"`) + await db.query(`DROP INDEX "public"."IDX_75c7d29bf71b393e99c4407885"`) + await db.query(`DROP TABLE "o_token_apy"`) + await db.query(`DROP INDEX "public"."IDX_5d9294486b1c57df8c3aad5145"`) + await db.query(`DROP INDEX "public"."IDX_4d4f1b0d9e7f6903a2038c6c38"`) + await db.query(`DROP INDEX "public"."IDX_5b81f5a25e913cc7bf1d4c145a"`) + await db.query(`DROP INDEX "public"."IDX_79f0934481fe045319c864cd84"`) + await db.query(`DROP INDEX "public"."IDX_f5f416a1490ee2007a9c7593d0"`) + await db.query(`DROP INDEX "public"."IDX_a98d74fc6af6f3a599fe1ba7fb"`) + await db.query(`DROP TABLE "o_token_rebase"`) + await db.query(`DROP INDEX "public"."IDX_83666ab47ff5ef0c56bf40d122"`) + await db.query(`DROP INDEX "public"."IDX_3fb75a6c8b831ca4d201d60e01"`) + await db.query(`DROP INDEX "public"."IDX_15ef53e2bdcc3034ab8adea1f1"`) + await db.query(`DROP INDEX "public"."IDX_b0c6feb890a83dcca572302371"`) + await db.query(`DROP INDEX "public"."IDX_7170f89052507f34d8563f7016"`) + await db.query(`DROP INDEX "public"."IDX_b8653270b96fc932f077b26441"`) + await db.query(`DROP TABLE "o_token_rebase_option"`) + await db.query(`DROP INDEX "public"."IDX_5dfc53108b110d42994d02a832"`) + await db.query(`DROP INDEX "public"."IDX_5936af713ee8131983812703b2"`) + await db.query(`DROP INDEX "public"."IDX_cb07bc901206c5da63eacff7df"`) + await db.query(`DROP INDEX "public"."IDX_95bab764e1a63ea0778dca4038"`) + await db.query(`DROP INDEX "public"."IDX_00fff31b07544c1739afce542c"`) + await db.query(`DROP INDEX "public"."IDX_da7296f8011232dc8675477b84"`) + await db.query(`DROP TABLE "o_token_vault"`) + await db.query(`DROP INDEX "public"."IDX_6990f4cd71ea8db6d9d27a0db5"`) + await db.query(`DROP INDEX "public"."IDX_2c88ea3e889e76b037d8f59c96"`) + await db.query(`DROP INDEX "public"."IDX_091cfbe0d977006e05144bd1fe"`) + await db.query(`DROP INDEX "public"."IDX_fa92b36d011441a02d9a231860"`) + await db.query(`DROP INDEX "public"."IDX_3a2bfb2808c1d7cbb0a568910c"`) + await db.query(`DROP TABLE "o_token_activity"`) + await db.query(`DROP INDEX "public"."IDX_9c617918c3dc521bed5220a185"`) + await db.query(`DROP INDEX "public"."IDX_62bfeb1dee3bcefffdbd10172a"`) + await db.query(`DROP INDEX "public"."IDX_6030e60850370dc382959fa76c"`) + await db.query(`DROP INDEX "public"."IDX_7d58e25d0c7b1ddb7a17fa844d"`) + await db.query(`DROP INDEX "public"."IDX_57bb1f7d2fd6fe063b9cd434b2"`) + await db.query(`DROP INDEX "public"."IDX_d6cba0877ee9f5332e6d97e758"`) + await db.query(`DROP INDEX "public"."IDX_b5826e68934ff671bbe28836ec"`) + await db.query(`DROP TABLE "o_token_daily_stat"`) + await db.query(`DROP INDEX "public"."IDX_98c1ae817f9436c4f602de04c7"`) + await db.query(`DROP INDEX "public"."IDX_8da572d689803a6292f00f687c"`) + await db.query(`DROP INDEX "public"."IDX_41df5fb0657b57079c5e011578"`) + await db.query(`DROP INDEX "public"."IDX_7581835374b0582ec62df30f28"`) + await db.query(`DROP INDEX "public"."IDX_448a0a2ffd35d4dda520f1a98f"`) + await db.query(`DROP TABLE "o_token_dripper_state"`) + await db.query(`DROP INDEX "public"."IDX_7671125bf3c842a221e9ada6da"`) + await db.query(`DROP INDEX "public"."IDX_bd00c38c8ddaf6a21f00d71c7a"`) + await db.query(`DROP INDEX "public"."IDX_7db5954d3839261e98ef3f7a9a"`) + await db.query(`DROP INDEX "public"."IDX_a51e66365c5b4b40467ebc9950"`) + await db.query(`DROP TABLE "o_token_harvester_yield_sent"`) + await db.query(`DROP INDEX "public"."IDX_4e6c5f29c015c97c9cc76ab78b"`) + await db.query(`DROP INDEX "public"."IDX_1c880d32eeaf3388e46ca48893"`) + await db.query(`DROP INDEX "public"."IDX_500946a66f9276c87b7253dfa2"`) + await db.query(`DROP INDEX "public"."IDX_d0c45975949e6353d4816b52d3"`) + await db.query(`DROP TABLE "o_token_reward_token_collected"`) + await db.query(`DROP INDEX "public"."IDX_70b0a606f9cd642c70b9a47e89"`) + await db.query(`DROP INDEX "public"."IDX_f4ab790e094a77b93887966876"`) + await db.query(`DROP INDEX "public"."IDX_21d1addd6f0b96b016c802141f"`) + await db.query(`DROP INDEX "public"."IDX_12a95d40144492a85dc15b9e57"`) + await db.query(`DROP TABLE "o_token_withdrawal_request"`) + await db.query(`DROP INDEX "public"."IDX_d9844c17dce47a89f23917de31"`) + await db.query(`DROP INDEX "public"."IDX_326e6366033bf085a34371d559"`) + await db.query(`DROP INDEX "public"."IDX_40e7c338b514e19f2319d768bd"`) + await db.query(`DROP INDEX "public"."IDX_39091effe13b6c6e2a321c1cad"`) + await db.query(`DROP INDEX "public"."IDX_f5baa0e3b6dcfe1940cfa02c01"`) + await db.query(`DROP TABLE "o_token_yield_forwarded"`) + await db.query(`DROP INDEX "public"."IDX_c819776ce5a04915227ada2990"`) + await db.query(`DROP INDEX "public"."IDX_74ae9edf4f308f86740b16b7cd"`) + await db.query(`DROP INDEX "public"."IDX_b8b0b44e2b80be2fbeb211debe"`) + await db.query(`DROP INDEX "public"."IDX_8e58218e9917d409803beb1479"`) + await db.query(`DROP TABLE "morpho_vault_apy"`) + await db.query(`DROP INDEX "public"."IDX_ef9b1dc35540b19ffcba78287c"`) + await db.query(`DROP INDEX "public"."IDX_428890d4341fab14d1b350355e"`) + await db.query(`DROP INDEX "public"."IDX_87d21220457c7025845c0d5760"`) + await db.query(`DROP INDEX "public"."IDX_c2be559e927f6cf24bba874de4"`) + await db.query(`DROP TABLE "arm"`) + await db.query(`DROP TABLE "arm_state"`) + await db.query(`DROP INDEX "public"."IDX_68943c1b73a665919e9377027e"`) + await db.query(`DROP INDEX "public"."IDX_85852cf19a3ddc86a4762398dd"`) + await db.query(`DROP INDEX "public"."IDX_d9779389f627b43d2f746323de"`) + await db.query(`DROP INDEX "public"."IDX_b9db75a2ca9b9d6e6c5aa744ab"`) + await db.query(`DROP TABLE "arm_daily_stat"`) + await db.query(`DROP INDEX "public"."IDX_6f3bbb5ed2de643316523b59b4"`) + await db.query(`DROP INDEX "public"."IDX_9ee28c589c9fa60a45412a64ba"`) + await db.query(`DROP INDEX "public"."IDX_052999e1ef63fabca403e9c3b8"`) + await db.query(`DROP INDEX "public"."IDX_8da1e323ff87677d898da36c4c"`) + await db.query(`DROP INDEX "public"."IDX_9dbe5617230d5421831774b4b3"`) + await db.query(`DROP TABLE "arm_address_yield"`) + await db.query(`DROP INDEX "public"."IDX_8df13f9e0d70aa65367b24475e"`) + await db.query(`DROP INDEX "public"."IDX_3b00df42da735a3976408cc68a"`) + await db.query(`DROP INDEX "public"."IDX_8fabfa2b0691f4d6ae283bb638"`) + await db.query(`DROP INDEX "public"."IDX_1706616a44b8303752ec76a045"`) + await db.query(`DROP INDEX "public"."IDX_d4540a0c059efb82d22fe0e412"`) + await db.query(`DROP TABLE "arm_withdrawal_request"`) + await db.query(`DROP INDEX "public"."IDX_330af8826e0e9369301bebc3e7"`) + await db.query(`DROP INDEX "public"."IDX_501cc246901cfad5d624da98d6"`) + await db.query(`DROP INDEX "public"."IDX_f0634f8590f80c00f646b82867"`) + await db.query(`DROP INDEX "public"."IDX_f19a1f1ecd4b69d3def526cf6d"`) + await db.query(`DROP INDEX "public"."IDX_a66956c5f52400d8800132b21f"`) + await db.query(`DROP INDEX "public"."IDX_87f6fbcd7e96024c7d413e0496"`) + await db.query(`DROP TABLE "arm_swap"`) + await db.query(`DROP INDEX "public"."IDX_00432fd8b1a0b810192cb5a3c7"`) + await db.query(`DROP INDEX "public"."IDX_a3664c1263a7551c8283b7f799"`) + await db.query(`DROP INDEX "public"."IDX_10f61e220f24b8f06c3eb447a9"`) + await db.query(`DROP INDEX "public"."IDX_cf05b522d87effcf53fb673ad1"`) + await db.query(`DROP INDEX "public"."IDX_b52012d22a97bdb609cb8b7ad5"`) + await db.query(`DROP TABLE "traderate_changed"`) + await db.query(`DROP INDEX "public"."IDX_d556cdea4a5d7c1bbe68af5540"`) + await db.query(`DROP INDEX "public"."IDX_705910a32dde2d3bb5afe3baaf"`) + await db.query(`DROP INDEX "public"."IDX_ee5733a47926aa5d45d925e427"`) + await db.query(`DROP INDEX "public"."IDX_8ba4cfdcc71cd663da41d5c683"`) + await db.query(`DROP INDEX "public"."IDX_767274005ca866b0c3a89956e1"`) await db.query(`DROP TABLE "erc20"`) await db.query(`DROP INDEX "public"."IDX_905ff854e6782fc32dc4268a25"`) await db.query(`DROP INDEX "public"."IDX_40fd11c1a0d0f2562824894e85"`) @@ -621,112 +778,7 @@ module.exports = class Data1776771673268 { await db.query(`DROP INDEX "public"."IDX_6350ddb2def19c1e3a06d8b3ec"`) await db.query(`DROP INDEX "public"."IDX_eca70565083880d00e9110b000"`) await db.query(`DROP INDEX "public"."IDX_9fdc9d58b6ae0cb13b9c7f8226"`) - await db.query(`DROP TABLE "es_token"`) - await db.query(`DROP INDEX "public"."IDX_a234e56547c4f8b9135d80444b"`) - await db.query(`DROP INDEX "public"."IDX_588f0be9f9bdc1d8dd29797fec"`) - await db.query(`DROP TABLE "es_account"`) - await db.query(`DROP INDEX "public"."IDX_eb97a0d869e67af870987d6d85"`) - await db.query(`DROP INDEX "public"."IDX_93fea1d847b38c9982626e5fd1"`) - await db.query(`DROP INDEX "public"."IDX_bc09480c9d1b13806f82337b5e"`) - await db.query(`DROP INDEX "public"."IDX_7b43e7bb90d3b435d074112f57"`) - await db.query(`DROP TABLE "es_yield"`) - await db.query(`DROP INDEX "public"."IDX_aa3649a103464d797c959294d1"`) - await db.query(`DROP INDEX "public"."IDX_700ebb527927ee781c0750b0dc"`) - await db.query(`DROP INDEX "public"."IDX_e2d3a1ddc3f0886f51556442bb"`) - await db.query(`DROP INDEX "public"."IDX_4fdca11723165347776a9a7110"`) - await db.query(`DROP TABLE "es_lockup_event"`) - await db.query(`DROP INDEX "public"."IDX_512bb02117d66720b0c72fe2d2"`) - await db.query(`DROP INDEX "public"."IDX_953fc73b0a9873292b633601e0"`) - await db.query(`DROP INDEX "public"."IDX_9584d0dce1144609a1a9a0c579"`) - await db.query(`DROP INDEX "public"."IDX_bb14524b2db1cbbf66d1729aba"`) - await db.query(`DROP INDEX "public"."IDX_e1eb81715da4d4a8281616a39f"`) - await db.query(`DROP INDEX "public"."IDX_46d53d4fad340d593995583600"`) - await db.query(`DROP TABLE "es_lockup"`) - await db.query(`DROP INDEX "public"."IDX_15e9dc0d375d6f2687def01843"`) - await db.query(`DROP INDEX "public"."IDX_f3c10b1e75f626e1aaeaa3cfc3"`) - await db.query(`DROP INDEX "public"."IDX_5dd7ffdf1c625829f7eb79ee27"`) - await db.query(`DROP INDEX "public"."IDX_31b53c3e4649bde773d707b2a0"`) - await db.query(`DROP INDEX "public"."IDX_2434b29d48e045849fc12cef7c"`) - await db.query(`DROP TABLE "es_delegate_changed"`) - await db.query(`DROP INDEX "public"."IDX_76c1740192ed8b589f7b5a21c8"`) - await db.query(`DROP INDEX "public"."IDX_ed5ea936cde8d62b485ce45a13"`) - await db.query(`DROP INDEX "public"."IDX_22f639893bc36efe524a3bbca7"`) - await db.query(`DROP INDEX "public"."IDX_ed12aa7ace584cc494012a0e5b"`) - await db.query(`DROP INDEX "public"."IDX_e234755c68bb8d7f9cfd511126"`) - await db.query(`DROP INDEX "public"."IDX_cda0b80789007b35cf5430966f"`) - await db.query(`DROP TABLE "es_delegate_votes_changed"`) - await db.query(`DROP INDEX "public"."IDX_4e20cdc38777932fadd008f6e4"`) - await db.query(`DROP INDEX "public"."IDX_076fb50935afa2f319f1d16752"`) - await db.query(`DROP INDEX "public"."IDX_338d2483a33dc74d360d2a44c5"`) - await db.query(`DROP INDEX "public"."IDX_e0e6b12e50b95fb9b99c28df90"`) - await db.query(`DROP INDEX "public"."IDX_60ea37f13fc3b16e491926314f"`) - await db.query(`DROP INDEX "public"."IDX_bd6f657c57e5a92a8dd3fe6b4e"`) - await db.query(`DROP TABLE "es_penalty"`) - await db.query(`DROP INDEX "public"."IDX_59fa17e121ecd2bead0a71cf85"`) - await db.query(`DROP INDEX "public"."IDX_785a65f92c61edd176415e22ad"`) - await db.query(`DROP INDEX "public"."IDX_7402aa565f5e2023e310610240"`) - await db.query(`DROP INDEX "public"."IDX_8595139811169d26aa210f8a8d"`) - await db.query(`DROP INDEX "public"."IDX_9f560f23bcdd81e13141c02125"`) - await db.query(`DROP INDEX "public"."IDX_adc7f2fe26e4a36690a343339b"`) - await db.query(`DROP TABLE "es_reward"`) - await db.query(`DROP INDEX "public"."IDX_e05d0476721dfcf9152b58fc30"`) - await db.query(`DROP INDEX "public"."IDX_f01dea25da96f8d8eaec9b6f60"`) - await db.query(`DROP INDEX "public"."IDX_2f3b61cc072d95ad0796b9caa3"`) - await db.query(`DROP INDEX "public"."IDX_a3d39d7235e278255a5217d1df"`) - await db.query(`DROP INDEX "public"."IDX_d17aab47907d6816138ab2a7fa"`) - await db.query(`DROP INDEX "public"."IDX_b623db55430fefda84dfdf2949"`) - await db.query(`DROP TABLE "es_stake"`) - await db.query(`DROP INDEX "public"."IDX_385357cc5f41796615d8880190"`) - await db.query(`DROP INDEX "public"."IDX_e7bcc8120e2c256db6ebd01575"`) - await db.query(`DROP INDEX "public"."IDX_b95e58860bb9ba46d0ec41d246"`) - await db.query(`DROP INDEX "public"."IDX_d059ea472eb9d10f6be2025d40"`) - await db.query(`DROP INDEX "public"."IDX_f629f87d82890ea6f515e1a7a7"`) - await db.query(`DROP INDEX "public"."IDX_2d2f6b568b3145fe6095da5afa"`) - await db.query(`DROP INDEX "public"."IDX_bcb392795674b2cc0af394864c"`) - await db.query(`DROP TABLE "es_unstake"`) - await db.query(`DROP INDEX "public"."IDX_0c51c706a778668dbd5ed9c817"`) - await db.query(`DROP INDEX "public"."IDX_9301687673c195770cdd543049"`) - await db.query(`DROP INDEX "public"."IDX_13fbe169018991ddcfeb4912cb"`) - await db.query(`DROP INDEX "public"."IDX_06c024c53472178d0f5292330a"`) - await db.query(`DROP INDEX "public"."IDX_7d988d60b55dc08addc58835d6"`) - await db.query(`DROP INDEX "public"."IDX_0adcdd08da131e76d618b73db7"`) - await db.query(`DROP INDEX "public"."IDX_cc43898a790e6e1d4bbf145097"`) - await db.query(`DROP TABLE "aero_pool_state"`) - await db.query(`DROP INDEX "public"."IDX_9da45b58c4d06201b2de6ed51d"`) - await db.query(`DROP INDEX "public"."IDX_91022eaca5c237c8181574f6c3"`) - await db.query(`DROP INDEX "public"."IDX_a1f09e4a565cbeac79b02ccfee"`) - await db.query(`DROP INDEX "public"."IDX_f17f2a943862d7c1c485bf4ccd"`) - await db.query(`DROP TABLE "aero_cl_pool_tick"`) - await db.query(`DROP INDEX "public"."IDX_1f062aee707e1d898a99e7d78a"`) - await db.query(`DROP INDEX "public"."IDX_9db8ded60dc83ae88b93bbdf61"`) - await db.query(`DROP INDEX "public"."IDX_8ed6f7b5149327341c751f7956"`) - await db.query(`DROP INDEX "public"."IDX_5a4fcc4d09e1e362cff15dd834"`) - await db.query(`DROP INDEX "public"."IDX_eb4f3fdb047a473a6b62672251"`) - await db.query(`DROP TABLE "aero_cl_pool_state"`) - await db.query(`DROP INDEX "public"."IDX_e363a6cd0ddeb41a94ed68089c"`) - await db.query(`DROP INDEX "public"."IDX_e7458985ad9ee1b4472bc30bbb"`) - await db.query(`DROP INDEX "public"."IDX_94a520efd2d3992b50f0469d22"`) - await db.query(`DROP INDEX "public"."IDX_ca4c93c360bd5dffdc237f9f5a"`) - await db.query(`DROP INDEX "public"."IDX_02aa86fe0e78999620744402a0"`) - await db.query(`DROP TABLE "aero_pool_epoch_state"`) - await db.query(`DROP INDEX "public"."IDX_1bdbc99a8dadba9f6beb7547a5"`) - await db.query(`DROP INDEX "public"."IDX_39bfdc610191dd653c67842ae0"`) - await db.query(`DROP INDEX "public"."IDX_703ee4530d82b62fb6d40410e4"`) - await db.query(`DROP INDEX "public"."IDX_01335581495551843503db4a23"`) - await db.query(`DROP INDEX "public"."IDX_e04dd7afda9bc4dd6541c92f37"`) - await db.query(`DROP TABLE "aero_lp"`) - await db.query(`DROP INDEX "public"."IDX_d41b9f42cab6899f26cd6510bf"`) - await db.query(`DROP INDEX "public"."IDX_2acd173568dcc7df1b2655cb13"`) - await db.query(`DROP INDEX "public"."IDX_9cfe5ff27e954044840d274367"`) - await db.query(`DROP INDEX "public"."IDX_b5cfd69ccd727c080c4e14d776"`) - await db.query(`DROP INDEX "public"."IDX_a9d6d99b3e4749a53fa3c64bf8"`) - await db.query(`DROP TABLE "aero_lp_position"`) - await db.query(`DROP INDEX "public"."IDX_9f163b1720f9f8c8b75d5d0f97"`) - await db.query(`DROP INDEX "public"."IDX_b42642e1ebc0cbacbba4a5fb1d"`) - await db.query(`DROP INDEX "public"."IDX_ca7d09158297faf6b84487ba5c"`) - await db.query(`DROP INDEX "public"."IDX_b4e54387b76cb3bce1bd725f7a"`) - await db.query(`DROP INDEX "public"."IDX_b465865a93cb044c6649523287"`) - await db.query(`DROP INDEX "public"."IDX_05aaf9416181ddc9012f41da2f"`) + await db.query(`DROP TABLE "processing_status"`) await db.query(`DROP TABLE "aero_cl_gauge_notify_reward"`) await db.query(`DROP INDEX "public"."IDX_bc847340db9380bee59cb5f5fe"`) await db.query(`DROP INDEX "public"."IDX_32ededc6fe2c4d647215206a02"`) @@ -754,40 +806,45 @@ module.exports = class Data1776771673268 { await db.query(`DROP INDEX "public"."IDX_74c2a7bf57c43f69f91b7c3b20"`) await db.query(`DROP INDEX "public"."IDX_d8be771bb35fe590c45a7d1af2"`) await db.query(`DROP INDEX "public"."IDX_19b4155090d82294060bb44366"`) - await db.query(`DROP INDEX "public"."IDX_40d43ab503f180b7532f42f45a"`) - await db.query(`DROP INDEX "public"."IDX_b4ffd29e88ac91115e44fc5b03"`) - await db.query(`DROP INDEX "public"."IDX_fe01f00328010eac8a03879936"`) - await db.query(`DROP TABLE "arm"`) - await db.query(`DROP TABLE "arm_state"`) - await db.query(`DROP INDEX "public"."IDX_68943c1b73a665919e9377027e"`) - await db.query(`DROP INDEX "public"."IDX_85852cf19a3ddc86a4762398dd"`) - await db.query(`DROP INDEX "public"."IDX_d9779389f627b43d2f746323de"`) - await db.query(`DROP INDEX "public"."IDX_b9db75a2ca9b9d6e6c5aa744ab"`) - await db.query(`DROP TABLE "arm_daily_stat"`) - await db.query(`DROP INDEX "public"."IDX_6f3bbb5ed2de643316523b59b4"`) - await db.query(`DROP INDEX "public"."IDX_9ee28c589c9fa60a45412a64ba"`) - await db.query(`DROP INDEX "public"."IDX_052999e1ef63fabca403e9c3b8"`) - await db.query(`DROP INDEX "public"."IDX_8da1e323ff87677d898da36c4c"`) - await db.query(`DROP INDEX "public"."IDX_9dbe5617230d5421831774b4b3"`) - await db.query(`DROP TABLE "arm_withdrawal_request"`) - await db.query(`DROP INDEX "public"."IDX_330af8826e0e9369301bebc3e7"`) - await db.query(`DROP INDEX "public"."IDX_501cc246901cfad5d624da98d6"`) - await db.query(`DROP INDEX "public"."IDX_f0634f8590f80c00f646b82867"`) - await db.query(`DROP INDEX "public"."IDX_f19a1f1ecd4b69d3def526cf6d"`) - await db.query(`DROP INDEX "public"."IDX_a66956c5f52400d8800132b21f"`) - await db.query(`DROP INDEX "public"."IDX_87f6fbcd7e96024c7d413e0496"`) - await db.query(`DROP TABLE "arm_swap"`) - await db.query(`DROP INDEX "public"."IDX_00432fd8b1a0b810192cb5a3c7"`) - await db.query(`DROP INDEX "public"."IDX_a3664c1263a7551c8283b7f799"`) - await db.query(`DROP INDEX "public"."IDX_10f61e220f24b8f06c3eb447a9"`) - await db.query(`DROP INDEX "public"."IDX_cf05b522d87effcf53fb673ad1"`) - await db.query(`DROP INDEX "public"."IDX_b52012d22a97bdb609cb8b7ad5"`) - await db.query(`DROP TABLE "traderate_changed"`) - await db.query(`DROP INDEX "public"."IDX_d556cdea4a5d7c1bbe68af5540"`) - await db.query(`DROP INDEX "public"."IDX_705910a32dde2d3bb5afe3baaf"`) - await db.query(`DROP INDEX "public"."IDX_ee5733a47926aa5d45d925e427"`) - await db.query(`DROP INDEX "public"."IDX_8ba4cfdcc71cd663da41d5c683"`) - await db.query(`DROP INDEX "public"."IDX_767274005ca866b0c3a89956e1"`) + await db.query(`DROP INDEX "public"."IDX_40d43ab503f180b7532f42f45a"`) + await db.query(`DROP INDEX "public"."IDX_b4ffd29e88ac91115e44fc5b03"`) + await db.query(`DROP INDEX "public"."IDX_fe01f00328010eac8a03879936"`) + await db.query(`DROP TABLE "aero_pool_state"`) + await db.query(`DROP INDEX "public"."IDX_9da45b58c4d06201b2de6ed51d"`) + await db.query(`DROP INDEX "public"."IDX_91022eaca5c237c8181574f6c3"`) + await db.query(`DROP INDEX "public"."IDX_a1f09e4a565cbeac79b02ccfee"`) + await db.query(`DROP INDEX "public"."IDX_f17f2a943862d7c1c485bf4ccd"`) + await db.query(`DROP TABLE "aero_cl_pool_tick"`) + await db.query(`DROP INDEX "public"."IDX_1f062aee707e1d898a99e7d78a"`) + await db.query(`DROP INDEX "public"."IDX_9db8ded60dc83ae88b93bbdf61"`) + await db.query(`DROP INDEX "public"."IDX_8ed6f7b5149327341c751f7956"`) + await db.query(`DROP INDEX "public"."IDX_5a4fcc4d09e1e362cff15dd834"`) + await db.query(`DROP INDEX "public"."IDX_eb4f3fdb047a473a6b62672251"`) + await db.query(`DROP TABLE "aero_cl_pool_state"`) + await db.query(`DROP INDEX "public"."IDX_e363a6cd0ddeb41a94ed68089c"`) + await db.query(`DROP INDEX "public"."IDX_e7458985ad9ee1b4472bc30bbb"`) + await db.query(`DROP INDEX "public"."IDX_94a520efd2d3992b50f0469d22"`) + await db.query(`DROP INDEX "public"."IDX_ca4c93c360bd5dffdc237f9f5a"`) + await db.query(`DROP INDEX "public"."IDX_02aa86fe0e78999620744402a0"`) + await db.query(`DROP TABLE "aero_pool_epoch_state"`) + await db.query(`DROP INDEX "public"."IDX_1bdbc99a8dadba9f6beb7547a5"`) + await db.query(`DROP INDEX "public"."IDX_39bfdc610191dd653c67842ae0"`) + await db.query(`DROP INDEX "public"."IDX_703ee4530d82b62fb6d40410e4"`) + await db.query(`DROP INDEX "public"."IDX_01335581495551843503db4a23"`) + await db.query(`DROP INDEX "public"."IDX_e04dd7afda9bc4dd6541c92f37"`) + await db.query(`DROP TABLE "aero_lp"`) + await db.query(`DROP INDEX "public"."IDX_d41b9f42cab6899f26cd6510bf"`) + await db.query(`DROP INDEX "public"."IDX_2acd173568dcc7df1b2655cb13"`) + await db.query(`DROP INDEX "public"."IDX_9cfe5ff27e954044840d274367"`) + await db.query(`DROP INDEX "public"."IDX_b5cfd69ccd727c080c4e14d776"`) + await db.query(`DROP INDEX "public"."IDX_a9d6d99b3e4749a53fa3c64bf8"`) + await db.query(`DROP TABLE "aero_lp_position"`) + await db.query(`DROP INDEX "public"."IDX_9f163b1720f9f8c8b75d5d0f97"`) + await db.query(`DROP INDEX "public"."IDX_b42642e1ebc0cbacbba4a5fb1d"`) + await db.query(`DROP INDEX "public"."IDX_ca7d09158297faf6b84487ba5c"`) + await db.query(`DROP INDEX "public"."IDX_b4e54387b76cb3bce1bd725f7a"`) + await db.query(`DROP INDEX "public"."IDX_b465865a93cb044c6649523287"`) + await db.query(`DROP INDEX "public"."IDX_05aaf9416181ddc9012f41da2f"`) await db.query(`DROP TABLE "governance_proposal"`) await db.query(`DROP INDEX "public"."IDX_fe8a40923244f99e670b62c14d"`) await db.query(`DROP INDEX "public"."IDX_eea14b5ba6065f9484dfaa00c6"`) @@ -811,13 +868,6 @@ module.exports = class Data1776771673268 { await db.query(`DROP INDEX "public"."IDX_374659ae3bd149042388e132be"`) await db.query(`DROP INDEX "public"."IDX_74f93b10ec560e63792dcc877e"`) await db.query(`DROP INDEX "public"."IDX_df99bdbf11d4ed57bec0e6c511"`) - await db.query(`DROP TABLE "transaction_details"`) - await db.query(`DROP INDEX "public"."IDX_035179d5845a24726b74795cb5"`) - await db.query(`DROP INDEX "public"."IDX_9e0953446c15e89dfe68dbe5bd"`) - await db.query(`DROP INDEX "public"."IDX_ec29c6dbcba374ae8819275f22"`) - await db.query(`DROP INDEX "public"."IDX_1ada02a88b8355495e0917b49b"`) - await db.query(`DROP INDEX "public"."IDX_81a859fb3a14a34f194e1d8606"`) - await db.query(`DROP INDEX "public"."IDX_ae3e0f0414a1deb6e4840e2e44"`) await db.query(`DROP TABLE "frrs_reward_collected"`) await db.query(`DROP INDEX "public"."IDX_41ff7fbd84f0e932ddff4aaeda"`) await db.query(`DROP INDEX "public"."IDX_6f8728cf12eedec371ec2b5ac3"`) @@ -842,6 +892,76 @@ module.exports = class Data1776771673268 { await db.query(`DROP INDEX "public"."IDX_301322e4df8e766e7f4cd892fd"`) await db.query(`DROP INDEX "public"."IDX_7f49f2839212126c3d42fb4bf1"`) await db.query(`DROP INDEX "public"."IDX_aab8ae0cb29505a7014438675b"`) + await db.query(`DROP TABLE "es_token"`) + await db.query(`DROP INDEX "public"."IDX_a234e56547c4f8b9135d80444b"`) + await db.query(`DROP INDEX "public"."IDX_588f0be9f9bdc1d8dd29797fec"`) + await db.query(`DROP TABLE "es_account"`) + await db.query(`DROP INDEX "public"."IDX_eb97a0d869e67af870987d6d85"`) + await db.query(`DROP INDEX "public"."IDX_93fea1d847b38c9982626e5fd1"`) + await db.query(`DROP INDEX "public"."IDX_bc09480c9d1b13806f82337b5e"`) + await db.query(`DROP INDEX "public"."IDX_7b43e7bb90d3b435d074112f57"`) + await db.query(`DROP TABLE "es_yield"`) + await db.query(`DROP INDEX "public"."IDX_aa3649a103464d797c959294d1"`) + await db.query(`DROP INDEX "public"."IDX_700ebb527927ee781c0750b0dc"`) + await db.query(`DROP INDEX "public"."IDX_e2d3a1ddc3f0886f51556442bb"`) + await db.query(`DROP INDEX "public"."IDX_4fdca11723165347776a9a7110"`) + await db.query(`DROP TABLE "es_lockup_event"`) + await db.query(`DROP INDEX "public"."IDX_512bb02117d66720b0c72fe2d2"`) + await db.query(`DROP INDEX "public"."IDX_953fc73b0a9873292b633601e0"`) + await db.query(`DROP INDEX "public"."IDX_9584d0dce1144609a1a9a0c579"`) + await db.query(`DROP INDEX "public"."IDX_bb14524b2db1cbbf66d1729aba"`) + await db.query(`DROP INDEX "public"."IDX_e1eb81715da4d4a8281616a39f"`) + await db.query(`DROP INDEX "public"."IDX_46d53d4fad340d593995583600"`) + await db.query(`DROP TABLE "es_lockup"`) + await db.query(`DROP INDEX "public"."IDX_15e9dc0d375d6f2687def01843"`) + await db.query(`DROP INDEX "public"."IDX_f3c10b1e75f626e1aaeaa3cfc3"`) + await db.query(`DROP INDEX "public"."IDX_5dd7ffdf1c625829f7eb79ee27"`) + await db.query(`DROP INDEX "public"."IDX_31b53c3e4649bde773d707b2a0"`) + await db.query(`DROP INDEX "public"."IDX_2434b29d48e045849fc12cef7c"`) + await db.query(`DROP TABLE "es_delegate_changed"`) + await db.query(`DROP INDEX "public"."IDX_76c1740192ed8b589f7b5a21c8"`) + await db.query(`DROP INDEX "public"."IDX_ed5ea936cde8d62b485ce45a13"`) + await db.query(`DROP INDEX "public"."IDX_22f639893bc36efe524a3bbca7"`) + await db.query(`DROP INDEX "public"."IDX_ed12aa7ace584cc494012a0e5b"`) + await db.query(`DROP INDEX "public"."IDX_e234755c68bb8d7f9cfd511126"`) + await db.query(`DROP INDEX "public"."IDX_cda0b80789007b35cf5430966f"`) + await db.query(`DROP TABLE "es_delegate_votes_changed"`) + await db.query(`DROP INDEX "public"."IDX_4e20cdc38777932fadd008f6e4"`) + await db.query(`DROP INDEX "public"."IDX_076fb50935afa2f319f1d16752"`) + await db.query(`DROP INDEX "public"."IDX_338d2483a33dc74d360d2a44c5"`) + await db.query(`DROP INDEX "public"."IDX_e0e6b12e50b95fb9b99c28df90"`) + await db.query(`DROP INDEX "public"."IDX_60ea37f13fc3b16e491926314f"`) + await db.query(`DROP INDEX "public"."IDX_bd6f657c57e5a92a8dd3fe6b4e"`) + await db.query(`DROP TABLE "es_penalty"`) + await db.query(`DROP INDEX "public"."IDX_59fa17e121ecd2bead0a71cf85"`) + await db.query(`DROP INDEX "public"."IDX_785a65f92c61edd176415e22ad"`) + await db.query(`DROP INDEX "public"."IDX_7402aa565f5e2023e310610240"`) + await db.query(`DROP INDEX "public"."IDX_8595139811169d26aa210f8a8d"`) + await db.query(`DROP INDEX "public"."IDX_9f560f23bcdd81e13141c02125"`) + await db.query(`DROP INDEX "public"."IDX_adc7f2fe26e4a36690a343339b"`) + await db.query(`DROP TABLE "es_reward"`) + await db.query(`DROP INDEX "public"."IDX_e05d0476721dfcf9152b58fc30"`) + await db.query(`DROP INDEX "public"."IDX_f01dea25da96f8d8eaec9b6f60"`) + await db.query(`DROP INDEX "public"."IDX_2f3b61cc072d95ad0796b9caa3"`) + await db.query(`DROP INDEX "public"."IDX_a3d39d7235e278255a5217d1df"`) + await db.query(`DROP INDEX "public"."IDX_d17aab47907d6816138ab2a7fa"`) + await db.query(`DROP INDEX "public"."IDX_b623db55430fefda84dfdf2949"`) + await db.query(`DROP TABLE "es_stake"`) + await db.query(`DROP INDEX "public"."IDX_385357cc5f41796615d8880190"`) + await db.query(`DROP INDEX "public"."IDX_e7bcc8120e2c256db6ebd01575"`) + await db.query(`DROP INDEX "public"."IDX_b95e58860bb9ba46d0ec41d246"`) + await db.query(`DROP INDEX "public"."IDX_d059ea472eb9d10f6be2025d40"`) + await db.query(`DROP INDEX "public"."IDX_f629f87d82890ea6f515e1a7a7"`) + await db.query(`DROP INDEX "public"."IDX_2d2f6b568b3145fe6095da5afa"`) + await db.query(`DROP INDEX "public"."IDX_bcb392795674b2cc0af394864c"`) + await db.query(`DROP TABLE "es_unstake"`) + await db.query(`DROP INDEX "public"."IDX_0c51c706a778668dbd5ed9c817"`) + await db.query(`DROP INDEX "public"."IDX_9301687673c195770cdd543049"`) + await db.query(`DROP INDEX "public"."IDX_13fbe169018991ddcfeb4912cb"`) + await db.query(`DROP INDEX "public"."IDX_06c024c53472178d0f5292330a"`) + await db.query(`DROP INDEX "public"."IDX_7d988d60b55dc08addc58835d6"`) + await db.query(`DROP INDEX "public"."IDX_0adcdd08da131e76d618b73db7"`) + await db.query(`DROP INDEX "public"."IDX_cc43898a790e6e1d4bbf145097"`) await db.query(`DROP TABLE "strategy_balance"`) await db.query(`DROP INDEX "public"."IDX_bb5bbdf054deadf169e9e0330a"`) await db.query(`DROP INDEX "public"."IDX_0113bf0b63183bea0d22cd0d08"`) @@ -858,125 +978,17 @@ module.exports = class Data1776771673268 { await db.query(`DROP INDEX "public"."IDX_df364fb6e82d1feeed2a5dfffa"`) await db.query(`DROP INDEX "public"."IDX_095c7036449ae511b4ef2a01df"`) await db.query(`DROP INDEX "public"."IDX_c6a366374690d7e37b070e5788"`) - await db.query(`DROP TABLE "o_token"`) - await db.query(`DROP INDEX "public"."IDX_1da06ba7d2c0a02d01d1b7a6c0"`) - await db.query(`DROP INDEX "public"."IDX_0851d95d178f682d279a04ebf9"`) - await db.query(`DROP INDEX "public"."IDX_7889d6ce061da066df89309e51"`) - await db.query(`DROP INDEX "public"."IDX_4633929013f5ba465cb00e5a95"`) - await db.query(`DROP TABLE "o_token_raw_data"`) - await db.query(`DROP INDEX "public"."IDX_63bab1b33b2d4f56d628108570"`) - await db.query(`DROP INDEX "public"."IDX_fc35f1b9da51dfa7ba1cc4bf93"`) - await db.query(`DROP INDEX "public"."IDX_93bd7ae7b014936b806248edca"`) - await db.query(`DROP INDEX "public"."IDX_628cf585ab703cf873fd01d38e"`) - await db.query(`DROP TABLE "wo_token"`) - await db.query(`DROP INDEX "public"."IDX_ed8d2cd8eaa28f1f48af676dcf"`) - await db.query(`DROP INDEX "public"."IDX_46a8bdc64b39c46a0aa37bb768"`) - await db.query(`DROP INDEX "public"."IDX_3d57d694c426c319d925b846f8"`) - await db.query(`DROP INDEX "public"."IDX_f14aa07c5a85a39318a017d421"`) - await db.query(`DROP TABLE "o_token_asset"`) - await db.query(`DROP INDEX "public"."IDX_2eb2f24563a058f9d6e746ed47"`) - await db.query(`DROP INDEX "public"."IDX_7a26c80564bf5fe4e414125e99"`) - await db.query(`DROP INDEX "public"."IDX_53e8f932900b50984e1c30e7c0"`) - await db.query(`DROP TABLE "o_token_history"`) - await db.query(`DROP INDEX "public"."IDX_3200b91c04a72dda2312eb518c"`) - await db.query(`DROP INDEX "public"."IDX_b4b39e42a6d2604b34082c4c80"`) - await db.query(`DROP INDEX "public"."IDX_2f1457755464ec5951d1e96542"`) - await db.query(`DROP INDEX "public"."IDX_42142d191ea0408fb511f9f576"`) - await db.query(`DROP INDEX "public"."IDX_f87d86cfca9ef211ba1b18d2bc"`) - await db.query(`DROP TABLE "o_token_address"`) - await db.query(`DROP INDEX "public"."IDX_7cbc465ce1e9ae06dfe3a8c625"`) - await db.query(`DROP INDEX "public"."IDX_5342c499e930e396bade7faeb6"`) - await db.query(`DROP INDEX "public"."IDX_75c7d29bf71b393e99c4407885"`) - await db.query(`DROP TABLE "o_token_apy"`) - await db.query(`DROP INDEX "public"."IDX_5d9294486b1c57df8c3aad5145"`) - await db.query(`DROP INDEX "public"."IDX_4d4f1b0d9e7f6903a2038c6c38"`) - await db.query(`DROP INDEX "public"."IDX_5b81f5a25e913cc7bf1d4c145a"`) - await db.query(`DROP INDEX "public"."IDX_79f0934481fe045319c864cd84"`) - await db.query(`DROP INDEX "public"."IDX_f5f416a1490ee2007a9c7593d0"`) - await db.query(`DROP INDEX "public"."IDX_a98d74fc6af6f3a599fe1ba7fb"`) - await db.query(`DROP TABLE "o_token_rebase"`) - await db.query(`DROP INDEX "public"."IDX_83666ab47ff5ef0c56bf40d122"`) - await db.query(`DROP INDEX "public"."IDX_3fb75a6c8b831ca4d201d60e01"`) - await db.query(`DROP INDEX "public"."IDX_15ef53e2bdcc3034ab8adea1f1"`) - await db.query(`DROP INDEX "public"."IDX_b0c6feb890a83dcca572302371"`) - await db.query(`DROP INDEX "public"."IDX_7170f89052507f34d8563f7016"`) - await db.query(`DROP INDEX "public"."IDX_b8653270b96fc932f077b26441"`) - await db.query(`DROP TABLE "o_token_rebase_option"`) - await db.query(`DROP INDEX "public"."IDX_5dfc53108b110d42994d02a832"`) - await db.query(`DROP INDEX "public"."IDX_5936af713ee8131983812703b2"`) - await db.query(`DROP INDEX "public"."IDX_cb07bc901206c5da63eacff7df"`) - await db.query(`DROP INDEX "public"."IDX_95bab764e1a63ea0778dca4038"`) - await db.query(`DROP INDEX "public"."IDX_00fff31b07544c1739afce542c"`) - await db.query(`DROP INDEX "public"."IDX_da7296f8011232dc8675477b84"`) - await db.query(`DROP TABLE "o_token_vault"`) - await db.query(`DROP INDEX "public"."IDX_6990f4cd71ea8db6d9d27a0db5"`) - await db.query(`DROP INDEX "public"."IDX_2c88ea3e889e76b037d8f59c96"`) - await db.query(`DROP INDEX "public"."IDX_091cfbe0d977006e05144bd1fe"`) - await db.query(`DROP INDEX "public"."IDX_fa92b36d011441a02d9a231860"`) - await db.query(`DROP INDEX "public"."IDX_3a2bfb2808c1d7cbb0a568910c"`) - await db.query(`DROP TABLE "o_token_activity"`) - await db.query(`DROP INDEX "public"."IDX_9c617918c3dc521bed5220a185"`) - await db.query(`DROP INDEX "public"."IDX_62bfeb1dee3bcefffdbd10172a"`) - await db.query(`DROP INDEX "public"."IDX_6030e60850370dc382959fa76c"`) - await db.query(`DROP INDEX "public"."IDX_7d58e25d0c7b1ddb7a17fa844d"`) - await db.query(`DROP INDEX "public"."IDX_57bb1f7d2fd6fe063b9cd434b2"`) - await db.query(`DROP INDEX "public"."IDX_d6cba0877ee9f5332e6d97e758"`) - await db.query(`DROP INDEX "public"."IDX_b5826e68934ff671bbe28836ec"`) - await db.query(`DROP TABLE "o_token_daily_stat"`) - await db.query(`DROP INDEX "public"."IDX_98c1ae817f9436c4f602de04c7"`) - await db.query(`DROP INDEX "public"."IDX_8da572d689803a6292f00f687c"`) - await db.query(`DROP INDEX "public"."IDX_41df5fb0657b57079c5e011578"`) - await db.query(`DROP INDEX "public"."IDX_7581835374b0582ec62df30f28"`) - await db.query(`DROP INDEX "public"."IDX_448a0a2ffd35d4dda520f1a98f"`) - await db.query(`DROP TABLE "o_token_dripper_state"`) - await db.query(`DROP INDEX "public"."IDX_7671125bf3c842a221e9ada6da"`) - await db.query(`DROP INDEX "public"."IDX_bd00c38c8ddaf6a21f00d71c7a"`) - await db.query(`DROP INDEX "public"."IDX_7db5954d3839261e98ef3f7a9a"`) - await db.query(`DROP INDEX "public"."IDX_a51e66365c5b4b40467ebc9950"`) - await db.query(`DROP TABLE "o_token_harvester_yield_sent"`) - await db.query(`DROP INDEX "public"."IDX_4e6c5f29c015c97c9cc76ab78b"`) - await db.query(`DROP INDEX "public"."IDX_1c880d32eeaf3388e46ca48893"`) - await db.query(`DROP INDEX "public"."IDX_500946a66f9276c87b7253dfa2"`) - await db.query(`DROP INDEX "public"."IDX_d0c45975949e6353d4816b52d3"`) - await db.query(`DROP TABLE "o_token_reward_token_collected"`) - await db.query(`DROP INDEX "public"."IDX_70b0a606f9cd642c70b9a47e89"`) - await db.query(`DROP INDEX "public"."IDX_f4ab790e094a77b93887966876"`) - await db.query(`DROP INDEX "public"."IDX_21d1addd6f0b96b016c802141f"`) - await db.query(`DROP INDEX "public"."IDX_12a95d40144492a85dc15b9e57"`) - await db.query(`DROP TABLE "o_token_withdrawal_request"`) - await db.query(`DROP INDEX "public"."IDX_d9844c17dce47a89f23917de31"`) - await db.query(`DROP INDEX "public"."IDX_326e6366033bf085a34371d559"`) - await db.query(`DROP INDEX "public"."IDX_40e7c338b514e19f2319d768bd"`) - await db.query(`DROP INDEX "public"."IDX_39091effe13b6c6e2a321c1cad"`) - await db.query(`DROP INDEX "public"."IDX_f5baa0e3b6dcfe1940cfa02c01"`) - await db.query(`DROP TABLE "o_token_yield_forwarded"`) - await db.query(`DROP INDEX "public"."IDX_c819776ce5a04915227ada2990"`) - await db.query(`DROP INDEX "public"."IDX_74ae9edf4f308f86740b16b7cd"`) - await db.query(`DROP INDEX "public"."IDX_b8b0b44e2b80be2fbeb211debe"`) - await db.query(`DROP INDEX "public"."IDX_8e58218e9917d409803beb1479"`) - await db.query(`DROP TABLE "pool_booster"`) - await db.query(`DROP INDEX "public"."IDX_c46c14abc58edf2c6bbd1e8d09"`) - await db.query(`DROP INDEX "public"."IDX_2c38cf60d95bd998304076c11c"`) - await db.query(`DROP INDEX "public"."IDX_90136d4e23c9ed49f1b9f3a101"`) - await db.query(`DROP INDEX "public"."IDX_47dd84c80f040852a6d8789a24"`) - await db.query(`DROP INDEX "public"."IDX_ab1662265686664891ee4eeb78"`) - await db.query(`DROP INDEX "public"."IDX_6d838f9682498d64417204e3cf"`) - await db.query(`DROP INDEX "public"."IDX_373e04b978fa8ec37506b82872"`) - await db.query(`DROP TABLE "pool_booster_bribe_executed"`) - await db.query(`DROP INDEX "public"."IDX_3dbdcdcc2418ce9ce520d8ade6"`) - await db.query(`DROP INDEX "public"."IDX_54b5d8f2bbe89855785a038c33"`) - await db.query(`DROP INDEX "public"."IDX_d7693679519921139cb2dcb739"`) - await db.query(`DROP INDEX "public"."IDX_644a87d8df6aced2f35564d43f"`) - await db.query(`DROP TABLE "processing_status"`) - await db.query(`DROP TABLE "morpho_vault_apy"`) - await db.query(`DROP INDEX "public"."IDX_ef9b1dc35540b19ffcba78287c"`) - await db.query(`DROP INDEX "public"."IDX_428890d4341fab14d1b350355e"`) - await db.query(`DROP INDEX "public"."IDX_87d21220457c7025845c0d5760"`) - await db.query(`DROP INDEX "public"."IDX_c2be559e927f6cf24bba874de4"`) - await db.query(`DROP TABLE "pool"`) - await db.query(`DROP INDEX "public"."IDX_ca7b22bed322c7c1c817d7fefc"`) - await db.query(`DROP INDEX "public"."IDX_0764827295d4ed49e259aa398f"`) - await db.query(`DROP INDEX "public"."IDX_9a38a7d17d1fff09327de45882"`) + await db.query(`DROP TABLE "sfc_withdrawal"`) + await db.query(`DROP INDEX "public"."IDX_098bb05eb0e21825d9f97d7238"`) + await db.query(`DROP INDEX "public"."IDX_c1767bd417033cf6be2fc0dfed"`) + await db.query(`DROP INDEX "public"."IDX_7afdeeed7b96e60407ed2cee72"`) + await db.query(`DROP INDEX "public"."IDX_8e76d028b9d21884b48a6cfb34"`) + await db.query(`DROP TABLE "morpho_market_state"`) + await db.query(`DROP TABLE "event_woeth_price_updated"`) + await db.query(`DROP INDEX "public"."IDX_cfeca5e039fb3f137b5922a60a"`) + await db.query(`DROP INDEX "public"."IDX_e05f1c97627f04cb666bfbfd2e"`) + await db.query(`DROP INDEX "public"."IDX_462441741f17550d40da0cd5c0"`) + await db.query(`DROP INDEX "public"."IDX_dd99dbcb9666973f47c7462593"`) await db.query(`ALTER TABLE "beacon_deposit_event" DROP CONSTRAINT "FK_dff55f23cfcfa0ff664964572ff"`) await db.query(`ALTER TABLE "ogv_address" DROP CONSTRAINT "FK_49d26f287904b8b1aef6e9ac2b3"`) await db.query(`ALTER TABLE "ogv_lockup" DROP CONSTRAINT "FK_8be94cd63e35b91adf1301a156c"`) @@ -985,13 +997,13 @@ module.exports = class Data1776771673268 { await db.query(`ALTER TABLE "ogv_proposal_tx_log" DROP CONSTRAINT "FK_5d5f5e10892290ee366d26de7dc"`) await db.query(`ALTER TABLE "ogv_proposal_vote" DROP CONSTRAINT "FK_58d732bc6523c2609d2725cc0ac"`) await db.query(`ALTER TABLE "ogv_proposal_vote" DROP CONSTRAINT "FK_2fd621aea353448fb3f17721bc8"`) - await db.query(`ALTER TABLE "es_account" DROP CONSTRAINT "FK_7b43e7bb90d3b435d074112f572"`) - await db.query(`ALTER TABLE "es_lockup_event" DROP CONSTRAINT "FK_46d53d4fad340d5939955836004"`) - await db.query(`ALTER TABLE "aero_cl_pool_state" DROP CONSTRAINT "FK_02aa86fe0e78999620744402a0c"`) - await db.query(`ALTER TABLE "governance_proposal_event" DROP CONSTRAINT "FK_ce984d23fc99c537b8f22fd663a"`) - await db.query(`ALTER TABLE "governance_proposal_vote" DROP CONSTRAINT "FK_5531af241c24a09c854ead9d551"`) await db.query(`ALTER TABLE "o_token_history" DROP CONSTRAINT "FK_2f1457755464ec5951d1e96542a"`) await db.query(`ALTER TABLE "o_token_rebase" DROP CONSTRAINT "FK_b8653270b96fc932f077b26441d"`) await db.query(`ALTER TABLE "o_token_rebase_option" DROP CONSTRAINT "FK_da7296f8011232dc8675477b841"`) + await db.query(`ALTER TABLE "aero_cl_pool_state" DROP CONSTRAINT "FK_02aa86fe0e78999620744402a0c"`) + await db.query(`ALTER TABLE "governance_proposal_event" DROP CONSTRAINT "FK_ce984d23fc99c537b8f22fd663a"`) + await db.query(`ALTER TABLE "governance_proposal_vote" DROP CONSTRAINT "FK_5531af241c24a09c854ead9d551"`) + await db.query(`ALTER TABLE "es_account" DROP CONSTRAINT "FK_7b43e7bb90d3b435d074112f572"`) + await db.query(`ALTER TABLE "es_lockup_event" DROP CONSTRAINT "FK_46d53d4fad340d5939955836004"`) } } diff --git a/schema.graphql b/schema.graphql index d7cc42a8..3cef3d3f 100644 --- a/schema.graphql +++ b/schema.graphql @@ -4,19 +4,43 @@ type UtilCache @entity { id: ID! @index data: JSON! } -type OGNDailyStat @entity { +""" +Any entity which has a price associated with it should have that price go in here. +Prices can change very frequently and we don't want those changes on the same track +as values which change less frequently. +""" +type ExchangeRate @entity { + """ + Format: 'chainId:blockNumber:pair' ex '1:123456789:ETH_USD' + """ id: ID! - blockNumber: Int! @index + chainId: Int! @index timestamp: DateTime! @index + blockNumber: Int! @index + pair: String! + base: String! + quote: String! + rate: BigInt! + decimals: Int! +} - totalSupply: BigInt! - totalSupplyUSD: Float! - circulatingSupply: BigInt! - totalStaked: BigInt! - tradingVolumeUSD: Float! - marketCapUSD: Float! - priceUSD: Float! - holdersOverThreshold: Int! +""" +Daily historical exchange rates for selected FX pairs. +""" +type ExchangeRateDaily @entity { + """ + Format: 'chainId:date:pair' ex '1:2026-04-17:ETH_USD' + """ + id: ID! + chainId: Int! @index + date: String! @index + timestamp: DateTime! @index + blockNumber: Int! @index + pair: String! @index + base: String! + quote: String! + rate: BigInt! + decimals: Int! } type NativeBalance @entity { """ @@ -28,54 +52,12 @@ type NativeBalance @entity { account: String! balance: BigInt! } -type WalletLabels @entity { +type LegacyStaker @entity { id: ID! @index - address: String! - description: String! - labels: [String!]! - lastUpdated: DateTime! -} -type BeaconDepositEvent @entity { - id: ID! # `chainId:logId` - chainId: Int! @index - address: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - txHash: String! @index - caller: String! @index - # Event Data - pubkey: BeaconDepositPubkey! - withdrawalCredentials: String! - amount: String! - signature: String! - index: String! -} - -type BeaconDepositPubkey @entity { - id: ID! # `pubkey` - createDate: DateTime! - lastUpdated: DateTime! - count: Int! - deposits: [BeaconDepositEvent!] @derivedFrom(field: "pubkey") -} - -type AccountingConsensusRewards @entity { - id: ID! # `chainId:logId` - chainId: Int! @index - timestamp: DateTime! @index - blockNumber: Int! @index - address: String! @index - rewards: BigInt! -} - -type ExecutionRewardsCollected @entity { - id: ID! # `chainId:logId` - chainId: Int! @index - timestamp: DateTime! @index - blockNumber: Int! @index - address: String! @index - strategy: String! @index - amount: BigInt! + inputAmount: BigInt! + outputAmount: BigInt! + balance: BigInt! + rewardAmount: BigInt! } type CurvePool @entity { id: ID! @@ -105,22 +87,6 @@ type CurvePoolRate @entity { name: String! rate: BigInt! } -type CoinGeckoCoinData @entity { - id: ID! - product: String! @index - date: String! @index - vsCurrency: String! - price: Float! - marketCap: Float! - tradingVolume: Float! -} -type LegacyStaker @entity { - id: ID! @index - inputAmount: BigInt! - outputAmount: BigInt! - balance: BigInt! - rewardAmount: BigInt! -} type ProtocolDailyStat @entity { id: ID! date: String! @index @@ -153,6 +119,57 @@ type ProtocolDailyStatDetail @entity { inheritedRevenue: BigInt! # Fees of the product that is inherited from another product. bridgedTvl: BigInt! # TVL of the product that is bridged from another product. } +type BeaconDepositEvent @entity { + id: ID! # `chainId:logId` + chainId: Int! @index + address: String! @index + timestamp: DateTime! @index + blockNumber: Int! @index + txHash: String! @index + caller: String! @index + # Event Data + pubkey: BeaconDepositPubkey! + withdrawalCredentials: String! + amount: String! + signature: String! + index: String! +} + +type BeaconDepositPubkey @entity { + id: ID! # `pubkey` + createDate: DateTime! + lastUpdated: DateTime! + count: Int! + deposits: [BeaconDepositEvent!] @derivedFrom(field: "pubkey") +} + +type AccountingConsensusRewards @entity { + id: ID! # `chainId:logId` + chainId: Int! @index + timestamp: DateTime! @index + blockNumber: Int! @index + address: String! @index + rewards: BigInt! +} + +type ExecutionRewardsCollected @entity { + id: ID! # `chainId:logId` + chainId: Int! @index + timestamp: DateTime! @index + blockNumber: Int! @index + address: String! @index + strategy: String! @index + amount: BigInt! +} +type CoinGeckoCoinData @entity { + id: ID! + product: String! @index + date: String! @index + vsCurrency: String! + price: Float! + marketCap: Float! + tradingVolume: Float! +} type OGNBuyback @entity { id: ID! timestamp: DateTime! @index @@ -164,18 +181,26 @@ type OGNBuyback @entity { ognBoughtUSD: Float! txHash: String! } -type MorphoMarketState @entity { +type WalletLabels @entity { + id: ID! @index + address: String! + description: String! + labels: [String!]! + lastUpdated: DateTime! +} +type OGNDailyStat @entity { id: ID! - chainId: Int! - timestamp: DateTime! - blockNumber: Int! - marketId: String! - totalSupplyAssets: BigInt! - totalSupplyShares: BigInt! - totalBorrowAssets: BigInt! - totalBorrowShares: BigInt! - lastUpdate: BigInt! - fee: BigInt! + blockNumber: Int! @index + timestamp: DateTime! @index + + totalSupply: BigInt! + totalSupplyUSD: Float! + circulatingSupply: BigInt! + totalStaked: BigInt! + tradingVolumeUSD: Float! + marketCapUSD: Float! + priceUSD: Float! + holdersOverThreshold: Int! } type OGV @entity { id: ID! @@ -295,450 +320,346 @@ type OGVDailyStat @entity { priceUSD: Float! holdersOverThreshold: Int! } -type EventWOETHPriceUpdated @entity { +type TransactionDetails @entity { id: ID! chainId: Int! @index + txHash: String! @index timestamp: DateTime! @index blockNumber: Int! @index - address: String! @index - oldValue: BigInt! - newValue: BigInt! -}type SFCWithdrawal @entity { + from: String! @index + to: String! @index + gasUsed: BigInt! + effectiveGasPrice: BigInt! + transactionFee: BigInt! +} +type Pool @entity { id: ID! chainId: Int! @index - createdAt: DateTime! + address: String! @index + exchange: String! @index + name: String + symbol: String + tokens: [String!]! + symbols: [String!]! + decimals: [Int!]! + type: String! createdAtBlock: Int! - delegator: String! @index - toValidatorID: String! @index - wrID: String! @index - amount: BigInt! - penalty: BigInt - withdrawnAt: DateTime - withdrawnAtBlock: Int + createdAt: DateTime! } -""" -Any entity which has a price associated with it should have that price go in here. -Prices can change very frequently and we don't want those changes on the same track -as values which change less frequently. -""" -type ExchangeRate @entity { - """ - Format: 'chainId:blockNumber:pair' ex '1:123456789:ETH_USD' - """ - id: ID! +# Pool Booster Events +type PoolBooster @entity { + id: ID! @index # chainId-address chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index - pair: String! - base: String! - quote: String! - rate: BigInt! - decimals: Int! + address: String! @index + registryAddress: String! @index + ammPoolAddress: String! @index + factoryAddress: String! @index + poolBoosterType: Int! + active: Boolean! } -""" -Daily historical exchange rates for selected FX pairs. -""" -type ExchangeRateDaily @entity { - """ - Format: 'chainId:date:pair' ex '1:2026-04-17:ETH_USD' - """ - id: ID! - chainId: Int! @index - date: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - pair: String! @index - base: String! - quote: String! - rate: BigInt! - decimals: Int! -} -type ERC20 @entity { - id: ID! - chainId: Int! @index - address: String! @index - name: String! - decimals: Int! - symbol: String! -} - -type ERC20Holder @entity { - id: ID! +type PoolBoosterBribeExecuted @entity { + id: ID! @index # chainId-address-txHash chainId: Int! @index address: String! @index - account: String! @index - since: DateTime! @index - balance: BigInt! -} - -type ERC20State @entity { - id: ID! - chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index - address: String! @index - totalSupply: BigInt! - holderCount: Int! + txHash: String! + amount: BigInt! + fee: BigInt! } - -type ERC20StateByDay @entity { - id: ID! +type OToken @entity { + id: ID! @index chainId: Int! @index + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index - date: String! @index - address: String! @index + unallocatedSupply: BigInt! totalSupply: BigInt! + rebasingSupply: BigInt! + nonRebasingSupply: BigInt! + creditsPerToken: BigInt! holderCount: Int! } -type ERC20Balance @entity { - id: ID! +type OTokenRawData @entity { + id: ID! @index chainId: Int! @index + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index - address: String! @index - account: String! @index - balance: BigInt! + type: String! + data: JSON! } -type ERC20Transfer @entity { - id: ID! +type WOToken @entity { + id: ID! @index chainId: Int! @index - txHash: String! - blockNumber: Int! - timestamp: DateTime! - address: String! @index - from: String! @index - fromBalance: BigInt! - to: String! @index - toBalance: BigInt! - value: BigInt! -} -# State - -type ESToken @entity { - id: ID! + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index - circulating: BigInt! - staked: BigInt! - total: BigInt! + totalAssets: BigInt! + totalSupply: BigInt! + assetsPerShare: BigInt! } -type ESAccount @entity { - id: ID! # `chainId:address:account` +type OTokenAsset @entity { + id: ID! @index chainId: Int! @index + otoken: String! @index address: String! @index - account: String! @index - assetBalance: BigInt! - stakedBalance: BigInt! - balance: BigInt! - votingPower: BigInt! - delegateTo: ESAccount - delegatesFrom: [ESAccount]! @derivedFrom(field: "delegateTo") + symbol: String! } -type ESYield @entity { - id: ID! +type OTokenAddress @entity { + id: ID! @index chainId: Int! @index + otoken: String! @index address: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - assetBalance: BigInt! - rewardsPerSecond: BigInt! - apr: Float! - apy: Float! + isContract: Boolean! + rebasingOption: RebasingOption! + credits: BigInt! + creditsPerToken: BigInt! + balance: BigInt! + earned: BigInt! + yieldTo: String # For delegation source + yieldFrom: String # For delegation target + blockNumber: Int! + lastUpdated: DateTime! + since: DateTime + history: [OTokenHistory!]! @derivedFrom(field: "address") } -type ESLockup @entity { - id: ID! # `chainId:address:account:lockupId` or `lockupId` +type OTokenHistory @entity { + id: ID! chainId: Int! @index - address: String! @index - account: String! @index - lockupId: BigInt! @index + otoken: String! @index + address: OTokenAddress! @index + value: BigInt! + balance: BigInt! timestamp: DateTime! + blockNumber: Int! @index txHash: String! @index - lastUpdated: DateTime! - amount: BigInt! - end: DateTime! - points: BigInt! - withdrawAmount: BigInt! - penalty: BigInt! - state: ESLockupState - events: [ESLockupEvent]! @derivedFrom(field: "lockup") -} - -enum ESLockupState { - Open - Closed -} - -enum ESLockupEventType { - Staked - Unstaked - Extended + type: HistoryType! } -type ESLockupEvent @entity { +type OTokenRebase @entity { id: ID! chainId: Int! @index - address: String! @index + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index txHash: String! @index - event: ESLockupEventType! - lockup: ESLockup! + totalSupply: BigInt! + rebasingCredits: BigInt! + rebasingCreditsPerToken: BigInt! + apy: OTokenAPY! + fee: BigInt! + feeETH: BigInt! + feeUSD: BigInt! + yield: BigInt! + yieldETH: BigInt! + yieldUSD: BigInt! } -# Events -type ESDelegateChanged @entity { - id: ID! # `chainId:logId` +type OTokenRebaseOption @entity { + id: ID! chainId: Int! @index - address: String! @index + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index txHash: String! @index - delegator: String! @index - fromDelegate: String! - toDelegate: String! + address: OTokenAddress! + status: RebasingOption! + delegatedTo: String } -type ESDelegateVotesChanged @entity { - id: ID! # `chainId:logId` +type OTokenAPY @entity { + id: ID! chainId: Int! @index - address: String! @index + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index - txHash: String! @index - delegate: String! @index - previousBalance: BigInt! - newBalance: BigInt! + txHash: String @index + date: String! @index + apr: Float! + apy: Float! + apy7DayAvg: Float! + apy14DayAvg: Float! + apy30DayAvg: Float! + rebasingCreditsPerToken: BigInt! } -type ESPenalty @entity { - id: ID! # `chainId:logId` +type OTokenVault @entity { + id: ID! chainId: Int! @index - address: String! @index + otoken: String! @index timestamp: DateTime! @index blockNumber: Int! @index - txHash: String! @index - account: String! @index - amount: BigInt! + address: String! @index + vaultBuffer: BigInt! + totalValue: BigInt! } -type ESReward @entity { - id: ID! # `chainId:logId` +type OTokenActivity @entity { + id: ID! chainId: Int! @index - address: String! @index + otoken: String! @index + account: String @index + counterparty: String @index timestamp: DateTime! @index blockNumber: Int! @index txHash: String! @index - account: String! @index - amount: BigInt! + type: OTokenActivityType + data: JSON } -type ESStake @entity { - id: ID! # `chainId:logId` - chainId: Int! @index - address: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - txHash: String! @index - account: String! @index - lockupId: BigInt! @index - amount: BigInt! - end: BigInt! - points: BigInt! +enum OTokenActivityType { + Approval + Bridge + ClaimRewards + DelegateVote + ExtendStake + Migrate + Stake + Transfer + Swap + Wrap + Unwrap + Mint + Redeem + Zap + Unstake + Vote } -type ESUnstake @entity { - id: ID! # `chainId:logId` - chainId: Int! @index - address: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - txHash: String! @index - account: String! @index - lockupId: BigInt! @index - amount: BigInt! - end: BigInt! - points: BigInt! -} -type AeroPoolState @entity { - id: ID! # chainId:poolAddress:blockNumber +type OTokenDailyStat @entity { + id: ID! # chain-otokenAddress-YYYY-MM-DD chainId: Int! @index blockNumber: Int! @index timestamp: DateTime! @index - address: String! @index - totalUsd: BigInt! - liquidity: BigInt! - stakedLiquidity: BigInt! - asset0: BigInt! - asset1: BigInt! - voteWeight: BigInt! - votePercentage: BigInt! -} + otoken: String! @index + date: String! @index -type AeroCLPoolState @entity { - id: ID! # chainId-poolAddress-blockNumber - chainId: Int! @index - blockNumber: Int! @index - timestamp: DateTime! @index - address: String! @index - totalUsd: BigInt! - liquidity: BigInt! - stakedLiquidity: BigInt! - asset0: BigInt! - asset1: BigInt! - voteWeight: BigInt! - votePercentage: BigInt! - tick: AeroCLPoolTick! - tickPrice: Float! - sqrtPriceX96: BigInt! -} + apr: Float! + apy: Float! + apy7: Float! + apy14: Float! + apy30: Float! -type AeroCLPoolTick @entity { - id: ID! # chainId-poolAddress-tick-blockNumber - chainId: Int! @index - blockNumber: Int! @index - timestamp: DateTime! @index - address: String! @index - tick: Int! @index - tickPrice: Float! - sqrtPriceX96: BigInt! - liquidityGross: BigInt! - liquidityNet: BigInt! - stakedLiquidityNet: BigInt! - feeGrowthOutside0X128: BigInt! - feeGrowthOutside1X128: BigInt! - rewardGrowthOutsideX128: BigInt! - tickCumulativeOutside: BigInt! - secondsPerLiquidityOutsideX128: BigInt! - secondsOutside: Int! -} + peg: BigInt! + rateUSD: BigInt! + rateETH: BigInt! + rateNative: BigInt! -type AeroPoolEpochState @entity { - id: ID! # chainId-poolAddress-epochTs-blockNumber - chainId: Int! @index - blockNumber: Int! @index - timestamp: DateTime! @index - address: String! @index - epoch: BigInt! @index - votes: BigInt! - emissions: BigInt! - bribes: [TokenAmount!] - fees: [TokenAmount!] -} + totalSupply: BigInt! + rebasingSupply: BigInt! + nonRebasingSupply: BigInt! + wrappedSupply: BigInt! + rateWrapped: BigInt! -type TokenAmount { - token: String! - amount: BigInt! + amoSupply: BigInt + dripperWETH: BigInt! + + yield: BigInt! + fees: BigInt! + cumulativeYield: BigInt! + cumulativeFees: BigInt! + + marketCapUSD: Float! + accountsOverThreshold: Int! } -type AeroLP @entity { - id: ID! # chainId-pool-blockNumber-positionId +type OTokenDripperState @entity { + id: ID! # chain-otokenAddress-blockNumber chainId: Int! @index blockNumber: Int! @index timestamp: DateTime! @index - pool: String! @index - account: String! @index - liquidity: BigInt! - staked: BigInt! - amount0: BigInt! - amount1: BigInt! - staked0: BigInt! - staked1: BigInt! - unstakedEarned0: BigInt! - unstakedEarned1: BigInt! - emissionsEarned: BigInt! - tickLower: Int! - tickUpper: Int! - sqrtRatioLower: BigInt! - sqrtRatioUpper: BigInt! + otoken: String! @index + wethBalance: BigInt! + availableFunds: BigInt! + lastCollect: BigInt! + perSecond: BigInt! + perSecondTarget: BigInt + perSecondMax: BigInt + dripDuration: BigInt! } -type AeroLPPosition @entity { - id: ID! # chainId-pool-blockNumber-positionId +type OTokenHarvesterYieldSent @entity { + id: ID! # log.id chainId: Int! @index blockNumber: Int! @index timestamp: DateTime! @index - pool: String! @index - positionId: BigInt! @index - account: String! @index - liquidity: BigInt! - staked: BigInt! - amount0: BigInt! - amount1: BigInt! - staked0: BigInt! - staked1: BigInt! - unstakedEarned0: BigInt! - unstakedEarned1: BigInt! - emissionsEarned: BigInt! - tickLower: Int! - tickUpper: Int! - sqrtRatioLower: BigInt! - sqrtRatioUpper: BigInt! + otoken: String! @index + txHash: String! + yield: BigInt! + fee: BigInt! } -type AeroCLGaugeNotifyReward @entity { + +type OTokenRewardTokenCollected @entity { id: ID! chainId: Int! @index blockNumber: Int! @index timestamp: DateTime! @index - address: String! @index - from: String! @index + otoken: String! @index + strategy: String! + recipient: String! + rewardToken: String! amount: BigInt! } -type AeroGaugeNotifyReward @entity { +type OTokenWithdrawalRequest @entity { id: ID! chainId: Int! @index blockNumber: Int! @index timestamp: DateTime! @index - address: String! @index - from: String! @index + otoken: String! @index + requestId: BigInt! + withdrawer: String! amount: BigInt! + queued: BigInt! + claimed: Boolean! + claimedAt: DateTime + queueWait: BigInt + txHash: String! @index } -type AeroPoolCreated @entity { +type OTokenYieldForwarded @entity { id: ID! chainId: Int! @index blockNumber: Int! @index timestamp: DateTime! @index - address: String! @index - pool: String! - token0: String! - token1: String! - stable: Boolean! + otoken: String! @index + from: String! + to: String! + fromBalance: BigInt! + amount: BigInt! } -type AeroCLPoolCreated @entity { - id: ID! - chainId: Int! @index - blockNumber: Int! @index - timestamp: DateTime! @index - address: String! @index - pool: String! - token0: String! - token1: String! - tickSpacing: Int! +enum RebasingOption { + OptIn + OptOut + YieldDelegationSource + YieldDelegationTarget } -type AeroVoterGaugeCreated @entity { +enum HistoryType { + Sent + Received + Yield +} +type MorphoVaultApy @entity { + """ + Format: '{chainId}:{vaultAddress}:{blockNumber}' + """ id: ID! chainId: Int! @index - blockNumber: Int! @index timestamp: DateTime! @index - address: String! @index - poolFactory: String! @index - votingRewardsFactory: String! @index - gaugeFactory: String! @index - pool: String! - bribeVotingReward: String! - feeVotingReward: String! - gauge: String! - creator: String! + blockNumber: Int! @index + vaultAddress: String! @index + apy: Float! } # - P1: For UI # - stETH ARM TVL @@ -817,6 +738,24 @@ type ArmDailyStat @entity { rateNative: Float! } +type ArmAddressYield @entity { + id: ID! + chainId: Int! @index + arm: String! @index + address: String! @index + date: String! @index + timestamp: DateTime! + blockNumber: Int! @index + balance: BigInt! + value: BigInt! + costBasis: BigInt! + yield: BigInt! + cumulativeYield: BigInt! + roi: Float! + lastR: BigInt! + yieldRemainder: BigInt! +} + type ArmWithdrawalRequest @entity { id: ID! chainId: Int! @index @@ -857,26 +796,269 @@ type TraderateChanged @entity { traderate0: BigInt! traderate1: BigInt! } -enum GovernanceProposalState { - Pending - Active - Canceled - Defeated - Succeeded - Queued - Expired - Executed -} - -enum GovernanceProposalEventType { - Created - Queued - Canceled - Extended - Executed +type ERC20 @entity { + id: ID! + chainId: Int! @index + address: String! @index + name: String! + decimals: Int! + symbol: String! } -enum GovernanceVoteType { +type ERC20Holder @entity { + id: ID! + chainId: Int! @index + address: String! @index + account: String! @index + since: DateTime! @index + balance: BigInt! +} + +type ERC20State @entity { + id: ID! + chainId: Int! @index + timestamp: DateTime! @index + blockNumber: Int! @index + address: String! @index + totalSupply: BigInt! + holderCount: Int! +} + +type ERC20StateByDay @entity { + id: ID! + chainId: Int! @index + timestamp: DateTime! @index + blockNumber: Int! @index + date: String! @index + address: String! @index + totalSupply: BigInt! + holderCount: Int! +} + +type ERC20Balance @entity { + id: ID! + chainId: Int! @index + timestamp: DateTime! @index + blockNumber: Int! @index + address: String! @index + account: String! @index + balance: BigInt! +} + +type ERC20Transfer @entity { + id: ID! + chainId: Int! @index + txHash: String! + blockNumber: Int! + timestamp: DateTime! + address: String! @index + from: String! @index + fromBalance: BigInt! + to: String! @index + toBalance: BigInt! + value: BigInt! +} +type ProcessingStatus @entity { + id: ID! + timestamp: DateTime! + blockNumber: Int! + startTimestamp: DateTime! # when we started processing + headTimestamp: DateTime # when we first hit head block +} +type AeroCLGaugeNotifyReward @entity { + id: ID! + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + from: String! @index + amount: BigInt! +} + +type AeroGaugeNotifyReward @entity { + id: ID! + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + from: String! @index + amount: BigInt! +} + +type AeroPoolCreated @entity { + id: ID! + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + pool: String! + token0: String! + token1: String! + stable: Boolean! +} + +type AeroCLPoolCreated @entity { + id: ID! + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + pool: String! + token0: String! + token1: String! + tickSpacing: Int! +} + +type AeroVoterGaugeCreated @entity { + id: ID! + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + poolFactory: String! @index + votingRewardsFactory: String! @index + gaugeFactory: String! @index + pool: String! + bribeVotingReward: String! + feeVotingReward: String! + gauge: String! + creator: String! +} +type AeroPoolState @entity { + id: ID! # chainId:poolAddress:blockNumber + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + totalUsd: BigInt! + liquidity: BigInt! + stakedLiquidity: BigInt! + asset0: BigInt! + asset1: BigInt! + voteWeight: BigInt! + votePercentage: BigInt! +} + +type AeroCLPoolState @entity { + id: ID! # chainId-poolAddress-blockNumber + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + totalUsd: BigInt! + liquidity: BigInt! + stakedLiquidity: BigInt! + asset0: BigInt! + asset1: BigInt! + voteWeight: BigInt! + votePercentage: BigInt! + tick: AeroCLPoolTick! + tickPrice: Float! + sqrtPriceX96: BigInt! +} + +type AeroCLPoolTick @entity { + id: ID! # chainId-poolAddress-tick-blockNumber + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + tick: Int! @index + tickPrice: Float! + sqrtPriceX96: BigInt! + liquidityGross: BigInt! + liquidityNet: BigInt! + stakedLiquidityNet: BigInt! + feeGrowthOutside0X128: BigInt! + feeGrowthOutside1X128: BigInt! + rewardGrowthOutsideX128: BigInt! + tickCumulativeOutside: BigInt! + secondsPerLiquidityOutsideX128: BigInt! + secondsOutside: Int! +} + +type AeroPoolEpochState @entity { + id: ID! # chainId-poolAddress-epochTs-blockNumber + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + address: String! @index + epoch: BigInt! @index + votes: BigInt! + emissions: BigInt! + bribes: [TokenAmount!] + fees: [TokenAmount!] +} + +type TokenAmount { + token: String! + amount: BigInt! +} + +type AeroLP @entity { + id: ID! # chainId-pool-blockNumber-positionId + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + pool: String! @index + account: String! @index + liquidity: BigInt! + staked: BigInt! + amount0: BigInt! + amount1: BigInt! + staked0: BigInt! + staked1: BigInt! + unstakedEarned0: BigInt! + unstakedEarned1: BigInt! + emissionsEarned: BigInt! + tickLower: Int! + tickUpper: Int! + sqrtRatioLower: BigInt! + sqrtRatioUpper: BigInt! +} + +type AeroLPPosition @entity { + id: ID! # chainId-pool-blockNumber-positionId + chainId: Int! @index + blockNumber: Int! @index + timestamp: DateTime! @index + pool: String! @index + positionId: BigInt! @index + account: String! @index + liquidity: BigInt! + staked: BigInt! + amount0: BigInt! + amount1: BigInt! + staked0: BigInt! + staked1: BigInt! + unstakedEarned0: BigInt! + unstakedEarned1: BigInt! + emissionsEarned: BigInt! + tickLower: Int! + tickUpper: Int! + sqrtRatioLower: BigInt! + sqrtRatioUpper: BigInt! +} +enum GovernanceProposalState { + Pending + Active + Canceled + Defeated + Succeeded + Queued + Expired + Executed +} + +enum GovernanceProposalEventType { + Created + Queued + Canceled + Extended + Executed +} + +enum GovernanceVoteType { Against For Abstain @@ -950,19 +1132,7 @@ type BridgeTransferState @entity { txHash: String! @index state: Int! } -type TransactionDetails @entity { - id: ID! - chainId: Int! @index - txHash: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - from: String! @index - to: String! @index - gasUsed: BigInt! - effectiveGasPrice: BigInt! - transactionFee: BigInt! -} -type FRRSRewardCollected @entity { +type FRRSRewardCollected @entity { id: ID! chainId: Int! @index address: String! @index @@ -999,379 +1169,228 @@ type FRRSStrategistUpdated @entity { blockNumber: Int! @index txHash: String! @index strategistAddress: String! -}type StrategyBalance @entity @index(fields: ["strategy", "timestamp"]) { +}# State + +type ESToken @entity { id: ID! - chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index - otoken: String! @index - strategy: String! @index - asset: String! - symbol: String! - balance: BigInt! - balanceETH: BigInt! + circulating: BigInt! + staked: BigInt! + total: BigInt! } -type StrategyYield @entity { - id: ID! - timestamp: DateTime! @index - blockNumber: Int! @index - otoken: String! @index - strategy: String! @index - asset: String! +type ESAccount @entity { + id: ID! # `chainId:address:account` + chainId: Int! @index + address: String! @index + account: String! @index + assetBalance: BigInt! + stakedBalance: BigInt! balance: BigInt! - balanceWeight: Float! - earnings: BigInt! - earningsChange: BigInt! + votingPower: BigInt! + delegateTo: ESAccount + delegatesFrom: [ESAccount]! @derivedFrom(field: "delegateTo") } -type StrategyDailyYield @entity { +type ESYield @entity { id: ID! + chainId: Int! @index + address: String! @index timestamp: DateTime! @index blockNumber: Int! @index - otoken: String! @index - strategy: String! @index - asset: String! - balance: BigInt! - balanceWeight: Float! - earnings: BigInt! - earningsChange: BigInt! + assetBalance: BigInt! + rewardsPerSecond: BigInt! apr: Float! apy: Float! } -type OToken @entity { - id: ID! @index - chainId: Int! @index - otoken: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - unallocatedSupply: BigInt! - totalSupply: BigInt! - rebasingSupply: BigInt! - nonRebasingSupply: BigInt! - creditsPerToken: BigInt! - holderCount: Int! -} - -type OTokenRawData @entity { - id: ID! @index - chainId: Int! @index - otoken: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - type: String! - data: JSON! -} - -type WOToken @entity { - id: ID! @index - chainId: Int! @index - otoken: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - totalAssets: BigInt! - totalSupply: BigInt! - assetsPerShare: BigInt! -} -type OTokenAsset @entity { - id: ID! @index +type ESLockup @entity { + id: ID! # `chainId:address:account:lockupId` or `lockupId` chainId: Int! @index - otoken: String! @index address: String! @index - symbol: String! + account: String! @index + lockupId: BigInt! @index + timestamp: DateTime! + txHash: String! @index + lastUpdated: DateTime! + amount: BigInt! + end: DateTime! + points: BigInt! + withdrawAmount: BigInt! + penalty: BigInt! + state: ESLockupState + events: [ESLockupEvent]! @derivedFrom(field: "lockup") } -type OTokenAddress @entity { - id: ID! @index - chainId: Int! @index - otoken: String! @index - address: String! @index - isContract: Boolean! - rebasingOption: RebasingOption! - credits: BigInt! - creditsPerToken: BigInt! - balance: BigInt! - earned: BigInt! - yieldTo: String # For delegation source - yieldFrom: String # For delegation target - blockNumber: Int! - lastUpdated: DateTime! - since: DateTime - history: [OTokenHistory!]! @derivedFrom(field: "address") +enum ESLockupState { + Open + Closed } -type OTokenHistory @entity { - id: ID! - chainId: Int! @index - otoken: String! @index - address: OTokenAddress! @index - value: BigInt! - balance: BigInt! - timestamp: DateTime! - blockNumber: Int! @index - txHash: String! @index - type: HistoryType! +enum ESLockupEventType { + Staked + Unstaked + Extended } -type OTokenRebase @entity { +type ESLockupEvent @entity { id: ID! chainId: Int! @index - otoken: String! @index + address: String! @index timestamp: DateTime! @index blockNumber: Int! @index txHash: String! @index - totalSupply: BigInt! - rebasingCredits: BigInt! - rebasingCreditsPerToken: BigInt! - apy: OTokenAPY! - fee: BigInt! - feeETH: BigInt! - feeUSD: BigInt! - yield: BigInt! - yieldETH: BigInt! - yieldUSD: BigInt! + event: ESLockupEventType! + lockup: ESLockup! } -type OTokenRebaseOption @entity { - id: ID! +# Events +type ESDelegateChanged @entity { + id: ID! # `chainId:logId` chainId: Int! @index - otoken: String! @index + address: String! @index timestamp: DateTime! @index blockNumber: Int! @index txHash: String! @index - address: OTokenAddress! - status: RebasingOption! - delegatedTo: String + delegator: String! @index + fromDelegate: String! + toDelegate: String! } -type OTokenAPY @entity { - id: ID! +type ESDelegateVotesChanged @entity { + id: ID! # `chainId:logId` chainId: Int! @index - otoken: String! @index + address: String! @index timestamp: DateTime! @index blockNumber: Int! @index - txHash: String @index - date: String! @index - apr: Float! - apy: Float! - apy7DayAvg: Float! - apy14DayAvg: Float! - apy30DayAvg: Float! - rebasingCreditsPerToken: BigInt! + txHash: String! @index + delegate: String! @index + previousBalance: BigInt! + newBalance: BigInt! } -type OTokenVault @entity { - id: ID! +type ESPenalty @entity { + id: ID! # `chainId:logId` chainId: Int! @index - otoken: String! @index + address: String! @index timestamp: DateTime! @index blockNumber: Int! @index - address: String! @index - vaultBuffer: BigInt! - totalValue: BigInt! + txHash: String! @index + account: String! @index + amount: BigInt! } -type OTokenActivity @entity { - id: ID! +type ESReward @entity { + id: ID! # `chainId:logId` chainId: Int! @index - otoken: String! @index - account: String @index - counterparty: String @index + address: String! @index timestamp: DateTime! @index blockNumber: Int! @index txHash: String! @index - type: OTokenActivityType - data: JSON -} - -enum OTokenActivityType { - Approval - Bridge - ClaimRewards - DelegateVote - ExtendStake - Migrate - Stake - Transfer - Swap - Wrap - Unwrap - Mint - Redeem - Zap - Unstake - Vote + account: String! @index + amount: BigInt! } -type OTokenDailyStat @entity { - id: ID! # chain-otokenAddress-YYYY-MM-DD +type ESStake @entity { + id: ID! # `chainId:logId` chainId: Int! @index - blockNumber: Int! @index + address: String! @index timestamp: DateTime! @index - otoken: String! @index - date: String! @index - - apr: Float! - apy: Float! - apy7: Float! - apy14: Float! - apy30: Float! - - peg: BigInt! - rateUSD: BigInt! - rateETH: BigInt! - rateNative: BigInt! - - totalSupply: BigInt! - rebasingSupply: BigInt! - nonRebasingSupply: BigInt! - wrappedSupply: BigInt! - rateWrapped: BigInt! - - amoSupply: BigInt - dripperWETH: BigInt! - - yield: BigInt! - fees: BigInt! - cumulativeYield: BigInt! - cumulativeFees: BigInt! - - marketCapUSD: Float! - accountsOverThreshold: Int! -} - -type OTokenDripperState @entity { - id: ID! # chain-otokenAddress-blockNumber - chainId: Int! @index blockNumber: Int! @index - timestamp: DateTime! @index - otoken: String! @index - wethBalance: BigInt! - availableFunds: BigInt! - lastCollect: BigInt! - perSecond: BigInt! - perSecondTarget: BigInt - perSecondMax: BigInt - dripDuration: BigInt! + txHash: String! @index + account: String! @index + lockupId: BigInt! @index + amount: BigInt! + end: BigInt! + points: BigInt! } -type OTokenHarvesterYieldSent @entity { - id: ID! # log.id +type ESUnstake @entity { + id: ID! # `chainId:logId` chainId: Int! @index - blockNumber: Int! @index + address: String! @index timestamp: DateTime! @index - otoken: String! @index - txHash: String! - yield: BigInt! - fee: BigInt! -} - -type OTokenRewardTokenCollected @entity { - id: ID! - chainId: Int! @index blockNumber: Int! @index - timestamp: DateTime! @index - otoken: String! @index - strategy: String! - recipient: String! - rewardToken: String! + txHash: String! @index + account: String! @index + lockupId: BigInt! @index amount: BigInt! + end: BigInt! + points: BigInt! } - -type OTokenWithdrawalRequest @entity { +type StrategyBalance @entity @index(fields: ["strategy", "timestamp"]) { id: ID! chainId: Int! @index - blockNumber: Int! @index timestamp: DateTime! @index + blockNumber: Int! @index otoken: String! @index - requestId: BigInt! - withdrawer: String! - amount: BigInt! - queued: BigInt! - claimed: Boolean! - claimedAt: DateTime - queueWait: BigInt - txHash: String! @index + strategy: String! @index + asset: String! + symbol: String! + balance: BigInt! + balanceETH: BigInt! } -type OTokenYieldForwarded @entity { +type StrategyYield @entity { id: ID! - chainId: Int! @index - blockNumber: Int! @index timestamp: DateTime! @index + blockNumber: Int! @index otoken: String! @index - from: String! - to: String! - fromBalance: BigInt! - amount: BigInt! -} - -enum RebasingOption { - OptIn - OptOut - YieldDelegationSource - YieldDelegationTarget + strategy: String! @index + asset: String! + balance: BigInt! + balanceWeight: Float! + earnings: BigInt! + earningsChange: BigInt! } -enum HistoryType { - Sent - Received - Yield -} -# Pool Booster Events -type PoolBooster @entity { - id: ID! @index # chainId-address - chainId: Int! @index +type StrategyDailyYield @entity { + id: ID! timestamp: DateTime! @index blockNumber: Int! @index - address: String! @index - registryAddress: String! @index - ammPoolAddress: String! @index - factoryAddress: String! @index - poolBoosterType: Int! - active: Boolean! + otoken: String! @index + strategy: String! @index + asset: String! + balance: BigInt! + balanceWeight: Float! + earnings: BigInt! + earningsChange: BigInt! + apr: Float! + apy: Float! } - -type PoolBoosterBribeExecuted @entity { - id: ID! @index # chainId-address-txHash +type SFCWithdrawal @entity { + id: ID! chainId: Int! @index - address: String! @index - timestamp: DateTime! @index - blockNumber: Int! @index - txHash: String! + createdAt: DateTime! + createdAtBlock: Int! + delegator: String! @index + toValidatorID: String! @index + wrID: String! @index amount: BigInt! - fee: BigInt! + penalty: BigInt + withdrawnAt: DateTime + withdrawnAtBlock: Int } -type ProcessingStatus @entity { +type MorphoMarketState @entity { id: ID! + chainId: Int! timestamp: DateTime! blockNumber: Int! - startTimestamp: DateTime! # when we started processing - headTimestamp: DateTime # when we first hit head block + marketId: String! + totalSupplyAssets: BigInt! + totalSupplyShares: BigInt! + totalBorrowAssets: BigInt! + totalBorrowShares: BigInt! + lastUpdate: BigInt! + fee: BigInt! } -type MorphoVaultApy @entity { - """ - Format: '{chainId}:{vaultAddress}:{blockNumber}' - """ +type EventWOETHPriceUpdated @entity { id: ID! chainId: Int! @index timestamp: DateTime! @index blockNumber: Int! @index - vaultAddress: String! @index - apy: Float! -} -type Pool @entity { - id: ID! - chainId: Int! @index address: String! @index - exchange: String! @index - name: String - symbol: String - tokens: [String!]! - symbols: [String!]! - decimals: [Int!]! - type: String! - createdAtBlock: Int! - createdAt: DateTime! -} + oldValue: BigInt! + newValue: BigInt! +} \ No newline at end of file diff --git a/src/model/generated/armAddressYield.model.ts b/src/model/generated/armAddressYield.model.ts new file mode 100644 index 00000000..3d3a76c2 --- /dev/null +++ b/src/model/generated/armAddressYield.model.ts @@ -0,0 +1,58 @@ +import {Entity as Entity_, Column as Column_, PrimaryColumn as PrimaryColumn_, IntColumn as IntColumn_, Index as Index_, StringColumn as StringColumn_, DateTimeColumn as DateTimeColumn_, BigIntColumn as BigIntColumn_, FloatColumn as FloatColumn_} from "@subsquid/typeorm-store" + +@Entity_() +export class ArmAddressYield { + constructor(props?: Partial) { + Object.assign(this, props) + } + + @PrimaryColumn_() + id!: string + + @Index_() + @IntColumn_({nullable: false}) + chainId!: number + + @Index_() + @StringColumn_({nullable: false}) + arm!: string + + @Index_() + @StringColumn_({nullable: false}) + address!: string + + @Index_() + @StringColumn_({nullable: false}) + date!: string + + @DateTimeColumn_({nullable: false}) + timestamp!: Date + + @Index_() + @IntColumn_({nullable: false}) + blockNumber!: number + + @BigIntColumn_({nullable: false}) + balance!: bigint + + @BigIntColumn_({nullable: false}) + value!: bigint + + @BigIntColumn_({nullable: false}) + costBasis!: bigint + + @BigIntColumn_({nullable: false}) + yield!: bigint + + @BigIntColumn_({nullable: false}) + cumulativeYield!: bigint + + @FloatColumn_({nullable: false}) + roi!: number + + @BigIntColumn_({nullable: false}) + lastR!: bigint + + @BigIntColumn_({nullable: false}) + yieldRemainder!: bigint +} diff --git a/src/model/generated/index.ts b/src/model/generated/index.ts index c16f2078..1fc4c337 100644 --- a/src/model/generated/index.ts +++ b/src/model/generated/index.ts @@ -1,20 +1,21 @@ export * from "./utilCache.model" -export * from "./ognDailyStat.model" +export * from "./exchangeRate.model" +export * from "./exchangeRateDaily.model" export * from "./nativeBalance.model" -export * from "./walletLabels.model" -export * from "./beaconDepositEvent.model" -export * from "./beaconDepositPubkey.model" -export * from "./accountingConsensusRewards.model" -export * from "./executionRewardsCollected.model" +export * from "./legacyStaker.model" export * from "./curvePool.model" export * from "./curvePoolBalance.model" export * from "./curvePoolRate.model" -export * from "./coinGeckoCoinData.model" -export * from "./legacyStaker.model" export * from "./protocolDailyStat.model" export * from "./protocolDailyStatDetail.model" +export * from "./beaconDepositEvent.model" +export * from "./beaconDepositPubkey.model" +export * from "./accountingConsensusRewards.model" +export * from "./executionRewardsCollected.model" +export * from "./coinGeckoCoinData.model" export * from "./ognBuyback.model" -export * from "./morphoMarketState.model" +export * from "./walletLabels.model" +export * from "./ognDailyStat.model" export * from "./ogv.model" export * from "./ogvAddress.model" export * from "./ogvLockupTxLog.model" @@ -27,29 +28,50 @@ export * from "./_ogvProposalState" export * from "./ogvProposalVote.model" export * from "./_ogvVoteType" export * from "./ogvDailyStat.model" -export * from "./eventWoethPriceUpdated.model" -export * from "./sfcWithdrawal.model" -export * from "./exchangeRate.model" -export * from "./exchangeRateDaily.model" +export * from "./transactionDetails.model" +export * from "./pool.model" +export * from "./poolBooster.model" +export * from "./poolBoosterBribeExecuted.model" +export * from "./oToken.model" +export * from "./oTokenRawData.model" +export * from "./woToken.model" +export * from "./oTokenAsset.model" +export * from "./oTokenAddress.model" +export * from "./_rebasingOption" +export * from "./oTokenHistory.model" +export * from "./_historyType" +export * from "./oTokenRebase.model" +export * from "./oTokenRebaseOption.model" +export * from "./oTokenApy.model" +export * from "./oTokenVault.model" +export * from "./oTokenActivity.model" +export * from "./_oTokenActivityType" +export * from "./oTokenDailyStat.model" +export * from "./oTokenDripperState.model" +export * from "./oTokenHarvesterYieldSent.model" +export * from "./oTokenRewardTokenCollected.model" +export * from "./oTokenWithdrawalRequest.model" +export * from "./oTokenYieldForwarded.model" +export * from "./morphoVaultApy.model" +export * from "./arm.model" +export * from "./armState.model" +export * from "./armDailyStat.model" +export * from "./armAddressYield.model" +export * from "./armWithdrawalRequest.model" +export * from "./armSwap.model" +export * from "./traderateChanged.model" export * from "./erc20.model" export * from "./erc20Holder.model" export * from "./erc20State.model" export * from "./erc20StateByDay.model" export * from "./erc20Balance.model" export * from "./erc20Transfer.model" -export * from "./esToken.model" -export * from "./esAccount.model" -export * from "./esYield.model" -export * from "./esLockup.model" -export * from "./_esLockupState" -export * from "./esLockupEvent.model" -export * from "./_esLockupEventType" -export * from "./esDelegateChanged.model" -export * from "./esDelegateVotesChanged.model" -export * from "./esPenalty.model" -export * from "./esReward.model" -export * from "./esStake.model" -export * from "./esUnstake.model" +export * from "./processingStatus.model" +export * from "./aeroClGaugeNotifyReward.model" +export * from "./aeroGaugeNotifyReward.model" +export * from "./aeroPoolCreated.model" +export * from "./aeroClPoolCreated.model" +export * from "./aeroVoterGaugeCreated.model" export * from "./aeroPoolState.model" export * from "./aeroClPoolState.model" export * from "./aeroClPoolTick.model" @@ -57,17 +79,6 @@ export * from "./aeroPoolEpochState.model" export * from "./_tokenAmount" export * from "./aeroLp.model" export * from "./aeroLpPosition.model" -export * from "./aeroClGaugeNotifyReward.model" -export * from "./aeroGaugeNotifyReward.model" -export * from "./aeroPoolCreated.model" -export * from "./aeroClPoolCreated.model" -export * from "./aeroVoterGaugeCreated.model" -export * from "./arm.model" -export * from "./armState.model" -export * from "./armDailyStat.model" -export * from "./armWithdrawalRequest.model" -export * from "./armSwap.model" -export * from "./traderateChanged.model" export * from "./governanceProposalEvent.model" export * from "./_governanceProposalEventType" export * from "./governanceProposal.model" @@ -76,36 +87,26 @@ export * from "./governanceProposalVote.model" export * from "./_governanceVoteType" export * from "./bridgeTransfer.model" export * from "./bridgeTransferState.model" -export * from "./transactionDetails.model" export * from "./frrsRewardCollected.model" export * from "./frrsRewardsPerSecondChanged.model" export * from "./frrsRewardsTargetChange.model" export * from "./frrsStrategistUpdated.model" +export * from "./esToken.model" +export * from "./esAccount.model" +export * from "./esYield.model" +export * from "./esLockup.model" +export * from "./_esLockupState" +export * from "./esLockupEvent.model" +export * from "./_esLockupEventType" +export * from "./esDelegateChanged.model" +export * from "./esDelegateVotesChanged.model" +export * from "./esPenalty.model" +export * from "./esReward.model" +export * from "./esStake.model" +export * from "./esUnstake.model" export * from "./strategyBalance.model" export * from "./strategyYield.model" export * from "./strategyDailyYield.model" -export * from "./oToken.model" -export * from "./oTokenRawData.model" -export * from "./woToken.model" -export * from "./oTokenAsset.model" -export * from "./oTokenAddress.model" -export * from "./_rebasingOption" -export * from "./oTokenHistory.model" -export * from "./_historyType" -export * from "./oTokenRebase.model" -export * from "./oTokenRebaseOption.model" -export * from "./oTokenApy.model" -export * from "./oTokenVault.model" -export * from "./oTokenActivity.model" -export * from "./_oTokenActivityType" -export * from "./oTokenDailyStat.model" -export * from "./oTokenDripperState.model" -export * from "./oTokenHarvesterYieldSent.model" -export * from "./oTokenRewardTokenCollected.model" -export * from "./oTokenWithdrawalRequest.model" -export * from "./oTokenYieldForwarded.model" -export * from "./poolBooster.model" -export * from "./poolBoosterBribeExecuted.model" -export * from "./processingStatus.model" -export * from "./morphoVaultApy.model" -export * from "./pool.model" +export * from "./sfcWithdrawal.model" +export * from "./morphoMarketState.model" +export * from "./eventWoethPriceUpdated.model" diff --git a/src/templates/origin-arm/arm-apy.ts b/src/templates/origin-arm/arm-apy.ts new file mode 100644 index 00000000..86477e9f --- /dev/null +++ b/src/templates/origin-arm/arm-apy.ts @@ -0,0 +1,20 @@ +import dayjs from 'dayjs' + +import { ArmDailyStat, ArmState } from '@model' +import { Block, calculateAPY } from '@originprotocol/squid-utils' + +export const calculateArmDailyApy = ({ + block, + state, + previousDailyStat, +}: { + block: Block + state: ArmState + previousDailyStat?: ArmDailyStat +}) => { + const date = new Date(block.header.timestamp) + const startOfDay = dayjs(date).startOf('day').toDate() + const endOfDay = dayjs(date).endOf('day').toDate() + + return calculateAPY(startOfDay, endOfDay, previousDailyStat?.assetsPerShare ?? 10n ** 18n, state.assetsPerShare) +} diff --git a/src/templates/origin-arm/origin-arm.graphql b/src/templates/origin-arm/origin-arm.graphql index 3eff9349..fe45e3b0 100644 --- a/src/templates/origin-arm/origin-arm.graphql +++ b/src/templates/origin-arm/origin-arm.graphql @@ -75,6 +75,24 @@ type ArmDailyStat @entity { rateNative: Float! } +type ArmAddressYield @entity { + id: ID! + chainId: Int! @index + arm: String! @index + address: String! @index + date: String! @index + timestamp: DateTime! + blockNumber: Int! @index + balance: BigInt! + value: BigInt! + costBasis: BigInt! + yield: BigInt! + cumulativeYield: BigInt! + roi: Float! + lastR: BigInt! + yieldRemainder: BigInt! +} + type ArmWithdrawalRequest @entity { id: ID! chainId: Int! @index diff --git a/src/templates/origin-arm/origin-arm.ts b/src/templates/origin-arm/origin-arm.ts index afb59fc8..22cf3c7b 100644 --- a/src/templates/origin-arm/origin-arm.ts +++ b/src/templates/origin-arm/origin-arm.ts @@ -1,25 +1,41 @@ -import dayjs from 'dayjs'; -import { findLast } from 'lodash'; -import { LessThan } from 'typeorm'; -import { formatEther, formatUnits } from 'viem'; +import dayjs from 'dayjs' +import { findLast } from 'lodash' +import { LessThan } from 'typeorm' +import { formatEther, formatUnits } from 'viem' - - -import * as erc20Abi from '@abi/erc20'; -import * as originOsArmAbi from '@abi/origin-arm'; -import * as originEthenaArmAbi from '@abi/origin-ethena-arm'; -import * as originEtherfiArmAbi from '@abi/origin-etherfi-arm'; -import * as originLidoArmAbi from '@abi/origin-lido-arm'; -import * as originLidoArmCapManagerAbi from '@abi/origin-lido-arm-cap-manager'; -import { Arm, ArmDailyStat, ArmState, ArmSwap, ArmWithdrawalRequest, TraderateChanged } from '@model'; -import { Block, Context, EvmBatchProcessor, Processor, blockFrequencyTracker, calculateAPY, logFilter } from '@originprotocol/squid-utils'; -import { ensureExchangeRate } from '@shared/post-processors/exchange-rates'; -import { Currency } from '@shared/post-processors/exchange-rates/mainnetCurrencies'; -import { createERC20Entry } from '@templates/erc20/erc20-entry'; -import { createERC20EventTracker } from '@templates/erc20/erc20-event'; +import * as erc20Abi from '@abi/erc20' +import * as originOsArmAbi from '@abi/origin-arm' +import * as originEthenaArmAbi from '@abi/origin-ethena-arm' +import * as originEtherfiArmAbi from '@abi/origin-etherfi-arm' +import * as originLidoArmAbi from '@abi/origin-lido-arm' +import * as originLidoArmCapManagerAbi from '@abi/origin-lido-arm-cap-manager' +import { + Arm, + ArmAddressYield, + ArmDailyStat, + ArmState, + ArmSwap, + ArmWithdrawalRequest, + TraderateChanged, +} from '@model' +import { + Block, + Context, + EvmBatchProcessor, + Processor, + blockFrequencyTracker, + logFilter, +} from '@originprotocol/squid-utils' +import { ensureExchangeRate } from '@shared/post-processors/exchange-rates' +import { Currency } from '@shared/post-processors/exchange-rates/mainnetCurrencies' +import { createERC20Entry } from '@templates/erc20/erc20-entry' +import { createERC20EventTracker } from '@templates/erc20/erc20-event' import { createEventProcessor } from '@templates/events/createEventProcessor' +import { ADDRESS_ZERO } from '@utils/addresses' import { traceFilter } from '@utils/traceFilter' +import { calculateArmDailyApy } from './arm-apy' + export const createOriginARMProcessors = ({ name, from, @@ -66,6 +82,11 @@ export const createOriginARMProcessors = ({ topic0: [originLidoArmAbi.events.FeeCollected.topic], range: { from }, }) + const transferFilter = logFilter({ + address: [armAddress], + topic0: [originLidoArmAbi.events.Transfer.topic], + range: { from }, + }) const swapFilter = traceFilter({ type: ['call'], callTo: [armAddress], @@ -104,6 +125,9 @@ export const createOriginARMProcessors = ({ const tracker = blockFrequencyTracker({ from }) let armEntity: Arm let initialized = false + const previousDayRows = new Map() + const currentDayRows = new Map() + let yieldRowsInitialized = false let initialize = async (ctx: Context) => { if (ctx.blocks[0].header.height < from) return const id = `${ctx.chain.id}:${armAddress}` @@ -145,6 +169,7 @@ export const createOriginARMProcessors = ({ p.addLog(depositFilter.value) p.addLog(withdrawalFilter.value) p.addLog(feeCollectedFilter.value) + p.addLog(transferFilter.value) p.addTrace(swapFilter.value) tradeRateProcessor.setup(p) }, @@ -154,8 +179,27 @@ export const createOriginARMProcessors = ({ // We can only initialize once we've hit our target block. await initialize(ctx) } + if (!yieldRowsInitialized) { + // Bulk-load yield rows once at processor start. Bucket the latest row per + // address into either today's in-progress map or yesterday/older into the + // previous-day map. Both maps persist across batches. + const today = new Date(ctx.blocks[0].header.timestamp).toISOString().slice(0, 10) + const allRows = await ctx.store.find(ArmAddressYield, { + where: { chainId: ctx.chain.id, arm: armAddress }, + order: { date: 'DESC' }, + }) + for (const row of allRows) { + if (row.date === today) { + if (!currentDayRows.has(row.address)) currentDayRows.set(row.address, row) + } else { + if (!previousDayRows.has(row.address)) previousDayRows.set(row.address, row) + } + } + yieldRowsInitialized = true + } const states: ArmState[] = [] const dailyStatsMap = new Map() + const changedYieldRows = new Map() const redemptionMap = new Map() const swaps: ArmSwap[] = [] const getStateId = (block: Block) => `${ctx.chain.id}:${block.header.height}:${armAddress}` @@ -259,8 +303,72 @@ export const createOriginARMProcessors = ({ } const calculateTotalYield = (state: ArmState) => state.totalAssets - state.totalDeposits + state.totalWithdrawals + const checkpoint = ( + account: string, + block: Block, + R: bigint, + balanceDelta: bigint, + costBasisDelta?: bigint, + ) => { + // Wei-exact accrual checkpoint for a holder. Updates today's row in-place, + // creating it (seeded from prior state) when the date rolls over. + // Cost basis: outflows reduce proportionally, inflows take the explicit delta. + const lower = account.toLowerCase() + const dateStr = new Date(block.header.timestamp).toISOString().slice(0, 10) + const id = `${ctx.chain.id}:${armAddress}:${lower}:${dateStr}` + let row = currentDayRows.get(lower) + if (!row || row.date !== dateStr) { + // Date rolled over (or first touch): retire current to previous, seed new. + if (row) previousDayRows.set(lower, row) + const seed = row ?? previousDayRows.get(lower) + row = new ArmAddressYield({ + id, + chainId: ctx.chain.id, + arm: armAddress, + address: lower, + date: dateStr, + timestamp: new Date(block.header.timestamp), + blockNumber: block.header.height, + balance: seed?.balance ?? 0n, + value: 0n, + costBasis: seed?.costBasis ?? 0n, + yield: 0n, + cumulativeYield: seed?.cumulativeYield ?? 0n, + roi: 0, + lastR: seed?.lastR ?? R, + yieldRemainder: seed?.yieldRemainder ?? 0n, + }) + currentDayRows.set(lower, row) + } + // Wei-exact accrual: carry the fractional remainder, floor-divide. + const product = row.balance * (R - row.lastR) + row.yieldRemainder + let intPart = product / 10n ** 18n + let remainder = product % 10n ** 18n + if (remainder < 0n) { + intPart -= 1n + remainder += 10n ** 18n + } + row.cumulativeYield += intPart + row.yieldRemainder = remainder + row.lastR = R + // Cost basis: outflow → proportional removal; inflow → explicit delta. + if (balanceDelta < 0n && row.balance > 0n) { + const sharesOut = -balanceDelta + const costRemoved = (row.costBasis * sharesOut) / row.balance + row.costBasis -= costRemoved + } else if (costBasisDelta !== undefined) { + row.costBasis += costBasisDelta + } + row.balance += balanceDelta + row.value = (row.balance * R) / 10n ** 18n + row.yield = row.cumulativeYield - (previousDayRows.get(lower)?.cumulativeYield ?? 0n) + row.roi = row.costBasis > 0n ? Number(row.value) / Number(row.costBasis) - 1 : 0 + row.timestamp = new Date(block.header.timestamp) + row.blockNumber = block.header.height + changedYieldRows.set(row.id, row) + } - for (const block of ctx.blocksWithContent) { + for (const block of ctx.blocks) { for (const log of block.logs) { // ArmWithdrawalRequest if (redeemRequestedFilter.matches(log)) { @@ -297,6 +405,9 @@ export const createOriginARMProcessors = ({ const state = await getCurrentState(block) state.totalDeposits += event.assets state.totalYield = calculateTotalYield(state) + // Cost basis for the depositor: the actual asset amount paid in. + // Balance change is handled by the paired Transfer (mint) below. + checkpoint(event.owner, block, state.assetsPerShare, 0n, event.assets) } else if (withdrawalFilter.matches(log)) { const event = originLidoArmAbi.events.RedeemRequested.decode(log) const state = await getCurrentState(block) @@ -312,6 +423,25 @@ export const createOriginARMProcessors = ({ const state = await getCurrentState(block) state.totalFees += event.fee } + if (transferFilter.matches(log)) { + // Mint = from 0; burn = to 0; peer transfer otherwise. + // Mint cost basis is set by the Deposit event above; here we only move balance. + // Burns and peer-outs reduce cost basis proportionally (auto in checkpoint). + // Peer-ins mark new cost basis at current R. + const event = originLidoArmAbi.events.Transfer.decode(log) + const state = await getCurrentState(block) + const R = state.assetsPerShare + const fromZero = event.from.toLowerCase() === ADDRESS_ZERO + const toZero = event.to.toLowerCase() === ADDRESS_ZERO + if (!fromZero) { + checkpoint(event.from, block, R, -event.value) + } + if (!toZero) { + const isPeer = !fromZero + const costBasisDelta = isPeer ? (event.value * R) / 10n ** 18n : undefined + checkpoint(event.to, block, R, event.value, costBasisDelta) + } + } } const swapHandledTransactions = new Set() @@ -390,8 +520,7 @@ export const createOriginARMProcessors = ({ } } } - } - for (const block of ctx.blocks) { + if (tracker(ctx, block) || (block.header.height > from && ctx.latestBlockOfDay(block))) { // ArmState const [state, yesterdayState, rateUSD, rateETH, rateNative] = await Promise.all([ @@ -402,6 +531,16 @@ export const createOriginARMProcessors = ({ ensureExchangeRate(ctx, block, token0, ctx.chain.nativeCurrency.symbol as Currency), ]) + // Per-holder yield checkpoint: capture share-appreciation accrual for + // every known holder, even those with no events on this block. + const R = state.assetsPerShare + const knownHolders = new Set([...currentDayRows.keys(), ...previousDayRows.keys()]) + for (const account of knownHolders) { + const seedRow = currentDayRows.get(account) ?? previousDayRows.get(account) + if (!seedRow || seedRow.balance === 0n) continue + checkpoint(account, block, R, 0n) + } + // ArmDailyStat const date = new Date(block.header.timestamp) const dateStr = date.toISOString().slice(0, 10) @@ -410,14 +549,7 @@ export const createOriginARMProcessors = ({ const previousDayId = `${ctx.chain.id}:${previousDateStr}:${armAddress}` const previousDailyStat = dailyStatsMap.get(previousDayId) ?? (await ctx.store.get(ArmDailyStat, previousDayId)) - const startOfDay = dayjs(date).startOf('day').toDate() - const endOfDay = dayjs(date).endOf('day').toDate() - const armDayApy = calculateAPY( - startOfDay, - endOfDay, - previousDailyStat?.assetsPerShare ?? 10n ** 18n, - state.assetsPerShare, - ) + const armDayApy = calculateArmDailyApy({ block, state, previousDailyStat }) const armDailyStatEntity = new ArmDailyStat({ id: currentDayId, @@ -440,7 +572,10 @@ export const createOriginARMProcessors = ({ totalWithdrawalsClaimed: state.totalWithdrawalsClaimed, apr: armDayApy.apr, apy: armDayApy.apy, - fees: (state.totalFees + state.feesAccrued) - ((yesterdayState?.totalFees ?? 0n) + (yesterdayState?.feesAccrued ?? 0n)), + fees: + state.totalFees + + state.feesAccrued - + ((yesterdayState?.totalFees ?? 0n) + (yesterdayState?.feesAccrued ?? 0n)), yield: state.totalYield - (yesterdayState?.totalYield ?? 0n), cumulativeFees: state.totalFees + state.feesAccrued, cumulativeYield: state.totalYield, @@ -455,6 +590,7 @@ export const createOriginARMProcessors = ({ await Promise.all([ ctx.store.insert(states), ctx.store.upsert([...dailyStatsMap.values()]), + ctx.store.upsert([...changedYieldRows.values()]), ctx.store.upsert([...redemptionMap.values()]), ctx.store.insert(swaps), tradeRateProcessor.process(ctx), @@ -475,4 +611,4 @@ export const createOriginARMProcessors = ({ addressOrSymbol: token1, }), ] -} \ No newline at end of file +}