-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfactory.go
More file actions
96 lines (86 loc) · 2.38 KB
/
factory.go
File metadata and controls
96 lines (86 loc) · 2.38 KB
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
92
93
94
95
96
package mcms
import (
"context"
"fmt"
chainsel "github.com/smartcontractkit/chain-selectors"
"github.com/smartcontractkit/mcms/chainwrappers"
"github.com/smartcontractkit/mcms/sdk"
"github.com/smartcontractkit/mcms/sdk/aptos"
"github.com/smartcontractkit/mcms/sdk/evm"
"github.com/smartcontractkit/mcms/sdk/solana"
"github.com/smartcontractkit/mcms/sdk/sui"
"github.com/smartcontractkit/mcms/sdk/ton"
"github.com/smartcontractkit/mcms/types"
)
// newEncoder returns a new Encoder that can encode operations and metadata for the given chain.
// Additional arguments are used to configure the encoder.
func newEncoder(
csel types.ChainSelector, txCount uint64, overridePreviousRoot bool, isSim bool,
) (sdk.Encoder, error) {
family, err := types.GetChainSelectorFamily(csel)
if err != nil {
return nil, err
}
var encoder sdk.Encoder
switch family {
case chainsel.FamilyEVM:
encoder = evm.NewEncoder(
csel,
txCount,
overridePreviousRoot,
isSim,
)
case chainsel.FamilySolana:
encoder = solana.NewEncoder(
csel,
txCount,
overridePreviousRoot,
// isSim,
)
case chainsel.FamilyAptos:
encoder = aptos.NewEncoder(
csel,
txCount,
overridePreviousRoot,
)
case chainsel.FamilySui:
encoder = sui.NewEncoder(
csel,
txCount,
overridePreviousRoot,
)
case chainsel.FamilyTon:
encoder = ton.NewEncoder(
csel,
txCount,
overridePreviousRoot,
)
}
return encoder, nil
}
// newTimelockConverter a new TimelockConverter that can convert timelock proposals
// for the given chain. The metadata parameter is used to select the correct
// converter variant (e.g. curse_mcms on Aptos).
func newTimelockConverter(csel types.ChainSelector, metadata types.ChainMetadata) (sdk.TimelockConverter, error) {
return chainwrappers.BuildConverter(csel, metadata)
}
func operationIDFn(_ context.Context, csel types.ChainSelector) (sdk.OperationID, error) {
family, err := types.GetChainSelectorFamily(csel) //nolint:contextcheck //OPT-400
if err != nil {
return nil, err
}
switch family {
case chainsel.FamilyEVM:
return evm.OperationID, nil
case chainsel.FamilySolana:
return solana.OperationID, nil
case chainsel.FamilyAptos:
return aptos.OperationID, nil
case chainsel.FamilySui:
return sui.OperationID, nil
case chainsel.FamilyTon:
return ton.OperationID, nil
default:
return nil, fmt.Errorf("unsupported chain family %s", family)
}
}