Compiling solana_rust_bot v0.1.0 (C:\solana_rust_bot)
error[E0308]: mismatched types
  --> src\lib.rs:24:32
   |
24 |             Ok(TokenAnalyzer { model })
   |                                ^^^^^ expected `Py<PyAny>`, found `&PyAny`
   |
   = note: expected struct `Py<PyAny>`
           found reference `&PyAny`
help: call `Into::into` on this expression to convert `&PyAny` into `Py<PyAny>`
   |
24 |             Ok(TokenAnalyzer { model: model.into() })
   |                                ++++++      +++++++

warning: unused variable: `py`
  --> src\lib.rs:47:23
   |
47 |     Python::with_gil(|py| {
   |                       ^^ help: if this is intentional, prefix it with an underscore: `_py`
   |
   = note: `#[warn(unused_variables)]` on by default

For more information about this error, try `rustc --explain E0308`.
warning: `solana_rust_bot` (lib) generated 1 warning
error: could not compile `solana_rust_bot` (lib) due to 1 previous error; 1 warning emitted
warning: build failed, waiting for other jobs to finish...
error[E0433]: failed to resolve: use of undeclared crate or module `async_trait`
  --> src\gpu_bridge.rs:84:3
   |
84 | #[async_trait::async_trait]
   |   ^^^^^^^^^^^ use of undeclared crate or module `async_trait`

error[E0433]: failed to resolve: use of undeclared crate or module `async_trait`
  --> src\gpu_bridge.rs:89:3
   |
89 | #[async_trait::async_trait]
   |   ^^^^^^^^^^^ use of undeclared crate or module `async_trait`

warning: unused imports: `StreamExt`, `SystemTime`, `connect_async`, `time::interval`, `tungstenite::protocol::Message as WsMessage`, and `warn`
  --> src/main.rs:4:29
   |
4  |     futures_util::{SinkExt, StreamExt},
   |                             ^^^^^^^^^
5  |     log::{debug, error, info, warn},
   |                               ^^^^
...
23 |         time::{Duration, Instant, SystemTime},
   |                                   ^^^^^^^^^^
24 |     },
25 |     tokio::{sync::Mutex, time::interval},
   |                          ^^^^^^^^^^^^^^
26 |     tokio_tungstenite::{connect_async, tungstenite::protocol::Message as WsMessage},
   |                         ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

error[E0308]: mismatched types
   --> src/main.rs:121:13
    |
120 |         let rpc_client = Arc::new(RpcClient::new_with_commitment(
    |                                   ------------------------------ arguments to this function are incorrect
121 |             &config.rpc.solana_rpc_url,
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `String`, found `&String`
    |
note: associated function defined here
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\solana-rpc-client-1.18.26\src\nonblocking\rpc_client.rs:211:12
    |
211 |     pub fn new_with_commitment(url: String, commitment_config: CommitmentConfig) -> Self {
    |            ^^^^^^^^^^^^^^^^^^^
help: consider removing the borrow
    |
121 -             &config.rpc.solana_rpc_url,
121 +             config.rpc.solana_rpc_url,
    |

warning: unused variable: `trade`
   --> src/main.rs:276:13
    |
276 |         let trade = self.active_trades.lock().await
    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_trade`
    |
    = note: `#[warn(unused_variables)]` on by default

error[E0382]: borrow of moved value: `state`
   --> src/main.rs:311:52
    |
309 |                 let state: HashMap<String, Trade> = serde_json::from_str(&contents)?;
    |                     ----- move occurs because `state` has type `HashMap<std::string::String, Trade>`, which does not implement the `Copy` trait
310 |                 *self.active_trades.lock().await = state;
    |                                                    ----- value moved here
311 |                 info!("📥 Loaded {} active trades", state.len());
    |                                                     ^^^^^ value borrowed here after move
    |
help: consider cloning the value if the performance cost is acceptable
    |
310 |                 *self.active_trades.lock().await = state.clone();
    |                                                         ++++++++

error[E0277]: the trait bound `serde_json::Value: pyo3::FromPyObject<'_>` is not satisfied
   --> src\gpu_bridge.rs:77:18
    |
77  |                 .extract::<serde_json::Value>(py)
    |                  ^^^^^^^ the trait `PyClass` is not implemented for `serde_json::Value`, which is required by `serde_json::Value: pyo3::FromPyObject<'_>`
    |
    = help: the following other types implement trait `pyo3::FromPyObject<'source>`:
              `&'a PyCell<T>` implements `pyo3::FromPyObject<'a>`
              `&'a [u8]` implements `pyo3::FromPyObject<'a>`
              `&'py CancelledError` implements `pyo3::FromPyObject<'py>`
              `&'py IncompleteReadError` implements `pyo3::FromPyObject<'py>`
              `&'py InvalidStateError` implements `pyo3::FromPyObject<'py>`
              `&'py LimitOverrunError` implements `pyo3::FromPyObject<'py>`
              `&'py PanicException` implements `pyo3::FromPyObject<'py>`
              `&'py PyAny` implements `pyo3::FromPyObject<'py>`
            and 163 others
    = note: required for `serde_json::Value` to implement `pyo3::FromPyObject<'_>`
note: required by a bound in `Py::<T>::extract`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\pyo3-0.19.2\src\instance.rs:581:12
    |
579 |     pub fn extract<'p, D>(&'p self, py: Python<'p>) -> PyResult<D>
    |            ------- required by a bound in this associated function
580 |     where
581 |         D: FromPyObject<'p>,
    |            ^^^^^^^^^^^^^^^^ required by this bound in `Py::<T>::extract`

error[E0061]: this method takes 1 argument but 2 arguments were supplied
   --> src\gui.rs:165:37
    |
165 |                     match bot_clone.execute_buy(&token, amount_lamports).await {
    |                                     ^^^^^^^^^^^         --------------- unexpected argument #2 of type `u64`
    |
note: method defined here
   --> src/main.rs:185:18
    |
185 |     pub async fn execute_buy(&self, token_address: &str) -> Result<()> {
    |                  ^^^^^^^^^^^        -------------------
help: remove the extra argument
    |
165 -                     match bot_clone.execute_buy(&token, amount_lamports).await {
165 +                     match bot_clone.execute_buy(&token).await {
    |

error[E0282]: type annotations needed
  --> src\gpu_bridge.rs:23:21
   |
20 | /             Ok(Self {
21 | |                 py_analyzer: Arc::new(Mutex::new(analyzer.into())),
22 | |             })
   | |______________- type must be known at this point
23 |           }).map_err(|e| anyhow::anyhow!("Failed to initialize GPU analyzer: {}", e))
   |                       ^
   |
help: consider giving this closure parameter an explicit type
   |
23 |         }).map_err(|e: /* Type */| anyhow::anyhow!("Failed to initialize GPU analyzer: {}", e))
   |                      ++++++++++++

error[E0277]: `(dyn StdError + 'static)` cannot be sent between threads safely
   --> src/main.rs:356:25
    |
356 |     gui::launch_gui(bot)?;
    |                         ^ `(dyn StdError + 'static)` cannot be sent between threads safely
    |
    = help: the trait `std::marker::Send` is not implemented for `(dyn StdError + 'static)`, which is required by `Result<(), _>: FromResidual<Result<std::convert::Infallible, eframe::Error>>`
    = help: the trait `FromResidual<Result<std::convert::Infallible, E>>` is implemented for `Result<T, F>`
    = note: required for `Unique<(dyn StdError + 'static)>` to implement `std::marker::Send`
note: required because it appears within the type `Box<(dyn StdError + 'static)>`
   --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:235:12
    |
235 | pub struct Box<
    |            ^^^
note: required because it appears within the type `eframe::Error`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:292:10
    |
292 | pub enum Error {
    |          ^^^^^
    = note: required for `anyhow::Error` to implement `From<eframe::Error>`
    = note: required for `Result<(), anyhow::Error>` to implement `FromResidual<Result<std::convert::Infallible, eframe::Error>>`

error[E0277]: `(dyn StdError + 'static)` cannot be shared between threads safely
   --> src/main.rs:356:25
    |
356 |     gui::launch_gui(bot)?;
    |                         ^ `(dyn StdError + 'static)` cannot be shared between threads safely
    |
    = help: the trait `Sync` is not implemented for `(dyn StdError + 'static)`, which is required by `Result<(), _>: FromResidual<Result<std::convert::Infallible, eframe::Error>>`
    = help: the trait `FromResidual<Result<std::convert::Infallible, E>>` is implemented for `Result<T, F>`
    = note: required for `Unique<(dyn StdError + 'static)>` to implement `Sync`
note: required because it appears within the type `Box<(dyn StdError + 'static)>`
   --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:235:12
    |
235 | pub struct Box<
    |            ^^^
note: required because it appears within the type `eframe::Error`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:292:10
    |
292 | pub enum Error {
    |          ^^^^^
    = note: required for `anyhow::Error` to implement `From<eframe::Error>`
    = note: required for `Result<(), anyhow::Error>` to implement `FromResidual<Result<std::convert::Infallible, eframe::Error>>`

error[E0277]: `*mut c_void` cannot be sent between threads safely
   --> src/main.rs:356:25
    |
356 |     gui::launch_gui(bot)?;
    |                         ^ `*mut c_void` cannot be sent between threads safely
    |
    = help: within `eframe::Error`, the trait `std::marker::Send` is not implemented for `*mut c_void`, which is required by `Result<(), _>: FromResidual<Result<std::convert::Infallible, eframe::Error>>`
    = help: the trait `FromResidual<Result<std::convert::Infallible, E>>` is implemented for `Result<T, F>`
note: required because it appears within the type `raw_window_handle::uikit::UiKitWindowHandle`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\raw-window-handle-0.5.2\src\uikit.rs:32:12
    |
32  | pub struct UiKitWindowHandle {
    |            ^^^^^^^^^^^^^^^^^
note: required because it appears within the type `raw_window_handle::RawWindowHandle`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\raw-window-handle-0.5.2\src\lib.rs:123:10
    |
123 | pub enum RawWindowHandle {
    |          ^^^^^^^^^^^^^^^
note: required because it appears within the type `std::option::Option<raw_window_handle::RawWindowHandle>`
   --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\option.rs:571:10
    |
571 | pub enum Option<T> {
    |          ^^^^^^
note: required because it appears within the type `glutin::config::ConfigTemplate`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\glutin-0.30.10\src\config.rs:267:12
    |
267 | pub struct ConfigTemplate {
    |            ^^^^^^^^^^^^^^
note: required because it appears within the type `eframe::Error`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:292:10
    |
292 | pub enum Error {
    |          ^^^^^
    = note: required for `anyhow::Error` to implement `From<eframe::Error>`
    = note: required for `Result<(), anyhow::Error>` to implement `FromResidual<Result<std::convert::Infallible, eframe::Error>>`

error[E0277]: `*mut c_void` cannot be shared between threads safely
   --> src/main.rs:356:25
    |
356 |     gui::launch_gui(bot)?;
    |                         ^ `*mut c_void` cannot be shared between threads safely
    |
    = help: within `eframe::Error`, the trait `Sync` is not implemented for `*mut c_void`, which is required by `Result<(), _>: FromResidual<Result<std::convert::Infallible, eframe::Error>>`
    = help: the trait `FromResidual<Result<std::convert::Infallible, E>>` is implemented for `Result<T, F>`
note: required because it appears within the type `raw_window_handle::uikit::UiKitWindowHandle`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\raw-window-handle-0.5.2\src\uikit.rs:32:12
    |
32  | pub struct UiKitWindowHandle {
    |            ^^^^^^^^^^^^^^^^^
note: required because it appears within the type `raw_window_handle::RawWindowHandle`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\raw-window-handle-0.5.2\src\lib.rs:123:10
    |
123 | pub enum RawWindowHandle {
    |          ^^^^^^^^^^^^^^^
note: required because it appears within the type `std::option::Option<raw_window_handle::RawWindowHandle>`
   --> C:\Users\Orsen\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\option.rs:571:10
    |
571 | pub enum Option<T> {
    |          ^^^^^^
note: required because it appears within the type `glutin::config::ConfigTemplate`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\glutin-0.30.10\src\config.rs:267:12
    |
267 | pub struct ConfigTemplate {
    |            ^^^^^^^^^^^^^^
note: required because it appears within the type `eframe::Error`
   --> C:\Users\Orsen\.cargo\registry\src\index.crates.io-6f17d22bba15001f\eframe-0.22.0\src\lib.rs:292:10
    |
292 | pub enum Error {
    |          ^^^^^
    = note: required for `anyhow::Error` to implement `From<eframe::Error>`
    = note: required for `Result<(), anyhow::Error>` to implement `FromResidual<Result<std::convert::Infallible, eframe::Error>>`

warning: unused import: `SinkExt`
 --> src/main.rs:4:20
  |
4 |     futures_util::{SinkExt, StreamExt},
  |                    ^^^^^^^

error[E0500]: closure requires unique access to `self` but it is already borrowed
   --> src\gui.rs:111:35
    |
109 |                 let trades = self.bot.active_trades.blocking_lock();
    |                              -------- borrow occurs here
110 |                 for (token, trade) in trades.iter() {
111 |                     ui.horizontal(|ui| {
    |                                   ^^^^ closure construction occurs here
...
119 |                             self.execute_sell();
    |                             ---- second borrow occurs due to use of `self` in closure
...
123 |             });
    |             - first borrow might be used here, when `trades` is dropped and runs the `Drop` code for type `tokio::sync::MutexGuard`

Some errors have detailed explanations: E0061, E0277, E0282, E0308, E0382, E0433, E0500.
For more information about an error, try `rustc --explain E0061`.
warning: `solana_rust_bot` (bin "solana_rust_bot") generated 3 warnings
error: could not compile `solana_rust_bot` (bin "solana_rust_bot") due to 12 previous errors; 3 warnings emitted