wormhole-explorer/contract-watcher/internal/ankr/types.go

127 lines
4.0 KiB
Go

package ankr
type MaultichainOption func(*TransactionsByAddressRequest)
type TransactionsByAddressRequest struct {
ID int64 `json:"id"`
Jsonrpc string `json:"jsonrpc"`
Method string `json:"method"`
RequestParams RequestParams `json:"params"`
}
func WithBlochchain(blockchain string) MaultichainOption {
return func(h *TransactionsByAddressRequest) {
h.RequestParams.Blockchain = blockchain
}
}
func WithContract(address []string) MaultichainOption {
return func(h *TransactionsByAddressRequest) {
h.RequestParams.Address = address
}
}
func WithBlocks(fromBlock int64, toBlock int64) MaultichainOption {
return func(h *TransactionsByAddressRequest) {
h.RequestParams.FromBlock = fromBlock
h.RequestParams.ToBlock = toBlock
}
}
func WithPageToken(pageToken string) MaultichainOption {
return func(h *TransactionsByAddressRequest) {
h.RequestParams.PageToken = pageToken
}
}
func NewTransactionsByAddressRequest(opts ...MaultichainOption) *TransactionsByAddressRequest {
const (
defaultMethod = "ankr_getTransactionsByAddress"
)
h := &TransactionsByAddressRequest{
ID: 1,
Jsonrpc: "2.0",
Method: defaultMethod,
RequestParams: RequestParams{
DescOrder: false,
},
}
for _, opt := range opts {
opt(h)
}
return h
}
type RequestParams struct {
Address []string `json:"address"`
Blockchain string `json:"blockchain"`
FromBlock int64 `json:"fromBlock,omitempty"`
ToBlock int64 `json:"toBlock,omitempty"`
FromTimestamp int64 `json:"fromTimestamp,omitempty"`
ToTimestamp int64 `json:"toTimestamp,omitempty"`
IncludeLogs bool `json:"includeLogs,omitempty"`
DescOrder bool `json:"descOrder,omitempty"`
PageSize int64 `json:"pageSize,omitempty"`
PageToken string `json:"pageToken,omitempty"`
}
type TransactionsByAddressResponse struct {
ID int64 `json:"id"`
Jsonrpc string `json:"jsonrpc"`
Result struct {
NextPageToken string `json:"nextPageToken"`
Transactions []struct {
BlockHash string `json:"blockHash"`
BlockNumber string `json:"blockNumber"`
Blockchain string `json:"blockchain"`
CumulativeGasUsed string `json:"cumulativeGasUsed"`
From string `json:"from"`
Gas string `json:"gas"`
GasPrice string `json:"gasPrice"`
GasUsed string `json:"gasUsed"`
Hash string `json:"hash"`
Input string `json:"input"`
Logs []struct {
Address string `json:"address"`
BlockHash string `json:"blockHash"`
BlockNumber string `json:"blockNumber"`
Blockchain string `json:"blockchain"`
Data string `json:"data"`
LogIndex string `json:"logIndex"`
Removed bool `json:"removed"`
Topics []string `json:"topics"`
TransactionHash string `json:"transactionHash"`
TransactionIndex string `json:"transactionIndex"`
} `json:"logs"`
Nonce string `json:"nonce"`
R string `json:"r"`
S string `json:"s"`
Status string `json:"status"`
Timestamp string `json:"timestamp"`
To string `json:"to"`
TransactionIndex string `json:"transactionIndex"`
Type string `json:"type"`
V string `json:"v"`
Value string `json:"value"`
} `json:"transactions"`
} `json:"result"`
}
type BlockchainStatsResponse struct {
ID int64 `json:"id"`
Jsonrpc string `json:"jsonrpc"`
Result struct {
Stats []struct {
BlockTimeMs int64 `json:"blockTimeMs"`
Blockchain string `json:"blockchain"`
LatestBlockNumber int64 `json:"latestBlockNumber"`
NativeCoinUsdPrice string `json:"nativeCoinUsdPrice"`
TotalEventsCount int64 `json:"totalEventsCount"`
TotalTransactionsCount int64 `json:"totalTransactionsCount"`
} `json:"stats"`
} `json:"result"`
}