namespace Managing.Infrastructure.Evm.Referentials;

public class Arbitrum
{
    public class Address
    {
        public const string ETH = "0x82af49447d8a07e3bd95bd0d56f35241523fbab1";
        public const string WBTC = "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f";
        public const string LINK = "0xf97f4df75117a78c1a5a0dbb814af92458539fb4";
        public const string UNI = "0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0";

        public const string USDC = "0xaf88d065e77c8cc2239327c5edb3a432268e5831";
        public const string USDT = "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9";
        public const string DAI = "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1";
        public const string MIM = "0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A";
        public const string FRAX = "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F";

        public const string Vault = "0x489ee077994B6658eAfA855C308275EAd8097C4A";
        public const string VaultPriceFeed = "0x2d68011bcA022ed0E474264145F46CC4de96a002";
        public const string Router = "0xaBBc5F99639c9B6bCb58544ddf04EFA6802F4064";
        public const string VaultReader = "0xfebB9f4CAC4cD523598fE1C5771181440143F24A";
        public const string Reader = "0xF09eD52638c22cc3f1D7F5583e3699A075e601B2";
        public const string GlpManager = "0x321F653eED006AD1C29D174e17d96351BDe22649";
        public const string RewardRouter = "0xc73d553473dC65CE56db96c58e6a091c20980fbA";
        public const string RewardReader = "0xe725Ad0ce3eCf68A7B93d8D8091E83043Ff12e9A";

        public const string GLP = "0x4277f8f2c384827b5273592ff7cebd9f2c1ac258";
        public const string GMX = "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a";
        public const string ES_GMX = "0xf42ae1d54fd613c9bb14810b0588faaa09a426ca";
        public const string BN_GMX = "0x35247165119B69A40edD5304969560D0ef486921";
        public const string USDG = "0x45096e7aA921f27590f8F19e457794EB09678141";

        public const string StakedGmxTracker = "0x908C4D94D34924765f1eDc22A1DD098397c59dD4";
        public const string BonusGmxTracker = "0x4d268a7d4C16ceB5a606c173Bd974984343fea13";
        public const string FeeGmxTracker = "0xd2D1162512F927a7e282Ef43a362659E4F2a728F";
        public const string FeeGlpTracker = "0x4e971a87900b931fF39d1Aad67697F49835400b6";
        public const string StakedGlpTracker = "0x1aDDD80E6039594eE970E5872D247bf0414C8903";

        public const string StakedGmxDistributor = "0x23208B91A98c7C1CD9FE63085BFf68311494F193";
        public const string StakedGlpDistributor = "0x60519b48ec4183a61ca2B8e37869E675FD203b34";

        public const string GmxVester = "0x199070DDfd1CFb69173aa2F7e20906F26B363004";
        public const string GlpVester = "0xA75287d2f8b217273E7FCD7E86eF07D33972042E";

        public const string OrderBook = "0x09f77E8A13De9a35a7231028187e9fD5DB8a2ACB";
        public const string OrderExecutor = "0x7257ac5D0a0aaC04AA7bA2AC0A6Eb742E332c3fB";
        public const string OrderBookReader = "0xa27C20A7CF0e1C68C0460706bB674f98F362Bc21";

        public const string FastPriceFeed = "0x1a0ad27350cccd6f7f168e052100b4960efdb774";
        public const string PositionRouter = "0xb87a436B93fFE9D75c5cFA7bAcFff96430b09868";
        public const string PositionManager = "0x87a4088Bd721F83b6c2E5102e2FA47022Cb1c831";

        public const string UniswapGmxEthPool = "0x80A9ae39310abf666A87C743d6ebBD0E8C42158E";

        public const string Zero = "0x0000000000000000000000000000000000000000";
    }

    public class AddressV2
    {
        public const string DataStore = "0xFD70de6b91282D8017aA4E741e9Ae325CAb992d8";
        public const string EventEmitter = "0xC8ee91A54287DB53897056e12D9819156D3822Fb";
        public const string SubaccountRouter = "0x9F48160eDc3Ad78F4cA0E3FDF54A75D8FB228452";
        public const string ExchangeRouter = "0x900173A66dbD345006C51fA35fA3aB760FcD843b";
        public const string DepositVault = "0xF89e77e8Dc11691C9e8757e84aaFbCD8A67d7A55";
        public const string WithdrawalVault = "0x0628D46b5D145f183AdB6Ef1f2c97eD1C4701C55";
        public const string OrderVault = "0x31eF83a530Fde1B38EE9A18093A333D8Bbbc40D5";
        public const string Reader = "0x0537C767cDAC0726c76Bb89e92904fe28fd02fE1";
        public const string SyntheticsRouter = "0x7452c558d45f8afC8c83dAe62C3f8A5BE19c71f6";
        public const string SyntheticsReader = "0x0537C767cDAC0726c76Bb89e92904fe28fd02fE1";
        public const string Multicall = "0x842ec2c7d803033edf55e478f461fc547bc54eb2";
        public const string ReferralStorage = "0xe6fab3f0c7199b0d34d7fbe83394fc0e0d06e99d";
    }
}