72 lines
2.7 KiB
Go
72 lines
2.7 KiB
Go
package pathprocessor
|
|
|
|
import (
|
|
"math/big"
|
|
|
|
ethTypes "github.com/ethereum/go-ethereum/core/types"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/status-im/status-go/account"
|
|
"github.com/status-im/status-go/eth-node/types"
|
|
"github.com/status-im/status-go/params"
|
|
"github.com/status-im/status-go/services/wallet/token"
|
|
"github.com/status-im/status-go/transactions"
|
|
)
|
|
|
|
type PathProcessor interface {
|
|
// Name returns the name of the bridge
|
|
Name() string
|
|
// AvailableFor checks if the bridge is available for the given networks/tokens
|
|
AvailableFor(params ProcessorInputParams) (bool, error)
|
|
// CalculateFees calculates the fees for the bridge and returns the amount BonderFee and TokenFee (used for bridges)
|
|
CalculateFees(params ProcessorInputParams) (*big.Int, *big.Int, error)
|
|
// PackTxInputData packs tx for sending
|
|
PackTxInputData(params ProcessorInputParams) ([]byte, error)
|
|
// EstimateGas estimates the gas
|
|
EstimateGas(params ProcessorInputParams) (uint64, error)
|
|
// CalculateAmountOut calculates the amount out
|
|
CalculateAmountOut(params ProcessorInputParams) (*big.Int, error)
|
|
// Send sends the tx, returns the hash and the used nonce (lastUsedNonce is -1 if it's the first tx)
|
|
Send(sendArgs *MultipathProcessorTxArgs, lastUsedNonce int64, verifiedAccount *account.SelectedExtKey) (types.Hash, uint64, error)
|
|
// GetContractAddress returns the contract address
|
|
GetContractAddress(params ProcessorInputParams) (common.Address, error)
|
|
// BuildTransaction builds the transaction based on MultipathProcessorTxArgs, returns the transaction and the used nonce (lastUsedNonce is -1 if it's the first tx)
|
|
BuildTransaction(sendArgs *MultipathProcessorTxArgs, lastUsedNonce int64) (*ethTypes.Transaction, uint64, error)
|
|
// BuildTransactionV2 builds the transaction based on SendTxArgs, returns the transaction and the used nonce (lastUsedNonce is -1 if it's the first tx)
|
|
BuildTransactionV2(sendArgs *transactions.SendTxArgs, lastUsedNonce int64) (*ethTypes.Transaction, uint64, error)
|
|
}
|
|
|
|
type PathProcessorClearable interface {
|
|
// Clear clears the local cache
|
|
Clear()
|
|
}
|
|
|
|
type ProcessorInputParams struct {
|
|
FromChain *params.Network
|
|
ToChain *params.Network
|
|
FromAddr common.Address
|
|
ToAddr common.Address
|
|
FromToken *token.Token
|
|
ToToken *token.Token
|
|
AmountIn *big.Int
|
|
AmountOut *big.Int
|
|
|
|
// extra params
|
|
BonderFee *big.Int
|
|
Username string
|
|
PublicKey string
|
|
PackID *big.Int
|
|
|
|
// for testing purposes
|
|
TestsMode bool
|
|
TestEstimationMap map[string]Estimation // [bridge-name, estimation]
|
|
TestBonderFeeMap map[string]*big.Int // [token-symbol, bonder-fee]
|
|
TestApprovalGasEstimation uint64
|
|
TestApprovalL1Fee uint64
|
|
}
|
|
|
|
type Estimation struct {
|
|
Value uint64
|
|
Err error
|
|
}
|