-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathjoystream.ts
57 lines (47 loc) · 2.25 KB
/
joystream.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import {SubstrateEvent} from "@subql/types";
import {handleNewEra, handleNewSession} from "./common";
import {createRewardCurveConfig, CustomRelaychainRewardCalculator} from "./rewards/Relaychain";
import {ValidatorStakingRewardCalculator} from "./rewards/ValidatorStakingRewardCalculator";
import {ValidatorEraInfoDataSource} from "./era/ValidatorEraInfoDataSource";
import {EraInfoDataSource} from "./era/EraInfoDataSource";
import {Codec} from "@polkadot/types/types";
import {INumber} from "@polkadot/types-codec/types/interfaces";
import {handleRelaychainStakingReward, handleRelaychainStakingSlash} from "./rewards/history/relaychain";
const JOYSTREAM_GENESIS = "0x6b5e488e0fa8f9821110d5c13f4c468abcd43ce5e297e62b34c53c3346465956"
const DIRECT_STAKING_TYPE = "relaychain"
export async function JoystreamRewardCalculator(eraInfoDataSource: EraInfoDataSource): Promise<ValidatorStakingRewardCalculator> {
const config = await createRewardCurveConfig({
maxInflation : 0.03,
minInflation : 0.007,
})
return CustomRelaychainRewardCalculator(eraInfoDataSource, config)
}
export async function handleJoystreamNewEra(_: SubstrateEvent): Promise<void> {
let validatorEraInfoDataSource = new ValidatorEraInfoDataSource();
await handleNewEra(
validatorEraInfoDataSource,
await JoystreamRewardCalculator(validatorEraInfoDataSource),
JOYSTREAM_GENESIS,
DIRECT_STAKING_TYPE
)
}
export async function handleJoystreamNewSession(_: SubstrateEvent): Promise<void> {
let validatorEraInfoDataSource = new ValidatorEraInfoDataSource();
let mainRewardCalculator = await JoystreamRewardCalculator(validatorEraInfoDataSource)
await handleNewSession(
validatorEraInfoDataSource,
await mainRewardCalculator,
JOYSTREAM_GENESIS,
DIRECT_STAKING_TYPE
)
}
export async function handleJoystreamStakingReward(
event: SubstrateEvent<[accountId: Codec, reward: INumber]>,
): Promise<void> {
await handleRelaychainStakingReward(event, JOYSTREAM_GENESIS, DIRECT_STAKING_TYPE)
}
export async function handleJoystreamStakingSlash(
event: SubstrateEvent<[account: Codec, slash: INumber]>,
): Promise<void> {
await handleRelaychainStakingSlash(event, JOYSTREAM_GENESIS, DIRECT_STAKING_TYPE)
}