code.vegaprotocol.io/vega@v0.79.0/wallet/api/node/node.go (about)

     1  // Copyright (C) 2023 Gobalsky Labs Limited
     2  //
     3  // This program is free software: you can redistribute it and/or modify
     4  // it under the terms of the GNU Affero General Public License as
     5  // published by the Free Software Foundation, either version 3 of the
     6  // License, or (at your option) any later version.
     7  //
     8  // This program is distributed in the hope that it will be useful,
     9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    11  // GNU Affero General Public License for more details.
    12  //
    13  // You should have received a copy of the GNU Affero General Public License
    14  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    15  
    16  package node
    17  
    18  import (
    19  	"context"
    20  
    21  	apipb "code.vegaprotocol.io/vega/protos/vega/api/v1"
    22  	commandspb "code.vegaprotocol.io/vega/protos/vega/commands/v1"
    23  	nodetypes "code.vegaprotocol.io/vega/wallet/api/node/types"
    24  )
    25  
    26  // Generates mocks
    27  //go:generate go run github.com/golang/mock/mockgen -destination mocks/nodes_mocks.go -package mocks code.vegaprotocol.io/vega/wallet/api/node Node,Selector
    28  
    29  // Node is the component used to get network information and send transactions.
    30  type Node interface {
    31  	Host() string
    32  	Stop() error
    33  	CheckTransaction(context.Context, *commandspb.Transaction) error
    34  	SendTransaction(context.Context, *commandspb.Transaction, apipb.SubmitTransactionRequest_Type) (string, error)
    35  	Statistics(ctx context.Context) (nodetypes.Statistics, error)
    36  	LastBlock(context.Context) (nodetypes.LastBlock, error)
    37  	SpamStatistics(ctx context.Context, pubKey string) (nodetypes.SpamStatistics, error)
    38  }
    39  
    40  // ReportType defines the type of event that occurred.
    41  type ReportType string
    42  
    43  var (
    44  	InfoEvent    ReportType = "Info"
    45  	WarningEvent ReportType = "Warning"
    46  	ErrorEvent   ReportType = "Error"
    47  	SuccessEvent ReportType = "Success"
    48  )
    49  
    50  type SelectionReporter func(ReportType, string)
    51  
    52  // Selector implementing the strategy for node selection.
    53  type Selector interface {
    54  	Node(ctx context.Context, reporterFn SelectionReporter) (Node, error)
    55  	Stop()
    56  }