* Update LCD URL
* Add Hive URL
* Assume that the whitelist from https://github.com/Mirror-Protocol/whitelist
  has been copied into "public/whitelist". Remove the dependency on
  "whitelist.mirror.finance" in networks.ts.
* Update the gas price. Terra Classic gas prices were increased 5x on 15th
  January 2023.
* Add walletconnectID, required by more recent versions of the Terra libs
* Add function getmirrornetfromwal
* Exports
* Add Hive v1
* Add "mirrorAstroport"

diff --git a/src/networks.ts b/src/networks.ts
index 052617e..b289f9c 100644
--- a/src/networks.ts
+++ b/src/networks.ts
@@ -1,15 +1,18 @@
-import { NetworkInfo } from "@terra-money/wallet-provider"
+import { NetworkInfo, Wallet } from "@terra-money/wallet-provider"
 
-type MirrorNetworkInfo = NetworkInfo & LocalNetworkConfig
+export type MirrorNetworkInfo = NetworkInfo & LocalNetworkConfig
 
-const networks: Record<string, MirrorNetworkInfo> = {
+export const networks: Record<string, MirrorNetworkInfo> = {
   classic: {
     name: "classic",
     chainID: "columbus-5",
-    lcd: "https://columbus-lcd.terra.dev",
-    contract: "https://whitelist.mirror.finance/columbus.json",
+    lcd: "https://terra-classic-lcd.publicnode.com",
+    contract: "whitelist/columbus.json",
     mantle: "https://columbus-mantle.terra.dev/",
+    hive: "https://hive.terra-classic.hexxagon.io/graphql",
+    hiveV1: "https://vs4.playker.info/hive/graphql",
+    walletconnectID: 2,
     shuttle: {
       ethereum: "terra13yxhrk08qvdf5zdc9ss5mwsg5sf7zva9xrgwgc",
       bsc: "terra1g6llg3zed35nd3mh9zx6n64tfw3z67w2c48tn2",
     },
@@ -20,16 +23,23 @@ const networks: Record<string, MirrorNetworkInfo> = {
     mirrorTerraswap: {
       pair: "terra1amv303y8kzxuegvurh0gug2xe9wkgj65enq2ux",
       lpToken: "terra17gjf2zehfvnyjtdgua9p9ygquk6gukxe7ucgwh",
     },
-    fee: { gasPrice: 0.15, amount: 100000 }, // 0.1 UST
+    mirrorAstroport: {
+      pair: "terra143xxfw5xf62d5m32k3t4eu9s82ccw80lcprzl9",
+      lpToken: "terra17trxzqjetl0q6xxep0s2w743dhw2cay0x47puc",
+    },
+    fee: { gasPrice: 0.75, amount: 500000 }, // 0.5 UST
   },
   testnet: {
     name: "testnet",
     chainID: "bombay-12",
     lcd: "https://bombay-lcd.terra.dev",
-    contract: "https://whitelist.mirror.finance/bombay.json",
+    contract: "whitelist/bombay.json",
     mantle: "https://bombay-mantle.terra.dev/",
+    hive: "https://bombay-hive.terra.dev/graphql",
+    hiveV1: "https://bombay-hive.terra.dev/graphql",
+    walletconnectID: 0,
     shuttle: {
       ethereum: "terra10a29fyas9768pw8mewdrar3kzr07jz8f3n73t3",
       bsc: "terra1paav7jul3dzwzv78j0k59glmevttnkfgmgzv2r",
     },
@@ -40,16 +50,23 @@ const networks: Record<string, MirrorNetworkInfo> = {
     mirrorTerraswap: {
       pair: "terra1cz6qp8lfwht83fh9xm9n94kj04qc35ulga5dl0",
       lpToken: "terra1zrryfhlrpg49quz37u90ck6f396l4xdjs5s08j",
     },
+    mirrorAstroport: {
+      pair: "terra1xrt4j56mkefvhnyqqd5pgk7pfxullnkvsje7wx",
+      lpToken: "terra1efmcf22aweaj3zzjhzgyghv88dda0yk4j9jp29",
+    },
     fee: { gasPrice: 0.15, amount: 150000 }, // 0.15 UST
   },
   moonshine: {
     name: "moonshine",
     chainID: "localterra",
     lcd: "https://moonshine-lcd.terra.dev",
-    contract: "https://whitelist.mirror.finance/moonshine.json",
+    contract: "whitelist/moonshine.json",
     mantle: "https://moonshine-mantle.terra.dev",
+    hive: "https://moonshine-hive.terra.dev/graphql",
+    hiveV1: "https://moonshine-hive.terra.dev/graphql",
+    walletconnectID: 3,
     shuttle: {
       ethereum: "",
       bsc: "",
     },
@@ -60,11 +77,29 @@ const networks: Record<string, MirrorNetworkInfo> = {
     mirrorTerraswap: {
       pair: "terra1amv303y8kzxuegvurh0gug2xe9wkgj65enq2ux",
       lpToken: "terra17gjf2zehfvnyjtdgua9p9ygquk6gukxe7ucgwh",
     },
+    mirrorAstroport: {
+      pair: "terra143xxfw5xf62d5m32k3t4eu9s82ccw80lcprzl9",
+      lpToken: "terra17trxzqjetl0q6xxep0s2w743dhw2cay0x47puc",
+    },
     fee: { gasPrice: 0.15, amount: 150000 }, // 0.15 UST
   },
 }
 
 export const defaultNetwork = networks.classic
 
 export default networks
+
+export let networksbychainID: Record<string, MirrorNetworkInfo> = {}
+for (const name in networks) {
+  const network: MirrorNetworkInfo = networks[name]
+  const chainID: string = network.chainID
+  networksbychainID[chainID] = network
+}
+
+export function getmirrornetfromwal(wallet: Wallet): MirrorNetworkInfo {
+  return (
+    networksbychainID[wallet.network.chainID] || networks[wallet.network.name]
+  )
+  // Because the meaning of "mainnet" is different depending on the wallet, we need to look up by chain ID first. Only if that fails, fall back to the old behaviour (I think chain IDs are more likely to change than names).
+}
diff --git a/src/types/network.d.ts b/src/types/network.d.ts
index 7a4c7aa..1dc7282 100644
--- a/src/types/network.d.ts
+++ b/src/types/network.d.ts
@@ -12,10 +12,16 @@ interface ExtNetworkConfig {
 
 interface LocalNetworkConfig {
   /** Contract Addresses JSON URL */
   contract: string
-  /** Graphql server URL */
+  /** Mantle GraphQL server URL */
   mantle: string
+  /** Hive GraphQL server URL */
+  hive: string
+  /** Hive v1 GraphQL server URL */
+  hiveV1: string
+  /** Wallet Connect ID */
+  walletconnectID: number
   /** Contracts */
   shuttle: Record<ShuttleNetwork, string>
   astro: {
     token: string
@@ -24,8 +30,12 @@ interface LocalNetworkConfig {
   mirrorTerraswap: {
     pair: string
     lpToken: string
   }
+  mirrorAstroport: {
+    pair: string
+    lpToken: string
+  }
   /** Fixed fee */
   fee: { gasPrice: number; amount: number }
 }
 
