-
Notifications
You must be signed in to change notification settings - Fork 0
/
chain.ts
67 lines (64 loc) · 1.51 KB
/
chain.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
/**
* Almost EVM-based chains are available here: https://chainlist.wtf/
* Other unsupported chains are derived by its hash (../genchain.ts)
*/
import { Curve } from './curve'
import { GroupChain } from './types'
export type ChainParams = {
name: string
alias?: string
chainId: string
networkId?: string
curve: Curve
icon: string
logo?: string
group: GroupChain
isMainnet: boolean
getAddress: (pubkey: Uint8Array) => string
endpoint: Endpoint
}
export type RpcProvider = {
ankr?: string
}
export type Endpoint = {
https: string
wss?: string
}
export class Chain {
public readonly name: string
public readonly alias: string
public readonly chainId: string
public readonly networkId: string
public readonly curve: Curve
public readonly icon: string
public readonly logo: string
public readonly group: GroupChain
public readonly getAddress: (pubkey: Uint8Array) => string
public readonly isMainnet: boolean
public readonly endpoint: Endpoint
constructor({
name,
alias,
chainId,
networkId,
curve,
icon,
logo,
group,
getAddress,
isMainnet,
endpoint,
}: ChainParams) {
this.name = name
this.alias = alias || name
this.chainId = chainId
this.networkId = networkId || chainId
this.curve = curve
this.icon = icon
this.logo = logo || icon
this.group = group
this.getAddress = getAddress
this.isMainnet = isMainnet
this.endpoint = endpoint
}
}