activity

package
v0.166.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2023 License: MPL-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// FilterResponse json is sent as a message in the EventActivityFilteringDone event
	EventActivityFilteringDone          walletevent.EventType = "wallet-activity-filtering-done"
	EventActivityFilteringUpdate        walletevent.EventType = "wallet-activity-filtering-entries-updated"
	EventActivityGetRecipientsDone      walletevent.EventType = "wallet-activity-get-recipients-result"
	EventActivityGetOldestTimestampDone walletevent.EventType = "wallet-activity-get-oldest-timestamp-result"
)
View Source
const NoLimitTimestampForPeriod = 0

Variables

View Source
var (
	ZeroAddress = eth.Address{}
)

Functions

func GetOldestTimestamp added in v0.159.6

func GetOldestTimestamp(ctx context.Context, db *sql.DB, addresses []eth.Address) (timestamp int64, err error)

func GetRecipients added in v0.159.2

func GetRecipients(ctx context.Context, db *sql.DB, offset int, limit int) (addresses []eth.Address, hasMore bool, err error)

Types

type Entry

type Entry struct {
	// contains filtered or unexported fields
}

func NewActivityEntryWithMultiTransaction

func NewActivityEntryWithMultiTransaction(id transfer.MultiTransactionIDType, timestamp int64, activityType Type, activityStatus Status) Entry

func (*Entry) MarshalJSON

func (e *Entry) MarshalJSON() ([]byte, error)

func (*Entry) PayloadType added in v0.152.2

func (e *Entry) PayloadType() PayloadType

func (*Entry) UnmarshalJSON

func (e *Entry) UnmarshalJSON(data []byte) error

type EntryData added in v0.166.7

type EntryData struct {
	PayloadType     PayloadType                      `json:"payloadType"`
	Transaction     *transfer.TransactionIdentity    `json:"transaction,omitempty"`
	ID              *transfer.MultiTransactionIDType `json:"id,omitempty"`
	Timestamp       *int64                           `json:"timestamp,omitempty"`
	ActivityType    *Type                            `json:"activityType,omitempty"`
	ActivityStatus  *Status                          `json:"activityStatus,omitempty"`
	AmountOut       *hexutil.Big                     `json:"amountOut,omitempty"`
	AmountIn        *hexutil.Big                     `json:"amountIn,omitempty"`
	TokenOut        *Token                           `json:"tokenOut,omitempty"`
	TokenIn         *Token                           `json:"tokenIn,omitempty"`
	SymbolOut       *string                          `json:"symbolOut,omitempty"`
	SymbolIn        *string                          `json:"symbolIn,omitempty"`
	Sender          *eth.Address                     `json:"sender,omitempty"`
	Recipient       *eth.Address                     `json:"recipient,omitempty"`
	ChainIDOut      *common.ChainID                  `json:"chainIdOut,omitempty"`
	ChainIDIn       *common.ChainID                  `json:"chainIdIn,omitempty"`
	TransferType    *TransferType                    `json:"transferType,omitempty"`
	ContractAddress *eth.Address                     `json:"contractAddress,omitempty"`

	NftName *string `json:"nftName,omitempty"`
	NftURL  *string `json:"nftUrl,omitempty"`
}

type EntryDetails added in v0.166.1

type EntryDetails struct {
	ID           string         `json:"id"`
	MultiTxID    int            `json:"multiTxId"`
	Nonce        uint64         `json:"nonce"`
	BlockNumber  int64          `json:"blockNumber"`
	Input        string         `json:"input"`
	ProtocolType *ProtocolType  `json:"protocolType,omitempty"`
	Hash         *eth.Hash      `json:"hash,omitempty"`
	Contract     *eth.Address   `json:"contractAddress,omitempty"`
	MaxFeePerGas *hexutil.Big   `json:"maxFeePerGas"`
	GasLimit     hexutil.Uint64 `json:"gasLimit"`
	TotalFees    *hexutil.Big   `json:"totalFees,omitempty"`
}

type ErrorCode added in v0.158.0

type ErrorCode = int
const (
	ErrorCodeSuccess ErrorCode = iota + 1
	ErrorCodeTaskCanceled
	ErrorCodeFailed
)

type Filter

type Filter struct {
	Period                Period        `json:"period"`
	Types                 []Type        `json:"types"`
	Statuses              []Status      `json:"statuses"`
	CounterpartyAddresses []eth.Address `json:"counterpartyAddresses"`

	// Tokens
	Assets                []Token `json:"assets"`
	Collectibles          []Token `json:"collectibles"`
	FilterOutAssets       bool    `json:"filterOutAssets"`
	FilterOutCollectibles bool    `json:"filterOutCollectibles"`
}

