/* Options: Date: 2025-11-09 11:07:53 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://s4w2.api.bettor.cc //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: GetDrawDignostics.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/qry/rounds/draw/diagnostics") public class GetDrawDignostics : IReturn, Codable { public typealias Return = DrawDiagnostics public var id:String? required public init(){} } public class DrawDiagnostics : Codable { public var id:String? public var initializationInfo:Initialization? public var sequenceGenerationInfo:SequenceGeneration? public var bestFitFinderInfo:BestFitFinder? public var purgerInfo:Purger? public var duration:Int? public var stimulationResponses:[StimulationResponse]? public var localCodePot:LocalCodePotInfo? public var superWin:SuperWinInfo? public var happyHour:HappyHourInfo? public var reasoning:String? public var configuration:AccumulatorConfiguration? public var syphonInfo:SyphonInfo? required public init(){} } public class Ref : Codable { public var id:String? public var val:String? required public init(){} } public class Origin : Codable { public var application:BettingApp? public var ip:String? public var organization:RefEx? public var region:Ref? public var locationGroup:Ref? public var location:RefEx? public var device:RefEx? public var clerk:Ref? required public init(){} } public class Bet : Codable { public var id:String? public var ordinalOfAvailableRoundToAssignTo:Int? public var content:String? public var stake:Double? public var payload:[String:String]? required public init(){} } public class AccumulatorConfiguration : Codable { public var pools:RecordList? public var prevalentStake:Double? public var purgeThresholdModifier:Double? public var locationOptimizationLevel:LocationOptimizationLevel? public var jackPot5ThresholdInterval:ThresholdInterval? public var deviationCategorySpanInPct:Int? public var deviationCategoryThresholdAmount:Double? public var roundPoolCircuitBreakerThreshold:Double? public var lowWinCountAffinityInPct:Int? public var winCountOrderAffinity:RecordList? public var highRollerSettings:HighRollerSettings? public var overflowCoefficientPoolsToRound:Bool? public var antiSyphonProtectionOverride:Bool? public var fraudDetectionConfig:FraudDetectionConfiguration? public var debugConfig:DebugConfiguration? required public init(){} } public class Pool : Codable { public var id:Int? public var name:String? public var coefficient:Double? public var rtp:Double? public var threshold:Double? public var balance:Double? public var rrtp:Double? public var rBalance:Double? required public init(){} } public class Bet : Codable { public var id:String? public var slipId:String? public var bettor:Ref? public var origin:Origin? public var placedAt:Date? public var roundId:String? public var content:String? public var stake:Double? public var outcome:BetOutcome? public var win:Double? public var processingStatus:BetProcessingStatus? public var validity:BetValidity? public var results:[String:String]? public var payload:[String:String]? required public init(){} } public class RecordList : List { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class Pool : Codable { public var id:Int? public var name:String? public var rtp:Double? public var reserveRTP:Double? public var totalRTP:Double? required public init(){} } public enum LocationOptimizationLevel : Int, Codable { case None = 0 case Low = 1 case Medium = 2 case High = 3 } public class ThresholdInterval : Codable { public var start:Double? public var end:Double? required public init(){} } public class WinCountOrderProbability : Codable { public var order:SortingOrder? public var probability:Int? required public init(){} } public class HighRollerSettings : Codable { public var pools:RecordList? public var categoryThresholds:RecordList? required public init(){} } public class FraudDetectionConfiguration : Codable { public var antiSyphon:AntiSyphonConfig? required public init(){} } public class DebugConfiguration : Codable { public var logLocationStats:Bool? public var logBettorSats:Bool? required public init(){} } public class Pool : Codable { public var id:Int? public var name:String? public var treshold:Double? required public init(){} } public class SuperWinInfo : Codable { public var isActive:Bool? public var winner:SuperWinWinner? public var availableAmount:Double? public var allPrizesAwarded:Bool? required public init(){} } public class LocalCodePotInfo : Codable { public var isActive:Bool? public var current:CurrentRoundInfo? public var winners:[WinnerByCode]? required public init(){} } public class WinnerByCode : Codable { public var roundId:String? public var drawnAtUtc:Date? public var slipId:String? public var betId:String? public var code:String? public var amount:Double? public var origin:Origin? public var bettor:Ref? public var locationAddressOrBettorInfo:String? required public init(){} } public class Initialization : Codable { public var dataLoadDuration:Int? public var betsCollectionsCreationDuration:Int? public var combinationsOccuranceLookupInitializationDuration:Int? required public init(){} } public class SequenceGeneration : Codable { public var nrOfThreads:Int? public var nrOfResultsProbed:Int? public var duration:Int? public var avgSinglePassDuration:Int? required public init(){} } public class BestFitFinder : Codable { public var targetAmount:Double? public var awardedAmount:Double? public var deviation:Double? public var deviationPct:Double? public var sequenceResultType:String? public var isJackPot5Drawn:Bool? public var filteringPeriod:Int? public var winCountOrder:SortingOrder? public var minAmount:Double? public var maxAmount:Double? required public init(){} } public class Purger : Codable { public var prevalentStake:Double? public var poolPurger:String? public var qualifiedPools:[QualifiedPool]? required public init(){} } public class StimulationResponse : Codable { public var stimulationId:String? public var status:ResponseStatus? public var failureReason:String? public var slipId:String? public var betId:String? public var amountAwarded:Double? required public init(){} } public class SuperWinInfo : Codable { public var durationInMs:Int? required public init(){} } public class HappyHourInfo : Codable { public var isHappyHour:Bool? public var oddsModifier:Double? public var roundPoolBonusPct:Double? required public init(){} } public class SyphonInfo : Codable { public var bettors:[String:Syphon]? public var locations:[String:Syphon]? public var hasSyphons:Bool? public var totalSyphonsInRound:Int? required public init(){} } public class BettingApp : Codable { public var name:String? public var version:String? required public init(){} } public class RefEx : Ref { public var data:RecordDictionary? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case data } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) data = try container.decodeIfPresent(RecordDictionary.self, forKey: .data) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if data != nil { try container.encode(data, forKey: .data) } } } public enum SortingOrder : Int, Codable { case None = 0 case Ascending = 1 case Descending = 2 } public class PoolSettings : Codable { public var id:Int? public var name:String? public var isActive:Bool? public var contributionToRoundPoolPct:Double? public var caps:PoolCaps? required public init(){} } public class CategoryThreshold : Codable { public var category:StakeCategory? public var threshold:Double? required public init(){} } public class AntiSyphonConfig : Codable { public var combinationCountPerRoundThresholdPct:Double? public var excludedLocations:RecordList? public var includeRoundPctAsBettorSyphonCriteria:Bool? public var isActive:Bool? required public init(){} } public class RecordDictionary : List { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class CurrentRoundInfo : Codable { public var roundId:String? public var amount:Double? public var inertCode:String? required public init(){} } public class QualifiedPool : Codable { public var id:Int? public var name:String? public var coefficient:Double? public var availableAmount:Double? public var awardedAmount:Double? public var targetBet:Bet? required public init(){} } public class Syphon : Codable { public var id:String? public var name:String? public var type:SyphonType? public var nrOfCombinations:Int? required public init(){} } public class PoolCaps : Codable { public var plusCoef:Double? public var minusCoef:Double? public var maxAmountInPrevalentStakes:Double? required public init(){} } public enum StakeCategory : Int, Codable { case Pickerel = 0 case Fish = 1 case Salmon = 2 case Tuna = 3 case Shark = 4 case Whale = 5 case None = -1 } public class Bet : Codable { public var isFound:Bool? public var betId:String? public var slipId:String? public var combStake:String? required public init(){} } public enum SyphonType : Int, Codable { case Location = 0 case Bettor = 1 }