68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package types
|
|
|
|
import "time"
|
|
|
|
// Chain represents a blockchain type
|
|
type Chain string
|
|
|
|
const (
|
|
ChainBitcoin Chain = "bitcoin"
|
|
ChainEthereum Chain = "ethereum"
|
|
)
|
|
|
|
// AddressInfo contains information about a derived address
|
|
type AddressInfo struct {
|
|
Address string
|
|
Path string
|
|
Balance uint64
|
|
TxCount int
|
|
Chain Chain
|
|
Received uint64
|
|
Sent uint64
|
|
}
|
|
|
|
// Transaction represents a blockchain transaction
|
|
type Transaction struct {
|
|
TxID string
|
|
Time time.Time
|
|
BlockHeight int
|
|
Confirmed bool
|
|
Received uint64
|
|
Sent uint64
|
|
Fee uint64
|
|
NetChange int64 // Can be negative
|
|
Addresses []string
|
|
}
|
|
|
|
// TransactionDetail provides detailed transaction information
|
|
type TransactionDetail struct {
|
|
TxID string
|
|
Time time.Time
|
|
BlockHeight int
|
|
Confirmed bool
|
|
Type string // "received", "sent", "self"
|
|
Amount uint64
|
|
Balance uint64 // Running balance after this tx
|
|
Address string
|
|
}
|
|
|
|
// WalletSummary contains overall wallet statistics
|
|
type WalletSummary struct {
|
|
TotalBalance uint64
|
|
TotalReceived uint64
|
|
TotalSent uint64
|
|
TotalTxCount int
|
|
ReceiveTxCount int
|
|
SendTxCount int
|
|
ActiveAddresses []AddressInfo
|
|
TransactionHistory []TransactionDetail
|
|
}
|
|
|
|
// ChainAnalyzer defines the interface for blockchain analysis
|
|
type ChainAnalyzer interface {
|
|
DeriveAddresses(seed []byte, count int) ([]AddressInfo, error)
|
|
GetAddressInfo(address string) (balance, txCount uint64, received, sent uint64, err error)
|
|
GetTransactions(address string) ([]Transaction, error)
|
|
GetChain() Chain
|
|
}
|