import { OddType, LBType, TimeType, OddFormat, PivotBias, PivotType, StringMap, IBetEvent, IBetRecord, IBetEventState, IBetMatch, PartitionKey } from "@jayesol/jayeson.lib.record"; import { IndexedSnapshot } from "./data_structure"; export interface ObjectMap { [index: string]: T; } export interface Aggregatable { aggregateInsert(t: T): any; aggregateUpdate(t: T): any; aggregateDelete(t: T): boolean; isEmpty(): boolean; } export interface Buildable { build(): T; } export interface Mergeable { merge(t: T): any; } export interface ParentOf { insertChild(t: T): string; updateChild(t: T): any; deleteChild(t: T): string; } export interface IIndexedSnapshotBuilder extends ParentOf, Buildable { reset(key: PartitionKey): IIndexedSnapshotBuilder; markPartitionAsUpdated(key: PartitionKey, time?: number): any; replaceMatch(build: IBetMatch): any; } export interface IBetMatchBuilder extends Aggregatable, ParentOf, Buildable { replaceEvent(evt: IBetEvent): any; reset(key: PartitionKey): IBetMatchBuilder; } export interface IBetEventBuilder extends Aggregatable, ParentOf, Buildable { reset(key: PartitionKey): any; } export interface IBetEventStateBuilder extends Mergeable, Buildable { } export interface IBetRecordBuilder extends Mergeable, Buildable { } export declare class Const { static readonly AGGREGATE_KEY: string; static readonly SEPARATOR: string; static generateKey(rec: IBetRecord): string; } export declare abstract class B2RecordBuilder implements IBetRecordBuilder { protected _eventId: string; protected _matchId: string; protected _id: number; protected _oddType: OddType; protected _lbType: LBType; protected _timetype: TimeType; protected _sportbook: string; protected _meta: StringMap; protected _oddFormat: OddFormat; protected _rateOver: number; protected _rateUnder: number; protected _rateEqual: number; protected _pivotValue: number; protected _pivotType: PivotType; protected _pivotBias: PivotBias; protected _rateOverId: string; protected _rateUnderId: string; protected _rateEqualId: string; protected _isSwapped: boolean; constructor(rec: IBetRecord); eventId(): string; matchId(): string; id(): number; oddType(): OddType; lbType(): LBType; timetype(): TimeType; sportbook(): string; meta(): StringMap; oddFormat(): OddFormat; rateOver(): number; rateUnder(): number; rateEqual(): number; pivotValue(): number; pivotType(): PivotType; pivotBias(): PivotBias; rateOverId(): string; rateUnderId(): string; rateEqualId(): string; isSwapped(): boolean; setEventId(eventId: string): void; setMatchId(matchId: string): void; setId(id: number): void; setOddType(oddType: OddType): void; setLbType(lbType: LBType): void; setTimeType(timetype: TimeType): void; setSportbook(sportbook: string): void; setMeta(meta: StringMap): void; setOddFormat(oddFormat: OddFormat): void; setRateOver(rateOver: number): void; setRateUnder(rateUnder: number): void; setRateEqual(rateEqual: number): void; setPivotValue(pivotValue: number): void; setPivotType(pivotType: PivotType): void; setPivotBias(pivotBias: PivotBias): void; setRateOverId(rateOverId: string): void; setRateUnderId(rateUnderId: string): void; setRateEqualId(rateEqualId: string): void; setSwapped(isSwapped: boolean): void; build(): IBetRecord; merge(rec: IBetRecord): void; mergeFrom(record: IBetRecord): void; } /** * TODO: * Fix use SoccerMatch interface instead of * Implementation to check type */ export declare class BuilderProvider { static getMatchBuilder(match: IBetMatch): IBetMatchBuilder; static getEventBuilder(event: IBetEvent): IBetEventBuilder; static getRecordBuilder(record: IBetRecord): IBetRecordBuilder; static getEventStateBuilder(state: IBetEventState): IBetEventStateBuilder; static getSnapshotBuilder(parentSs: IndexedSnapshot): IIndexedSnapshotBuilder; }