From e3e02c6008733388823969cfae56bf96370dc568 Mon Sep 17 00:00:00 2001 From: Quint Daenen Date: Fri, 14 Jun 2024 15:07:38 +0200 Subject: [PATCH] Add ledger client dataprovider. --- Makefile | 1 + clients/ledger/client_test.go | 13 + clients/ledger/dataprovider.go | 139 + clients/ledger/dataprovider_test.go | 47 + clients/ledger/proto.go | 4 + clients/ledger/proto/v1/ledger.pb.go | 4339 +++++++++++++++++++++++++ clients/ledger/testdata/ledger.proto | 333 ++ clients/registry/proto/v1/local.pb.go | 155 +- clients/registry/proto/v1/node.pb.go | 6 +- 9 files changed, 4956 insertions(+), 81 deletions(-) create mode 100644 clients/ledger/client_test.go create mode 100644 clients/ledger/dataprovider.go create mode 100644 clients/ledger/dataprovider_test.go create mode 100644 clients/ledger/proto.go create mode 100644 clients/ledger/proto/v1/ledger.pb.go create mode 100644 clients/ledger/testdata/ledger.proto diff --git a/Makefile b/Makefile index c9e43ac..842ac93 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ test-cover: gen: cd candid && go generate cd pocketic && go generate + cd clients/ledger && go generate cd clients/registry && go generate gen-ic: diff --git a/clients/ledger/client_test.go b/clients/ledger/client_test.go new file mode 100644 index 0000000..f74d1e5 --- /dev/null +++ b/clients/ledger/client_test.go @@ -0,0 +1,13 @@ +package ledger_test + +import ( + "os" + "testing" +) + +func checkEnabled(t *testing.T) { + // The reason for this is that the tests are very slow. + if os.Getenv("LEDGER_TEST_ENABLE") != "true" { + t.Skip("Skipping registry tests. Set LEDGER_TEST_ENABLE=true to enable.") + } +} diff --git a/clients/ledger/dataprovider.go b/clients/ledger/dataprovider.go new file mode 100644 index 0000000..3a45b6f --- /dev/null +++ b/clients/ledger/dataprovider.go @@ -0,0 +1,139 @@ +package ledger + +import ( + "fmt" + "github.com/aviate-labs/agent-go" + v1 "github.com/aviate-labs/agent-go/clients/ledger/proto/v1" + "github.com/aviate-labs/agent-go/ic" + "github.com/aviate-labs/agent-go/principal" +) + +const MaxBlocksPerRequest = 2000 + +type BlockIndex uint64 + +type DataProvider struct { + a *agent.Agent +} + +func NewDataProvider() (*DataProvider, error) { + a, err := agent.New(agent.DefaultConfig) + if err != nil { + return nil, fmt.Errorf("failed to create agent: %w", err) + } + return &DataProvider{a: a}, nil +} + +func (d DataProvider) GetArchiveIndex() ([]*v1.ArchiveIndexEntry, error) { + var resp v1.ArchiveIndexResponse + if err := d.a.QueryProto( + ic.LEDGER_PRINCIPAL, + "get_archive_index_pb", + nil, + &resp, + ); err != nil { + return nil, fmt.Errorf("failed to get archive index: %w", err) + } + return resp.Entries, nil +} + +func (d DataProvider) GetRawBlock(height BlockIndex) (*v1.EncodedBlock, error) { + var resp v1.BlockResponse + if err := d.a.QueryProto( + ic.LEDGER_PRINCIPAL, + "block_pb", + &v1.BlockRequest{ + BlockHeight: uint64(height), + }, + &resp, + ); err != nil { + return nil, fmt.Errorf("failed to get block: %w", err) + } + switch blockResponse := resp.BlockContent.(type) { + case *v1.BlockResponse_Block: + return blockResponse.Block, nil + case *v1.BlockResponse_CanisterId: + archiveCanisterID := principal.Principal{Raw: blockResponse.CanisterId.SerializedId} + var archiveResp v1.BlockResponse + if err := d.a.QueryProto( + archiveCanisterID, + "get_block_pb", + &v1.BlockRequest{ + BlockHeight: uint64(height), + }, + &archiveResp, + ); err != nil { + return nil, fmt.Errorf("failed to get blocks: %w", err) + } + // Will never return a CanisterId block. + return archiveResp.GetBlock(), nil + default: + return nil, fmt.Errorf("unexpected block content type: %T", blockResponse) + } +} + +func (d DataProvider) GetRawBlocks(start, end BlockIndex) ([]*v1.EncodedBlock, error) { + if end-start < 2000 { + blocks, err := d.GetRawBlocksRange(ic.LEDGER_PRINCIPAL, start, end) + if err == nil { + return blocks, nil + } + } + archives, err := d.GetArchiveIndex() + if err != nil { + return nil, fmt.Errorf("failed to get archive index: %w", err) + } + var blocks []*v1.EncodedBlock + for _, archive := range archives { + if archive.HeightTo < uint64(start) || uint64(end) < archive.HeightFrom { + continue + } + for start < min(BlockIndex(archive.HeightTo), end) { + archiveEnd := min(end, BlockIndex(archive.HeightTo), start+MaxBlocksPerRequest) + archiveBlocks, err := d.GetRawBlocksRange(principal.Principal{Raw: archive.CanisterId.SerializedId}, start, archiveEnd) + if err != nil { + return nil, fmt.Errorf("failed to get archive blocks: %w", err) + } + blocks = append(blocks, archiveBlocks...) + start += BlockIndex(len(archiveBlocks)) + } + } + return blocks, nil +} + +func (d DataProvider) GetRawBlocksRange(canisterID principal.Principal, start, end BlockIndex) ([]*v1.EncodedBlock, error) { + var resp v1.GetBlocksResponse + if err := d.a.QueryProto( + canisterID, + "get_blocks_pb", + &v1.GetBlocksRequest{ + Start: uint64(start), + Length: uint64(end - start), + }, + &resp, + ); err != nil { + return nil, fmt.Errorf("failed to get blocks: %w", err) + } + switch blocksResponse := resp.GetBlocksContent.(type) { + case *v1.GetBlocksResponse_Blocks: + return blocksResponse.Blocks.Blocks, nil + case *v1.GetBlocksResponse_Error: + return nil, fmt.Errorf("failed to get blocks: %s", blocksResponse.Error) + default: + return nil, fmt.Errorf("unexpected get block content type: %T", blocksResponse) + } +} + +func (d DataProvider) GetTipOfChain() (*BlockIndex, error) { + var resp v1.TipOfChainResponse + if err := d.a.QueryProto( + ic.LEDGER_PRINCIPAL, + "tip_of_chain_pb", + &v1.TipOfChainRequest{}, + &resp, + ); err != nil { + return nil, fmt.Errorf("failed to get tip of chain: %w", err) + } + height := BlockIndex(resp.ChainLength.Height) + return &height, nil +} diff --git a/clients/ledger/dataprovider_test.go b/clients/ledger/dataprovider_test.go new file mode 100644 index 0000000..6d16a39 --- /dev/null +++ b/clients/ledger/dataprovider_test.go @@ -0,0 +1,47 @@ +package ledger_test + +import ( + "github.com/aviate-labs/agent-go/clients/ledger" + "testing" +) + +func TestDataProvider_GetRawBlock(t *testing.T) { + checkEnabled(t) + + dp, err := ledger.NewDataProvider() + if err != nil { + t.Fatal(err) + } + if _, err := dp.GetRawBlock(0); err != nil { + t.Error(err) + } +} + +func TestDataProvider_GetRawBlocks(t *testing.T) { + checkEnabled(t) + + dp, err := ledger.NewDataProvider() + if err != nil { + t.Fatal(err) + } + n := 3 * ledger.MaxBlocksPerRequest + blocks, err := dp.GetRawBlocks(0, ledger.BlockIndex(n)) + if err != nil { + t.Error(err) + } + if len(blocks) != n { + t.Errorf("expected %d blocks, got %d", n, len(blocks)) + } +} + +func TestDataProvider_GetTipOfChain(t *testing.T) { + checkEnabled(t) + + dp, err := ledger.NewDataProvider() + if err != nil { + t.Fatal(err) + } + if _, err := dp.GetTipOfChain(); err != nil { + t.Error(err) + } +} diff --git a/clients/ledger/proto.go b/clients/ledger/proto.go new file mode 100644 index 0000000..71ae046 --- /dev/null +++ b/clients/ledger/proto.go @@ -0,0 +1,4 @@ +package ledger + +//go:generate go install google.golang.org/protobuf/cmd/protoc-gen-go@latest +//go:generate protoc -I=testdata --go_out=. testdata/ledger.proto diff --git a/clients/ledger/proto/v1/ledger.pb.go b/clients/ledger/proto/v1/ledger.pb.go new file mode 100644 index 0000000..8cd4a7a --- /dev/null +++ b/clients/ledger/proto/v1/ledger.pb.go @@ -0,0 +1,4339 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.0 +// source: ledger.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var ( + file_ledger_proto_rawDescOnce sync.Once + file_ledger_proto_rawDescData = file_ledger_proto_rawDesc +) + +// Extension fields to descriptorpb.FieldOptions. +var ( + // optional bool tui_signed_display_q2_2021 = 20001; + E_TuiSignedDisplayQ2_2021 = &file_ledger_proto_extTypes[1] +) + +// Extension fields to descriptorpb.MessageOptions. +var ( + // optional bool tui_signed_message = 20000; + E_TuiSignedMessage = &file_ledger_proto_extTypes[0] +) + +var File_ledger_proto protoreflect.FileDescriptor + +var file_ledger_proto_depIdxs = []int32{ + 46, // 0: ic_ledger.pb.v1.LedgerInit.minting_account:type_name -> ic_ledger.pb.v1.AccountIdentifier + 39, // 1: ic_ledger.pb.v1.LedgerInit.initial_values:type_name -> ic_ledger.pb.v1.Account + 0, // 2: ic_ledger.pb.v1.LedgerInit.archive_canister:type_name -> ic_ledger.pb.v1.PrincipalId + 48, // 3: ic_ledger.pb.v1.SendRequest.memo:type_name -> ic_ledger.pb.v1.Memo + 35, // 4: ic_ledger.pb.v1.SendRequest.payment:type_name -> ic_ledger.pb.v1.Payment + 34, // 5: ic_ledger.pb.v1.SendRequest.max_fee:type_name -> ic_ledger.pb.v1.Tokens + 47, // 6: ic_ledger.pb.v1.SendRequest.from_subaccount:type_name -> ic_ledger.pb.v1.Subaccount + 46, // 7: ic_ledger.pb.v1.SendRequest.to:type_name -> ic_ledger.pb.v1.AccountIdentifier + 36, // 8: ic_ledger.pb.v1.SendRequest.created_at:type_name -> ic_ledger.pb.v1.BlockIndex + 50, // 9: ic_ledger.pb.v1.SendRequest.created_at_time:type_name -> ic_ledger.pb.v1.TimeStamp + 36, // 10: ic_ledger.pb.v1.SendResponse.resulting_height:type_name -> ic_ledger.pb.v1.BlockIndex + 36, // 11: ic_ledger.pb.v1.NotifyRequest.block_height:type_name -> ic_ledger.pb.v1.BlockIndex + 34, // 12: ic_ledger.pb.v1.NotifyRequest.max_fee:type_name -> ic_ledger.pb.v1.Tokens + 47, // 13: ic_ledger.pb.v1.NotifyRequest.from_subaccount:type_name -> ic_ledger.pb.v1.Subaccount + 0, // 14: ic_ledger.pb.v1.NotifyRequest.to_canister:type_name -> ic_ledger.pb.v1.PrincipalId + 47, // 15: ic_ledger.pb.v1.NotifyRequest.to_subaccount:type_name -> ic_ledger.pb.v1.Subaccount + 0, // 16: ic_ledger.pb.v1.TransactionNotificationRequest.from:type_name -> ic_ledger.pb.v1.PrincipalId + 47, // 17: ic_ledger.pb.v1.TransactionNotificationRequest.from_subaccount:type_name -> ic_ledger.pb.v1.Subaccount + 0, // 18: ic_ledger.pb.v1.TransactionNotificationRequest.to:type_name -> ic_ledger.pb.v1.PrincipalId + 47, // 19: ic_ledger.pb.v1.TransactionNotificationRequest.to_subaccount:type_name -> ic_ledger.pb.v1.Subaccount + 36, // 20: ic_ledger.pb.v1.TransactionNotificationRequest.block_height:type_name -> ic_ledger.pb.v1.BlockIndex + 34, // 21: ic_ledger.pb.v1.TransactionNotificationRequest.amount:type_name -> ic_ledger.pb.v1.Tokens + 48, // 22: ic_ledger.pb.v1.TransactionNotificationRequest.memo:type_name -> ic_ledger.pb.v1.Memo + 0, // 23: ic_ledger.pb.v1.CyclesNotificationResponse.created_canister_id:type_name -> ic_ledger.pb.v1.PrincipalId + 21, // 24: ic_ledger.pb.v1.CyclesNotificationResponse.refund:type_name -> ic_ledger.pb.v1.Refund + 22, // 25: ic_ledger.pb.v1.CyclesNotificationResponse.topped_up:type_name -> ic_ledger.pb.v1.ToppedUp + 46, // 26: ic_ledger.pb.v1.AccountBalanceRequest.account:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 27: ic_ledger.pb.v1.AccountBalanceResponse.balance:type_name -> ic_ledger.pb.v1.Tokens + 51, // 28: ic_ledger.pb.v1.TipOfChainResponse.certification:type_name -> ic_ledger.pb.v1.Certification + 36, // 29: ic_ledger.pb.v1.TipOfChainResponse.chain_length:type_name -> ic_ledger.pb.v1.BlockIndex + 34, // 30: ic_ledger.pb.v1.TotalSupplyResponse.total_supply:type_name -> ic_ledger.pb.v1.Tokens + 50, // 31: ic_ledger.pb.v1.LedgerArchiveRequest.timestamp:type_name -> ic_ledger.pb.v1.TimeStamp + 18, // 32: ic_ledger.pb.v1.BlockResponse.block:type_name -> ic_ledger.pb.v1.EncodedBlock + 0, // 33: ic_ledger.pb.v1.BlockResponse.canister_id:type_name -> ic_ledger.pb.v1.PrincipalId + 36, // 34: ic_ledger.pb.v1.Refund.refund:type_name -> ic_ledger.pb.v1.BlockIndex + 18, // 35: ic_ledger.pb.v1.EncodedBlocks.blocks:type_name -> ic_ledger.pb.v1.EncodedBlock + 23, // 36: ic_ledger.pb.v1.GetBlocksResponse.blocks:type_name -> ic_ledger.pb.v1.EncodedBlocks + 18, // 37: ic_ledger.pb.v1.IterBlocksResponse.blocks:type_name -> ic_ledger.pb.v1.EncodedBlock + 0, // 38: ic_ledger.pb.v1.ArchiveIndexEntry.canister_id:type_name -> ic_ledger.pb.v1.PrincipalId + 27, // 39: ic_ledger.pb.v1.ArchiveIndexResponse.entries:type_name -> ic_ledger.pb.v1.ArchiveIndexEntry + 37, // 40: ic_ledger.pb.v1.ArchiveAddRequest.blocks:type_name -> ic_ledger.pb.v1.Block + 0, // 41: ic_ledger.pb.v1.GetNodesResponse.nodes:type_name -> ic_ledger.pb.v1.PrincipalId + 34, // 42: ic_ledger.pb.v1.Payment.receiver_gets:type_name -> ic_ledger.pb.v1.Tokens + 38, // 43: ic_ledger.pb.v1.Block.parent_hash:type_name -> ic_ledger.pb.v1.Hash + 50, // 44: ic_ledger.pb.v1.Block.timestamp:type_name -> ic_ledger.pb.v1.TimeStamp + 40, // 45: ic_ledger.pb.v1.Block.transaction:type_name -> ic_ledger.pb.v1.Transaction + 46, // 46: ic_ledger.pb.v1.Account.identifier:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 47: ic_ledger.pb.v1.Account.balance:type_name -> ic_ledger.pb.v1.Tokens + 45, // 48: ic_ledger.pb.v1.Transaction.burn:type_name -> ic_ledger.pb.v1.Burn + 44, // 49: ic_ledger.pb.v1.Transaction.mint:type_name -> ic_ledger.pb.v1.Mint + 41, // 50: ic_ledger.pb.v1.Transaction.send:type_name -> ic_ledger.pb.v1.Send + 48, // 51: ic_ledger.pb.v1.Transaction.memo:type_name -> ic_ledger.pb.v1.Memo + 49, // 52: ic_ledger.pb.v1.Transaction.icrc1_memo:type_name -> ic_ledger.pb.v1.Icrc1Memo + 36, // 53: ic_ledger.pb.v1.Transaction.created_at:type_name -> ic_ledger.pb.v1.BlockIndex + 50, // 54: ic_ledger.pb.v1.Transaction.created_at_time:type_name -> ic_ledger.pb.v1.TimeStamp + 46, // 55: ic_ledger.pb.v1.Send.from:type_name -> ic_ledger.pb.v1.AccountIdentifier + 46, // 56: ic_ledger.pb.v1.Send.to:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 57: ic_ledger.pb.v1.Send.amount:type_name -> ic_ledger.pb.v1.Tokens + 34, // 58: ic_ledger.pb.v1.Send.max_fee:type_name -> ic_ledger.pb.v1.Tokens + 43, // 59: ic_ledger.pb.v1.Send.approve:type_name -> ic_ledger.pb.v1.Approve + 42, // 60: ic_ledger.pb.v1.Send.transfer_from:type_name -> ic_ledger.pb.v1.TransferFrom + 46, // 61: ic_ledger.pb.v1.TransferFrom.spender:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 62: ic_ledger.pb.v1.Approve.allowance:type_name -> ic_ledger.pb.v1.Tokens + 50, // 63: ic_ledger.pb.v1.Approve.expires_at:type_name -> ic_ledger.pb.v1.TimeStamp + 34, // 64: ic_ledger.pb.v1.Approve.expected_allowance:type_name -> ic_ledger.pb.v1.Tokens + 46, // 65: ic_ledger.pb.v1.Mint.to:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 66: ic_ledger.pb.v1.Mint.amount:type_name -> ic_ledger.pb.v1.Tokens + 46, // 67: ic_ledger.pb.v1.Burn.from:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 68: ic_ledger.pb.v1.Burn.amount:type_name -> ic_ledger.pb.v1.Tokens + 46, // 69: ic_ledger.pb.v1.Burn.spender:type_name -> ic_ledger.pb.v1.AccountIdentifier + 34, // 70: ic_ledger.pb.v1.TransferFeeResponse.transfer_fee:type_name -> ic_ledger.pb.v1.Tokens + 54, // 71: ic_ledger.pb.v1.tui_signed_message:extendee -> google.protobuf.MessageOptions + 55, // 72: ic_ledger.pb.v1.tui_signed_display_q2_2021:extendee -> google.protobuf.FieldOptions + 73, // [73:73] is the sub-list for method output_type + 73, // [73:73] is the sub-list for method input_type + 73, // [73:73] is the sub-list for extension type_name + 71, // [71:73] is the sub-list for extension extendee + 0, // [0:71] is the sub-list for field type_name +} + +var file_ledger_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.MessageOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 20000, + Name: "ic_ledger.pb.v1.tui_signed_message", + Tag: "varint,20000,opt,name=tui_signed_message", + Filename: "ledger.proto", + }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 20001, + Name: "ic_ledger.pb.v1.tui_signed_display_q2_2021", + Tag: "varint,20001,opt,name=tui_signed_display_q2_2021", + Filename: "ledger.proto", + }, +} + +var file_ledger_proto_goTypes = []any{ + (*PrincipalId)(nil), // 0: ic_ledger.pb.v1.PrincipalId + (*LedgerInit)(nil), // 1: ic_ledger.pb.v1.LedgerInit + (*LedgerUpgrade)(nil), // 2: ic_ledger.pb.v1.LedgerUpgrade + (*SendRequest)(nil), // 3: ic_ledger.pb.v1.SendRequest + (*SendResponse)(nil), // 4: ic_ledger.pb.v1.SendResponse + (*NotifyRequest)(nil), // 5: ic_ledger.pb.v1.NotifyRequest + (*NotifyResponse)(nil), // 6: ic_ledger.pb.v1.NotifyResponse + (*TransactionNotificationRequest)(nil), // 7: ic_ledger.pb.v1.TransactionNotificationRequest + (*TransactionNotificationResponse)(nil), // 8: ic_ledger.pb.v1.TransactionNotificationResponse + (*CyclesNotificationResponse)(nil), // 9: ic_ledger.pb.v1.CyclesNotificationResponse + (*AccountBalanceRequest)(nil), // 10: ic_ledger.pb.v1.AccountBalanceRequest + (*AccountBalanceResponse)(nil), // 11: ic_ledger.pb.v1.AccountBalanceResponse + (*TipOfChainRequest)(nil), // 12: ic_ledger.pb.v1.TipOfChainRequest + (*TipOfChainResponse)(nil), // 13: ic_ledger.pb.v1.TipOfChainResponse + (*TotalSupplyRequest)(nil), // 14: ic_ledger.pb.v1.TotalSupplyRequest + (*TotalSupplyResponse)(nil), // 15: ic_ledger.pb.v1.TotalSupplyResponse + (*LedgerArchiveRequest)(nil), // 16: ic_ledger.pb.v1.LedgerArchiveRequest + (*BlockRequest)(nil), // 17: ic_ledger.pb.v1.BlockRequest + (*EncodedBlock)(nil), // 18: ic_ledger.pb.v1.EncodedBlock + (*BlockResponse)(nil), // 19: ic_ledger.pb.v1.BlockResponse + (*GetBlocksRequest)(nil), // 20: ic_ledger.pb.v1.GetBlocksRequest + (*Refund)(nil), // 21: ic_ledger.pb.v1.Refund + (*ToppedUp)(nil), // 22: ic_ledger.pb.v1.ToppedUp + (*EncodedBlocks)(nil), // 23: ic_ledger.pb.v1.EncodedBlocks + (*GetBlocksResponse)(nil), // 24: ic_ledger.pb.v1.GetBlocksResponse + (*IterBlocksRequest)(nil), // 25: ic_ledger.pb.v1.IterBlocksRequest + (*IterBlocksResponse)(nil), // 26: ic_ledger.pb.v1.IterBlocksResponse + (*ArchiveIndexEntry)(nil), // 27: ic_ledger.pb.v1.ArchiveIndexEntry + (*ArchiveIndexResponse)(nil), // 28: ic_ledger.pb.v1.ArchiveIndexResponse + (*ArchiveInit)(nil), // 29: ic_ledger.pb.v1.ArchiveInit + (*ArchiveAddRequest)(nil), // 30: ic_ledger.pb.v1.ArchiveAddRequest + (*ArchiveAddResponse)(nil), // 31: ic_ledger.pb.v1.ArchiveAddResponse + (*GetNodesRequest)(nil), // 32: ic_ledger.pb.v1.GetNodesRequest + (*GetNodesResponse)(nil), // 33: ic_ledger.pb.v1.GetNodesResponse + (*Tokens)(nil), // 34: ic_ledger.pb.v1.Tokens + (*Payment)(nil), // 35: ic_ledger.pb.v1.Payment + (*BlockIndex)(nil), // 36: ic_ledger.pb.v1.BlockIndex + (*Block)(nil), // 37: ic_ledger.pb.v1.Block + (*Hash)(nil), // 38: ic_ledger.pb.v1.Hash + (*Account)(nil), // 39: ic_ledger.pb.v1.Account + (*Transaction)(nil), // 40: ic_ledger.pb.v1.Transaction + (*Send)(nil), // 41: ic_ledger.pb.v1.Send + (*TransferFrom)(nil), // 42: ic_ledger.pb.v1.TransferFrom + (*Approve)(nil), // 43: ic_ledger.pb.v1.Approve + (*Mint)(nil), // 44: ic_ledger.pb.v1.Mint + (*Burn)(nil), // 45: ic_ledger.pb.v1.Burn + (*AccountIdentifier)(nil), // 46: ic_ledger.pb.v1.AccountIdentifier + (*Subaccount)(nil), // 47: ic_ledger.pb.v1.Subaccount + (*Memo)(nil), // 48: ic_ledger.pb.v1.Memo + (*Icrc1Memo)(nil), // 49: ic_ledger.pb.v1.Icrc1Memo + (*TimeStamp)(nil), // 50: ic_ledger.pb.v1.TimeStamp + (*Certification)(nil), // 51: ic_ledger.pb.v1.Certification + (*TransferFeeRequest)(nil), // 52: ic_ledger.pb.v1.TransferFeeRequest + (*TransferFeeResponse)(nil), // 53: ic_ledger.pb.v1.TransferFeeResponse + (*descriptorpb.MessageOptions)(nil), // 54: google.protobuf.MessageOptions + (*descriptorpb.FieldOptions)(nil), // 55: google.protobuf.FieldOptions +} + +var file_ledger_proto_msgTypes = make([]protoimpl.MessageInfo, 54) + +var file_ledger_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, + 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x1a, + 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x3e, 0x0a, 0x0b, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x49, 0x64, + 0x12, 0x29, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x0c, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x64, 0x3a, 0x04, 0x80, 0xe2, 0x09, + 0x01, 0x22, 0x98, 0x02, 0x0a, 0x0a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, + 0x12, 0x4b, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0e, 0x6d, + 0x69, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, + 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, + 0x0a, 0x10, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x43, + 0x61, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x0f, 0x0a, 0x0d, + 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x22, 0xbc, 0x03, + 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, + 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, + 0x6d, 0x6f, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x38, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, + 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, + 0x12, 0x4a, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x0e, 0x66, 0x72, + 0x6f, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x02, + 0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x04, 0x88, 0xe2, + 0x09, 0x01, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0x56, 0x0a, 0x0c, + 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0xec, 0x02, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, + 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, + 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x0a, 0x07, + 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x06, 0x6d, 0x61, + 0x78, 0x46, 0x65, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x75, 0x62, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, + 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x43, 0x0a, 0x0b, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, + 0x6c, 0x49, 0x64, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x0a, 0x74, 0x6f, 0x43, 0x61, 0x6e, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x62, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, + 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, + 0x0c, 0x74, 0x6f, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, 0x80, + 0xe2, 0x09, 0x01, 0x22, 0x10, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa4, 0x03, 0x0a, 0x1e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, + 0x61, 0x6c, 0x49, 0x64, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x44, 0x0a, 0x0f, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2c, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, + 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x40, + 0x0a, 0x0d, 0x74, 0x6f, 0x5f, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x3e, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x29, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x3d, 0x0a, 0x1f, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x1a, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x13, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x49, 0x64, 0x48, 0x00, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x43, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, + 0x66, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, + 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x12, 0x38, 0x0a, + 0x09, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x55, 0x70, 0x48, 0x00, 0x52, 0x08, 0x74, + 0x6f, 0x70, 0x70, 0x65, 0x64, 0x55, 0x70, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x55, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x07, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4b, 0x0a, 0x16, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x07, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x69, 0x70, 0x4f, 0x66, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, + 0x12, 0x54, 0x69, 0x70, 0x4f, 0x66, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x63, 0x5f, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0c, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0b, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x14, 0x0a, 0x12, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x51, 0x0a, 0x13, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, + 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, + 0x6c, 0x79, 0x22, 0x50, 0x0a, 0x14, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x41, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x22, 0x31, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x24, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x98, 0x01, + 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x35, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, + 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x49, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x61, 0x6e, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x40, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x53, 0x0a, 0x06, 0x52, 0x65, + 0x66, 0x75, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x06, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x0a, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x55, 0x70, 0x22, 0x46, 0x0a, 0x0d, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x35, 0x0a, 0x06, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, + 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x73, 0x22, 0x7b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x48, 0x00, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x73, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x67, 0x65, + 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x22, 0x41, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0x4b, 0x0a, 0x12, 0x49, 0x74, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, + 0x22, 0x90, 0x01, 0x0a, 0x11, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x54, 0x6f, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x64, 0x22, 0x54, 0x0a, 0x14, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, + 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x7e, 0x0a, 0x0b, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x1a, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x6e, 0x6f, + 0x64, 0x65, 0x4d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x43, 0x0a, 0x11, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, + 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x14, + 0x0a, 0x12, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6e, + 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x63, 0x5f, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x49, 0x64, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, + 0x26, 0x0a, 0x06, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x03, 0x65, 0x38, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x03, 0x65, 0x38, + 0x73, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0x53, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x67, + 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x72, 0x47, 0x65, 0x74, 0x73, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0x30, 0x0a, 0x0a, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, + 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0xb9, + 0x01, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x36, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x48, 0x61, 0x73, 0x68, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1a, 0x0a, 0x04, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x80, 0x01, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x86, 0x03, 0x0a, 0x0b, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x62, 0x75, 0x72, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72, 0x6e, 0x48, 0x00, + 0x52, 0x04, 0x62, 0x75, 0x72, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6d, + 0x69, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x04, 0x73, 0x65, 0x6e, 0x64, + 0x12, 0x29, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x6d, 0x6f, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x39, 0x0a, 0x0a, 0x69, + 0x63, 0x72, 0x63, 0x31, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x63, 0x72, 0x63, 0x31, 0x4d, 0x65, 0x6d, 0x6f, 0x52, 0x09, 0x69, 0x63, 0x72, + 0x63, 0x31, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x63, 0x5f, + 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x22, 0xde, 0x02, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x66, + 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x04, 0x66, + 0x72, 0x6f, 0x6d, 0x12, 0x32, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, + 0x66, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x48, 0x00, 0x52, 0x07, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, + 0x72, 0x6f, 0x6d, 0x12, 0x3c, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x22, 0xc3, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x35, 0x0a, + 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, + 0x46, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x11, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x6b, 0x0a, 0x04, 0x4d, 0x69, 0x6e, 0x74, 0x12, + 0x32, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, + 0x02, 0x74, 0x6f, 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, + 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xad, 0x01, 0x0a, 0x04, 0x42, 0x75, 0x72, 0x6e, 0x12, 0x36, 0x0a, + 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, + 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, + 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x2f, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x63, 0x5f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x07, 0x73, 0x70, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x11, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x04, 0x68, + 0x61, 0x73, 0x68, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0x39, 0x0a, 0x0a, 0x53, 0x75, 0x62, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x04, 0x88, 0xe2, + 0x09, 0x01, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x04, + 0x80, 0xe2, 0x09, 0x01, 0x22, 0x26, 0x0a, 0x04, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x18, 0x0a, 0x04, + 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, + 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0x2b, 0x0a, 0x09, + 0x49, 0x63, 0x72, 0x63, 0x31, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x18, 0x0a, 0x04, 0x6d, 0x65, 0x6d, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x04, 0x88, 0xe2, 0x09, 0x01, 0x52, 0x04, 0x6d, + 0x65, 0x6d, 0x6f, 0x3a, 0x04, 0x80, 0xe2, 0x09, 0x01, 0x22, 0x34, 0x0a, 0x09, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x22, + 0x35, 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x13, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, + 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x63, 0x5f, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x3a, + 0x4f, 0x0a, 0x12, 0x74, 0x75, 0x69, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa0, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x74, 0x75, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x3a, 0x5b, 0x0a, 0x1a, 0x74, 0x75, 0x69, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x71, 0x32, 0x5f, 0x32, 0x30, 0x32, 0x31, 0x12, 0x1d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa1, 0x9c, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x74, 0x75, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x51, 0x32, 0x32, 0x30, 0x32, 0x31, 0x42, 0x0a, 0x5a, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +func file_ledger_proto_init() { + if File_ledger_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_ledger_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*PrincipalId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*LedgerInit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*LedgerUpgrade); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*SendRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*SendResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*NotifyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*NotifyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*TransactionNotificationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*TransactionNotificationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*CyclesNotificationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*AccountBalanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*AccountBalanceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*TipOfChainRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*TipOfChainResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*TotalSupplyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*TotalSupplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*LedgerArchiveRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*BlockRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*EncodedBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*BlockResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*GetBlocksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*Refund); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*ToppedUp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*EncodedBlocks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*GetBlocksResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*IterBlocksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*IterBlocksResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*ArchiveIndexEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*ArchiveIndexResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*ArchiveInit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*ArchiveAddRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*ArchiveAddResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*GetNodesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*GetNodesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*Tokens); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*Payment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*BlockIndex); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*Block); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*Hash); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*Account); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*Transaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*Send); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*TransferFrom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*Approve); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[44].Exporter = func(v any, i int) any { + switch v := v.(*Mint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*Burn); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*AccountIdentifier); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*Subaccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[48].Exporter = func(v any, i int) any { + switch v := v.(*Memo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[49].Exporter = func(v any, i int) any { + switch v := v.(*Icrc1Memo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[50].Exporter = func(v any, i int) any { + switch v := v.(*TimeStamp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[51].Exporter = func(v any, i int) any { + switch v := v.(*Certification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[52].Exporter = func(v any, i int) any { + switch v := v.(*TransferFeeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ledger_proto_msgTypes[53].Exporter = func(v any, i int) any { + switch v := v.(*TransferFeeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_ledger_proto_msgTypes[9].OneofWrappers = []any{ + (*CyclesNotificationResponse_CreatedCanisterId)(nil), + (*CyclesNotificationResponse_Refund)(nil), + (*CyclesNotificationResponse_ToppedUp)(nil), + } + file_ledger_proto_msgTypes[19].OneofWrappers = []any{ + (*BlockResponse_Block)(nil), + (*BlockResponse_CanisterId)(nil), + } + file_ledger_proto_msgTypes[24].OneofWrappers = []any{ + (*GetBlocksResponse_Blocks)(nil), + (*GetBlocksResponse_Error)(nil), + } + file_ledger_proto_msgTypes[40].OneofWrappers = []any{ + (*Transaction_Burn)(nil), + (*Transaction_Mint)(nil), + (*Transaction_Send)(nil), + } + file_ledger_proto_msgTypes[41].OneofWrappers = []any{ + (*Send_Approve)(nil), + (*Send_TransferFrom)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_ledger_proto_rawDesc, + NumEnums: 0, + NumMessages: 54, + NumExtensions: 2, + NumServices: 0, + }, + GoTypes: file_ledger_proto_goTypes, + DependencyIndexes: file_ledger_proto_depIdxs, + MessageInfos: file_ledger_proto_msgTypes, + ExtensionInfos: file_ledger_proto_extTypes, + }.Build() + File_ledger_proto = out.File + file_ledger_proto_rawDesc = nil + file_ledger_proto_goTypes = nil + file_ledger_proto_depIdxs = nil +} + +func file_ledger_proto_rawDescGZIP() []byte { + file_ledger_proto_rawDescOnce.Do(func() { + file_ledger_proto_rawDescData = protoimpl.X.CompressGZIP(file_ledger_proto_rawDescData) + }) + return file_ledger_proto_rawDescData +} + +func init() { file_ledger_proto_init() } + +type Account struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Identifier *AccountIdentifier `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` + Balance *Tokens `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"` +} + +// Deprecated: Use Account.ProtoReflect.Descriptor instead. +func (*Account) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{39} +} + +func (x *Account) GetBalance() *Tokens { + if x != nil { + return x.Balance + } + return nil +} + +func (x *Account) GetIdentifier() *AccountIdentifier { + if x != nil { + return x.Identifier + } + return nil +} + +func (*Account) ProtoMessage() {} + +func (x *Account) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Account) Reset() { + *x = Account{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Account) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Get the balance of an account +type AccountBalanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account *AccountIdentifier `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` +} + +// Deprecated: Use AccountBalanceRequest.ProtoReflect.Descriptor instead. +func (*AccountBalanceRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{10} +} + +func (x *AccountBalanceRequest) GetAccount() *AccountIdentifier { + if x != nil { + return x.Account + } + return nil +} + +func (*AccountBalanceRequest) ProtoMessage() {} + +func (x *AccountBalanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *AccountBalanceRequest) Reset() { + *x = AccountBalanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountBalanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type AccountBalanceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Balance *Tokens `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"` +} + +// Deprecated: Use AccountBalanceResponse.ProtoReflect.Descriptor instead. +func (*AccountBalanceResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{11} +} + +func (x *AccountBalanceResponse) GetBalance() *Tokens { + if x != nil { + return x.Balance + } + return nil +} + +func (*AccountBalanceResponse) ProtoMessage() {} + +func (x *AccountBalanceResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *AccountBalanceResponse) Reset() { + *x = AccountBalanceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountBalanceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type AccountIdentifier struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Can contain either: + // - the 32 byte identifier (4 byte checksum + 28 byte hash) + // - the 28 byte hash + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` +} + +// Deprecated: Use AccountIdentifier.ProtoReflect.Descriptor instead. +func (*AccountIdentifier) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{46} +} + +func (x *AccountIdentifier) GetHash() []byte { + if x != nil { + return x.Hash + } + return nil +} + +func (*AccountIdentifier) ProtoMessage() {} + +func (x *AccountIdentifier) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *AccountIdentifier) Reset() { + *x = AccountIdentifier{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountIdentifier) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Approve struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Allowance *Tokens `protobuf:"bytes,1,opt,name=allowance,proto3" json:"allowance,omitempty"` + ExpiresAt *TimeStamp `protobuf:"bytes,2,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + ExpectedAllowance *Tokens `protobuf:"bytes,3,opt,name=expected_allowance,json=expectedAllowance,proto3" json:"expected_allowance,omitempty"` +} + +// Deprecated: Use Approve.ProtoReflect.Descriptor instead. +func (*Approve) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{43} +} + +func (x *Approve) GetAllowance() *Tokens { + if x != nil { + return x.Allowance + } + return nil +} + +func (x *Approve) GetExpectedAllowance() *Tokens { + if x != nil { + return x.ExpectedAllowance + } + return nil +} + +func (x *Approve) GetExpiresAt() *TimeStamp { + if x != nil { + return x.ExpiresAt + } + return nil +} + +func (*Approve) ProtoMessage() {} + +func (x *Approve) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Approve) Reset() { + *x = Approve{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Approve) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Add blocks to the archive canister +type ArchiveAddRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Blocks []*Block `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` +} + +// Deprecated: Use ArchiveAddRequest.ProtoReflect.Descriptor instead. +func (*ArchiveAddRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{30} +} + +func (x *ArchiveAddRequest) GetBlocks() []*Block { + if x != nil { + return x.Blocks + } + return nil +} + +func (*ArchiveAddRequest) ProtoMessage() {} + +func (x *ArchiveAddRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ArchiveAddRequest) Reset() { + *x = ArchiveAddRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveAddRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type ArchiveAddResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use ArchiveAddResponse.ProtoReflect.Descriptor instead. +func (*ArchiveAddResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{31} +} + +func (*ArchiveAddResponse) ProtoMessage() {} + +func (x *ArchiveAddResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ArchiveAddResponse) Reset() { + *x = ArchiveAddResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveAddResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type ArchiveIndexEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + HeightFrom uint64 `protobuf:"varint,1,opt,name=height_from,json=heightFrom,proto3" json:"height_from,omitempty"` + HeightTo uint64 `protobuf:"varint,2,opt,name=height_to,json=heightTo,proto3" json:"height_to,omitempty"` + CanisterId *PrincipalId `protobuf:"bytes,3,opt,name=canister_id,json=canisterId,proto3" json:"canister_id,omitempty"` +} + +// Deprecated: Use ArchiveIndexEntry.ProtoReflect.Descriptor instead. +func (*ArchiveIndexEntry) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{27} +} + +func (x *ArchiveIndexEntry) GetCanisterId() *PrincipalId { + if x != nil { + return x.CanisterId + } + return nil +} + +func (x *ArchiveIndexEntry) GetHeightFrom() uint64 { + if x != nil { + return x.HeightFrom + } + return 0 +} + +func (x *ArchiveIndexEntry) GetHeightTo() uint64 { + if x != nil { + return x.HeightTo + } + return 0 +} + +func (*ArchiveIndexEntry) ProtoMessage() {} + +func (x *ArchiveIndexEntry) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ArchiveIndexEntry) Reset() { + *x = ArchiveIndexEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveIndexEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type ArchiveIndexResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Entries []*ArchiveIndexEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` +} + +// Deprecated: Use ArchiveIndexResponse.ProtoReflect.Descriptor instead. +func (*ArchiveIndexResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{28} +} + +func (x *ArchiveIndexResponse) GetEntries() []*ArchiveIndexEntry { + if x != nil { + return x.Entries + } + return nil +} + +func (*ArchiveIndexResponse) ProtoMessage() {} + +func (x *ArchiveIndexResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ArchiveIndexResponse) Reset() { + *x = ArchiveIndexResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveIndexResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// * Archive canister * +// Init the archive canister +type ArchiveInit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeMaxMemorySizeBytes uint32 `protobuf:"varint,1,opt,name=node_max_memory_size_bytes,json=nodeMaxMemorySizeBytes,proto3" json:"node_max_memory_size_bytes,omitempty"` + MaxMessageSizeBytes uint32 `protobuf:"varint,2,opt,name=max_message_size_bytes,json=maxMessageSizeBytes,proto3" json:"max_message_size_bytes,omitempty"` +} + +// Deprecated: Use ArchiveInit.ProtoReflect.Descriptor instead. +func (*ArchiveInit) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{29} +} + +func (x *ArchiveInit) GetMaxMessageSizeBytes() uint32 { + if x != nil { + return x.MaxMessageSizeBytes + } + return 0 +} + +func (x *ArchiveInit) GetNodeMaxMemorySizeBytes() uint32 { + if x != nil { + return x.NodeMaxMemorySizeBytes + } + return 0 +} + +func (*ArchiveInit) ProtoMessage() {} + +func (x *ArchiveInit) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ArchiveInit) Reset() { + *x = ArchiveInit{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveInit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// This is the +type Block struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParentHash *Hash `protobuf:"bytes,1,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"` + Timestamp *TimeStamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Transaction *Transaction `protobuf:"bytes,3,opt,name=transaction,proto3" json:"transaction,omitempty"` +} + +// Deprecated: Use Block.ProtoReflect.Descriptor instead. +func (*Block) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{37} +} + +func (x *Block) GetParentHash() *Hash { + if x != nil { + return x.ParentHash + } + return nil +} + +func (x *Block) GetTimestamp() *TimeStamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (x *Block) GetTransaction() *Transaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (*Block) ProtoMessage() {} + +func (x *Block) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Block) Reset() { + *x = Block{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Block) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type BlockIndex struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Height uint64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` +} + +// Deprecated: Use BlockIndex.ProtoReflect.Descriptor instead. +func (*BlockIndex) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{36} +} + +func (x *BlockIndex) GetHeight() uint64 { + if x != nil { + return x.Height + } + return 0 +} + +func (*BlockIndex) ProtoMessage() {} + +func (x *BlockIndex) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *BlockIndex) Reset() { + *x = BlockIndex{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockIndex) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Get a single block +type BlockRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockHeight uint64 `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` +} + +// Deprecated: Use BlockRequest.ProtoReflect.Descriptor instead. +func (*BlockRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{17} +} + +func (x *BlockRequest) GetBlockHeight() uint64 { + if x != nil { + return x.BlockHeight + } + return 0 +} + +func (*BlockRequest) ProtoMessage() {} + +func (x *BlockRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *BlockRequest) Reset() { + *x = BlockRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type BlockResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to BlockContent: + // + // *BlockResponse_Block + // *BlockResponse_CanisterId + BlockContent isBlockResponse_BlockContent `protobuf_oneof:"block_content"` +} + +// Deprecated: Use BlockResponse.ProtoReflect.Descriptor instead. +func (*BlockResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{19} +} + +func (x *BlockResponse) GetBlock() *EncodedBlock { + if x, ok := x.GetBlockContent().(*BlockResponse_Block); ok { + return x.Block + } + return nil +} + +func (m *BlockResponse) GetBlockContent() isBlockResponse_BlockContent { + if m != nil { + return m.BlockContent + } + return nil +} + +func (x *BlockResponse) GetCanisterId() *PrincipalId { + if x, ok := x.GetBlockContent().(*BlockResponse_CanisterId); ok { + return x.CanisterId + } + return nil +} + +func (*BlockResponse) ProtoMessage() {} + +func (x *BlockResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *BlockResponse) Reset() { + *x = BlockResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type BlockResponse_Block struct { + Block *EncodedBlock `protobuf:"bytes,1,opt,name=block,proto3,oneof"` +} + +func (*BlockResponse_Block) isBlockResponse_BlockContent() {} + +type BlockResponse_CanisterId struct { + CanisterId *PrincipalId `protobuf:"bytes,2,opt,name=canister_id,json=canisterId,proto3,oneof"` +} + +func (*BlockResponse_CanisterId) isBlockResponse_BlockContent() {} + +type Burn struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + From *AccountIdentifier `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + Amount *Tokens `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + Spender *AccountIdentifier `protobuf:"bytes,4,opt,name=spender,proto3" json:"spender,omitempty"` +} + +// Deprecated: Use Burn.ProtoReflect.Descriptor instead. +func (*Burn) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{45} +} + +func (x *Burn) GetAmount() *Tokens { + if x != nil { + return x.Amount + } + return nil +} + +func (x *Burn) GetFrom() *AccountIdentifier { + if x != nil { + return x.From + } + return nil +} + +func (x *Burn) GetSpender() *AccountIdentifier { + if x != nil { + return x.Spender + } + return nil +} + +func (*Burn) ProtoMessage() {} + +func (x *Burn) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Burn) Reset() { + *x = Burn{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Burn) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Certification struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Certification []byte `protobuf:"bytes,1,opt,name=certification,proto3" json:"certification,omitempty"` +} + +// Deprecated: Use Certification.ProtoReflect.Descriptor instead. +func (*Certification) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{51} +} + +func (x *Certification) GetCertification() []byte { + if x != nil { + return x.Certification + } + return nil +} + +func (*Certification) ProtoMessage() {} + +func (x *Certification) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Certification) Reset() { + *x = Certification{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Certification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type CyclesNotificationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Response: + // + // *CyclesNotificationResponse_CreatedCanisterId + // *CyclesNotificationResponse_Refund + // *CyclesNotificationResponse_ToppedUp + Response isCyclesNotificationResponse_Response `protobuf_oneof:"response"` +} + +// Deprecated: Use CyclesNotificationResponse.ProtoReflect.Descriptor instead. +func (*CyclesNotificationResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{9} +} + +func (x *CyclesNotificationResponse) GetCreatedCanisterId() *PrincipalId { + if x, ok := x.GetResponse().(*CyclesNotificationResponse_CreatedCanisterId); ok { + return x.CreatedCanisterId + } + return nil +} + +func (x *CyclesNotificationResponse) GetRefund() *Refund { + if x, ok := x.GetResponse().(*CyclesNotificationResponse_Refund); ok { + return x.Refund + } + return nil +} + +func (m *CyclesNotificationResponse) GetResponse() isCyclesNotificationResponse_Response { + if m != nil { + return m.Response + } + return nil +} + +func (x *CyclesNotificationResponse) GetToppedUp() *ToppedUp { + if x, ok := x.GetResponse().(*CyclesNotificationResponse_ToppedUp); ok { + return x.ToppedUp + } + return nil +} + +func (*CyclesNotificationResponse) ProtoMessage() {} + +func (x *CyclesNotificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CyclesNotificationResponse) Reset() { + *x = CyclesNotificationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CyclesNotificationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type CyclesNotificationResponse_CreatedCanisterId struct { + CreatedCanisterId *PrincipalId `protobuf:"bytes,1,opt,name=created_canister_id,json=createdCanisterId,proto3,oneof"` +} + +func (*CyclesNotificationResponse_CreatedCanisterId) isCyclesNotificationResponse_Response() {} + +type CyclesNotificationResponse_Refund struct { + Refund *Refund `protobuf:"bytes,2,opt,name=refund,proto3,oneof"` +} + +func (*CyclesNotificationResponse_Refund) isCyclesNotificationResponse_Response() {} + +type CyclesNotificationResponse_ToppedUp struct { + ToppedUp *ToppedUp `protobuf:"bytes,3,opt,name=topped_up,json=toppedUp,proto3,oneof"` +} + +func (*CyclesNotificationResponse_ToppedUp) isCyclesNotificationResponse_Response() {} + +type EncodedBlock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Block []byte `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` +} + +// Deprecated: Use EncodedBlock.ProtoReflect.Descriptor instead. +func (*EncodedBlock) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{18} +} + +func (x *EncodedBlock) GetBlock() []byte { + if x != nil { + return x.Block + } + return nil +} + +func (*EncodedBlock) ProtoMessage() {} + +func (x *EncodedBlock) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *EncodedBlock) Reset() { + *x = EncodedBlock{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EncodedBlock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type EncodedBlocks struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Blocks []*EncodedBlock `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` +} + +// Deprecated: Use EncodedBlocks.ProtoReflect.Descriptor instead. +func (*EncodedBlocks) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{23} +} + +func (x *EncodedBlocks) GetBlocks() []*EncodedBlock { + if x != nil { + return x.Blocks + } + return nil +} + +func (*EncodedBlocks) ProtoMessage() {} + +func (x *EncodedBlocks) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *EncodedBlocks) Reset() { + *x = EncodedBlocks{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EncodedBlocks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Get a set of blocks +type GetBlocksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start uint64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + Length uint64 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` +} + +// Deprecated: Use GetBlocksRequest.ProtoReflect.Descriptor instead. +func (*GetBlocksRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{20} +} + +func (x *GetBlocksRequest) GetLength() uint64 { + if x != nil { + return x.Length + } + return 0 +} + +func (x *GetBlocksRequest) GetStart() uint64 { + if x != nil { + return x.Start + } + return 0 +} + +func (*GetBlocksRequest) ProtoMessage() {} + +func (x *GetBlocksRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetBlocksRequest) Reset() { + *x = GetBlocksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBlocksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type GetBlocksResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to GetBlocksContent: + // + // *GetBlocksResponse_Blocks + // *GetBlocksResponse_Error + GetBlocksContent isGetBlocksResponse_GetBlocksContent `protobuf_oneof:"get_blocks_content"` +} + +// Deprecated: Use GetBlocksResponse.ProtoReflect.Descriptor instead. +func (*GetBlocksResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{24} +} + +func (x *GetBlocksResponse) GetBlocks() *EncodedBlocks { + if x, ok := x.GetGetBlocksContent().(*GetBlocksResponse_Blocks); ok { + return x.Blocks + } + return nil +} + +func (x *GetBlocksResponse) GetError() string { + if x, ok := x.GetGetBlocksContent().(*GetBlocksResponse_Error); ok { + return x.Error + } + return "" +} + +func (m *GetBlocksResponse) GetGetBlocksContent() isGetBlocksResponse_GetBlocksContent { + if m != nil { + return m.GetBlocksContent + } + return nil +} + +func (*GetBlocksResponse) ProtoMessage() {} + +func (x *GetBlocksResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetBlocksResponse) Reset() { + *x = GetBlocksResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBlocksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type GetBlocksResponse_Blocks struct { + Blocks *EncodedBlocks `protobuf:"bytes,1,opt,name=blocks,proto3,oneof"` +} + +func (*GetBlocksResponse_Blocks) isGetBlocksResponse_GetBlocksContent() {} + +type GetBlocksResponse_Error struct { + Error string `protobuf:"bytes,2,opt,name=error,proto3,oneof"` +} + +func (*GetBlocksResponse_Error) isGetBlocksResponse_GetBlocksContent() {} + +// Fetch a list of all of the archive nodes +type GetNodesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use GetNodesRequest.ProtoReflect.Descriptor instead. +func (*GetNodesRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{32} +} + +func (*GetNodesRequest) ProtoMessage() {} + +func (x *GetNodesRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetNodesRequest) Reset() { + *x = GetNodesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type GetNodesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nodes []*PrincipalId `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` +} + +// Deprecated: Use GetNodesResponse.ProtoReflect.Descriptor instead. +func (*GetNodesResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{33} +} + +func (x *GetNodesResponse) GetNodes() []*PrincipalId { + if x != nil { + return x.Nodes + } + return nil +} + +func (*GetNodesResponse) ProtoMessage() {} + +func (x *GetNodesResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetNodesResponse) Reset() { + *x = GetNodesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Hash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` +} + +// Deprecated: Use Hash.ProtoReflect.Descriptor instead. +func (*Hash) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{38} +} + +func (x *Hash) GetHash() []byte { + if x != nil { + return x.Hash + } + return nil +} + +func (*Hash) ProtoMessage() {} + +func (x *Hash) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Hash) Reset() { + *x = Hash{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Hash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Icrc1Memo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Memo []byte `protobuf:"bytes,1,opt,name=memo,proto3" json:"memo,omitempty"` +} + +// Deprecated: Use Icrc1Memo.ProtoReflect.Descriptor instead. +func (*Icrc1Memo) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{49} +} + +func (x *Icrc1Memo) GetMemo() []byte { + if x != nil { + return x.Memo + } + return nil +} + +func (*Icrc1Memo) ProtoMessage() {} + +func (x *Icrc1Memo) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Icrc1Memo) Reset() { + *x = Icrc1Memo{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Icrc1Memo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Iterate through blocks +type IterBlocksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Start uint64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + Length uint64 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` +} + +// Deprecated: Use IterBlocksRequest.ProtoReflect.Descriptor instead. +func (*IterBlocksRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{25} +} + +func (x *IterBlocksRequest) GetLength() uint64 { + if x != nil { + return x.Length + } + return 0 +} + +func (x *IterBlocksRequest) GetStart() uint64 { + if x != nil { + return x.Start + } + return 0 +} + +func (*IterBlocksRequest) ProtoMessage() {} + +func (x *IterBlocksRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *IterBlocksRequest) Reset() { + *x = IterBlocksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IterBlocksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type IterBlocksResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Blocks []*EncodedBlock `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` +} + +// Deprecated: Use IterBlocksResponse.ProtoReflect.Descriptor instead. +func (*IterBlocksResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{26} +} + +func (x *IterBlocksResponse) GetBlocks() []*EncodedBlock { + if x != nil { + return x.Blocks + } + return nil +} + +func (*IterBlocksResponse) ProtoMessage() {} + +func (x *IterBlocksResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *IterBlocksResponse) Reset() { + *x = IterBlocksResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IterBlocksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Archive any blocks older than this +type LedgerArchiveRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timestamp *TimeStamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` +} + +// Deprecated: Use LedgerArchiveRequest.ProtoReflect.Descriptor instead. +func (*LedgerArchiveRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{16} +} + +func (x *LedgerArchiveRequest) GetTimestamp() *TimeStamp { + if x != nil { + return x.Timestamp + } + return nil +} + +func (*LedgerArchiveRequest) ProtoMessage() {} + +func (x *LedgerArchiveRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *LedgerArchiveRequest) Reset() { + *x = LedgerArchiveRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LedgerArchiveRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Initialise the ledger canister +type LedgerInit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MintingAccount *AccountIdentifier `protobuf:"bytes,1,opt,name=minting_account,json=mintingAccount,proto3" json:"minting_account,omitempty"` + InitialValues []*Account `protobuf:"bytes,2,rep,name=initial_values,json=initialValues,proto3" json:"initial_values,omitempty"` + ArchiveCanister *PrincipalId `protobuf:"bytes,3,opt,name=archive_canister,json=archiveCanister,proto3" json:"archive_canister,omitempty"` + MaxMessageSizeBytes uint32 `protobuf:"varint,4,opt,name=max_message_size_bytes,json=maxMessageSizeBytes,proto3" json:"max_message_size_bytes,omitempty"` +} + +// Deprecated: Use LedgerInit.ProtoReflect.Descriptor instead. +func (*LedgerInit) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{1} +} + +func (x *LedgerInit) GetArchiveCanister() *PrincipalId { + if x != nil { + return x.ArchiveCanister + } + return nil +} + +func (x *LedgerInit) GetInitialValues() []*Account { + if x != nil { + return x.InitialValues + } + return nil +} + +func (x *LedgerInit) GetMaxMessageSizeBytes() uint32 { + if x != nil { + return x.MaxMessageSizeBytes + } + return 0 +} + +func (x *LedgerInit) GetMintingAccount() *AccountIdentifier { + if x != nil { + return x.MintingAccount + } + return nil +} + +func (*LedgerInit) ProtoMessage() {} + +func (x *LedgerInit) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *LedgerInit) Reset() { + *x = LedgerInit{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LedgerInit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// The format of values serialized to/from the stable memory during and upgrade +type LedgerUpgrade struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use LedgerUpgrade.ProtoReflect.Descriptor instead. +func (*LedgerUpgrade) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{2} +} + +func (*LedgerUpgrade) ProtoMessage() {} + +func (x *LedgerUpgrade) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *LedgerUpgrade) Reset() { + *x = LedgerUpgrade{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LedgerUpgrade) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Memo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Memo uint64 `protobuf:"varint,1,opt,name=memo,proto3" json:"memo,omitempty"` +} + +// Deprecated: Use Memo.ProtoReflect.Descriptor instead. +func (*Memo) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{48} +} + +func (x *Memo) GetMemo() uint64 { + if x != nil { + return x.Memo + } + return 0 +} + +func (*Memo) ProtoMessage() {} + +func (x *Memo) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Memo) Reset() { + *x = Memo{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Memo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Mint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + To *AccountIdentifier `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` + Amount *Tokens `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` +} + +// Deprecated: Use Mint.ProtoReflect.Descriptor instead. +func (*Mint) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{44} +} + +func (x *Mint) GetAmount() *Tokens { + if x != nil { + return x.Amount + } + return nil +} + +func (x *Mint) GetTo() *AccountIdentifier { + if x != nil { + return x.To + } + return nil +} + +func (*Mint) ProtoMessage() {} + +func (x *Mint) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Mint) Reset() { + *x = Mint{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Mint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Notify a canister that it has received a payment +type NotifyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockHeight *BlockIndex `protobuf:"bytes,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + MaxFee *Tokens `protobuf:"bytes,2,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + FromSubaccount *Subaccount `protobuf:"bytes,3,opt,name=from_subaccount,json=fromSubaccount,proto3" json:"from_subaccount,omitempty"` + ToCanister *PrincipalId `protobuf:"bytes,4,opt,name=to_canister,json=toCanister,proto3" json:"to_canister,omitempty"` + ToSubaccount *Subaccount `protobuf:"bytes,5,opt,name=to_subaccount,json=toSubaccount,proto3" json:"to_subaccount,omitempty"` +} + +// Deprecated: Use NotifyRequest.ProtoReflect.Descriptor instead. +func (*NotifyRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{5} +} + +func (x *NotifyRequest) GetBlockHeight() *BlockIndex { + if x != nil { + return x.BlockHeight + } + return nil +} + +func (x *NotifyRequest) GetFromSubaccount() *Subaccount { + if x != nil { + return x.FromSubaccount + } + return nil +} + +func (x *NotifyRequest) GetMaxFee() *Tokens { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *NotifyRequest) GetToCanister() *PrincipalId { + if x != nil { + return x.ToCanister + } + return nil +} + +func (x *NotifyRequest) GetToSubaccount() *Subaccount { + if x != nil { + return x.ToSubaccount + } + return nil +} + +func (*NotifyRequest) ProtoMessage() {} + +func (x *NotifyRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NotifyRequest) Reset() { + *x = NotifyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotifyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type NotifyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use NotifyResponse.ProtoReflect.Descriptor instead. +func (*NotifyResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{6} +} + +func (*NotifyResponse) ProtoMessage() {} + +func (x *NotifyResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NotifyResponse) Reset() { + *x = NotifyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotifyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Payment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ReceiverGets *Tokens `protobuf:"bytes,1,opt,name=receiver_gets,json=receiverGets,proto3" json:"receiver_gets,omitempty"` +} + +// Deprecated: Use Payment.ProtoReflect.Descriptor instead. +func (*Payment) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{35} +} + +func (x *Payment) GetReceiverGets() *Tokens { + if x != nil { + return x.ReceiverGets + } + return nil +} + +func (*Payment) ProtoMessage() {} + +func (x *Payment) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Payment) Reset() { + *x = Payment{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Payment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// A PB container for a PrincipalId, which uniquely identifies +// a principal. +type PrincipalId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SerializedId []byte `protobuf:"bytes,1,opt,name=serialized_id,json=serializedId,proto3" json:"serialized_id,omitempty"` +} + +// Deprecated: Use PrincipalId.ProtoReflect.Descriptor instead. +func (*PrincipalId) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{0} +} + +func (x *PrincipalId) GetSerializedId() []byte { + if x != nil { + return x.SerializedId + } + return nil +} + +func (*PrincipalId) ProtoMessage() {} + +func (x *PrincipalId) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *PrincipalId) Reset() { + *x = PrincipalId{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrincipalId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Refund struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Refund *BlockIndex `protobuf:"bytes,2,opt,name=refund,proto3" json:"refund,omitempty"` + Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +// Deprecated: Use Refund.ProtoReflect.Descriptor instead. +func (*Refund) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{21} +} + +func (x *Refund) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *Refund) GetRefund() *BlockIndex { + if x != nil { + return x.Refund + } + return nil +} + +func (*Refund) ProtoMessage() {} + +func (x *Refund) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Refund) Reset() { + *x = Refund{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Refund) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Send struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The meaning of the [from] field depends on the transaction type: + // - Transfer: [from] is the source account. + // - TransferFrom: [from] is the approver. + // - Approve: [from] is the approver. + From *AccountIdentifier `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // The meaning of the [to] field depends on the transaction type: + // - Transfer: [to] is the destination account. + // - TransferFrom: [to] is the destination account. + // - Approve: [to] is the default account id of the approved principal. + To *AccountIdentifier `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` + // If the transaction type is Approve, the amount must be zero. + Amount *Tokens `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + MaxFee *Tokens `protobuf:"bytes,4,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + // We represent metadata of new operation types as submessages for + // backward compatibility with old clients. + // + // Types that are assignable to Extension: + // + // *Send_Approve + // *Send_TransferFrom + Extension isSend_Extension `protobuf_oneof:"extension"` +} + +// Deprecated: Use Send.ProtoReflect.Descriptor instead. +func (*Send) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{41} +} + +func (x *Send) GetAmount() *Tokens { + if x != nil { + return x.Amount + } + return nil +} + +func (x *Send) GetApprove() *Approve { + if x, ok := x.GetExtension().(*Send_Approve); ok { + return x.Approve + } + return nil +} + +func (m *Send) GetExtension() isSend_Extension { + if m != nil { + return m.Extension + } + return nil +} + +func (x *Send) GetFrom() *AccountIdentifier { + if x != nil { + return x.From + } + return nil +} + +func (x *Send) GetMaxFee() *Tokens { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Send) GetTo() *AccountIdentifier { + if x != nil { + return x.To + } + return nil +} + +func (x *Send) GetTransferFrom() *TransferFrom { + if x, ok := x.GetExtension().(*Send_TransferFrom); ok { + return x.TransferFrom + } + return nil +} + +func (*Send) ProtoMessage() {} + +func (x *Send) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Send) Reset() { + *x = Send{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Send) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Make a payment +type SendRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Memo *Memo `protobuf:"bytes,1,opt,name=memo,proto3" json:"memo,omitempty"` + Payment *Payment `protobuf:"bytes,2,opt,name=payment,proto3" json:"payment,omitempty"` + MaxFee *Tokens `protobuf:"bytes,3,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + FromSubaccount *Subaccount `protobuf:"bytes,4,opt,name=from_subaccount,json=fromSubaccount,proto3" json:"from_subaccount,omitempty"` + To *AccountIdentifier `protobuf:"bytes,5,opt,name=to,proto3" json:"to,omitempty"` + CreatedAt *BlockIndex `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + CreatedAtTime *TimeStamp `protobuf:"bytes,7,opt,name=created_at_time,json=createdAtTime,proto3" json:"created_at_time,omitempty"` +} + +// Deprecated: Use SendRequest.ProtoReflect.Descriptor instead. +func (*SendRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{3} +} + +func (x *SendRequest) GetCreatedAt() *BlockIndex { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *SendRequest) GetCreatedAtTime() *TimeStamp { + if x != nil { + return x.CreatedAtTime + } + return nil +} + +func (x *SendRequest) GetFromSubaccount() *Subaccount { + if x != nil { + return x.FromSubaccount + } + return nil +} + +func (x *SendRequest) GetMaxFee() *Tokens { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *SendRequest) GetMemo() *Memo { + if x != nil { + return x.Memo + } + return nil +} + +func (x *SendRequest) GetPayment() *Payment { + if x != nil { + return x.Payment + } + return nil +} + +func (x *SendRequest) GetTo() *AccountIdentifier { + if x != nil { + return x.To + } + return nil +} + +func (*SendRequest) ProtoMessage() {} + +func (x *SendRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *SendRequest) Reset() { + *x = SendRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type SendResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ResultingHeight *BlockIndex `protobuf:"bytes,1,opt,name=resulting_height,json=resultingHeight,proto3" json:"resulting_height,omitempty"` +} + +// Deprecated: Use SendResponse.ProtoReflect.Descriptor instead. +func (*SendResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{4} +} + +func (x *SendResponse) GetResultingHeight() *BlockIndex { + if x != nil { + return x.ResultingHeight + } + return nil +} + +func (*SendResponse) ProtoMessage() {} + +func (x *SendResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *SendResponse) Reset() { + *x = SendResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Send_Approve struct { + Approve *Approve `protobuf:"bytes,5,opt,name=approve,proto3,oneof"` +} + +func (*Send_Approve) isSend_Extension() {} + +type Send_TransferFrom struct { + TransferFrom *TransferFrom `protobuf:"bytes,6,opt,name=transfer_from,json=transferFrom,proto3,oneof"` +} + +func (*Send_TransferFrom) isSend_Extension() {} + +type Subaccount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubAccount []byte `protobuf:"bytes,1,opt,name=sub_account,json=subAccount,proto3" json:"sub_account,omitempty"` +} + +// Deprecated: Use Subaccount.ProtoReflect.Descriptor instead. +func (*Subaccount) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{47} +} + +func (x *Subaccount) GetSubAccount() []byte { + if x != nil { + return x.SubAccount + } + return nil +} + +func (*Subaccount) ProtoMessage() {} + +func (x *Subaccount) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Subaccount) Reset() { + *x = Subaccount{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Subaccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TimeStamp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TimestampNanos uint64 `protobuf:"varint,1,opt,name=timestamp_nanos,json=timestampNanos,proto3" json:"timestamp_nanos,omitempty"` +} + +// Deprecated: Use TimeStamp.ProtoReflect.Descriptor instead. +func (*TimeStamp) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{50} +} + +func (x *TimeStamp) GetTimestampNanos() uint64 { + if x != nil { + return x.TimestampNanos + } + return 0 +} + +func (*TimeStamp) ProtoMessage() {} + +func (x *TimeStamp) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TimeStamp) Reset() { + *x = TimeStamp{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeStamp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// Get the length of the chain with a certification +type TipOfChainRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use TipOfChainRequest.ProtoReflect.Descriptor instead. +func (*TipOfChainRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{12} +} + +func (*TipOfChainRequest) ProtoMessage() {} + +func (x *TipOfChainRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TipOfChainRequest) Reset() { + *x = TipOfChainRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TipOfChainRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TipOfChainResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Certification *Certification `protobuf:"bytes,1,opt,name=certification,proto3" json:"certification,omitempty"` + ChainLength *BlockIndex `protobuf:"bytes,2,opt,name=chain_length,json=chainLength,proto3" json:"chain_length,omitempty"` +} + +// Deprecated: Use TipOfChainResponse.ProtoReflect.Descriptor instead. +func (*TipOfChainResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{13} +} + +func (x *TipOfChainResponse) GetCertification() *Certification { + if x != nil { + return x.Certification + } + return nil +} + +func (x *TipOfChainResponse) GetChainLength() *BlockIndex { + if x != nil { + return x.ChainLength + } + return nil +} + +func (*TipOfChainResponse) ProtoMessage() {} + +func (x *TipOfChainResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TipOfChainResponse) Reset() { + *x = TipOfChainResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TipOfChainResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// ** BASIC TYPES ** +type Tokens struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + E8S uint64 `protobuf:"varint,1,opt,name=e8s,proto3" json:"e8s,omitempty"` +} + +// Deprecated: Use Tokens.ProtoReflect.Descriptor instead. +func (*Tokens) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{34} +} + +func (x *Tokens) GetE8S() uint64 { + if x != nil { + return x.E8S + } + return 0 +} + +func (*Tokens) ProtoMessage() {} + +func (x *Tokens) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Tokens) Reset() { + *x = Tokens{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tokens) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type ToppedUp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use ToppedUp.ProtoReflect.Descriptor instead. +func (*ToppedUp) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{22} +} + +func (*ToppedUp) ProtoMessage() {} + +func (x *ToppedUp) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ToppedUp) Reset() { + *x = ToppedUp{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ToppedUp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +// How many Tokens are there not in the minting account +type TotalSupplyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use TotalSupplyRequest.ProtoReflect.Descriptor instead. +func (*TotalSupplyRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{14} +} + +func (*TotalSupplyRequest) ProtoMessage() {} + +func (x *TotalSupplyRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TotalSupplyRequest) Reset() { + *x = TotalSupplyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TotalSupplyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TotalSupplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TotalSupply *Tokens `protobuf:"bytes,1,opt,name=total_supply,json=totalSupply,proto3" json:"total_supply,omitempty"` +} + +// Deprecated: Use TotalSupplyResponse.ProtoReflect.Descriptor instead. +func (*TotalSupplyResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{15} +} + +func (x *TotalSupplyResponse) GetTotalSupply() *Tokens { + if x != nil { + return x.TotalSupply + } + return nil +} + +func (*TotalSupplyResponse) ProtoMessage() {} + +func (x *TotalSupplyResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TotalSupplyResponse) Reset() { + *x = TotalSupplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TotalSupplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Transaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Transfer: + // + // *Transaction_Burn + // *Transaction_Mint + // *Transaction_Send + Transfer isTransaction_Transfer `protobuf_oneof:"transfer"` + Memo *Memo `protobuf:"bytes,4,opt,name=memo,proto3" json:"memo,omitempty"` + Icrc1Memo *Icrc1Memo `protobuf:"bytes,7,opt,name=icrc1_memo,json=icrc1Memo,proto3" json:"icrc1_memo,omitempty"` + CreatedAt *BlockIndex `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // obsolete + CreatedAtTime *TimeStamp `protobuf:"bytes,6,opt,name=created_at_time,json=createdAtTime,proto3" json:"created_at_time,omitempty"` +} + +// Deprecated: Use Transaction.ProtoReflect.Descriptor instead. +func (*Transaction) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{40} +} + +func (x *Transaction) GetBurn() *Burn { + if x, ok := x.GetTransfer().(*Transaction_Burn); ok { + return x.Burn + } + return nil +} + +func (x *Transaction) GetCreatedAt() *BlockIndex { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Transaction) GetCreatedAtTime() *TimeStamp { + if x != nil { + return x.CreatedAtTime + } + return nil +} + +func (x *Transaction) GetIcrc1Memo() *Icrc1Memo { + if x != nil { + return x.Icrc1Memo + } + return nil +} + +func (x *Transaction) GetMemo() *Memo { + if x != nil { + return x.Memo + } + return nil +} + +func (x *Transaction) GetMint() *Mint { + if x, ok := x.GetTransfer().(*Transaction_Mint); ok { + return x.Mint + } + return nil +} + +func (x *Transaction) GetSend() *Send { + if x, ok := x.GetTransfer().(*Transaction_Send); ok { + return x.Send + } + return nil +} + +func (m *Transaction) GetTransfer() isTransaction_Transfer { + if m != nil { + return m.Transfer + } + return nil +} + +func (*Transaction) ProtoMessage() {} + +func (x *Transaction) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Transaction) Reset() { + *x = Transaction{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TransactionNotificationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + From *PrincipalId `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + FromSubaccount *Subaccount `protobuf:"bytes,2,opt,name=from_subaccount,json=fromSubaccount,proto3" json:"from_subaccount,omitempty"` + To *PrincipalId `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` + ToSubaccount *Subaccount `protobuf:"bytes,4,opt,name=to_subaccount,json=toSubaccount,proto3" json:"to_subaccount,omitempty"` + BlockHeight *BlockIndex `protobuf:"bytes,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + Amount *Tokens `protobuf:"bytes,6,opt,name=amount,proto3" json:"amount,omitempty"` + Memo *Memo `protobuf:"bytes,7,opt,name=memo,proto3" json:"memo,omitempty"` +} + +// Deprecated: Use TransactionNotificationRequest.ProtoReflect.Descriptor instead. +func (*TransactionNotificationRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{7} +} + +func (x *TransactionNotificationRequest) GetAmount() *Tokens { + if x != nil { + return x.Amount + } + return nil +} + +func (x *TransactionNotificationRequest) GetBlockHeight() *BlockIndex { + if x != nil { + return x.BlockHeight + } + return nil +} + +func (x *TransactionNotificationRequest) GetFrom() *PrincipalId { + if x != nil { + return x.From + } + return nil +} + +func (x *TransactionNotificationRequest) GetFromSubaccount() *Subaccount { + if x != nil { + return x.FromSubaccount + } + return nil +} + +func (x *TransactionNotificationRequest) GetMemo() *Memo { + if x != nil { + return x.Memo + } + return nil +} + +func (x *TransactionNotificationRequest) GetTo() *PrincipalId { + if x != nil { + return x.To + } + return nil +} + +func (x *TransactionNotificationRequest) GetToSubaccount() *Subaccount { + if x != nil { + return x.ToSubaccount + } + return nil +} + +func (*TransactionNotificationRequest) ProtoMessage() {} + +func (x *TransactionNotificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TransactionNotificationRequest) Reset() { + *x = TransactionNotificationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionNotificationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TransactionNotificationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Response []byte `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` +} + +// Deprecated: Use TransactionNotificationResponse.ProtoReflect.Descriptor instead. +func (*TransactionNotificationResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{8} +} + +func (x *TransactionNotificationResponse) GetResponse() []byte { + if x != nil { + return x.Response + } + return nil +} + +func (*TransactionNotificationResponse) ProtoMessage() {} + +func (x *TransactionNotificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TransactionNotificationResponse) Reset() { + *x = TransactionNotificationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionNotificationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type Transaction_Burn struct { + Burn *Burn `protobuf:"bytes,1,opt,name=burn,proto3,oneof"` +} + +func (*Transaction_Burn) isTransaction_Transfer() {} + +type Transaction_Mint struct { + Mint *Mint `protobuf:"bytes,2,opt,name=mint,proto3,oneof"` +} + +func (*Transaction_Mint) isTransaction_Transfer() {} + +type Transaction_Send struct { + Send *Send `protobuf:"bytes,3,opt,name=send,proto3,oneof"` +} + +func (*Transaction_Send) isTransaction_Transfer() {} + +type TransferFeeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +// Deprecated: Use TransferFeeRequest.ProtoReflect.Descriptor instead. +func (*TransferFeeRequest) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{52} +} + +func (*TransferFeeRequest) ProtoMessage() {} + +func (x *TransferFeeRequest) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TransferFeeRequest) Reset() { + *x = TransferFeeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransferFeeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TransferFeeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TransferFee *Tokens `protobuf:"bytes,1,opt,name=transfer_fee,json=transferFee,proto3" json:"transfer_fee,omitempty"` +} + +// Deprecated: Use TransferFeeResponse.ProtoReflect.Descriptor instead. +func (*TransferFeeResponse) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{53} +} + +func (x *TransferFeeResponse) GetTransferFee() *Tokens { + if x != nil { + return x.TransferFee + } + return nil +} + +func (*TransferFeeResponse) ProtoMessage() {} + +func (x *TransferFeeResponse) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TransferFeeResponse) Reset() { + *x = TransferFeeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransferFeeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type TransferFrom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The default account id of the principal who sent the transaction. + Spender *AccountIdentifier `protobuf:"bytes,1,opt,name=spender,proto3" json:"spender,omitempty"` +} + +// Deprecated: Use TransferFrom.ProtoReflect.Descriptor instead. +func (*TransferFrom) Descriptor() ([]byte, []int) { + return file_ledger_proto_rawDescGZIP(), []int{42} +} + +func (x *TransferFrom) GetSpender() *AccountIdentifier { + if x != nil { + return x.Spender + } + return nil +} + +func (*TransferFrom) ProtoMessage() {} + +func (x *TransferFrom) ProtoReflect() protoreflect.Message { + mi := &file_ledger_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TransferFrom) Reset() { + *x = TransferFrom{} + if protoimpl.UnsafeEnabled { + mi := &file_ledger_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransferFrom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +type isBlockResponse_BlockContent interface { + isBlockResponse_BlockContent() +} +type isCyclesNotificationResponse_Response interface { + isCyclesNotificationResponse_Response() +} +type isGetBlocksResponse_GetBlocksContent interface { + isGetBlocksResponse_GetBlocksContent() +} + +type isSend_Extension interface { + isSend_Extension() +} +type isTransaction_Transfer interface { + isTransaction_Transfer() +} diff --git a/clients/ledger/testdata/ledger.proto b/clients/ledger/testdata/ledger.proto new file mode 100644 index 0000000..737d760 --- /dev/null +++ b/clients/ledger/testdata/ledger.proto @@ -0,0 +1,333 @@ +syntax = "proto3"; + +package ic_ledger.pb.v1; +option go_package = "proto/v1"; + +import "google/protobuf/descriptor.proto"; + +// The annotated message is supported by hardware wallet signing. +// The numbering was chosen as the range 19000-19999 is anyway reserved in protobuf. +extend google.protobuf.MessageOptions { + bool tui_signed_message = 20000; +} + +// The annotated field is displayed on the hardware wallet in the specification +// used by launch of the Internet Computer. +extend google.protobuf.FieldOptions { + bool tui_signed_display_q2_2021 = 20001; +} + +// A PB container for a PrincipalId, which uniquely identifies +// a principal. +message PrincipalId { + option (tui_signed_message) = true; + bytes serialized_id = 1 [(tui_signed_display_q2_2021) = true]; +} +// Annotations related to the use of hardware wallets. The annotated messages are +// parsed on hardware wallets and marked fields are displayed in a trusted user +// interface (TUI). We must not, for instance, add fields that would change the +// semantics of the message such that old hardware wallets would not display +// appropriate information to users. + +// ** LEDGER CANISTER ENDPOINTS + +// Initialise the ledger canister +message LedgerInit { + AccountIdentifier minting_account = 1; + repeated Account initial_values = 2; + PrincipalId archive_canister = 3; + uint32 max_message_size_bytes = 4; +} + +// The format of values serialized to/from the stable memory during and upgrade +message LedgerUpgrade {} + +// Make a payment +message SendRequest { + option (tui_signed_message) = true; + Memo memo = 1 [(tui_signed_display_q2_2021) = true]; + Payment payment = 2 [(tui_signed_display_q2_2021) = true]; + Tokens max_fee = 3 [(tui_signed_display_q2_2021) = true]; + Subaccount from_subaccount = 4 [(tui_signed_display_q2_2021) = true]; + AccountIdentifier to = 5 [(tui_signed_display_q2_2021) = true]; + BlockIndex created_at = 6; + TimeStamp created_at_time = 7; +} + +message SendResponse { + BlockIndex resulting_height = 1; +} + +// Notify a canister that it has received a payment +message NotifyRequest { + option (tui_signed_message) = true; + BlockIndex block_height = 1 [(tui_signed_display_q2_2021) = true]; + Tokens max_fee = 2 [(tui_signed_display_q2_2021) = true]; + Subaccount from_subaccount = 3 [(tui_signed_display_q2_2021) = true]; + PrincipalId to_canister = 4 [(tui_signed_display_q2_2021) = true]; + Subaccount to_subaccount = 5 [(tui_signed_display_q2_2021) = true]; +} + +message NotifyResponse {} + +message TransactionNotificationRequest { + PrincipalId from = 1; + Subaccount from_subaccount = 2; + PrincipalId to = 3; + Subaccount to_subaccount = 4; + BlockIndex block_height = 5; + Tokens amount = 6; + Memo memo = 7; +} + +message TransactionNotificationResponse { + bytes response = 1; +} + +message CyclesNotificationResponse { + oneof response { + PrincipalId created_canister_id = 1; + Refund refund = 2; + ToppedUp topped_up = 3; + } +} + +// Get the balance of an account +message AccountBalanceRequest { + AccountIdentifier account = 1; +} + +message AccountBalanceResponse { + Tokens balance = 1; +} + +// Get the length of the chain with a certification +message TipOfChainRequest {} + +message TipOfChainResponse { + Certification certification = 1; + BlockIndex chain_length = 2; +} + +// How many Tokens are there not in the minting account +message TotalSupplyRequest {} + +message TotalSupplyResponse { + Tokens total_supply = 1; +} + +// Archive any blocks older than this +message LedgerArchiveRequest { + TimeStamp timestamp = 1; +} + +// * Shared Endpoints * + +// Get a single block +message BlockRequest { + uint64 block_height = 1; +} + +message EncodedBlock { + bytes block = 1; +} + +message BlockResponse { + oneof block_content { + EncodedBlock block = 1; + PrincipalId canister_id = 2; + } +} + +// Get a set of blocks +message GetBlocksRequest { + uint64 start = 1; + uint64 length = 2; +} + +message Refund { + BlockIndex refund = 2; + string error = 3; +} + +message ToppedUp {} + +message EncodedBlocks { + repeated EncodedBlock blocks = 1; +} + +message GetBlocksResponse { + oneof get_blocks_content { + EncodedBlocks blocks = 1; + string error = 2; + } +} + +// Iterate through blocks +message IterBlocksRequest { + uint64 start = 1; + uint64 length = 2; +} + +message IterBlocksResponse { + repeated EncodedBlock blocks = 1; +} + +message ArchiveIndexEntry { + uint64 height_from = 1; + uint64 height_to = 2; + PrincipalId canister_id = 3; +} + +message ArchiveIndexResponse { + repeated ArchiveIndexEntry entries = 1; +} + +// ** ARCHIVE CANISTER ENDPOINTS ** + +// * Archive canister * +// Init the archive canister +message ArchiveInit { + uint32 node_max_memory_size_bytes = 1; + uint32 max_message_size_bytes = 2; +} + +// Add blocks to the archive canister +message ArchiveAddRequest { + repeated Block blocks = 1; +} + +message ArchiveAddResponse {} + +// Fetch a list of all of the archive nodes +message GetNodesRequest {} + +message GetNodesResponse { + repeated PrincipalId nodes = 1; +} + +// ** BASIC TYPES ** +message Tokens { + option (tui_signed_message) = true; + uint64 e8s = 1 [(tui_signed_display_q2_2021) = true]; +} + +message Payment { + option (tui_signed_message) = true; + Tokens receiver_gets = 1 [(tui_signed_display_q2_2021) = true]; +} + +message BlockIndex { + option (tui_signed_message) = true; + uint64 height = 1 [(tui_signed_display_q2_2021) = true]; +} + +// This is the +message Block { + Hash parent_hash = 1; + TimeStamp timestamp = 2; + Transaction transaction = 3; +} + +message Hash { + bytes hash = 1; +} + +message Account { + AccountIdentifier identifier = 1; + Tokens balance = 2; +} + +message Transaction { + oneof transfer { + Burn burn = 1; + Mint mint = 2; + Send send = 3; + } + Memo memo = 4; + Icrc1Memo icrc1_memo = 7; + BlockIndex created_at = 5; // obsolete + TimeStamp created_at_time = 6; +} + +message Send { + // The meaning of the [from] field depends on the transaction type: + // - Transfer: [from] is the source account. + // - TransferFrom: [from] is the approver. + // - Approve: [from] is the approver. + AccountIdentifier from = 1; + // The meaning of the [to] field depends on the transaction type: + // - Transfer: [to] is the destination account. + // - TransferFrom: [to] is the destination account. + // - Approve: [to] is the default account id of the approved principal. + AccountIdentifier to = 2; + // If the transaction type is Approve, the amount must be zero. + Tokens amount = 3; + Tokens max_fee = 4; + + // We represent metadata of new operation types as submessages for + // backward compatibility with old clients. + oneof extension { + Approve approve = 5; + TransferFrom transfer_from = 6; + } +} + +message TransferFrom { + // The default account id of the principal who sent the transaction. + AccountIdentifier spender = 1; +} + +message Approve { + Tokens allowance = 1; + TimeStamp expires_at = 2; + Tokens expected_allowance = 3; +} + +message Mint { + AccountIdentifier to = 2; + Tokens amount = 3; +} + +message Burn { + AccountIdentifier from = 1; + Tokens amount = 3; + AccountIdentifier spender = 4; +} + +message AccountIdentifier { + option (tui_signed_message) = true; + // Can contain either: + // * the 32 byte identifier (4 byte checksum + 28 byte hash) + // * the 28 byte hash + bytes hash = 1 [(tui_signed_display_q2_2021) = true]; +} + +message Subaccount { + option (tui_signed_message) = true; + bytes sub_account = 1 [(tui_signed_display_q2_2021) = true]; +} + +message Memo { + option (tui_signed_message) = true; + uint64 memo = 1 [(tui_signed_display_q2_2021) = true]; +} + +message Icrc1Memo { + option (tui_signed_message) = true; + bytes memo = 1 [(tui_signed_display_q2_2021) = true]; +} + +message TimeStamp { + uint64 timestamp_nanos = 1; +} + +message Certification { + bytes certification = 1; +} + +message TransferFeeRequest {} + +message TransferFeeResponse { + Tokens transfer_fee = 1; +} diff --git a/clients/registry/proto/v1/local.pb.go b/clients/registry/proto/v1/local.pb.go index b5b26f7..db16176 100644 --- a/clients/registry/proto/v1/local.pb.go +++ b/clients/registry/proto/v1/local.pb.go @@ -105,81 +105,6 @@ var file_local_proto_rawDesc = []byte{ 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func file_local_proto_init() { - if File_local_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_local_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ChangelogEntry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_local_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*KeyMutation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_local_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*CertifiedTime); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_local_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Delta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_local_proto_rawDesc, - NumEnums: 1, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_local_proto_goTypes, - DependencyIndexes: file_local_proto_depIdxs, - EnumInfos: file_local_proto_enumTypes, - MessageInfos: file_local_proto_msgTypes, - }.Build() - File_local_proto = out.File - file_local_proto_rawDesc = nil - file_local_proto_goTypes = nil - file_local_proto_depIdxs = nil -} - func file_local_proto_rawDescGZIP() []byte { file_local_proto_rawDescOnce.Do(func() { file_local_proto_rawDescData = protoimpl.X.CompressGZIP(file_local_proto_rawDescData) @@ -187,8 +112,6 @@ func file_local_proto_rawDescGZIP() []byte { return file_local_proto_rawDescData } -func init() { file_local_proto_init() } - // The time when the last certified update was successfully received. type CertifiedTime struct { state protoimpl.MessageState @@ -425,6 +348,7 @@ const ( func (MutationType) Descriptor() protoreflect.EnumDescriptor { return file_local_proto_enumTypes[0].Descriptor() } + func (x MutationType) Enum() *MutationType { p := new(MutationType) *p = x @@ -438,10 +362,85 @@ func (MutationType) EnumDescriptor() ([]byte, []int) { func (x MutationType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } - func (x MutationType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (MutationType) Type() protoreflect.EnumType { return &file_local_proto_enumTypes[0] } + +func init() { file_local_proto_init() } +func file_local_proto_init() { + if File_local_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_local_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ChangelogEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_local_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*KeyMutation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_local_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*CertifiedTime); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_local_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Delta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_local_proto_rawDesc, + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_local_proto_goTypes, + DependencyIndexes: file_local_proto_depIdxs, + EnumInfos: file_local_proto_enumTypes, + MessageInfos: file_local_proto_msgTypes, + }.Build() + File_local_proto = out.File + file_local_proto_rawDesc = nil + file_local_proto_goTypes = nil + file_local_proto_depIdxs = nil +} diff --git a/clients/registry/proto/v1/node.pb.go b/clients/registry/proto/v1/node.pb.go index c7bbc1f..a4fd0c6 100644 --- a/clients/registry/proto/v1/node.pb.go +++ b/clients/registry/proto/v1/node.pb.go @@ -180,6 +180,8 @@ func file_node_proto_rawDescGZIP() []byte { return file_node_proto_rawDescData } +func init() { file_node_proto_init() } + // A connection endpoint. type ConnectionEndpoint struct { state protoimpl.MessageState @@ -382,7 +384,6 @@ func (x *NodeRecord) GetXnet() *ConnectionEndpoint { } return nil } - func (*NodeRecord) ProtoMessage() {} func (x *NodeRecord) ProtoReflect() protoreflect.Message { mi := &file_node_proto_msgTypes[2] @@ -395,6 +396,7 @@ func (x *NodeRecord) ProtoReflect() protoreflect.Message { } return mi.MessageOf(x) } + func (x *NodeRecord) Reset() { *x = NodeRecord{} if protoimpl.UnsafeEnabled { @@ -403,8 +405,6 @@ func (x *NodeRecord) Reset() { ms.StoreMessageInfo(mi) } } - func (x *NodeRecord) String() string { return protoimpl.X.MessageStringOf(x) } -func init() { file_node_proto_init() }