-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtypes.ts
91 lines (81 loc) · 1.66 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
export type Environment = Pretty<Env>
export interface Token {
address: string
name: string
symbol: string
chainId: number
decimals: number
logoURI: string
}
export type Chain =
| 'gnosis'
| 'polygon'
| 'optimism'
| 'ethereum'
| 'celo'
| 'moonbeam'
| 'avalanche'
| 'fantom'
| 'bsc'
| 'arbitrum'
| 'harmony'
export type UnsupportedChain =
/**
* but soon
*/
| 'sepolia'
| 'polygonMumbai'
| 'moonriver'
| 'evmos'
| 'avalancheFuji'
| 'baseGoerli'
| 'optimismGoerli'
| 'fantomTestnet'
| 'centoTestnet'
| 'arbitrumNova'
| 'bitorrnet'
| 'cento'
| 'arbitrumGoerli'
| 'aurora'
| 'goerli'
export type RPC_Response<T = string> = {
jsonrpc: '2.0'
id: number | null
error?: { code: number; message: string }
result: T
}
export type Pretty<T> = {
[K in keyof T]: T[K]
} & {}
export type Truthy<T> = Pick<
T,
{
[K in keyof T]: T[K] extends undefined | null ? never : K
}[keyof T]
>
export type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }
// XOR - One or the other, but not both
export type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U
// AtLeastOnePropertyOf - One or more of the properties
export type AtLeastOnePropertyOf<T> = {
[K in keyof T]: Pick<T, K> & Partial<Record<Exclude<keyof T, K>, undefined>> extends infer U
? { [P in keyof U]: U[P] }
: never
}[keyof T]
export type AlmostAny =
| string
| number
| bigint
| boolean
| Uint8Array
| Int8Array
| Uint8ClampedArray
| Int16Array
| Uint16Array
| Int32Array
| Uint32Array
| Float32Array
| Float64Array
| BigInt64Array
| BigUint64Array
| Record<string, never>