-
Notifications
You must be signed in to change notification settings - Fork 1
/
origination.go
83 lines (69 loc) · 3.02 KB
/
origination.go
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
package proto_015_PtLimaPt
import (
"math/big"
tz "github.com/ecadlabs/gotez/v2"
"github.com/ecadlabs/gotez/v2/encoding"
"github.com/ecadlabs/gotez/v2/protocol/core"
"github.com/ecadlabs/gotez/v2/protocol/proto_012_Psithaca"
"github.com/ecadlabs/gotez/v2/protocol/proto_012_Psithaca/lazy"
)
type Origination = proto_012_Psithaca.Origination
type Script = proto_012_Psithaca.Script
type OriginationResultContents struct {
BalanceUpdates
OriginatedContracts []core.OriginatedContractID `tz:"dyn" json:"originated_contracts"`
ConsumedMilligas tz.BigUint `json:"consumed_milligas"`
StorageSize tz.BigInt `json:"storage_size"`
PaidStorageSizeDiff tz.BigInt `json:"paid_storage_size_diff"`
LazyStorageDiff tz.Option[lazy.StorageDiff] `json:"lazy_storage_diff"`
}
func (r *OriginationResultContents) GetConsumedMilligas() tz.BigUint { return r.ConsumedMilligas }
func (r *OriginationResultContents) GetStorageSize() tz.BigInt { return r.StorageSize }
func (r *OriginationResultContents) GetPaidStorageSizeDiff() tz.BigInt { return r.PaidStorageSizeDiff }
func (r *OriginationResultContents) EstimateStorageSize(constants core.Constants) *big.Int {
x := r.PaidStorageSizeDiff.Int()
x.Add(x, big.NewInt(int64(constants.GetOriginationSize())))
return x
}
//json:kind=OperationKind()
type OriginationSuccessfulManagerResult struct {
core.OperationResultApplied[*OriginationResultContents]
}
func (*OriginationSuccessfulManagerResult) OperationKind() string { return "origination" }
type OriginationResult interface {
core.ManagerOperationResult
}
func init() {
encoding.RegisterEnum(&encoding.Enum[OriginationResult]{
Variants: encoding.Variants[OriginationResult]{
0: (*core.OperationResultApplied[*OriginationResultContents])(nil),
1: (*core.OperationResultFailed)(nil),
2: (*core.OperationResultSkipped)(nil),
3: (*core.OperationResultBacktracked[*OriginationResultContents])(nil),
},
})
}
//json:kind=OperationKind()
type OriginationContentsAndResult struct {
Origination
Metadata ManagerMetadata[OriginationResult] `json:"metadata"`
}
func (*OriginationContentsAndResult) OperationContentsAndResult() {}
func (op *OriginationContentsAndResult) GetMetadata() any {
return &op.Metadata
}
//json:kind=OperationKind()
type OriginationInternalOperationResult struct {
Source core.TransactionDestination `json:"source"`
Nonce uint16 `json:"nonce"`
Balance tz.BigUint `json:"balance"`
Delegate tz.Option[tz.PublicKeyHash] `json:"delegate"`
Script Script `json:"script"`
Result OriginationResult `json:"result"`
}
var _ core.InternalOperationResult = (*OriginationInternalOperationResult)(nil)
func (r *OriginationInternalOperationResult) GetSource() core.TransactionDestination { return r.Source }
func (r *OriginationInternalOperationResult) GetResult() core.ManagerOperationResult {
return r.Result
}
func (*OriginationInternalOperationResult) OperationKind() string { return "origination" }