Compiling solana_rust_bot v0.1.0 (C:\solana_rust_bot)
error[E0255]: the name `Bot` is defined multiple times
   --> src/main.rs:126:1
    |
7   | use crate::Bot;
    |     ---------- previous import of the type `Bot` here
...
126 | struct Bot {
    | ^^^^^^^^^^ `Bot` redefined here
    |
    = note: `Bot` must be defined only once in the type namespace of this module
help: you can use `as` to change the binding name of the import
    |
7   | use crate::Bot as OtherBot;
    |                +++++++++++

error: cannot find macro `info` in this scope
  --> src\gpu_bridge.rs:59:17
   |
59 |                 info!("✅ Token validation passed (GPU Score: {:.2})", score);
   |                 ^^^^
   |
help: consider importing one of these macros
   |
1  + use crate::info;
   |
1  + use log::info;
   |
1  + use solana_program::info;
   |

error: cannot find macro `info` in this scope
  --> src\gpu_bridge.rs:60:17
   |
60 |                 info!(
   |                 ^^^^
   |
help: consider importing one of these macros
   |
1  + use crate::info;
   |
1  + use log::info;
   |
1  + use solana_program::info;
   |

error: cannot find macro `info` in this scope
  --> src\gpu_bridge.rs:64:17
   |
64 |                 info!(
   |                 ^^^^
   |
help: consider importing one of these macros
   |
1  + use crate::info;
   |
1  + use log::info;
   |
1  + use solana_program::info;
   |

error: cannot find macro `info` in this scope
  --> src\gpu_bridge.rs:68:17
   |
68 |                 info!("   Burnt: {}", metadata["burnt"].as_bool().unwrap_or(false));
   |                 ^^^^
   |
help: consider importing one of these macros
   |
1  + use crate::info;
   |
1  + use log::info;
   |
1  + use solana_program::info;
   |

error: cannot find macro `info` in this scope
  --> src\gpu_bridge.rs:69:17
   |
69 |                 info!(
   |                 ^^^^
   |
help: consider importing one of these macros
   |
1  + use crate::info;
   |
1  + use log::info;
   |
1  + use solana_program::info;
   |

error[E0407]: method `name` is not a member of trait `eframe::epi::App`
   --> src\gui.rs:245:5
    |
245 | /     fn name(&self) -> &str {
246 | |         "Solana Sniper Bot"
247 | |     }
    | |_____^ not a member of trait `eframe::epi::App`

error[E0412]: cannot find type `Bot` in this scope
   --> src\gpu_bridge.rs:48:6
    |
48  |   impl Bot {
    |        ^^^
    |
   ::: C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:235:1
    |
235 | / pub struct Box<
236 | |     T: ?Sized,
237 | |     #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global,
238 | | >(Unique<T>, A);
    | |_- similarly named struct `Box` defined here
    |
help: a struct with a similar name exists
    |
48  | impl Box {
    |      ~~~
help: consider importing this struct
    |
1   + use crate::Bot;
    |

error[E0412]: cannot find type `Bot` in this scope
   --> src\gui.rs:10:14
    |
10  |       bot: Arc<Bot>,
    |                ^^^
    |
   ::: C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:235:1
    |
235 | / pub struct Box<
236 | |     T: ?Sized,
237 | |     #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global,
238 | | >(Unique<T>, A);
    | |_- similarly named struct `Box` defined here
    |
help: a struct with a similar name exists
    |
10  |     bot: Arc<Box>,
    |              ~~~
help: consider importing this struct
    |
2   + use crate::Bot;
    |

error[E0412]: cannot find type `Bot` in this scope
   --> src\gui.rs:33:25
    |
33  |       pub fn new(bot: Arc<Bot>) -> Self {
    |                           ^^^
    |
   ::: C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:235:1
    |
235 | / pub struct Box<
236 | |     T: ?Sized,
237 | |     #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global,
238 | | >(Unique<T>, A);
    | |_- similarly named struct `Box` defined here
    |
help: a struct with a similar name exists
    |
33  |     pub fn new(bot: Arc<Box>) -> Self {
    |                         ~~~
help: consider importing this struct
    |
2   + use crate::Bot;
    |

error[E0433]: failed to resolve: use of undeclared type `File`
   --> src/main.rs:162:20
    |
162 |     settings.merge(File::with_name(CONFIG_PATH))?;
    |                    ^^^^ use of undeclared type `File`
    |
help: consider importing one of these structs
    |
3   + use std::fs::File;
    |
3   + use config::File;
    |
3   + use tokio::fs::File;
    |

error[E0603]: module `epi` is private
   --> src\gui.rs:3:20
    |
3   |     eframe::{egui, epi},
    |                    ^^^ private module
    |
note: the module `epi` is defined here
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:135:1
    |
135 | mod epi;
    | ^^^^^^^

error[E0603]: struct `GpuAnalyzer` is private
 --> src/main.rs:3:24
  |
3 | use crate::gpu_bridge::GpuAnalyzer;
  |                        ^^^^^^^^^^^ private struct
  |
note: the struct `GpuAnalyzer` is defined here
 --> src\gpu_bridge.rs:6:1
  |
6 | struct GpuAnalyzer {
  | ^^^^^^^^^^^^^^^^^^

error[E0603]: module `epi` is private
   --> src\gui.rs:235:14
    |
235 | impl eframe::epi::App for BotGui {
    |              ^^^ private module
    |
note: the module `epi` is defined here
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:135:1
    |
135 | mod epi;
    | ^^^^^^^
help: consider importing this trait instead
    |
235 | impl eframe::App for BotGui {
    |      ~~~~~~~~~~~

error[E0603]: module `epi` is private
   --> src\gui.rs:236:64
    |
236 |     fn update(&mut self, ctx: &egui::Context, _frame: &eframe::epi::Frame) {
    |                                                                ^^^ private module
    |
note: the module `epi` is defined here
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:135:1
    |
135 | mod epi;
    | ^^^^^^^
help: consider importing this struct instead
    |
236 |     fn update(&mut self, ctx: &egui::Context, _frame: &eframe::Frame) {
    |                                                        ~~~~~~~~~~~~~

warning: unused import: `crate::gui::BotGui`
 --> src/main.rs:4:5
  |
4 | use crate::gui::BotGui;
  |     ^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `std::fs::File as StdFile`
 --> src/main.rs:5:5
  |
5 | use std::fs::File as StdFile;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `config::File as ConfigFile`
 --> src/main.rs:6:5
  |
6 | use config::File as ConfigFile;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `crate::Bot`
 --> src/main.rs:7:5
  |
7 | use crate::Bot;
  |     ^^^^^^^^^^

error[E0599]: no method named `extract_token_address` found for reference `&Bot` in the current scope
   --> src/main.rs:301:59
    |
301 |                         if let Some(token_address) = self.extract_token_address(log) {
    |                                                      -----^^^^^^^^^^^^^^^^^^^^^-----
    |                                                      |    |
    |                                                      |    this is an associated function, not a method
    |                                                      help: use associated function syntax instead: `Bot::extract_token_address(log)`
    |
    = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
note: the candidate is defined in an impl for the type `Bot`
   --> src/main.rs:334:5
    |
334 |     fn extract_token_address(log: &serde_json::Value) -> Option<String> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the size for values of type `str` cannot be known at compilation time
   --> src/main.rs:301:32
    |
301 |                         if let Some(token_address) = self.extract_token_address(log) {
    |                                ^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
    |
    = help: the trait `Sized` is not implemented for `str`
note: required by a bound in `std::prelude::v1::Some`
   --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\option.rs:571:17
    |
571 | pub enum Option<T> {
    |                 ^ required by this bound in `std::prelude::v1::Some`
...
579 |     Some(#[stable(feature = "rust1", since = "1.0.0")] T),
    |     ---- required by a bound in this tuple variant

error[E0308]: mismatched types
   --> src/main.rs:322:52
    |
322 | ...                   self.process_token(token_address).await?;
    |                            ------------- ^^^^^^^^^^^^^- help: try using a conversion method: `.to_string()`
    |                            |             |
    |                            |             expected `String`, found `str`
    |                            arguments to this method are incorrect
    |
note: method defined here
   --> src/main.rs:341:14
    |
341 |     async fn process_token(&self, token_address: String) -> Result<()> {
    |              ^^^^^^^^^^^^^        ---------------------

error[E0609]: no field `rpc_url` on type `RpcConfig`
   --> src/main.rs:386:29
    |
386 |             self.config.rpc.rpc_url, self.config.api_keys.helius_api_key
    |                             ^^^^^^^ unknown field
    |
    = note: available fields are: `solana_rpc_url`, `fallback_url`

error[E0609]: no field `min_liquidity` on type `TradingConfig`
   --> src/main.rs:438:57
    |
438 |         let is_valid = liquidity >= self.config.trading.min_liquidity
    |                                                         ^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `snipe_amount`, `profit_target_percent`, `max_retry_attempts`, `stop_loss_percent`, `max_slippage` ... and 2 others

error[E0609]: no field `max_liquidity` on type `TradingConfig`
   --> src/main.rs:439:49
    |
439 |             && liquidity <= self.config.trading.max_liquidity;
    |                                                 ^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `snipe_amount`, `profit_target_percent`, `max_retry_attempts`, `stop_loss_percent`, `max_slippage` ... and 2 others

error[E0308]: mismatched types
    --> src/main.rs:508:27
     |
508  |           instructions.push(ComputeBudgetInstruction::set_compute_unit_limit(
     |  ______________________----_^
     | |                      |
     | |                      arguments to this method are incorrect
509  | |             COMPUTE_UNIT_LIMIT,
510  | |         ));
     | |_________^ expected `CompiledInstruction`, found `Instruction`
     |
note: method defined here
    --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\vec\mod.rs:2003:12
     |
2003 |     pub fn push(&mut self, value: T) {
     |            ^^^^

error[E0308]: mismatched types
    --> src/main.rs:511:27
     |
511  |           instructions.push(ComputeBudgetInstruction::set_compute_unit_price(
     |  ______________________----_^
     | |                      |
     | |                      arguments to this method are incorrect
512  | |             self.config.trading.priority_fee,
513  | |         ));
     | |_________^ expected `CompiledInstruction`, found `Instruction`
     |
note: method defined here
    --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\vec\mod.rs:2003:12
     |
2003 |     pub fn push(&mut self, value: T) {
     |            ^^^^

error[E0277]: the `?` operator can only be applied to values that implement `Try`
   --> src/main.rs:531:25
    |
531 |           let signature = self
    |  _________________________^
532 | |             .rpc_client
533 | |             .send_and_confirm_transaction_with_spinner(&transaction)?;
    | |_____________________________________________________________________^ the `?` operator cannot be applied to type `impl futures_util::Future<Output = Result<Signature, solana_client::client_error::ClientError>>`
    |
    = help: the trait `Try` is not implemented for `impl futures_util::Future<Output = Result<Signature, solana_client::client_error::ClientError>>`
help: consider `await`ing on the `Future`
    |
533 |             .send_and_confirm_transaction_with_spinner(&transaction).await?;
    |                                                                     ++++++

error[E0609]: no field `rpc_url` on type `RpcConfig`
   --> src/main.rs:357:29
    |
357 |             self.config.rpc.rpc_url, self.config.api_keys.helius_api_key
    |                             ^^^^^^^ unknown field
    |
    = note: available fields are: `solana_rpc_url`, `fallback_url`

error[E0599]: no method named `map_err` found for opaque type `impl futures_util::Future<Output = Result<u64, solana_client::client_error::ClientError>>` in the current scope
   --> src/main.rs:612:14
    |
609 |           let balance = self
    |  _______________________-
610 | |             .rpc_client
611 | |             .get_balance(&self.keypair.pubkey())
612 | |             .map_err(|e| anyhow!("Failed to get SOL balance: {}", e))?;
    | |             -^^^^^^^ method not found in `impl Future<Output = Result<u64, ClientError>>`
    | |_____________|
    |
    |
   ::: C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\futures-util-0.3.31\src\future\try_future\mod.rs:308:8
    |
308 |       fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
    |          ------- the method is available for `impl futures_util::Future<Output = Result<u64, solana_client::client_error::ClientError>>` here
    |
    = help: items from traits can only be used if the trait is in scope
help: consider `await`ing on the `Future` and calling the method on its `Output`
    |
612 |             .await.map_err(|e| anyhow!("Failed to get SOL balance: {}", e))?;
    |              ++++++
help: trait `TryFutureExt` which provides `map_err` is implemented but not in scope; perhaps you want to import it
    |
1   + use futures_util::TryFutureExt;
    |

error[E0277]: the `?` operator can only be applied to values that implement `Try`
   --> src/main.rs:620:29
    |
620 |             let blockhash = self.rpc_client.get_latest_blockhash()?;
    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `impl futures_util::Future<Output = Result<solana_sdk::hash::Hash, solana_client::client_error::ClientError>>`
    |
    = help: the trait `Try` is not implemented for `impl futures_util::Future<Output = Result<solana_sdk::hash::Hash, solana_client::client_error::ClientError>>`
help: consider `await`ing on the `Future`
    |
620 |             let blockhash = self.rpc_client.get_latest_blockhash().await?;
    |                                                                   ++++++

error[E0107]: enum takes 2 generic arguments but 1 generic argument was supplied
   --> src\gpu_bridge.rs:49:69
    |
49  |     async fn validate_token(&self, metadata: &serde_json::Value) -> Result<bool> {
    |                                                                     ^^^^^^ ---- supplied 1 generic argument
    |                                                                     |
    |                                                                     expected 2 generic arguments
    |
note: enum defined here, with 2 generic parameters: `T`, `E`
   --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\result.rs:527:10
    |
527 | pub enum Result<T, E> {
    |          ^^^^^^ -  -
help: add missing generic argument
    |
49  |     async fn validate_token(&self, metadata: &serde_json::Value) -> Result<bool, E> {
    |                                                                                +++

error[E0053]: method `update` has an incompatible type for trait
   --> src\gui.rs:236:55
    |
236 |     fn update(&mut self, ctx: &egui::Context, _frame: &eframe::epi::Frame) {
    |                                                       ^^^^^^^^^^^^^^^^^^^ types differ in mutability
    |
    = note: expected signature `fn(&mut BotGui, &eframe::egui::Context, &mut eframe::Frame)`
               found signature `fn(&mut BotGui, &eframe::egui::Context, &eframe::Frame)`
help: change the parameter type to match the trait
    |
236 |     fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
    |                                                       ~~~~~~~~~~~~~~~~~~

error[E0502]: cannot borrow `logs` as immutable because it is also borrowed as mutable
   --> src\gui.rs:230:27
    |
230 |             logs.drain(0..logs.len() - 1000);
    |             ---- -----    ^^^^ immutable borrow occurs here
    |             |    |
    |             |    mutable borrow later used by call
    |             mutable borrow occurs here

Some errors have detailed explanations: E0053, E0107, E0255, E0277, E0308, E0407, E0412, E0433, E0502...
For more information about an error, try `rustc --explain E0053`.
warning: `solana_rust_bot` (bin "solana_rust_bot") generated 4 warnings
error: could not compile `solana_rust_bot` (bin "solana_rust_bot") due to 30 previous errors; 4 warnings emitted