forked from osmosis-labs/sqs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
routable_pool.go
41 lines (27 loc) · 1.12 KB
/
routable_pool.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
36
37
38
39
40
41
package sqsdomain
import (
"context"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/osmosis-labs/osmosis/osmomath"
poolmanagertypes "github.com/osmosis-labs/osmosis/v25/x/poolmanager/types"
)
type RoutablePool interface {
GetId() uint64
GetType() poolmanagertypes.PoolType
// IsGeneralizedCosmWasmPool returns true if this is a generalized cosmwasm pool.
// Pools with such code ID are enabled in the router. For computing quotes or spot price,
// they interact with the chain. Additionally, routes that contain such pools are disabled
// in the router.
IsGeneralizedCosmWasmPool() bool
// GetCodeID returns the code ID of the pool if this is a CosmWasm pool.
// If this is not a CosmWasm pool, it returns 0.
GetCodeID() uint64
GetPoolDenoms() []string
GetTokenOutDenom() string
CalcSpotPrice(ctx context.Context, baseDenom string, quoteDenom string) (osmomath.BigDec, error)
CalculateTokenOutByTokenIn(ctx context.Context, tokenIn sdk.Coin) (sdk.Coin, error)
ChargeTakerFeeExactIn(tokenIn sdk.Coin) (tokenInAfterFee sdk.Coin)
GetTakerFee() osmomath.Dec
GetSpreadFactor() osmomath.Dec
String() string
}