/
types.ts
52 lines (45 loc) 路 1.37 KB
/
types.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
/*
* Copyright 漏 2019 Lisk Foundation
*
* See the LICENSE file at the top-level directory of this distribution
* for licensing information.
*
* Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation,
* no part of this software, including this file, may be copied, modified,
* propagated, or distributed except according to the terms contained in the
* LICENSE file.
*
* Removal or modification of this copyright notice is prohibited.
*/
export interface BlockRewardOptions {
readonly distance: number;
readonly rewardOffset: number;
readonly milestones: ReadonlyArray<bigint>;
}
export interface RawBlock {
header: Buffer;
transactions: ReadonlyArray<Buffer>;
assets: ReadonlyArray<Buffer>;
}
export interface DiffHistory {
code: string;
line: number;
}
export interface StateDiff {
readonly updated: Array<Readonly<UpdatedDiff>>;
readonly created: Array<Buffer>;
readonly deleted: Array<Readonly<UpdatedDiff>>;
}
export interface UpdatedDiff {
readonly key: Buffer;
readonly value: Buffer;
}
type Primitive = string | number | bigint | boolean | null | undefined;
type Replaced<T, TReplace, TWith, TKeep = Primitive> = T extends TReplace | TKeep
? T extends TReplace
? TWith | Exclude<T, TReplace>
: T
: {
[P in keyof T]: Replaced<T[P], TReplace, TWith, TKeep>;
};
export type JSONObject<T> = Replaced<T, bigint | Buffer, string>;