[INFO] cloning repository https://github.com/fhdgdjksuuu/custom_trade_orca
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fhdgdjksuuu/custom_trade_orca" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffhdgdjksuuu%2Fcustom_trade_orca", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffhdgdjksuuu%2Fcustom_trade_orca'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8091ef861a001a58efa8538fe5fef01f49cd68a8
[INFO] checking fhdgdjksuuu/custom_trade_orca against try#7b3da9103634dffd4f4365cfd8642427c781d99f+rustflags=-Dinherent-method-on-receiver for 152214-denied
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffhdgdjksuuu%2Fcustom_trade_orca" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/fhdgdjksuuu/custom_trade_orca
[INFO] finished tweaking git repo https://github.com/fhdgdjksuuu/custom_trade_orca
[INFO] tweaked toml for git repo https://github.com/fhdgdjksuuu/custom_trade_orca written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fhdgdjksuuu/custom_trade_orca on toolchain 7b3da9103634dffd4f4365cfd8642427c781d99f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fhdgdjksuuu/custom_trade_orca already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 14309b7a4c0b97086ac2b0722bb6d77171568b5a0dfb0162c6f6889ec3e8257d
[INFO] running `Command { std: "docker" "start" "-a" "14309b7a4c0b97086ac2b0722bb6d77171568b5a0dfb0162c6f6889ec3e8257d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "14309b7a4c0b97086ac2b0722bb6d77171568b5a0dfb0162c6f6889ec3e8257d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "14309b7a4c0b97086ac2b0722bb6d77171568b5a0dfb0162c6f6889ec3e8257d", kill_on_drop: false }`
[INFO] [stdout] 14309b7a4c0b97086ac2b0722bb6d77171568b5a0dfb0162c6f6889ec3e8257d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dinherent-method-on-receiver" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+7b3da9103634dffd4f4365cfd8642427c781d99f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e708e845eb6a9130527124e5fe30fc5957a654a9ab39d2d1ae9f79c2d5ca4151
[INFO] running `Command { std: "docker" "start" "-a" "e708e845eb6a9130527124e5fe30fc5957a654a9ab39d2d1ae9f79c2d5ca4151", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling zerocopy v0.8.38
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling borsh v1.6.0
[INFO] [stderr]     Checking five8_core v0.1.2
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]     Checking solana-sanitize v2.2.1
[INFO] [stderr]     Checking solana-atomic-u64 v2.2.1
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking five8 v0.2.1
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking solana-decode-error v2.3.0
[INFO] [stderr]     Checking five8_const v0.1.4
[INFO] [stderr]    Compiling zmij v1.0.19
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking signature v1.6.4
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking ed25519 v1.5.3
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling toml v0.5.11
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking serde-big-array v0.5.1
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking solana-msg v2.2.1
[INFO] [stderr]    Compiling bs58 v0.5.1
[INFO] [stderr]     Checking keccak v0.1.5
[INFO] [stderr]     Checking solana-program-memory v2.3.1
[INFO] [stderr]     Checking derivation-path v0.2.0
[INFO] [stderr]     Checking uriparse v0.6.4
[INFO] [stderr]     Checking qstring v0.7.2
[INFO] [stderr]    Compiling solana-sdk-macro v2.2.1
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling feature-probe v0.1.1
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling bv v0.11.1
[INFO] [stderr]     Checking solana-derivation-path v2.2.1
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking solana-seed-derivable v2.2.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking solana-fee-calculator v2.2.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking constant_time_eq v0.4.2
[INFO] [stderr]     Checking socket2 v0.6.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking curve25519-dalek v3.2.0
[INFO] [stderr]     Checking solana-short-vec v2.2.1
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]    Compiling proc-macro-crate v0.1.5
[INFO] [stderr]     Checking sha3 v0.10.8
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking pbkdf2 v0.11.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling blake3 v1.8.3
[INFO] [stderr]    Compiling libsecp256k1-core v0.2.2
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking solana-seed-phrase v2.2.1
[INFO] [stderr]    Compiling toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking crypto-mac v0.8.0
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking hmac v0.8.1
[INFO] [stderr]     Checking hmac-drbg v0.3.0
[INFO] [stderr]     Checking base64 v0.12.3
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling libsecp256k1-gen-genmult v0.2.1
[INFO] [stderr]    Compiling libsecp256k1-gen-ecmult v0.2.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]    Compiling libsecp256k1 v0.6.0
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking merlin v3.0.0
[INFO] [stderr]     Checking solana-program-option v2.2.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking solana-serde-varint v2.2.2
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking aes-gcm-siv v0.11.1
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking brotli-decompressor v5.0.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking webpki-roots v1.0.6
[INFO] [stderr]    Compiling borsh-derive v1.6.0
[INFO] [stderr]    Compiling borsh-schema-derive-internal v0.10.4
[INFO] [stderr]    Compiling borsh-derive-internal v0.10.4
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking solana-precompile-error v2.2.2
[INFO] [stderr]     Checking compression-core v0.4.31
[INFO] [stderr]    Compiling spl-discriminator-syn v0.2.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking solana-native-token v2.3.0
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]     Checking hashbrown v0.13.2
[INFO] [stderr]     Checking brotli v8.0.2
[INFO] [stderr]    Compiling spl-discriminator-derive v0.2.0
[INFO] [stderr]     Checking solana-big-mod-exp v2.2.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking solana-time-utils v2.2.1
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking solana-inflation v2.2.1
[INFO] [stderr]     Checking solana-reward-info v2.2.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking solana-commitment-config v2.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking solana-curve25519 v2.3.13
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]     Checking solana-svm-feature-set v2.3.13
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling solana-version v2.3.13
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling time-macros v0.2.26
[INFO] [stderr]    Compiling num_enum_derive v0.7.5
[INFO] [stderr]     Checking gethostname v0.2.3
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking ed25519-dalek v1.0.1
[INFO] [stderr]     Checking solana-signature v2.3.0
[INFO] [stderr]     Checking ed25519-dalek-bip32 v0.2.0
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]     Checking semver v1.0.27
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]    Compiling cfg_eval v0.1.2
[INFO] [stderr]    Compiling borsh-derive v0.10.4
[INFO] [stderr]    Compiling asn1-rs-impl v0.1.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.4.0
[INFO] [stderr]     Checking solana-hash v2.3.0
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking solana-sha256-hasher v2.3.0
[INFO] [stderr]     Checking borsh v0.10.4
[INFO] [stderr]     Checking solana-keccak-hasher v2.2.1
[INFO] [stderr]     Checking solana-cluster-type v2.2.1
[INFO] [stderr]     Checking solana-blake3-hasher v2.2.1
[INFO] [stderr]     Checking num_enum v0.7.5
[INFO] [stderr]     Checking time v0.3.46
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]    Compiling num-bigint v0.2.6
[INFO] [stderr]     Checking regex-syntax v0.8.9
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling num-complex v0.2.4
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking solana-pubkey v2.4.0
[INFO] [stderr]     Checking solana-borsh v2.2.1
[INFO] [stderr]     Checking compression-codecs v0.4.36
[INFO] [stderr]     Checking solana-instruction v2.3.3
[INFO] [stderr]     Checking solana-sdk-ids v2.2.1
[INFO] [stderr]     Checking solana-nonce v2.2.1
[INFO] [stderr]     Checking async-compression v0.4.37
[INFO] [stderr]     Checking spl-generic-token v1.0.1
[INFO] [stderr]     Checking solana-sysvar-id v2.2.1
[INFO] [stderr]    Compiling num-rational v0.2.4
[INFO] [stderr]    Compiling oid-registry v0.6.1
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]     Checking solana-epoch-schedule v2.2.1
[INFO] [stderr]     Checking solana-transaction-error v2.2.1
[INFO] [stderr]     Checking solana-program-error v2.2.2
[INFO] [stderr]     Checking solana-system-interface v1.0.0
[INFO] [stderr]     Checking solana-clock v2.2.2
[INFO] [stderr]     Checking solana-serialize-utils v2.2.1
[INFO] [stderr]     Checking solana-account-info v2.3.0
[INFO] [stderr]     Checking solana-signer v2.2.1
[INFO] [stderr]     Checking solana-slot-hashes v2.2.1
[INFO] [stderr]     Checking solana-rent v2.2.1
[INFO] [stderr]     Checking solana-epoch-rewards v2.2.1
[INFO] [stderr]     Checking solana-last-restart-slot v2.2.1
[INFO] [stderr]     Checking solana-cpi v2.2.1
[INFO] [stderr]     Checking solana-program-entrypoint v2.3.0
[INFO] [stderr]     Checking solana-instructions-sysvar v2.2.2
[INFO] [stderr]     Checking solana-slot-history v2.2.1
[INFO] [stderr]     Checking solana-bincode v2.2.1
[INFO] [stderr]     Checking solana-zk-sdk v2.3.13
[INFO] [stderr]     Checking solana-stake-interface v1.2.1
[INFO] [stderr]     Checking solana-message v2.4.0
[INFO] [stderr]     Checking solana-feature-set v2.2.5
[INFO] [stderr]     Checking solana-vote-interface v2.2.6
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking solana-program-pack v2.2.1
[INFO] [stderr]     Checking spl-discriminator v0.4.1
[INFO] [stderr]     Checking solana-keypair v2.2.3
[INFO] [stderr]     Checking solana-address-lookup-table-interface v2.2.2
[INFO] [stderr]     Checking solana-loader-v4-interface v2.2.1
[INFO] [stderr]     Checking solana-loader-v3-interface v5.0.0
[INFO] [stderr]     Checking solana-stable-layout v2.2.1
[INFO] [stderr]     Checking solana-loader-v2-interface v2.2.1
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]     Checking agave-feature-set v2.3.13
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking asn1-rs v0.5.2
[INFO] [stderr]    Compiling serde_with_macros v3.16.1
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking solana-example-mocks v2.2.1
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking solana-secp256r1-program v2.2.4
[INFO] [stderr]     Checking solana-ed25519-program v2.2.3
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]     Checking solana-sysvar v2.3.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling ark-serialize-derive v0.4.2
[INFO] [stderr]     Checking ark-std v0.4.0
[INFO] [stderr]     Checking solana-secp256k1-program v2.2.3
[INFO] [stderr]     Checking solana-secp256k1-recover v2.2.1
[INFO] [stderr]     Checking jsonrpc-core v18.0.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking solana-account v2.2.1
[INFO] [stderr]     Checking solana-precompiles v2.2.2
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking solana-serde v2.2.1
[INFO] [stderr]     Checking solana-transaction v2.2.3
[INFO] [stderr]     Checking solana-epoch-info v2.2.1
[INFO] [stderr]     Checking solana-feature-gate-interface v2.2.2
[INFO] [stderr]     Checking solana-transaction-context v2.3.13
[INFO] [stderr]    Compiling dlopen2_derive v0.3.0
[INFO] [stderr]    Compiling quinn-udp v0.5.14
[INFO] [stderr]     Checking spl-pod v0.5.1
[INFO] [stderr]    Compiling solana-perf v2.3.13
[INFO] [stderr]     Checking solana-program v2.3.0
[INFO] [stderr]     Checking solana-measure v2.3.13
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]     Checking der-parser v8.2.0
[INFO] [stderr]     Checking serde_with v3.16.1
[INFO] [stderr]     Checking fastbloom v0.14.1
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking solana-rayon-threadlimit v2.3.13
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking ark-serialize v0.4.2
[INFO] [stderr]     Checking solana-quic-definitions v2.3.1
[INFO] [stderr]    Compiling ark-ff-asm v0.4.2
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]     Checking dlopen2 v0.5.0
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking caps v0.5.6
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling quinn v0.11.9
[INFO] [stderr]     Checking lru-slab v0.1.2
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking num v0.2.1
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking solana-net-utils v2.3.13
[INFO] [stderr]     Checking solana-packet v2.2.1
[INFO] [stderr]     Checking solana-security-txt v1.1.2
[INFO] [stderr]    Compiling ark-ff-macros v0.4.2
[INFO] [stderr]     Checking quinn-proto v0.11.13
[INFO] [stderr]     Checking x509-parser v0.14.0
[INFO] [stderr]     Checking spl-type-length-value v0.7.0
[INFO] [stderr]     Checking spl-type-length-value v0.8.0
[INFO] [stderr]     Checking spl-memo v6.0.0
[INFO] [stderr]     Checking webpki-roots v0.24.0
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]    Compiling spl-program-error-derive v0.4.1
[INFO] [stderr]    Compiling spl-program-error-derive v0.5.0
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking no-std-compat v0.4.1
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking percentage v0.1.0
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stderr]     Checking pem v1.1.1
[INFO] [stderr]     Checking solana-client-traits v2.2.1
[INFO] [stderr]     Checking solana-hard-forks v2.2.1
[INFO] [stderr]     Checking spl-program-error v0.7.0
[INFO] [stderr]     Checking spl-program-error v0.6.0
[INFO] [stderr]     Checking histogram v0.6.9
[INFO] [stderr]     Checking webpki-roots v0.25.4
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking spl-tlv-account-resolution v0.10.0
[INFO] [stderr]     Checking spl-tlv-account-resolution v0.9.0
[INFO] [stderr]     Checking solana-shred-version v2.2.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking solana-tls-utils v2.3.13
[INFO] [stderr]     Checking solana-logger v2.3.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking spl-token-confidential-transfer-proof-extraction v0.2.1
[INFO] [stderr]     Checking spl-token-confidential-transfer-proof-extraction v0.3.0
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking memmap2 v0.5.10
[INFO] [stderr]     Checking solana-poh-config v2.2.1
[INFO] [stderr]     Checking spl-token-metadata-interface v0.7.0
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking spl-elgamal-registry v0.1.1
[INFO] [stderr]     Checking spl-transfer-hook-interface v0.10.0
[INFO] [stderr]     Checking spl-token-metadata-interface v0.6.0
[INFO] [stderr]     Checking spl-transfer-hook-interface v0.9.0
[INFO] [stderr]     Checking spl-elgamal-registry v0.2.0
[INFO] [stderr]     Checking spl-token v7.0.0
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tungstenite v0.20.1
[INFO] [stderr]     Checking spl-token-group-interface v0.6.0
[INFO] [stderr]     Checking spl-token-group-interface v0.5.0
[INFO] [stderr]     Checking spl-token-confidential-transfer-ciphertext-arithmetic v0.2.1
[INFO] [stderr]     Checking spl-token-confidential-transfer-proof-generation v0.4.1
[INFO] [stderr]     Checking spl-token-confidential-transfer-ciphertext-arithmetic v0.3.1
[INFO] [stderr]     Checking spl-token v8.0.0
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking kaigan v0.2.6
[INFO] [stderr]     Checking solana-define-syscall v2.3.0
[INFO] [stderr]     Checking solana-epoch-rewards-hasher v2.2.1
[INFO] [stderr]     Checking ark-ff v0.4.2
[INFO] [stderr]     Checking solana-offchain-message v2.2.1
[INFO] [stderr]     Checking Inflector v0.11.4
[INFO] [stderr]     Checking solana-system-transaction v2.2.1
[INFO] [stderr]     Checking spl-token-confidential-transfer-proof-generation v0.2.0
[INFO] [stderr]     Checking solana-nonce-account v2.2.1
[INFO] [stderr]     Checking solana-reserved-account-keys v2.2.2
[INFO] [stderr]     Checking solana-fee-structure v2.3.0
[INFO] [stderr]     Checking governor v0.6.3
[INFO] [stderr]     Checking solana-presigner v2.2.1
[INFO] [stderr]     Checking solana-config-program-client v0.0.2
[INFO] [stderr]     Checking solana-compute-budget-interface v2.2.2
[INFO] [stderr]     Checking solana-rent-debits v2.2.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling orca_whirlpools_macros v1.0.5
[INFO] [stderr]     Checking solana-validator-exit v2.2.1
[INFO] [stderr]     Checking ethnum v1.5.2
[INFO] [stderr]     Checking spl-token-2022 v6.0.0
[INFO] [stderr]     Checking spl-token-confidential-transfer-proof-generation v0.3.0
[INFO] [stderr]     Checking spl-associated-token-account-client v2.0.0
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking tokio-tungstenite v0.20.1
[INFO] [stderr]     Checking spl-token-2022 v8.0.1
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking solana-genesis-config v2.3.0
[INFO] [stderr]     Checking spl-token-2022 v7.0.0
[INFO] [stderr]     Checking solana-rent-collector v2.3.0
[INFO] [stderr]     Checking solana-metrics v2.3.13
[INFO] [stderr]     Checking reqwest-middleware v0.4.2
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking orca_whirlpools_core v2.0.1
[INFO] [stderr]     Checking solana-connection-cache v2.3.13
[INFO] [stderr]     Checking solana-transaction-metrics-tracker v2.3.13
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking solana-streamer v2.3.13
[INFO] [stderr]     Checking spl-associated-token-account v6.0.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking solana-account-decoder-client-types v2.3.13
[INFO] [stderr]     Checking solana-udp-client v2.3.13
[INFO] [stderr]     Checking solana-transaction-status-client-types v2.3.13
[INFO] [stderr]     Checking solana-account-decoder v2.3.13
[INFO] [stderr]     Checking solana-rpc-client-types v2.3.13
[INFO] [stderr]     Checking ark-poly v0.4.2
[INFO] [stderr]     Checking ark-ec v0.4.2
[INFO] [stderr]     Checking solana-rpc-client-api v2.3.13
[INFO] [stderr]     Checking solana-pubsub-client v2.3.13
[INFO] [stderr]     Checking solana-rpc-client v2.3.13
[INFO] [stderr]     Checking solana-quic-client v2.3.13
[INFO] [stderr]     Checking ark-bn254 v0.4.0
[INFO] [stderr]     Checking solana-bn254 v2.2.2
[INFO] [stderr]     Checking solana-tpu-client v2.3.13
[INFO] [stderr]     Checking solana-thin-client v2.3.13
[INFO] [stderr]     Checking solana-rpc-client-nonce-utils v2.3.13
[INFO] [stderr]     Checking solana-sdk v2.3.1
[INFO] [stderr]     Checking solana-client v2.3.13
[INFO] [stderr]     Checking orca_whirlpools_client v6.0.0
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking orca_whirlpools v5.0.2
[INFO] [stderr]     Checking custom_trade_orca v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated module `solana_sdk::system_instruction`: Use `solana_system_interface` crate instead
[INFO] [stdout]   --> src/bin/../trade/swap.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     system_instruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `solana_sdk::system_instruction`: Use `solana_system_interface` crate instead
[INFO] [stdout]   --> src/bin/../trade/swap.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     system_instruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `solana_sdk::system_instruction`: Use `solana_system_interface` crate instead
[INFO] [stdout]   --> src/trade/swap.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     system_instruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `solana_sdk::system_instruction`: Use `solana_system_interface` crate instead
[INFO] [stdout]   --> src/bin/../trade/swap.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     system_instruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `solana_sdk::system_instruction`: Use `solana_system_interface` crate instead
[INFO] [stdout]   --> src/bin/../trade/swap.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     system_instruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `solana_sdk::system_instruction`: Use `solana_system_interface` crate instead
[INFO] [stdout]   --> src/trade/swap.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     system_instruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1872:31
[INFO] [stdout]      |
[INFO] [stdout] 1872 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1873:34
[INFO] [stdout]      |
[INFO] [stdout] 1873 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1874:33
[INFO] [stdout]      |
[INFO] [stdout] 1874 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_usdc_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1875:39
[INFO] [stdout]      |
[INFO] [stdout] 1875 |         let mut reserved_usdc_total = 0u64;
[INFO] [stdout]      |                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1876:38
[INFO] [stdout]      |
[INFO] [stdout] 1876 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1877:29
[INFO] [stdout]      |
[INFO] [stdout] 1877 |         let mut free_usdc = 0u64;
[INFO] [stdout]      |                             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1878:28
[INFO] [stdout]      |
[INFO] [stdout] 1878 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2627:31
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2628:34
[INFO] [stdout]      |
[INFO] [stdout] 2628 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2629:33
[INFO] [stdout]      |
[INFO] [stdout] 2629 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2630:38
[INFO] [stdout]      |
[INFO] [stdout] 2630 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2631:28
[INFO] [stdout]      |
[INFO] [stdout] 2631 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `available_usdc`
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_usdc`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2277:34
[INFO] [stdout]      |
[INFO] [stdout] 2277 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2278:33
[INFO] [stdout]      |
[INFO] [stdout] 2278 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2280:38
[INFO] [stdout]      |
[INFO] [stdout] 2280 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2281:28
[INFO] [stdout]      |
[INFO] [stdout] 2281 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3025:34
[INFO] [stdout]      |
[INFO] [stdout] 3025 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3026:33
[INFO] [stdout]      |
[INFO] [stdout] 3026 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3027:38
[INFO] [stdout]      |
[INFO] [stdout] 3027 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3028:28
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1872:31
[INFO] [stdout]      |
[INFO] [stdout] 1872 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1873:34
[INFO] [stdout]      |
[INFO] [stdout] 1873 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1874:33
[INFO] [stdout]      |
[INFO] [stdout] 1874 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_usdc_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1875:39
[INFO] [stdout]      |
[INFO] [stdout] 1875 |         let mut reserved_usdc_total = 0u64;
[INFO] [stdout]      |                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1876:38
[INFO] [stdout]      |
[INFO] [stdout] 1876 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1877:29
[INFO] [stdout]      |
[INFO] [stdout] 1877 |         let mut free_usdc = 0u64;
[INFO] [stdout]      |                             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1878:28
[INFO] [stdout]      |
[INFO] [stdout] 1878 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2627:31
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2628:34
[INFO] [stdout]      |
[INFO] [stdout] 2628 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2629:33
[INFO] [stdout]      |
[INFO] [stdout] 2629 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2630:38
[INFO] [stdout]      |
[INFO] [stdout] 2630 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2631:28
[INFO] [stdout]      |
[INFO] [stdout] 2631 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `available_usdc`
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_usdc`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2277:34
[INFO] [stdout]      |
[INFO] [stdout] 2277 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2278:33
[INFO] [stdout]      |
[INFO] [stdout] 2278 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2280:38
[INFO] [stdout]      |
[INFO] [stdout] 2280 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2281:28
[INFO] [stdout]      |
[INFO] [stdout] 2281 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3025:34
[INFO] [stdout]      |
[INFO] [stdout] 3025 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3026:33
[INFO] [stdout]      |
[INFO] [stdout] 3026 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3027:38
[INFO] [stdout]      |
[INFO] [stdout] 3027 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3028:28
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TradeDb` is more private than the item `Trader::db`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub db: TradeDb,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ field `Trader::db` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TradeDb` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WSOL_MINT` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const WSOL_MINT: &str = "So11111111111111111111111111111111111111112";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMULATION_FEE_LAMPORTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const SIMULATION_FEE_LAMPORTS: u64 = 5000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_PER_SEC` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const RPC_RATE_LIMIT_PER_SEC: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_WINDOW` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:52:7
[INFO] [stdout]    |
[INFO] [stdout] 52 | const RPC_RATE_LIMIT_WINDOW: Duration = Duration::from_secs(1);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_ATTEMPTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const GET_TRANSACTION_RETRY_ATTEMPTS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_DELAY_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const GET_TRANSACTION_RETRY_DELAY_MS: u64 = 300;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trader` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Trader {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeDb` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_db_str` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl ExecMode {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 76 |     fn as_db_str(self) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RpcRateLimiter` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | struct RpcRateLimiter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `acquire` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl RpcRateLimiter {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  95 |     fn new(max_per_window: usize, window: Duration) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     async fn acquire(&self) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedRpcSender` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct RateLimitedRpcSender {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `reconnect` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl RateLimitedRpcSender {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 135 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn reconnect(&self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_rate_limited_rpc_client` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn build_rate_limited_rpc_client(url: &str, limiter: Arc<RpcRateLimiter>) -> RpcClient {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl TradeDb {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 180 |     fn new(path: &Path) -> Result<Self> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn open_conn(&self) -> Result<Connection> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn ensure_schema(&self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn ensure_positions_columns(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn now_ms() -> i64 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn insert_event(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn reserved_totals(conn: &Connection, payer: &Pubkey) -> Result<(u64, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn reserved_totals_excluding(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn get_sim_wallet(conn: &Connection, payer: &Pubkey) -> Result<Option<(u64, u64)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn upsert_sim_wallet(conn: &Connection, payer: &Pubkey, usdc: u64, sol: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     async fn reconcile_pending(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     fn fail_position(&self, id: i64, err: &str, reason: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     fn mark_pending_retry(&self, id: i64, err: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     async fn finalize_open_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     fn finalize_close_confirmed(&self, id: i64, side: &str, sig: Signature) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `token_program_for_mint_owner` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:814:4
[INFO] [stdout]     |
[INFO] [stdout] 814 | fn token_program_for_mint_owner(mint_owner: &Pubkey) -> Result<TokenProgramFlavor> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenProgramFlavor` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:828:6
[INFO] [stdout]     |
[INFO] [stdout] 828 | enum TokenProgramFlavor {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `program_id`, `sync_native_ix`, `close_account_ix`, `unpack_token_account`, `unpack_token_account_amount`, and `unpack_mint_decimals` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:834:8
[INFO] [stdout]     |
[INFO] [stdout] 833 | impl TokenProgramFlavor {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] 834 |     fn program_id(&self) -> Pubkey {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |     fn sync_native_ix(&self, account: &Pubkey) -> Result<Instruction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |     fn close_account_ix(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 876 |     fn unpack_token_account(&self, data: &[u8]) -> Result<(Pubkey, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     fn unpack_token_account_amount(&self, data: &[u8]) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 895 |     fn unpack_mint_decimals(&self, data: &[u8]) -> Result<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpRpc` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:911:8
[INFO] [stdout]     |
[INFO] [stdout] 911 | struct HttpRpc {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_transaction_json` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:918:8
[INFO] [stdout]     |
[INFO] [stdout] 917 | impl HttpRpc {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 918 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 926 |     async fn get_transaction_json(&self, signature: &Signature) -> Result<Value> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_get_transaction_json` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:962:10
[INFO] [stdout]     |
[INFO] [stdout] 962 | async fn try_get_transaction_json(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_pool_mints` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:990:10
[INFO] [stdout]     |
[INFO] [stdout] 990 | async fn resolve_pool_mints(rpc: &RpcClient, whirlpool: &Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mint_owner_program` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:999:10
[INFO] [stdout]     |
[INFO] [stdout] 999 | async fn mint_owner_program(rpc: &RpcClient, mint: &Pubkey) -> Result<Pubkey> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_mint_decimals` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1007:10
[INFO] [stdout]      |
[INFO] [stdout] 1007 | async fn load_mint_decimals(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_account_optional` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1019:10
[INFO] [stdout]      |
[INFO] [stdout] 1019 | async fn get_account_optional(rpc: &RpcClient, address: &Pubkey) -> Result<Option<Account>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_wsol_ata_is_safe_to_use_and_close` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1027:10
[INFO] [stdout]      |
[INFO] [stdout] 1027 | async fn ensure_wsol_ata_is_safe_to_use_and_close(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui_to_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1046:4
[INFO] [stdout]      |
[INFO] [stdout] 1046 | fn ui_to_amount(ui: &str, decimals: u8) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_token_accounts_by_owner` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1087:10
[INFO] [stdout]      |
[INFO] [stdout] 1087 | async fn sum_token_accounts_by_owner(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_effective_wallet_balances` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1123:10
[INFO] [stdout]      |
[INFO] [stdout] 1123 | async fn get_effective_wallet_balances(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_owner_token_accounts` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1149:10
[INFO] [stdout]      |
[INFO] [stdout] 1149 | async fn list_owner_token_accounts(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_owner_mint_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1167:4
[INFO] [stdout]      |
[INFO] [stdout] 1167 | fn sum_owner_mint_delta(meta: &Value, owner: &Pubkey, mint: &Pubkey) -> Result<i128> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `owner_lamport_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1210:4
[INFO] [stdout]      |
[INFO] [stdout] 1210 | fn owner_lamport_delta(meta: &Value, msg: &Value, owner: &Pubkey) -> Result<Option<i128>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_transaction_with_fee` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1254:10
[INFO] [stdout]      |
[INFO] [stdout] 1254 | async fn build_transaction_with_fee(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `simulated` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1291:5
[INFO] [stdout]      |
[INFO] [stdout] 1289 | struct TxExecution {
[INFO] [stdout]      |        ----------- field in this struct
[INFO] [stdout] 1290 |     signature: Signature,
[INFO] [stdout] 1291 |     simulated: Option<RpcSimulateTransactionResult>,
[INFO] [stdout]      |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rent_budget_for_atas` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1422:10
[INFO] [stdout]      |
[INFO] [stdout] 1422 | async fn rent_budget_for_atas(rpc: &RpcClient, atas: &[Pubkey]) -> Result<u64> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_reqwest_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1438:4
[INFO] [stdout]      |
[INFO] [stdout] 1438 | fn find_reqwest_error<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_orca_swap_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1454:4
[INFO] [stdout]      |
[INFO] [stdout] 1454 | fn format_orca_swap_error(err: &(dyn std::error::Error + 'static)) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instructions` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1530:10
[INFO] [stdout]      |
[INFO] [stdout] 1530 | async fn build_swap_instructions(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_max_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1553:4
[INFO] [stdout]      |
[INFO] [stdout] 1553 | fn exact_out_max_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_est_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1560:4
[INFO] [stdout]      |
[INFO] [stdout] 1560 | fn exact_out_est_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_min_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1567:4
[INFO] [stdout]      |
[INFO] [stdout] 1567 | fn exact_in_min_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_est_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1574:4
[INFO] [stdout]      |
[INFO] [stdout] 1574 | fn exact_in_est_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_simulation_addresses` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1581:4
[INFO] [stdout]      |
[INFO] [stdout] 1581 | fn build_simulation_addresses(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `post_balances_from_simulation` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1596:4
[INFO] [stdout]      |
[INFO] [stdout] 1596 | fn post_balances_from_simulation(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_pool_is_wsol_pair` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1639:4
[INFO] [stdout]      |
[INFO] [stdout] 1639 | fn ensure_pool_is_wsol_pair(mint_a: Pubkey, mint_b: Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_to_i64` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1706:4
[INFO] [stdout]      |
[INFO] [stdout] 1706 | fn u64_to_i64(value: u64, label: &str) -> Result<i64> {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `checked_free_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1710:4
[INFO] [stdout]      |
[INFO] [stdout] 1710 | fn checked_free_amount(effective: u64, reserved: u64, label: &str) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_failed` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1718:4
[INFO] [stdout]      |
[INFO] [stdout] 1718 | fn mark_failed(db: &TradeDb, position_id: i64, stage: &str, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_exec_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1744:4
[INFO] [stdout]      |
[INFO] [stdout] 1744 | fn mark_exec_error(db: &TradeDb, position_id: i64, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1763:12
[INFO] [stdout]      |
[INFO] [stdout] 1762 | impl Trader {
[INFO] [stdout]      | ----------- associated items in this implementation
[INFO] [stdout] 1763 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1784 |     pub async fn open_long(
[INFO] [stdout]      |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2179 |     pub async fn close_long(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2536 |     pub async fn open_short(
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2925 |     pub async fn close_short(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3292 |     pub async fn open_long_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3301 |     pub async fn close_long_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3305 |     pub async fn open_short_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3314 |     pub async fn close_short_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRACKER_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const DEFAULT_TRACKER_DB: &str = "tracker.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const DEFAULT_TRADE_DB: &str = "trade.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PLAYERS_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const DEFAULT_PLAYERS_DB: &str = "players.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POOL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DEFAULT_POOL: &str = "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_USDC_UI` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DEFAULT_USDC_UI: &str = "1";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SLIPPAGE_BPS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DEFAULT_SLIPPAGE_BPS: u16 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POLL_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DEFAULT_POLL_MS: u64 = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_BATCH_LIMIT` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const EVENT_BATCH_LIMIT: i64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_RPC_URL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEFAULT_TRADE_RPC_URL: &str =
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Config {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrackerEvent` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TrackerEvent {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn default_config() -> Config {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn validate_config(cfg: &Config) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn config_from_env() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env_with_mode` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn config_from_env_with_mode(mode: trade::ExecMode) -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_args` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn parse_args() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_one_usdc` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn is_one_usdc(raw: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn print_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn now_ms() -> i64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_db` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn open_db(path: &str) -> Result<Connection> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_trade_links_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn ensure_trade_links_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_players_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:231:4
[INFO] [stdout]     |
[INFO] [stdout] 231 | fn ensure_players_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_player_good` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn is_player_good(conn: &Connection, player: &str) -> Result<bool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn get_last_event_id(conn: &Connection) -> Result<i64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn set_last_event_id(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_events` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn fetch_events(conn: &Connection, last_id: i64) -> Result<Vec<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:315:4
[INFO] [stdout]     |
[INFO] [stdout] 315 | fn find_entry_event(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_side` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:347:4
[INFO] [stdout]     |
[INFO] [stdout] 347 | fn compute_side(entry: &TrackerEvent) -> Result<&'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_profit_pct` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:361:4
[INFO] [stdout]     |
[INFO] [stdout] 361 | fn compute_profit_pct(side: &str, entry_price: f64, exit_price: f64) -> Result<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `side_human` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:372:4
[INFO] [stdout]     |
[INFO] [stdout] 372 | fn side_human(side: &str) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_base_url` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:380:4
[INFO] [stdout]     |
[INFO] [stdout] 380 | fn rpc_base_url(url: &str) -> &str {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:384:10
[INFO] [stdout]     |
[INFO] [stdout] 384 | async fn open_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:540:10
[INFO] [stdout]     |
[INFO] [stdout] 540 | async fn close_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_profit` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:682:4
[INFO] [stdout]     |
[INFO] [stdout] 682 | fn record_profit(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:746:10
[INFO] [stdout]     |
[INFO] [stdout] 746 | async fn handle_entry_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_target_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:782:10
[INFO] [stdout]     |
[INFO] [stdout] 782 | async fn handle_target_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_trader` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:876:4
[INFO] [stdout]     |
[INFO] [stdout] 876 | fn build_trader(cfg: &Config) -> Result<trade::Trader> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_event_by_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:885:4
[INFO] [stdout]     |
[INFO] [stdout] 885 | fn fetch_event_by_id(conn: &Connection, id: i64) -> Result<Option<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polling` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:910:14
[INFO] [stdout]     |
[INFO] [stdout] 910 | pub async fn run_polling(cfg: Config) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_from_signals` is never used
[INFO] [stdout]     --> src/bin/../trade/executor.rs:1077:14
[INFO] [stdout]      |
[INFO] [stdout] 1077 | pub async fn run_from_signals(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeSignal` is never constructed
[INFO] [stdout]  --> src/bin/../trade/signal.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct TradeSignal {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TradeDb` is more private than the item `Trader::db`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub db: TradeDb,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ field `Trader::db` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TradeDb` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WSOL_MINT` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const WSOL_MINT: &str = "So11111111111111111111111111111111111111112";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMULATION_FEE_LAMPORTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const SIMULATION_FEE_LAMPORTS: u64 = 5000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_PER_SEC` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const RPC_RATE_LIMIT_PER_SEC: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_WINDOW` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:52:7
[INFO] [stdout]    |
[INFO] [stdout] 52 | const RPC_RATE_LIMIT_WINDOW: Duration = Duration::from_secs(1);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_ATTEMPTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const GET_TRANSACTION_RETRY_ATTEMPTS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_DELAY_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const GET_TRANSACTION_RETRY_DELAY_MS: u64 = 300;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trader` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Trader {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeDb` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_db_str` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl ExecMode {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 76 |     fn as_db_str(self) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RpcRateLimiter` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | struct RpcRateLimiter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `acquire` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl RpcRateLimiter {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  95 |     fn new(max_per_window: usize, window: Duration) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     async fn acquire(&self) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedRpcSender` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct RateLimitedRpcSender {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `reconnect` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl RateLimitedRpcSender {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 135 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn reconnect(&self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_rate_limited_rpc_client` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn build_rate_limited_rpc_client(url: &str, limiter: Arc<RpcRateLimiter>) -> RpcClient {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl TradeDb {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 180 |     fn new(path: &Path) -> Result<Self> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn open_conn(&self) -> Result<Connection> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn ensure_schema(&self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn ensure_positions_columns(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn now_ms() -> i64 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn insert_event(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn reserved_totals(conn: &Connection, payer: &Pubkey) -> Result<(u64, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn reserved_totals_excluding(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn get_sim_wallet(conn: &Connection, payer: &Pubkey) -> Result<Option<(u64, u64)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn upsert_sim_wallet(conn: &Connection, payer: &Pubkey, usdc: u64, sol: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     async fn reconcile_pending(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     fn fail_position(&self, id: i64, err: &str, reason: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     fn mark_pending_retry(&self, id: i64, err: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     async fn finalize_open_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     fn finalize_close_confirmed(&self, id: i64, side: &str, sig: Signature) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `token_program_for_mint_owner` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:814:4
[INFO] [stdout]     |
[INFO] [stdout] 814 | fn token_program_for_mint_owner(mint_owner: &Pubkey) -> Result<TokenProgramFlavor> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenProgramFlavor` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:828:6
[INFO] [stdout]     |
[INFO] [stdout] 828 | enum TokenProgramFlavor {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `program_id`, `sync_native_ix`, `close_account_ix`, `unpack_token_account`, `unpack_token_account_amount`, and `unpack_mint_decimals` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:834:8
[INFO] [stdout]     |
[INFO] [stdout] 833 | impl TokenProgramFlavor {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] 834 |     fn program_id(&self) -> Pubkey {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |     fn sync_native_ix(&self, account: &Pubkey) -> Result<Instruction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |     fn close_account_ix(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 876 |     fn unpack_token_account(&self, data: &[u8]) -> Result<(Pubkey, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     fn unpack_token_account_amount(&self, data: &[u8]) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 895 |     fn unpack_mint_decimals(&self, data: &[u8]) -> Result<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpRpc` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:911:8
[INFO] [stdout]     |
[INFO] [stdout] 911 | struct HttpRpc {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_transaction_json` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:918:8
[INFO] [stdout]     |
[INFO] [stdout] 917 | impl HttpRpc {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 918 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 926 |     async fn get_transaction_json(&self, signature: &Signature) -> Result<Value> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_get_transaction_json` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:962:10
[INFO] [stdout]     |
[INFO] [stdout] 962 | async fn try_get_transaction_json(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_pool_mints` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:990:10
[INFO] [stdout]     |
[INFO] [stdout] 990 | async fn resolve_pool_mints(rpc: &RpcClient, whirlpool: &Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mint_owner_program` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:999:10
[INFO] [stdout]     |
[INFO] [stdout] 999 | async fn mint_owner_program(rpc: &RpcClient, mint: &Pubkey) -> Result<Pubkey> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_mint_decimals` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1007:10
[INFO] [stdout]      |
[INFO] [stdout] 1007 | async fn load_mint_decimals(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_account_optional` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1019:10
[INFO] [stdout]      |
[INFO] [stdout] 1019 | async fn get_account_optional(rpc: &RpcClient, address: &Pubkey) -> Result<Option<Account>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_wsol_ata_is_safe_to_use_and_close` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1027:10
[INFO] [stdout]      |
[INFO] [stdout] 1027 | async fn ensure_wsol_ata_is_safe_to_use_and_close(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui_to_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1046:4
[INFO] [stdout]      |
[INFO] [stdout] 1046 | fn ui_to_amount(ui: &str, decimals: u8) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_token_accounts_by_owner` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1087:10
[INFO] [stdout]      |
[INFO] [stdout] 1087 | async fn sum_token_accounts_by_owner(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_effective_wallet_balances` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1123:10
[INFO] [stdout]      |
[INFO] [stdout] 1123 | async fn get_effective_wallet_balances(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_owner_token_accounts` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1149:10
[INFO] [stdout]      |
[INFO] [stdout] 1149 | async fn list_owner_token_accounts(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_owner_mint_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1167:4
[INFO] [stdout]      |
[INFO] [stdout] 1167 | fn sum_owner_mint_delta(meta: &Value, owner: &Pubkey, mint: &Pubkey) -> Result<i128> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `owner_lamport_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1210:4
[INFO] [stdout]      |
[INFO] [stdout] 1210 | fn owner_lamport_delta(meta: &Value, msg: &Value, owner: &Pubkey) -> Result<Option<i128>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_transaction_with_fee` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1254:10
[INFO] [stdout]      |
[INFO] [stdout] 1254 | async fn build_transaction_with_fee(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `simulated` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1291:5
[INFO] [stdout]      |
[INFO] [stdout] 1289 | struct TxExecution {
[INFO] [stdout]      |        ----------- field in this struct
[INFO] [stdout] 1290 |     signature: Signature,
[INFO] [stdout] 1291 |     simulated: Option<RpcSimulateTransactionResult>,
[INFO] [stdout]      |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rent_budget_for_atas` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1422:10
[INFO] [stdout]      |
[INFO] [stdout] 1422 | async fn rent_budget_for_atas(rpc: &RpcClient, atas: &[Pubkey]) -> Result<u64> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_reqwest_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1438:4
[INFO] [stdout]      |
[INFO] [stdout] 1438 | fn find_reqwest_error<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_orca_swap_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1454:4
[INFO] [stdout]      |
[INFO] [stdout] 1454 | fn format_orca_swap_error(err: &(dyn std::error::Error + 'static)) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instructions` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1530:10
[INFO] [stdout]      |
[INFO] [stdout] 1530 | async fn build_swap_instructions(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_max_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1553:4
[INFO] [stdout]      |
[INFO] [stdout] 1553 | fn exact_out_max_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_est_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1560:4
[INFO] [stdout]      |
[INFO] [stdout] 1560 | fn exact_out_est_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_min_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1567:4
[INFO] [stdout]      |
[INFO] [stdout] 1567 | fn exact_in_min_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_est_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1574:4
[INFO] [stdout]      |
[INFO] [stdout] 1574 | fn exact_in_est_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_simulation_addresses` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1581:4
[INFO] [stdout]      |
[INFO] [stdout] 1581 | fn build_simulation_addresses(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `post_balances_from_simulation` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1596:4
[INFO] [stdout]      |
[INFO] [stdout] 1596 | fn post_balances_from_simulation(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_pool_is_wsol_pair` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1639:4
[INFO] [stdout]      |
[INFO] [stdout] 1639 | fn ensure_pool_is_wsol_pair(mint_a: Pubkey, mint_b: Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_to_i64` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1706:4
[INFO] [stdout]      |
[INFO] [stdout] 1706 | fn u64_to_i64(value: u64, label: &str) -> Result<i64> {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `checked_free_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1710:4
[INFO] [stdout]      |
[INFO] [stdout] 1710 | fn checked_free_amount(effective: u64, reserved: u64, label: &str) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_failed` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1718:4
[INFO] [stdout]      |
[INFO] [stdout] 1718 | fn mark_failed(db: &TradeDb, position_id: i64, stage: &str, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_exec_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1744:4
[INFO] [stdout]      |
[INFO] [stdout] 1744 | fn mark_exec_error(db: &TradeDb, position_id: i64, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1763:12
[INFO] [stdout]      |
[INFO] [stdout] 1762 | impl Trader {
[INFO] [stdout]      | ----------- associated items in this implementation
[INFO] [stdout] 1763 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1784 |     pub async fn open_long(
[INFO] [stdout]      |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2179 |     pub async fn close_long(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2536 |     pub async fn open_short(
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2925 |     pub async fn close_short(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3292 |     pub async fn open_long_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3301 |     pub async fn close_long_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3305 |     pub async fn open_short_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3314 |     pub async fn close_short_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRACKER_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const DEFAULT_TRACKER_DB: &str = "tracker.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const DEFAULT_TRADE_DB: &str = "trade.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PLAYERS_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const DEFAULT_PLAYERS_DB: &str = "players.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POOL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DEFAULT_POOL: &str = "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_USDC_UI` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DEFAULT_USDC_UI: &str = "1";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SLIPPAGE_BPS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DEFAULT_SLIPPAGE_BPS: u16 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POLL_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DEFAULT_POLL_MS: u64 = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_BATCH_LIMIT` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const EVENT_BATCH_LIMIT: i64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_RPC_URL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEFAULT_TRADE_RPC_URL: &str =
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Config {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrackerEvent` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TrackerEvent {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn default_config() -> Config {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn validate_config(cfg: &Config) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn config_from_env() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env_with_mode` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn config_from_env_with_mode(mode: trade::ExecMode) -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_args` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn parse_args() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_one_usdc` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn is_one_usdc(raw: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn print_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn now_ms() -> i64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_db` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn open_db(path: &str) -> Result<Connection> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_trade_links_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn ensure_trade_links_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_players_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:231:4
[INFO] [stdout]     |
[INFO] [stdout] 231 | fn ensure_players_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_player_good` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn is_player_good(conn: &Connection, player: &str) -> Result<bool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn get_last_event_id(conn: &Connection) -> Result<i64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn set_last_event_id(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_events` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn fetch_events(conn: &Connection, last_id: i64) -> Result<Vec<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:315:4
[INFO] [stdout]     |
[INFO] [stdout] 315 | fn find_entry_event(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_side` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:347:4
[INFO] [stdout]     |
[INFO] [stdout] 347 | fn compute_side(entry: &TrackerEvent) -> Result<&'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_profit_pct` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:361:4
[INFO] [stdout]     |
[INFO] [stdout] 361 | fn compute_profit_pct(side: &str, entry_price: f64, exit_price: f64) -> Result<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `side_human` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:372:4
[INFO] [stdout]     |
[INFO] [stdout] 372 | fn side_human(side: &str) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_base_url` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:380:4
[INFO] [stdout]     |
[INFO] [stdout] 380 | fn rpc_base_url(url: &str) -> &str {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:384:10
[INFO] [stdout]     |
[INFO] [stdout] 384 | async fn open_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:540:10
[INFO] [stdout]     |
[INFO] [stdout] 540 | async fn close_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_profit` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:682:4
[INFO] [stdout]     |
[INFO] [stdout] 682 | fn record_profit(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:746:10
[INFO] [stdout]     |
[INFO] [stdout] 746 | async fn handle_entry_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_target_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:782:10
[INFO] [stdout]     |
[INFO] [stdout] 782 | async fn handle_target_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_trader` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:876:4
[INFO] [stdout]     |
[INFO] [stdout] 876 | fn build_trader(cfg: &Config) -> Result<trade::Trader> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_event_by_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:885:4
[INFO] [stdout]     |
[INFO] [stdout] 885 | fn fetch_event_by_id(conn: &Connection, id: i64) -> Result<Option<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polling` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:910:14
[INFO] [stdout]     |
[INFO] [stdout] 910 | pub async fn run_polling(cfg: Config) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_from_signals` is never used
[INFO] [stdout]     --> src/bin/../trade/executor.rs:1077:14
[INFO] [stdout]      |
[INFO] [stdout] 1077 | pub async fn run_from_signals(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeSignal` is never constructed
[INFO] [stdout]  --> src/bin/../trade/signal.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct TradeSignal {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1872:31
[INFO] [stdout]      |
[INFO] [stdout] 1872 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1873:34
[INFO] [stdout]      |
[INFO] [stdout] 1873 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1874:33
[INFO] [stdout]      |
[INFO] [stdout] 1874 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_usdc_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1875:39
[INFO] [stdout]      |
[INFO] [stdout] 1875 |         let mut reserved_usdc_total = 0u64;
[INFO] [stdout]      |                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1876:38
[INFO] [stdout]      |
[INFO] [stdout] 1876 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1877:29
[INFO] [stdout]      |
[INFO] [stdout] 1877 |         let mut free_usdc = 0u64;
[INFO] [stdout]      |                             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1878:28
[INFO] [stdout]      |
[INFO] [stdout] 1878 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2627:31
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2628:34
[INFO] [stdout]      |
[INFO] [stdout] 2628 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2629:33
[INFO] [stdout]      |
[INFO] [stdout] 2629 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2630:38
[INFO] [stdout]      |
[INFO] [stdout] 2630 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2631:28
[INFO] [stdout]      |
[INFO] [stdout] 2631 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `available_usdc`
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_usdc`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2277:34
[INFO] [stdout]      |
[INFO] [stdout] 2277 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2278:33
[INFO] [stdout]      |
[INFO] [stdout] 2278 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2280:38
[INFO] [stdout]      |
[INFO] [stdout] 2280 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2281:28
[INFO] [stdout]      |
[INFO] [stdout] 2281 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3025:34
[INFO] [stdout]      |
[INFO] [stdout] 3025 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3026:33
[INFO] [stdout]      |
[INFO] [stdout] 3026 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3027:38
[INFO] [stdout]      |
[INFO] [stdout] 3027 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3028:28
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TradeDb` is more private than the item `Trader::db`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub db: TradeDb,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ field `Trader::db` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TradeDb` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WSOL_MINT` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const WSOL_MINT: &str = "So11111111111111111111111111111111111111112";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMULATION_FEE_LAMPORTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const SIMULATION_FEE_LAMPORTS: u64 = 5000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_PER_SEC` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const RPC_RATE_LIMIT_PER_SEC: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_WINDOW` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:52:7
[INFO] [stdout]    |
[INFO] [stdout] 52 | const RPC_RATE_LIMIT_WINDOW: Duration = Duration::from_secs(1);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_ATTEMPTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const GET_TRANSACTION_RETRY_ATTEMPTS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_DELAY_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const GET_TRANSACTION_RETRY_DELAY_MS: u64 = 300;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trader` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Trader {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeDb` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_db_str` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl ExecMode {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 76 |     fn as_db_str(self) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RpcRateLimiter` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | struct RpcRateLimiter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `acquire` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl RpcRateLimiter {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  95 |     fn new(max_per_window: usize, window: Duration) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     async fn acquire(&self) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedRpcSender` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct RateLimitedRpcSender {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `reconnect` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl RateLimitedRpcSender {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 135 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn reconnect(&self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_rate_limited_rpc_client` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn build_rate_limited_rpc_client(url: &str, limiter: Arc<RpcRateLimiter>) -> RpcClient {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl TradeDb {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 180 |     fn new(path: &Path) -> Result<Self> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn open_conn(&self) -> Result<Connection> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn ensure_schema(&self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn ensure_positions_columns(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn now_ms() -> i64 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn insert_event(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn reserved_totals(conn: &Connection, payer: &Pubkey) -> Result<(u64, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn reserved_totals_excluding(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn get_sim_wallet(conn: &Connection, payer: &Pubkey) -> Result<Option<(u64, u64)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn upsert_sim_wallet(conn: &Connection, payer: &Pubkey, usdc: u64, sol: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     async fn reconcile_pending(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     fn fail_position(&self, id: i64, err: &str, reason: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     fn mark_pending_retry(&self, id: i64, err: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     async fn finalize_open_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     fn finalize_close_confirmed(&self, id: i64, side: &str, sig: Signature) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `token_program_for_mint_owner` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:814:4
[INFO] [stdout]     |
[INFO] [stdout] 814 | fn token_program_for_mint_owner(mint_owner: &Pubkey) -> Result<TokenProgramFlavor> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenProgramFlavor` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:828:6
[INFO] [stdout]     |
[INFO] [stdout] 828 | enum TokenProgramFlavor {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `program_id`, `sync_native_ix`, `close_account_ix`, `unpack_token_account`, `unpack_token_account_amount`, and `unpack_mint_decimals` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:834:8
[INFO] [stdout]     |
[INFO] [stdout] 833 | impl TokenProgramFlavor {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] 834 |     fn program_id(&self) -> Pubkey {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |     fn sync_native_ix(&self, account: &Pubkey) -> Result<Instruction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |     fn close_account_ix(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 876 |     fn unpack_token_account(&self, data: &[u8]) -> Result<(Pubkey, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     fn unpack_token_account_amount(&self, data: &[u8]) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 895 |     fn unpack_mint_decimals(&self, data: &[u8]) -> Result<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpRpc` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:911:8
[INFO] [stdout]     |
[INFO] [stdout] 911 | struct HttpRpc {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_transaction_json` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:918:8
[INFO] [stdout]     |
[INFO] [stdout] 917 | impl HttpRpc {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 918 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 926 |     async fn get_transaction_json(&self, signature: &Signature) -> Result<Value> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_get_transaction_json` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:962:10
[INFO] [stdout]     |
[INFO] [stdout] 962 | async fn try_get_transaction_json(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_pool_mints` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:990:10
[INFO] [stdout]     |
[INFO] [stdout] 990 | async fn resolve_pool_mints(rpc: &RpcClient, whirlpool: &Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mint_owner_program` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:999:10
[INFO] [stdout]     |
[INFO] [stdout] 999 | async fn mint_owner_program(rpc: &RpcClient, mint: &Pubkey) -> Result<Pubkey> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_mint_decimals` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1007:10
[INFO] [stdout]      |
[INFO] [stdout] 1007 | async fn load_mint_decimals(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_account_optional` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1019:10
[INFO] [stdout]      |
[INFO] [stdout] 1019 | async fn get_account_optional(rpc: &RpcClient, address: &Pubkey) -> Result<Option<Account>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_wsol_ata_is_safe_to_use_and_close` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1027:10
[INFO] [stdout]      |
[INFO] [stdout] 1027 | async fn ensure_wsol_ata_is_safe_to_use_and_close(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui_to_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1046:4
[INFO] [stdout]      |
[INFO] [stdout] 1046 | fn ui_to_amount(ui: &str, decimals: u8) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_token_accounts_by_owner` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1087:10
[INFO] [stdout]      |
[INFO] [stdout] 1087 | async fn sum_token_accounts_by_owner(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_effective_wallet_balances` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1123:10
[INFO] [stdout]      |
[INFO] [stdout] 1123 | async fn get_effective_wallet_balances(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_owner_token_accounts` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1149:10
[INFO] [stdout]      |
[INFO] [stdout] 1149 | async fn list_owner_token_accounts(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_owner_mint_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1167:4
[INFO] [stdout]      |
[INFO] [stdout] 1167 | fn sum_owner_mint_delta(meta: &Value, owner: &Pubkey, mint: &Pubkey) -> Result<i128> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `owner_lamport_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1210:4
[INFO] [stdout]      |
[INFO] [stdout] 1210 | fn owner_lamport_delta(meta: &Value, msg: &Value, owner: &Pubkey) -> Result<Option<i128>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_transaction_with_fee` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1254:10
[INFO] [stdout]      |
[INFO] [stdout] 1254 | async fn build_transaction_with_fee(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `simulated` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1291:5
[INFO] [stdout]      |
[INFO] [stdout] 1289 | struct TxExecution {
[INFO] [stdout]      |        ----------- field in this struct
[INFO] [stdout] 1290 |     signature: Signature,
[INFO] [stdout] 1291 |     simulated: Option<RpcSimulateTransactionResult>,
[INFO] [stdout]      |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rent_budget_for_atas` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1422:10
[INFO] [stdout]      |
[INFO] [stdout] 1422 | async fn rent_budget_for_atas(rpc: &RpcClient, atas: &[Pubkey]) -> Result<u64> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_reqwest_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1438:4
[INFO] [stdout]      |
[INFO] [stdout] 1438 | fn find_reqwest_error<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_orca_swap_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1454:4
[INFO] [stdout]      |
[INFO] [stdout] 1454 | fn format_orca_swap_error(err: &(dyn std::error::Error + 'static)) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instructions` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1530:10
[INFO] [stdout]      |
[INFO] [stdout] 1530 | async fn build_swap_instructions(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_max_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1553:4
[INFO] [stdout]      |
[INFO] [stdout] 1553 | fn exact_out_max_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_est_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1560:4
[INFO] [stdout]      |
[INFO] [stdout] 1560 | fn exact_out_est_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_min_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1567:4
[INFO] [stdout]      |
[INFO] [stdout] 1567 | fn exact_in_min_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_est_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1574:4
[INFO] [stdout]      |
[INFO] [stdout] 1574 | fn exact_in_est_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_simulation_addresses` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1581:4
[INFO] [stdout]      |
[INFO] [stdout] 1581 | fn build_simulation_addresses(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `post_balances_from_simulation` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1596:4
[INFO] [stdout]      |
[INFO] [stdout] 1596 | fn post_balances_from_simulation(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_pool_is_wsol_pair` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1639:4
[INFO] [stdout]      |
[INFO] [stdout] 1639 | fn ensure_pool_is_wsol_pair(mint_a: Pubkey, mint_b: Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_to_i64` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1706:4
[INFO] [stdout]      |
[INFO] [stdout] 1706 | fn u64_to_i64(value: u64, label: &str) -> Result<i64> {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `checked_free_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1710:4
[INFO] [stdout]      |
[INFO] [stdout] 1710 | fn checked_free_amount(effective: u64, reserved: u64, label: &str) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_failed` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1718:4
[INFO] [stdout]      |
[INFO] [stdout] 1718 | fn mark_failed(db: &TradeDb, position_id: i64, stage: &str, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_exec_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1744:4
[INFO] [stdout]      |
[INFO] [stdout] 1744 | fn mark_exec_error(db: &TradeDb, position_id: i64, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1763:12
[INFO] [stdout]      |
[INFO] [stdout] 1762 | impl Trader {
[INFO] [stdout]      | ----------- associated items in this implementation
[INFO] [stdout] 1763 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1784 |     pub async fn open_long(
[INFO] [stdout]      |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2179 |     pub async fn close_long(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2536 |     pub async fn open_short(
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2925 |     pub async fn close_short(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3292 |     pub async fn open_long_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3301 |     pub async fn close_long_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3305 |     pub async fn open_short_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3314 |     pub async fn close_short_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRACKER_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const DEFAULT_TRACKER_DB: &str = "tracker.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const DEFAULT_TRADE_DB: &str = "trade.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PLAYERS_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const DEFAULT_PLAYERS_DB: &str = "players.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POOL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DEFAULT_POOL: &str = "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_USDC_UI` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DEFAULT_USDC_UI: &str = "1";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SLIPPAGE_BPS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DEFAULT_SLIPPAGE_BPS: u16 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POLL_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DEFAULT_POLL_MS: u64 = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_BATCH_LIMIT` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const EVENT_BATCH_LIMIT: i64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_RPC_URL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEFAULT_TRADE_RPC_URL: &str =
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Config {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrackerEvent` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TrackerEvent {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn default_config() -> Config {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn validate_config(cfg: &Config) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn config_from_env() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env_with_mode` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn config_from_env_with_mode(mode: trade::ExecMode) -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_args` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn parse_args() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_one_usdc` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn is_one_usdc(raw: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn print_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn now_ms() -> i64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_db` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn open_db(path: &str) -> Result<Connection> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_trade_links_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn ensure_trade_links_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_players_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:231:4
[INFO] [stdout]     |
[INFO] [stdout] 231 | fn ensure_players_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_player_good` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn is_player_good(conn: &Connection, player: &str) -> Result<bool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn get_last_event_id(conn: &Connection) -> Result<i64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn set_last_event_id(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_events` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn fetch_events(conn: &Connection, last_id: i64) -> Result<Vec<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:315:4
[INFO] [stdout]     |
[INFO] [stdout] 315 | fn find_entry_event(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_side` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:347:4
[INFO] [stdout]     |
[INFO] [stdout] 347 | fn compute_side(entry: &TrackerEvent) -> Result<&'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_profit_pct` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:361:4
[INFO] [stdout]     |
[INFO] [stdout] 361 | fn compute_profit_pct(side: &str, entry_price: f64, exit_price: f64) -> Result<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `side_human` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:372:4
[INFO] [stdout]     |
[INFO] [stdout] 372 | fn side_human(side: &str) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_base_url` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:380:4
[INFO] [stdout]     |
[INFO] [stdout] 380 | fn rpc_base_url(url: &str) -> &str {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:384:10
[INFO] [stdout]     |
[INFO] [stdout] 384 | async fn open_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:540:10
[INFO] [stdout]     |
[INFO] [stdout] 540 | async fn close_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_profit` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:682:4
[INFO] [stdout]     |
[INFO] [stdout] 682 | fn record_profit(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:746:10
[INFO] [stdout]     |
[INFO] [stdout] 746 | async fn handle_entry_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_target_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:782:10
[INFO] [stdout]     |
[INFO] [stdout] 782 | async fn handle_target_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_trader` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:876:4
[INFO] [stdout]     |
[INFO] [stdout] 876 | fn build_trader(cfg: &Config) -> Result<trade::Trader> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_event_by_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:885:4
[INFO] [stdout]     |
[INFO] [stdout] 885 | fn fetch_event_by_id(conn: &Connection, id: i64) -> Result<Option<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polling` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:910:14
[INFO] [stdout]     |
[INFO] [stdout] 910 | pub async fn run_polling(cfg: Config) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_from_signals` is never used
[INFO] [stdout]     --> src/bin/../trade/executor.rs:1077:14
[INFO] [stdout]      |
[INFO] [stdout] 1077 | pub async fn run_from_signals(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `action` are never read
[INFO] [stdout]  --> src/bin/../trade/signal.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct TradeSignal {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 3 |     pub id: i64,
[INFO] [stdout]   |         ^^
[INFO] [stdout] 4 |     pub action: String,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `TradeSignal` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RETRY_ATTEMPTS` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const RPC_RETRY_ATTEMPTS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RETRY_DELAY_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const RPC_RETRY_DELAY_MS: u64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PoolData` is never constructed
[INFO] [stdout]   --> src/bin/../trade/swap.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct PoolData {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSelection` is never constructed
[INFO] [stdout]   --> src/bin/../trade/swap.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TickSelection {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_rpc_request` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn log_rpc_request(method: &str, details: &str) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_rpc_error` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn log_rpc_error<E: std::fmt::Debug>(method: &str, details: &str, err: &E) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_get_account` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | async fn rpc_get_account(rpc: &RpcClient, address: &Pubkey, purpose: &str) -> Result<Account> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_get_multiple_accounts` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | async fn rpc_get_multiple_accounts(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_get_epoch_info` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:108:10
[INFO] [stdout]     |
[INFO] [stdout] 108 | async fn rpc_get_epoch_info(rpc: &RpcClient, purpose: &str) -> Result<EpochInfo> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_pool` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:120:10
[INFO] [stdout]     |
[INFO] [stdout] 120 | async fn fetch_pool(rpc: &RpcClient, address: Pubkey) -> Result<PoolData> {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_tick_arrays` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | async fn derive_tick_arrays(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_tick` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:201:4
[INFO] [stdout]     |
[INFO] [stdout] 201 | fn empty_tick(start_tick_index: i32) -> TickArrayFacade {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_exact_in` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:208:10
[INFO] [stdout]     |
[INFO] [stdout] 208 | async fn quote_exact_in(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_exact_out` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 | async fn quote_exact_out(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_oracle_optional` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:292:10
[INFO] [stdout]     |
[INFO] [stdout] 292 | async fn fetch_oracle_optional(rpc: &RpcClient, pool: &PoolData) -> Result<Option<Oracle>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instruction` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:301:4
[INFO] [stdout]     |
[INFO] [stdout] 301 | fn build_swap_instruction(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_transfer_fee` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:364:4
[INFO] [stdout]     |
[INFO] [stdout] 364 | fn extract_transfer_fee(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_long` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:381:14
[INFO] [stdout]     |
[INFO] [stdout] 381 | pub async fn open_long(
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_long` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:405:14
[INFO] [stdout]     |
[INFO] [stdout] 405 | pub async fn close_long(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_short` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:429:14
[INFO] [stdout]     |
[INFO] [stdout] 429 | pub async fn open_short(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_short` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:453:14
[INFO] [stdout]     |
[INFO] [stdout] 453 | pub async fn close_short(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_manual_swap` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:477:10
[INFO] [stdout]     |
[INFO] [stdout] 477 | async fn build_manual_swap(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1872:31
[INFO] [stdout]      |
[INFO] [stdout] 1872 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1873:34
[INFO] [stdout]      |
[INFO] [stdout] 1873 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1874:33
[INFO] [stdout]      |
[INFO] [stdout] 1874 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_usdc_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1875:39
[INFO] [stdout]      |
[INFO] [stdout] 1875 |         let mut reserved_usdc_total = 0u64;
[INFO] [stdout]      |                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1876:38
[INFO] [stdout]      |
[INFO] [stdout] 1876 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1877:29
[INFO] [stdout]      |
[INFO] [stdout] 1877 |         let mut free_usdc = 0u64;
[INFO] [stdout]      |                             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1878:28
[INFO] [stdout]      |
[INFO] [stdout] 1878 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2627:31
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2628:34
[INFO] [stdout]      |
[INFO] [stdout] 2628 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2629:33
[INFO] [stdout]      |
[INFO] [stdout] 2629 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2630:38
[INFO] [stdout]      |
[INFO] [stdout] 2630 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2631:28
[INFO] [stdout]      |
[INFO] [stdout] 2631 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `available_usdc`
[INFO] [stdout]     --> src/trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_usdc`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2277:34
[INFO] [stdout]      |
[INFO] [stdout] 2277 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2278:33
[INFO] [stdout]      |
[INFO] [stdout] 2278 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2280:38
[INFO] [stdout]      |
[INFO] [stdout] 2280 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2281:28
[INFO] [stdout]      |
[INFO] [stdout] 2281 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3025:34
[INFO] [stdout]      |
[INFO] [stdout] 3025 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3026:33
[INFO] [stdout]      |
[INFO] [stdout] 3026 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3027:38
[INFO] [stdout]      |
[INFO] [stdout] 3027 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3028:28
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1872:31
[INFO] [stdout]      |
[INFO] [stdout] 1872 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1873:34
[INFO] [stdout]      |
[INFO] [stdout] 1873 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1874:33
[INFO] [stdout]      |
[INFO] [stdout] 1874 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_usdc_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1875:39
[INFO] [stdout]      |
[INFO] [stdout] 1875 |         let mut reserved_usdc_total = 0u64;
[INFO] [stdout]      |                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1876:38
[INFO] [stdout]      |
[INFO] [stdout] 1876 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1877:29
[INFO] [stdout]      |
[INFO] [stdout] 1877 |         let mut free_usdc = 0u64;
[INFO] [stdout]      |                             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1878:28
[INFO] [stdout]      |
[INFO] [stdout] 1878 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TradeDb` is more private than the item `Trader::db`
[INFO] [stdout]   --> src/trade/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub db: TradeDb,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ field `Trader::db` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TradeDb` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/trade/mod.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_native_ix` is never used
[INFO] [stdout]    --> src/trade/mod.rs:841:8
[INFO] [stdout]     |
[INFO] [stdout] 833 | impl TokenProgramFlavor {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 841 |     fn sync_native_ix(&self, account: &Pubkey) -> Result<Instruction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_reqwest_error` is never used
[INFO] [stdout]     --> src/trade/mod.rs:1438:4
[INFO] [stdout]      |
[INFO] [stdout] 1438 | fn find_reqwest_error<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_orca_swap_error` is never used
[INFO] [stdout]     --> src/trade/mod.rs:1454:4
[INFO] [stdout]      |
[INFO] [stdout] 1454 | fn format_orca_swap_error(err: &(dyn std::error::Error + 'static)) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instructions` is never used
[INFO] [stdout]     --> src/trade/mod.rs:1530:10
[INFO] [stdout]      |
[INFO] [stdout] 1530 | async fn build_swap_instructions(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `open_long_on_pool`, `close_long_on_pool`, `open_short_on_pool`, and `close_short_on_pool` are never used
[INFO] [stdout]     --> src/trade/mod.rs:3292:18
[INFO] [stdout]      |
[INFO] [stdout] 1762 | impl Trader {
[INFO] [stdout]      | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 3292 |     pub async fn open_long_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3301 |     pub async fn close_long_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3305 |     pub async fn open_short_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3314 |     pub async fn close_short_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_BATCH_LIMIT` is never used
[INFO] [stdout]   --> src/trade/executor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const EVENT_BATCH_LIMIT: i64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `once` and `poll_ms` are never read
[INFO] [stdout]   --> src/trade/executor.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     once: bool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 35 |     poll_ms: u64,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env` is never used
[INFO] [stdout]   --> src/trade/executor.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn config_from_env() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_args` is never used
[INFO] [stdout]   --> src/trade/executor.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn parse_args() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/trade/executor.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn print_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_last_event_id` is never used
[INFO] [stdout]    --> src/trade/executor.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn get_last_event_id(conn: &Connection) -> Result<i64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_last_event_id` is never used
[INFO] [stdout]    --> src/trade/executor.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn set_last_event_id(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_events` is never used
[INFO] [stdout]    --> src/trade/executor.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn fetch_events(conn: &Connection, last_id: i64) -> Result<Vec<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polling` is never used
[INFO] [stdout]    --> src/trade/executor.rs:910:14
[INFO] [stdout]     |
[INFO] [stdout] 910 | pub async fn run_polling(cfg: Config) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1872:31
[INFO] [stdout]      |
[INFO] [stdout] 1872 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1873:34
[INFO] [stdout]      |
[INFO] [stdout] 1873 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1874:33
[INFO] [stdout]      |
[INFO] [stdout] 1874 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_usdc_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1875:39
[INFO] [stdout]      |
[INFO] [stdout] 1875 |         let mut reserved_usdc_total = 0u64;
[INFO] [stdout]      |                                       ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1876:38
[INFO] [stdout]      |
[INFO] [stdout] 1876 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1877:29
[INFO] [stdout]      |
[INFO] [stdout] 1877 |         let mut free_usdc = 0u64;
[INFO] [stdout]      |                             ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:1878:28
[INFO] [stdout]      |
[INFO] [stdout] 1878 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2627:31
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2628:34
[INFO] [stdout]      |
[INFO] [stdout] 2628 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2629:33
[INFO] [stdout]      |
[INFO] [stdout] 2629 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2630:38
[INFO] [stdout]      |
[INFO] [stdout] 2630 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2631:28
[INFO] [stdout]      |
[INFO] [stdout] 2631 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `available_usdc`
[INFO] [stdout]     --> src/trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_usdc`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2277:34
[INFO] [stdout]      |
[INFO] [stdout] 2277 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2278:33
[INFO] [stdout]      |
[INFO] [stdout] 2278 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2280:38
[INFO] [stdout]      |
[INFO] [stdout] 2280 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:2281:28
[INFO] [stdout]      |
[INFO] [stdout] 2281 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3025:34
[INFO] [stdout]      |
[INFO] [stdout] 3025 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3026:33
[INFO] [stdout]      |
[INFO] [stdout] 3026 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3027:38
[INFO] [stdout]      |
[INFO] [stdout] 3027 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/trade/mod.rs:3028:28
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `position_id` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2627:31
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         let mut position_id = 0i64;
[INFO] [stdout]      |                               ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2628:34
[INFO] [stdout]      |
[INFO] [stdout] 2628 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2629:33
[INFO] [stdout]      |
[INFO] [stdout] 2629 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2630:38
[INFO] [stdout]      |
[INFO] [stdout] 2630 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2631:28
[INFO] [stdout]      |
[INFO] [stdout] 2631 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `available_usdc`
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2279:13
[INFO] [stdout]      |
[INFO] [stdout] 2279 |         let mut available_usdc = 0u64;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_usdc`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2277:34
[INFO] [stdout]      |
[INFO] [stdout] 2277 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2278:33
[INFO] [stdout]      |
[INFO] [stdout] 2278 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2280:38
[INFO] [stdout]      |
[INFO] [stdout] 2280 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:2281:28
[INFO] [stdout]      |
[INFO] [stdout] 2281 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_usdc` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3025:34
[INFO] [stdout]      |
[INFO] [stdout] 3025 |         let mut effective_usdc = 0u64;
[INFO] [stdout]      |                                  ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `effective_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3026:33
[INFO] [stdout]      |
[INFO] [stdout] 3026 |         let mut effective_sol = 0u64;
[INFO] [stdout]      |                                 ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `reserved_sol_total` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3027:38
[INFO] [stdout]      |
[INFO] [stdout] 3027 |         let mut reserved_sol_total = 0u64;
[INFO] [stdout]      |                                      ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `free_sol` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:3028:28
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut free_sol = 0u64;
[INFO] [stdout]      |                            ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TradeDb` is more private than the item `Trader::db`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub db: TradeDb,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ field `Trader::db` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TradeDb` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `TradeDb` is more private than the item `Trader::db`
[INFO] [stdout]   --> src/trade/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub db: TradeDb,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ field `Trader::db` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `TradeDb` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/trade/mod.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WSOL_MINT` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const WSOL_MINT: &str = "So11111111111111111111111111111111111111112";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMULATION_FEE_LAMPORTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const SIMULATION_FEE_LAMPORTS: u64 = 5000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_PER_SEC` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const RPC_RATE_LIMIT_PER_SEC: usize = 9;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RATE_LIMIT_WINDOW` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:52:7
[INFO] [stdout]    |
[INFO] [stdout] 52 | const RPC_RATE_LIMIT_WINDOW: Duration = Duration::from_secs(1);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_ATTEMPTS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:54:7
[INFO] [stdout]    |
[INFO] [stdout] 54 | const GET_TRANSACTION_RETRY_ATTEMPTS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_TRANSACTION_RETRY_DELAY_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const GET_TRANSACTION_RETRY_DELAY_MS: u64 = 300;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Trader` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Trader {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeDb` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct TradeDb {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_db_str` is never used
[INFO] [stdout]   --> src/bin/../trade/mod.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl ExecMode {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 76 |     fn as_db_str(self) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RpcRateLimiter` is never constructed
[INFO] [stdout]   --> src/bin/../trade/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | struct RpcRateLimiter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `acquire` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl RpcRateLimiter {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  95 |     fn new(max_per_window: usize, window: Duration) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     async fn acquire(&self) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitedRpcSender` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct RateLimitedRpcSender {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `reconnect` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl RateLimitedRpcSender {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] 135 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn reconnect(&self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_rate_limited_rpc_client` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn build_rate_limited_rpc_client(url: &str, limiter: Arc<RpcRateLimiter>) -> RpcClient {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl TradeDb {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 180 |     fn new(path: &Path) -> Result<Self> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn open_conn(&self) -> Result<Connection> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn ensure_schema(&self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn ensure_positions_columns(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn now_ms() -> i64 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     fn insert_event(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn reserved_totals(conn: &Connection, payer: &Pubkey) -> Result<(u64, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn reserved_totals_excluding(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn get_sim_wallet(conn: &Connection, payer: &Pubkey) -> Result<Option<(u64, u64)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn upsert_sim_wallet(conn: &Connection, payer: &Pubkey, usdc: u64, sol: u64) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 364 |     async fn reconcile_pending(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     fn fail_position(&self, id: i64, err: &str, reason: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     fn mark_pending_retry(&self, id: i64, err: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 623 |     async fn finalize_open_confirmed(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     fn finalize_close_confirmed(&self, id: i64, side: &str, sig: Signature) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `token_program_for_mint_owner` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:814:4
[INFO] [stdout]     |
[INFO] [stdout] 814 | fn token_program_for_mint_owner(mint_owner: &Pubkey) -> Result<TokenProgramFlavor> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenProgramFlavor` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:828:6
[INFO] [stdout]     |
[INFO] [stdout] 828 | enum TokenProgramFlavor {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `program_id`, `sync_native_ix`, `close_account_ix`, `unpack_token_account`, `unpack_token_account_amount`, and `unpack_mint_decimals` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:834:8
[INFO] [stdout]     |
[INFO] [stdout] 833 | impl TokenProgramFlavor {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] 834 |     fn program_id(&self) -> Pubkey {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 841 |     fn sync_native_ix(&self, account: &Pubkey) -> Result<Instruction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |     fn close_account_ix(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 876 |     fn unpack_token_account(&self, data: &[u8]) -> Result<(Pubkey, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     fn unpack_token_account_amount(&self, data: &[u8]) -> Result<u64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 895 |     fn unpack_mint_decimals(&self, data: &[u8]) -> Result<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HttpRpc` is never constructed
[INFO] [stdout]    --> src/bin/../trade/mod.rs:911:8
[INFO] [stdout]     |
[INFO] [stdout] 911 | struct HttpRpc {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_transaction_json` are never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:918:8
[INFO] [stdout]     |
[INFO] [stdout] 917 | impl HttpRpc {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 918 |     fn new(url: String, limiter: Arc<RpcRateLimiter>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 926 |     async fn get_transaction_json(&self, signature: &Signature) -> Result<Value> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_get_transaction_json` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:962:10
[INFO] [stdout]     |
[INFO] [stdout] 962 | async fn try_get_transaction_json(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_pool_mints` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:990:10
[INFO] [stdout]     |
[INFO] [stdout] 990 | async fn resolve_pool_mints(rpc: &RpcClient, whirlpool: &Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mint_owner_program` is never used
[INFO] [stdout]    --> src/bin/../trade/mod.rs:999:10
[INFO] [stdout]     |
[INFO] [stdout] 999 | async fn mint_owner_program(rpc: &RpcClient, mint: &Pubkey) -> Result<Pubkey> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_mint_decimals` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1007:10
[INFO] [stdout]      |
[INFO] [stdout] 1007 | async fn load_mint_decimals(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_account_optional` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1019:10
[INFO] [stdout]      |
[INFO] [stdout] 1019 | async fn get_account_optional(rpc: &RpcClient, address: &Pubkey) -> Result<Option<Account>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_wsol_ata_is_safe_to_use_and_close` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1027:10
[INFO] [stdout]      |
[INFO] [stdout] 1027 | async fn ensure_wsol_ata_is_safe_to_use_and_close(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui_to_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1046:4
[INFO] [stdout]      |
[INFO] [stdout] 1046 | fn ui_to_amount(ui: &str, decimals: u8) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_token_accounts_by_owner` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1087:10
[INFO] [stdout]      |
[INFO] [stdout] 1087 | async fn sum_token_accounts_by_owner(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_effective_wallet_balances` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1123:10
[INFO] [stdout]      |
[INFO] [stdout] 1123 | async fn get_effective_wallet_balances(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_owner_token_accounts` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1149:10
[INFO] [stdout]      |
[INFO] [stdout] 1149 | async fn list_owner_token_accounts(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum_owner_mint_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1167:4
[INFO] [stdout]      |
[INFO] [stdout] 1167 | fn sum_owner_mint_delta(meta: &Value, owner: &Pubkey, mint: &Pubkey) -> Result<i128> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `owner_lamport_delta` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1210:4
[INFO] [stdout]      |
[INFO] [stdout] 1210 | fn owner_lamport_delta(meta: &Value, msg: &Value, owner: &Pubkey) -> Result<Option<i128>> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_transaction_with_fee` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1254:10
[INFO] [stdout]      |
[INFO] [stdout] 1254 | async fn build_transaction_with_fee(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `simulated` is never read
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1291:5
[INFO] [stdout]      |
[INFO] [stdout] 1289 | struct TxExecution {
[INFO] [stdout]      |        ----------- field in this struct
[INFO] [stdout] 1290 |     signature: Signature,
[INFO] [stdout] 1291 |     simulated: Option<RpcSimulateTransactionResult>,
[INFO] [stdout]      |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rent_budget_for_atas` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1422:10
[INFO] [stdout]      |
[INFO] [stdout] 1422 | async fn rent_budget_for_atas(rpc: &RpcClient, atas: &[Pubkey]) -> Result<u64> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_reqwest_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1438:4
[INFO] [stdout]      |
[INFO] [stdout] 1438 | fn find_reqwest_error<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_orca_swap_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1454:4
[INFO] [stdout]      |
[INFO] [stdout] 1454 | fn format_orca_swap_error(err: &(dyn std::error::Error + 'static)) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instructions` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1530:10
[INFO] [stdout]      |
[INFO] [stdout] 1530 | async fn build_swap_instructions(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_max_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1553:4
[INFO] [stdout]      |
[INFO] [stdout] 1553 | fn exact_out_max_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_out_est_in` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1560:4
[INFO] [stdout]      |
[INFO] [stdout] 1560 | fn exact_out_est_in(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_min_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1567:4
[INFO] [stdout]      |
[INFO] [stdout] 1567 | fn exact_in_min_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exact_in_est_out` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1574:4
[INFO] [stdout]      |
[INFO] [stdout] 1574 | fn exact_in_est_out(quote: &SwapQuote) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_simulation_addresses` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1581:4
[INFO] [stdout]      |
[INFO] [stdout] 1581 | fn build_simulation_addresses(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `post_balances_from_simulation` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1596:4
[INFO] [stdout]      |
[INFO] [stdout] 1596 | fn post_balances_from_simulation(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_native_ix` is never used
[INFO] [stdout]    --> src/trade/mod.rs:841:8
[INFO] [stdout]     |
[INFO] [stdout] 833 | impl TokenProgramFlavor {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 841 |     fn sync_native_ix(&self, account: &Pubkey) -> Result<Instruction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_pool_is_wsol_pair` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1639:4
[INFO] [stdout]      |
[INFO] [stdout] 1639 | fn ensure_pool_is_wsol_pair(mint_a: Pubkey, mint_b: Pubkey) -> Result<(Pubkey, Pubkey)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_to_i64` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1706:4
[INFO] [stdout]      |
[INFO] [stdout] 1706 | fn u64_to_i64(value: u64, label: &str) -> Result<i64> {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `checked_free_amount` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1710:4
[INFO] [stdout]      |
[INFO] [stdout] 1710 | fn checked_free_amount(effective: u64, reserved: u64, label: &str) -> Result<u64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_failed` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1718:4
[INFO] [stdout]      |
[INFO] [stdout] 1718 | fn mark_failed(db: &TradeDb, position_id: i64, stage: &str, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_exec_error` is never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1744:4
[INFO] [stdout]      |
[INFO] [stdout] 1744 | fn mark_exec_error(db: &TradeDb, position_id: i64, error: &str) -> Result<()> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_reqwest_error` is never used
[INFO] [stdout]     --> src/trade/mod.rs:1438:4
[INFO] [stdout]      |
[INFO] [stdout] 1438 | fn find_reqwest_error<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/bin/../trade/mod.rs:1763:12
[INFO] [stdout]      |
[INFO] [stdout] 1762 | impl Trader {
[INFO] [stdout]      | ----------- associated items in this implementation
[INFO] [stdout] 1763 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1784 |     pub async fn open_long(
[INFO] [stdout]      |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2179 |     pub async fn close_long(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2536 |     pub async fn open_short(
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2925 |     pub async fn close_short(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3292 |     pub async fn open_long_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3301 |     pub async fn close_long_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3305 |     pub async fn open_short_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3314 |     pub async fn close_short_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_orca_swap_error` is never used
[INFO] [stdout]     --> src/trade/mod.rs:1454:4
[INFO] [stdout]      |
[INFO] [stdout] 1454 | fn format_orca_swap_error(err: &(dyn std::error::Error + 'static)) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instructions` is never used
[INFO] [stdout]     --> src/trade/mod.rs:1530:10
[INFO] [stdout]      |
[INFO] [stdout] 1530 | async fn build_swap_instructions(
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRACKER_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const DEFAULT_TRACKER_DB: &str = "tracker.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const DEFAULT_TRADE_DB: &str = "trade.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PLAYERS_DB` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const DEFAULT_PLAYERS_DB: &str = "players.db";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POOL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DEFAULT_POOL: &str = "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE";
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_USDC_UI` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DEFAULT_USDC_UI: &str = "1";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SLIPPAGE_BPS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DEFAULT_SLIPPAGE_BPS: u16 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_POLL_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DEFAULT_POLL_MS: u64 = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_BATCH_LIMIT` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const EVENT_BATCH_LIMIT: i64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_TRADE_RPC_URL` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const DEFAULT_TRADE_RPC_URL: &str =
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Config {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrackerEvent` is never constructed
[INFO] [stdout]   --> src/bin/../trade/executor.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TrackerEvent {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn default_config() -> Config {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_config` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn validate_config(cfg: &Config) -> Result<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.69s
[INFO] [stdout] warning: function `config_from_env` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn config_from_env() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env_with_mode` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn config_from_env_with_mode(mode: trade::ExecMode) -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_args` is never used
[INFO] [stdout]   --> src/bin/../trade/executor.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn parse_args() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_one_usdc` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn is_one_usdc(raw: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn print_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn now_ms() -> i64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_db` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn open_db(path: &str) -> Result<Connection> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_trade_links_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn ensure_trade_links_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_players_schema` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:231:4
[INFO] [stdout]     |
[INFO] [stdout] 231 | fn ensure_players_schema(conn: &Connection) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_player_good` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn is_player_good(conn: &Connection, player: &str) -> Result<bool> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn get_last_event_id(conn: &Connection) -> Result<i64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_last_event_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn set_last_event_id(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_events` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn fetch_events(conn: &Connection, last_id: i64) -> Result<Vec<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:315:4
[INFO] [stdout]     |
[INFO] [stdout] 315 | fn find_entry_event(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_side` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:347:4
[INFO] [stdout]     |
[INFO] [stdout] 347 | fn compute_side(entry: &TrackerEvent) -> Result<&'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_profit_pct` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:361:4
[INFO] [stdout]     |
[INFO] [stdout] 361 | fn compute_profit_pct(side: &str, entry_price: f64, exit_price: f64) -> Result<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `side_human` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:372:4
[INFO] [stdout]     |
[INFO] [stdout] 372 | fn side_human(side: &str) -> &'static str {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `open_long_on_pool`, `close_long_on_pool`, `open_short_on_pool`, and `close_short_on_pool` are never used
[INFO] [stdout]     --> src/trade/mod.rs:3292:18
[INFO] [stdout]      |
[INFO] [stdout] 1762 | impl Trader {
[INFO] [stdout]      | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 3292 |     pub async fn open_long_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3301 |     pub async fn close_long_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3305 |     pub async fn open_short_on_pool(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3314 |     pub async fn close_short_on_pool(&self, position_id: i64) -> Result<Signature> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_base_url` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:380:4
[INFO] [stdout]     |
[INFO] [stdout] 380 | fn rpc_base_url(url: &str) -> &str {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVENT_BATCH_LIMIT` is never used
[INFO] [stdout]   --> src/trade/executor.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const EVENT_BATCH_LIMIT: i64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:384:10
[INFO] [stdout]     |
[INFO] [stdout] 384 | async fn open_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `once` and `poll_ms` are never read
[INFO] [stdout]   --> src/trade/executor.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     once: bool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 35 |     poll_ms: u64,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_from_env` is never used
[INFO] [stdout]   --> src/trade/executor.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn config_from_env() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_position` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:540:10
[INFO] [stdout]     |
[INFO] [stdout] 540 | async fn close_position(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_args` is never used
[INFO] [stdout]   --> src/trade/executor.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn parse_args() -> Result<Config> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_usage` is never used
[INFO] [stdout]    --> src/trade/executor.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn print_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_last_event_id` is never used
[INFO] [stdout]    --> src/trade/executor.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn get_last_event_id(conn: &Connection) -> Result<i64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_profit` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:682:4
[INFO] [stdout]     |
[INFO] [stdout] 682 | fn record_profit(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_last_event_id` is never used
[INFO] [stdout]    --> src/trade/executor.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn set_last_event_id(conn: &Connection, id: i64) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_events` is never used
[INFO] [stdout]    --> src/trade/executor.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn fetch_events(conn: &Connection, last_id: i64) -> Result<Vec<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polling` is never used
[INFO] [stdout]    --> src/trade/executor.rs:910:14
[INFO] [stdout]     |
[INFO] [stdout] 910 | pub async fn run_polling(cfg: Config) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_entry_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:746:10
[INFO] [stdout]     |
[INFO] [stdout] 746 | async fn handle_entry_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_target_event` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:782:10
[INFO] [stdout]     |
[INFO] [stdout] 782 | async fn handle_target_event(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_trader` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:876:4
[INFO] [stdout]     |
[INFO] [stdout] 876 | fn build_trader(cfg: &Config) -> Result<trade::Trader> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_event_by_id` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:885:4
[INFO] [stdout]     |
[INFO] [stdout] 885 | fn fetch_event_by_id(conn: &Connection, id: i64) -> Result<Option<TrackerEvent>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_polling` is never used
[INFO] [stdout]    --> src/bin/../trade/executor.rs:910:14
[INFO] [stdout]     |
[INFO] [stdout] 910 | pub async fn run_polling(cfg: Config) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_from_signals` is never used
[INFO] [stdout]     --> src/bin/../trade/executor.rs:1077:14
[INFO] [stdout]      |
[INFO] [stdout] 1077 | pub async fn run_from_signals(
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `action` are never read
[INFO] [stdout]  --> src/bin/../trade/signal.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct TradeSignal {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 3 |     pub id: i64,
[INFO] [stdout]   |         ^^
[INFO] [stdout] 4 |     pub action: String,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `TradeSignal` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RETRY_ATTEMPTS` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const RPC_RETRY_ATTEMPTS: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RPC_RETRY_DELAY_MS` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const RPC_RETRY_DELAY_MS: u64 = 200;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PoolData` is never constructed
[INFO] [stdout]   --> src/bin/../trade/swap.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct PoolData {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickSelection` is never constructed
[INFO] [stdout]   --> src/bin/../trade/swap.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TickSelection {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_rpc_request` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn log_rpc_request(method: &str, details: &str) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_rpc_error` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn log_rpc_error<E: std::fmt::Debug>(method: &str, details: &str, err: &E) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_get_account` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | async fn rpc_get_account(rpc: &RpcClient, address: &Pubkey, purpose: &str) -> Result<Account> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_get_multiple_accounts` is never used
[INFO] [stdout]   --> src/bin/../trade/swap.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | async fn rpc_get_multiple_accounts(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpc_get_epoch_info` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:108:10
[INFO] [stdout]     |
[INFO] [stdout] 108 | async fn rpc_get_epoch_info(rpc: &RpcClient, purpose: &str) -> Result<EpochInfo> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_pool` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:120:10
[INFO] [stdout]     |
[INFO] [stdout] 120 | async fn fetch_pool(rpc: &RpcClient, address: Pubkey) -> Result<PoolData> {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_tick_arrays` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | async fn derive_tick_arrays(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_tick` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:201:4
[INFO] [stdout]     |
[INFO] [stdout] 201 | fn empty_tick(start_tick_index: i32) -> TickArrayFacade {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_exact_in` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:208:10
[INFO] [stdout]     |
[INFO] [stdout] 208 | async fn quote_exact_in(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quote_exact_out` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 | async fn quote_exact_out(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_oracle_optional` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:292:10
[INFO] [stdout]     |
[INFO] [stdout] 292 | async fn fetch_oracle_optional(rpc: &RpcClient, pool: &PoolData) -> Result<Option<Oracle>> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_swap_instruction` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:301:4
[INFO] [stdout]     |
[INFO] [stdout] 301 | fn build_swap_instruction(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_transfer_fee` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:364:4
[INFO] [stdout]     |
[INFO] [stdout] 364 | fn extract_transfer_fee(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_long` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:381:14
[INFO] [stdout]     |
[INFO] [stdout] 381 | pub async fn open_long(
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_long` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:405:14
[INFO] [stdout]     |
[INFO] [stdout] 405 | pub async fn close_long(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_short` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:429:14
[INFO] [stdout]     |
[INFO] [stdout] 429 | pub async fn open_short(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_short` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:453:14
[INFO] [stdout]     |
[INFO] [stdout] 453 | pub async fn close_short(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_manual_swap` is never used
[INFO] [stdout]    --> src/bin/../trade/swap.rs:477:10
[INFO] [stdout]     |
[INFO] [stdout] 477 | async fn build_manual_swap(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "e708e845eb6a9130527124e5fe30fc5957a654a9ab39d2d1ae9f79c2d5ca4151", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e708e845eb6a9130527124e5fe30fc5957a654a9ab39d2d1ae9f79c2d5ca4151", kill_on_drop: false }`
[INFO] [stdout] e708e845eb6a9130527124e5fe30fc5957a654a9ab39d2d1ae9f79c2d5ca4151
