Skip to content
27 changes: 27 additions & 0 deletions bindgen/template/go.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,24 @@ func init() {
}
return result, nil
})
// Register vector decoder for {{.Name}}
bind.RegisterStructDecoder("vector<{{$.Package}}::{{$.Module}}::{{.Name}}>", func(data []byte) (interface{}, error) {
var temps []bcs{{.Name}}
_, err := mystenbcs.Unmarshal(data, &temps)
if err != nil {
return nil, err
}

results := make([]{{.Name}}, len(temps))
for i, temp := range temps {
result, err := convert{{.Name}}FromBCS(temp)
if err != nil {
return nil, fmt.Errorf("failed to convert element %d: %w", i, err)
}
results[i] = result
}
return results, nil
})
{{- else}}
bind.RegisterStructDecoder("{{$.Package}}::{{$.Module}}::{{.Name}}", func(data []byte) (interface{}, error) {
var result {{.Name}}
Expand All @@ -191,6 +209,15 @@ func init() {
}
return result, nil
})
// Register vector decoder for {{.Name}}
bind.RegisterStructDecoder("vector<{{$.Package}}::{{$.Module}}::{{.Name}}>", func(data []byte) (interface{}, error) {
var results []{{.Name}}
_, err := mystenbcs.Unmarshal(data, &results)
if err != nil {
return nil, err
}
return results, nil
})
{{- end}}
{{- end}}
}
Expand Down
8 changes: 8 additions & 0 deletions bindings/bind/bcs_decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,14 @@ func decodeBCSValue(data []byte, moveType string) (any, error) {

return result, nil

case "vector<u64>":
var result []uint64
if _, err := mystenbcs.Unmarshal(data, &result); err != nil {
return nil, err
}

return result, nil

case "vector<address>":
var result [][32]byte
if _, err := mystenbcs.Unmarshal(data, &result); err != nil {
Expand Down
225 changes: 225 additions & 0 deletions bindings/generated/ccip/ccip/fee_quoter/fee_quoter.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading