/* Options: Date: 2026-11-07 04:17:01 Version: 10.42 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://s4w1.api.bettor.webhop.biz //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: GetAccumulatorConfig.* //ExcludeTypes: //DefaultImports: serde::{Deserialize, Serialize},serde_json::Value,std::collections::HashMap */ #![allow( dead_code, non_camel_case_types, non_snake_case, clippy::upper_case_acronyms )] use serde::{Deserialize, Serialize}; use serde_json::Value; use servicestack::*; use std::collections::HashMap; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct Ref { pub id: String, pub val: String, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct Pool { pub id: i32, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, pub treshold: f64, } #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] #[repr(i32)] pub enum LocationOptimizationLevel { #[default] None = 0, Low = 1, Medium = 2, High = 3, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct ThresholdInterval { pub start: f64, pub end: f64, } #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] #[repr(i32)] pub enum SortingOrder { #[default] None = 0, Ascending = 1, Descending = 2, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct WinCountOrderProbability { pub order: SortingOrder, pub probability: i32, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct PoolCaps { #[serde(rename = "plusCoef")] pub plus_coef: f64, #[serde(rename = "minusCoef")] pub minus_coef: f64, #[serde(rename = "maxAmountInPrevalentStakes")] pub max_amount_in_prevalent_stakes: f64, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct PoolSettings { pub id: i32, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, #[serde(rename = "isActive")] pub is_active: bool, #[serde(rename = "contributionToRoundPoolPct")] pub contribution_to_round_pool_pct: f64, #[serde(default, skip_serializing_if = "Option::is_none")] pub caps: Option, } #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] #[repr(i32)] pub enum StakeCategory { #[default] Pickerel = 0, Fish = 1, Salmon = 2, Tuna = 3, Shark = 4, Whale = 5, None = -1, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct CategoryThreshold { pub category: StakeCategory, pub threshold: f64, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct HighRollerSettings { #[serde(default, skip_serializing_if = "Option::is_none")] pub pools: Option, #[serde(rename = "categoryThresholds")] #[serde(default, skip_serializing_if = "Option::is_none")] pub category_thresholds: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct SyphonBlacklists { #[serde(default, skip_serializing_if = "Option::is_none")] pub locations: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub players: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct AntiSyphonConfig { #[serde(rename = "combinationCountPerRoundThresholdPct")] pub combination_count_per_round_threshold_pct: f64, #[serde(rename = "excludedLocations")] #[serde(default, skip_serializing_if = "Option::is_none")] pub excluded_locations: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub blacklists: Option, #[serde(rename = "includeRoundPctAsBettorSyphonCriteria")] pub include_round_pct_as_bettor_syphon_criteria: bool, #[serde(rename = "isActive")] pub is_active: bool, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct FraudDetectionConfiguration { #[serde(rename = "antiSyphon")] #[serde(default, skip_serializing_if = "Option::is_none")] pub anti_syphon: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct DebugConfiguration { #[serde(rename = "logLocationStats")] pub log_location_stats: bool, #[serde(rename = "logBettorStats")] pub log_bettor_stats: bool, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct JP5WinnerCooldownPolicyConfig { #[serde(rename = "isActive")] pub is_active: bool, #[serde(rename = "cooldownIntervalInDays")] pub cooldown_interval_in_days: i32, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct AccumulatorConfiguration { #[serde(flatten)] pub accumulator_configuration: AccumulatorConfiguration, #[serde(default, skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(rename = "updatedAt")] pub updated_at: String, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct AccumulatorConfiguration { #[serde(default, skip_serializing_if = "Option::is_none")] pub pools: Option, #[serde(rename = "prevalentStake")] pub prevalent_stake: f64, #[serde(rename = "purgeThresholdModifier")] pub purge_threshold_modifier: f64, #[serde(rename = "locationOptimizationLevel")] pub location_optimization_level: LocationOptimizationLevel, #[serde(rename = "jackPot5ThresholdInterval")] #[serde(default, skip_serializing_if = "Option::is_none")] pub jack_pot5_threshold_interval: Option, #[serde(rename = "deviationCategorySpanInPct")] pub deviation_category_span_in_pct: i32, #[serde(rename = "deviationCategoryThresholdAmount")] pub deviation_category_threshold_amount: f64, #[serde(rename = "roundPoolCircuitBreakerThreshold")] pub round_pool_circuit_breaker_threshold: f64, #[serde(rename = "lowWinCountAffinityInPct")] pub low_win_count_affinity_in_pct: i32, #[serde(rename = "winCountOrderAffinity")] #[serde(default, skip_serializing_if = "Option::is_none")] pub win_count_order_affinity: Option, #[serde(rename = "highRollerSettings")] #[serde(default, skip_serializing_if = "Option::is_none")] pub high_roller_settings: Option, #[serde(rename = "overflowCoefficientPoolsToRound")] pub overflow_coefficient_pools_to_round: bool, #[serde(rename = "antiSyphonProtectionOverride")] pub anti_syphon_protection_override: bool, #[serde(rename = "fraudDetectionConfig")] #[serde(default, skip_serializing_if = "Option::is_none")] pub fraud_detection_config: Option, #[serde(rename = "debugConfig")] #[serde(default, skip_serializing_if = "Option::is_none")] pub debug_config: Option, #[serde(rename = "jP5WinnerCooldownPolicy")] #[serde(default, skip_serializing_if = "Option::is_none")] pub j_p5_winner_cooldown_policy: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct Pool { pub id: i32, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, pub coefficient: f64, pub rtp: f64, pub threshold: f64, pub balance: f64, pub rrtp: f64, #[serde(rename = "rBalance")] pub r_balance: f64, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct RecordList(pub Vec); #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct Pool { pub id: i32, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, pub rtp: f64, #[serde(rename = "reserveRTP")] pub reserve_r_t_p: f64, #[serde(rename = "totalRTP")] pub total_r_t_p: f64, } // Route("/qry/config/accumulator") #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct GetAccumulatorConfig {} impl IRequest for GetAccumulatorConfig { const NAME: &'static str = "GetAccumulatorConfig"; const VERB: &'static str = "POST"; } impl IReturn for GetAccumulatorConfig { type Response = AccumulatorConfiguration; }