type FilterDependencies added in v0.159.2

type FilterDependencies struct {
	// contains filtered or unexported fields
}

type FilterResponse added in v0.158.0

type FilterResponse struct {
	Activities []Entry `json:"activities"`
	Offset     int     `json:"offset"`
	// Used to indicate that there might be more entries that were not returned
	// based on a simple heuristic
	HasMore   bool      `json:"hasMore"`
	ErrorCode ErrorCode `json:"errorCode"`
}

type GetOldestTimestampResponse added in v0.161.2

type GetOldestTimestampResponse struct {
	Timestamp int64     `json:"timestamp"`
	ErrorCode ErrorCode `json:"errorCode"`
}

type GetRecipientsResponse added in v0.161.2

type GetRecipientsResponse struct {
	Addresses []common.Address `json:"addresses"`
	Offset    int              `json:"offset"`
	// Used to indicate that there might be more entries that were not returned
	// based on a simple heuristic
	HasMore   bool      `json:"hasMore"`
	ErrorCode ErrorCode `json:"errorCode"`
}

type PayloadType

type PayloadType = int
const (
	MultiTransactionPT PayloadType = iota + 1
	SimpleTransactionPT
	PendingTransactionPT
)

Beware: please update multiTransactionTypeToActivityType if changing this enum

type Period

type Period struct {
	StartTimestamp int64 `json:"startTimestamp"`
	EndTimestamp   int64 `json:"endTimestamp"`
}

type ProtocolType added in v0.166.1

type ProtocolType = int
const (
	ProtocolHop ProtocolType = iota + 1
	ProtocolUniswap
)

type Service added in v0.158.0

type Service struct {
	// contains filtered or unexported fields
}

func NewService added in v0.158.0

func NewService(db *sql.DB, tokenManager token.ManagerInterface, collectibles collectibles.ManagerInterface, eventFeed *event.Feed, accountsDb *accounts.Database) *Service

func (*Service) FilterActivityAsync added in v0.158.0

func (s *Service) FilterActivityAsync(requestID int32, addresses []common.Address, chainIDs []w_common.ChainID, filter Filter, offset int, limit int)

FilterActivityAsync allows only one filter task to run at a time and it cancels the current one if a new one is started All calls will trigger an EventActivityFilteringDone event with the result of the filtering

func (*Service) GetMultiTxDetails added in v0.166.1

func (s *Service) GetMultiTxDetails(ctx context.Context, multiTxID int) (*EntryDetails, error)

func (*Service) GetOldestTimestampAsync added in v0.161.2

func (s *Service) GetOldestTimestampAsync(requestID int32, addresses []common.Address)

func (*Service) GetRecipientsAsync added in v0.161.2

func (s *Service) GetRecipientsAsync(requestID int32, offset int, limit int) bool

GetRecipientsAsync returns true if a task is already running or scheduled due to a previous call; meaning that this call won't receive an answer but client should rely on the answer from the previous call. If no task is already scheduled false will be returned

func (*Service) GetTxDetails added in v0.166.1

func (s *Service) GetTxDetails(ctx context.Context, id string) (*EntryDetails, error)

func (*Service) Stop added in v0.158.0

func (s *Service) Stop()

type Status

type Status int
const (
	FailedAS    Status = iota // failed status or at least one failed transaction for multi-transactions
	PendingAS                 // in pending DB or at least one transaction in pending for multi-transactions
	CompleteAS                // success status
	FinalizedAS               // all multi-transactions have success status
)

type Token added in v0.159.2

type Token struct {
	TokenType TokenType `json:"tokenType"`
	// ChainID is used for TokenType.Native only to lookup the symbol, all chains will be included in the token filter
	ChainID common.ChainID `json:"chainId"`
	Address eth.Address    `json:"address,omitempty"`
	TokenID *hexutil.Big   `json:"tokenId,omitempty"`
}

Token supports all tokens. Some fields might be optional, depending on the TokenType

type TokenType

type TokenType int
const (
	Native TokenType = iota
	Erc20
	Erc721
	Erc1155
)

type TransferType added in v0.162.9

type TransferType = int
const (
	TransferTypeEth TransferType = iota + 1
	TransferTypeErc20
	TransferTypeErc721
	TransferTypeErc1155
)

type Type

type Type int
const (
	SendAT Type = iota
	ReceiveAT
	BuyAT
	SwapAT
	BridgeAT
	ContractDeploymentAT
	MintAT
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL