from conio_sdk.ioc import ioc_bithustler, ioc_bitlurker, ioc_trading, ioc_bitcoin_wallet, ioc_vault
from conio_sdk.ioc.vo import wallet_withdrawals_ioc
from conio_sdk.services.conio.sdk.crypto_proof.crypto_proof_verification_strategy import \
    CompositeCryptoProofVerificationStrategy
from conio_sdk.services.conio.sdk.crypto_proof.expiry_crypto_proof_verification_strategy import \
    ExpiryCryptoProofVerificationStrategy
from conio_sdk.services.conio.sdk.crypto_proof.rsa_crypto_proof_verification_strategy import \
    RSACryptoProofVerificationStrategy
from conio_sdk.services.conio.sdk.trading_vo_services import TradingVOServices
from etc import settings


trading_vo_services = TradingVOServices(
    ioc_bitlurker.bitlurker_client_without_speed_forcing,
    ioc_bithustler.bithustler_client,
    ioc_trading.trading_service,
    ioc_bitcoin_wallet.bitcoin_wallet_service,
    ioc_vault.vault_client,
    CompositeCryptoProofVerificationStrategy(
        ExpiryCryptoProofVerificationStrategy(),
        RSACryptoProofVerificationStrategy(
            *settings.SIGNUP_PUBLIC_KEYS
        )
    ),
    settings.FAKE_BTC_ADDRESS,
    settings.VAULT_RSA_REFERENCE_KEY_ID,
    settings.MAX_WAIT_TIME_TO_CHARGED_BIDS_MSECS,
    wallet_withdrawals_ioc.wallet_withdrawals_vo_service
)
