-
Notifications
You must be signed in to change notification settings - Fork 1
/
interface.go
35 lines (29 loc) · 1.22 KB
/
interface.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Copyright 2020 The Penguin Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package settlement
import (
"errors"
"math/big"
"github.com/penguintop/penguin_bsc/pkg/penguin"
)
var (
ErrPeerNoSettlements = errors.New("no settlements for peer")
)
// Interface is the interface used by Accounting to trigger settlement
type Interface interface {
// TotalSent returns the total amount sent to a peer
TotalSent(peer penguin.Address) (totalSent *big.Int, err error)
// TotalReceived returns the total amount received from a peer
TotalReceived(peer penguin.Address) (totalSent *big.Int, err error)
// SettlementsSent returns sent settlements for each individual known peer
SettlementsSent() (map[string]*big.Int, error)
// SettlementsReceived returns received settlements for each individual known peer
SettlementsReceived() (map[string]*big.Int, error)
}
type Accounting interface {
PeerDebt(peer penguin.Address) (*big.Int, error)
NotifyPaymentReceived(peer penguin.Address, amount *big.Int) error
NotifyPaymentSent(peer penguin.Address, amount *big.Int, receivedError error)
NotifyRefreshmentReceived(peer penguin.Address, amount *big.Int) error
}