metafide-surge
Version:
Metafide Surge Game Computation
106 lines (93 loc) • 2.17 kB
text/typescript
export interface BaseGameData {
gid: number;
t1: number;
t2: number;
t3: number;
st: string;
ha: number | null;
la: number | null;
oa: number | null;
ca: number | null;
}
export type RangeGame = BaseGameData;
export interface SpotGame extends BaseGameData {
ai: number | null;
}
export interface BasePlayerData {
gid: number;
c: string;
a: string;
f: number;
cm: boolean;
t: string | number;
w: number;
r: number;
pw: string;
win: boolean;
tx?: string;
}
export interface RangePlayer extends BasePlayerData {
id: string;
hp: number;
lp: number;
cmt: string | null;
p: number;
ex: boolean;
ex_ha: number | null;
ex_la: number | null;
ex_t: number | null;
}
export interface SpotPlayer extends BasePlayerData {
id: number;
sp: number;
cmt: number | null;
txid?: string;
}
export type SpotVarianceInput = {
actual_price: number;
abs_spot_var: number;
token_milliseconds: number;
share_tkm_to_var: number;
sum_share_tkm_to_var: number;
};
export type RangeVarianceInput = {
high_actual: number;
low_actual: number;
total_variance: number;
sum_total_variance: number;
};
export type SpotPlayerVarianceResult = SpotPlayer & {
varianceInput: SpotVarianceInput;
};
export type RangePlayerVarianceResult = RangePlayer & {
varianceInput: RangeVarianceInput;
};
export interface PotDistribution {
total_pot: number;
metafide_rake: number;
streak_pot_5: number;
streak_pot_10: number;
streak_pot_25: number;
daily_reward_pot: number;
monthly_reward_pot: number;
burn: number;
winning_pot: number;
range_rake?: number;
}
export interface AllocationPercentages {
metafide_rake: number;
streak_pot_5: number;
streak_pot_10: number;
streak_pot_25: number;
daily_reward_pot: number;
monthly_reward_pot: number;
burn: number;
range_rake?: number;
}
export interface ComputedData {
players: (RangePlayer | SpotPlayer)[]; // List of players with computed winnings and returns
streak: {
winnings: (RangePlayer | SpotPlayer)[]; // Top players by total winnings
returns: (RangePlayer | SpotPlayer)[]; // Top players by percent return
};
}