keeper

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2023 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalcAmountAsToken0

func CalcAmountAsToken0(amount0, amount1 sdk.Int, price1To0 types.Price) sdk.Dec

func CalcFee

func CalcFee(upperTickIndex, lowerTickIndex int64) int64

func CalcGreatestMatchingRatio

func CalcGreatestMatchingRatio(
	targetAmount0 sdk.Int,
	targetAmount1 sdk.Int,
	amount0 sdk.Int,
	amount1 sdk.Int,
) (resultAmount0, resultAmount1 sdk.Int)

Balance trueAmount1 to the pool ratio

func CalcMultihopPriceUpperbound

func CalcMultihopPriceUpperbound(currentPrice sdk.Dec, remainingSteps []MultihopStep) sdk.Dec

func CalcResidualValue

func CalcResidualValue(amount0, amount1 sdk.Int, priceLower1To0 *types.Price, fee int64) (sdk.Dec, error)

func CreatePairID

func CreatePairID(token0, token1 string) (pairID *types.PairID)

func CreatePairIDFromUnsorted

func CreatePairIDFromUnsorted(tokenA, tokenB string) (*types.PairID, error)

func GetInOutTokens

func GetInOutTokens(tokenIn, tokenA, tokenB string) (_, tokenOut string)

func NewLimitOrderExpiration

func NewLimitOrderExpiration(tranche types.LimitOrderTranche) types.LimitOrderExpiration

func NewLimitOrderTranche

func NewLimitOrderTranche(
	sdkCtx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	goodTil *time.Time,
) (types.LimitOrderTranche, error)

func NewMsgServerImpl

func NewMsgServerImpl(keeper Keeper) types.MsgServer

NewMsgServerImpl returns an implementation of the MsgServer interface for the provided Keeper.

func NewTrancheKey

func NewTrancheKey(sdkCtx sdk.Context) string

func NormalizeAllTickIndexes

func NormalizeAllTickIndexes(baseToken, token0 string, tickIndexes []int64) []int64

func NormalizeTickIndex

func NormalizeTickIndex(baseToken, token0 string, tickIndex int64) int64

func SortAmounts

func SortAmounts(tokenA, token0 string, amountsA, amountsB []sdk.Int) ([]sdk.Int, []sdk.Int)

func SortTokens

func SortTokens(tokenA, tokenB string) (string, string, error)

Types

type Keeper

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

func NewKeeper

func NewKeeper(
	cdc codec.BinaryCodec,
	storeKey,
	memKey sdk.StoreKey,
	ps paramtypes.Subspace,

	bankKeeper types.BankKeeper,
) *Keeper

func (Keeper) BurnShares

func (k Keeper) BurnShares(ctx sdk.Context, addr sdk.AccAddress, amount sdk.Int, sharesID string) error

func (Keeper) CancelLimitOrderCore

func (k Keeper) CancelLimitOrderCore(
	goCtx context.Context,
	trancheKey string,
	callerAddr sdk.AccAddress,
) error

Handles MsgCancelLimitOrder, removing a specified number of shares from a limit order and returning the respective amount in terms of the reserve to the user.

func (Keeper) DepositCore

func (k Keeper) DepositCore(
	goCtx context.Context,
	token0 string,
	token1 string,
	callerAddr sdk.AccAddress,
	receiverAddr sdk.AccAddress,
	amounts0 []sdk.Int,
	amounts1 []sdk.Int,
	tickIndices []int64,
	fees []uint64,
	options []*types.DepositOptions,
) (amounts0Deposit, amounts1Deposit []sdk.Int, sharesIssued sdk.Coins, err error)

Handles core logic for MsgDeposit, checking and initializing data structures (tick, pair), calculating shares based on amount deposited, and sending funds to moduleAddress.

func (Keeper) FindLimitOrderTranche

func (k Keeper) FindLimitOrderTranche(
	ctx sdk.Context,
	pairID *types.PairID,
	tickIndex int64,
	token string,
	trancheKey string,
) (val types.LimitOrderTranche, fromFilled, found bool)

func (Keeper) GetAllInactiveLimitOrderTranche

func (k Keeper) GetAllInactiveLimitOrderTranche(ctx sdk.Context) (list []types.LimitOrderTranche)

GetAllInactiveLimitOrderTranche returns all inactiveLimitOrderTranche

func (Keeper) GetAllLimitOrderExpiration

func (k Keeper) GetAllLimitOrderExpiration(ctx sdk.Context) (list []types.LimitOrderExpiration)

GetAllLimitOrderExpiration returns all goodTilRecord

func (Keeper) GetAllLimitOrderTrancheAtIndex

func (k Keeper) GetAllLimitOrderTrancheAtIndex(
	sdkCtx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
) (trancheList []types.LimitOrderTranche)

func (Keeper) GetAllLimitOrderTrancheUser

func (k Keeper) GetAllLimitOrderTrancheUser(ctx sdk.Context) (list []types.LimitOrderTrancheUser)

GetAllLimitOrderTrancheUser returns all LimitOrderTrancheUser

func (Keeper) GetAllLimitOrderTrancheUserForAddress

func (k Keeper) GetAllLimitOrderTrancheUserForAddress(
	ctx sdk.Context,
	address sdk.AccAddress,
) (list []types.LimitOrderTrancheUser)

func (Keeper) GetAllTickLiquidity

func (k Keeper) GetAllTickLiquidity(ctx sdk.Context) (list []types.TickLiquidity)

GetAllTickLiquidity returns all tickLiquidity

func (Keeper) GetCurrPrice0To1

func (k Keeper) GetCurrPrice0To1(ctx sdk.Context, pairID *types.PairID) (price types.Price, found bool)

func (Keeper) GetCurrPrice1To0

func (k Keeper) GetCurrPrice1To0(ctx sdk.Context, pairID *types.PairID) (price types.Price, found bool)

func (Keeper) GetCurrTick0To1

func (k Keeper) GetCurrTick0To1(ctx sdk.Context, pairID *types.PairID) (tickIdx int64, found bool)

func (Keeper) GetCurrTick1To0

func (k Keeper) GetCurrTick1To0(ctx sdk.Context, pairID *types.PairID) (tickIdx int64, found bool)

func (Keeper) GetFillTranche

func (k Keeper) GetFillTranche(
	sdkCtx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
) (*types.LimitOrderTranche, bool)

func (Keeper) GetInactiveLimitOrderTranche

func (k Keeper) GetInactiveLimitOrderTranche(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	trancheKey string,
) (val types.LimitOrderTranche, found bool)

GetInactiveLimitOrderTranche returns a inactiveLimitOrderTranche from its index

func (Keeper) GetLimitOrderExpiration

func (k Keeper) GetLimitOrderExpiration(
	ctx sdk.Context,
	goodTilDate time.Time,
	trancheRef []byte,
) (val types.LimitOrderExpiration, found bool)

GetLimitOrderExpiration returns a goodTilRecord from its index

func (Keeper) GetLimitOrderTranche

func (k Keeper) GetLimitOrderTranche(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	trancheKey string,
) (tranche *types.LimitOrderTranche, found bool)

func (Keeper) GetLimitOrderTrancheByKey

func (k Keeper) GetLimitOrderTrancheByKey(
	ctx sdk.Context,
	key []byte,
) (tranche *types.LimitOrderTranche, found bool)

func (Keeper) GetLimitOrderTrancheUser

func (k Keeper) GetLimitOrderTrancheUser(
	ctx sdk.Context,
	address string,
	trancheKey string,
) (val types.LimitOrderTrancheUser, found bool)

GetLimitOrderTrancheUser returns a LimitOrderTrancheUser from its index

func (Keeper) GetOrInitLimitOrderTrancheUser

func (k Keeper) GetOrInitLimitOrderTrancheUser(
	ctx sdk.Context,
	pairID *types.PairID,
	tickIndex int64,
	tokenIn string,
	trancheKey string,
	orderType types.LimitOrderType,
	receiver string,
) types.LimitOrderTrancheUser

func (Keeper) GetOrInitPlaceTranche

func (k Keeper) GetOrInitPlaceTranche(ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	goodTil *time.Time,
	orderType types.LimitOrderType,
) (placeTranche types.LimitOrderTranche, err error)

func (Keeper) GetOrInitPool

func (k Keeper) GetOrInitPool(ctx sdk.Context, pairID *types.PairID, centerTickIndex int64, fee uint64) (Pool, error)

func (Keeper) GetOrInitPoolReserves

func (k Keeper) GetOrInitPoolReserves(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	fee uint64,
) (*types.PoolReserves, error)

func (Keeper) GetParams

func (k Keeper) GetParams(_ sdk.Context) types.Params

GetParams get all parameters as types.Params

func (Keeper) GetPlaceTranche

func (k Keeper) GetPlaceTranche(
	sdkCtx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
) (types.LimitOrderTranche, bool)

func (Keeper) GetPoolReserves

func (k Keeper) GetPoolReserves(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	fee uint64,
) (pool *types.PoolReserves, found bool)

func (Keeper) HopsToRouteData

func (k Keeper) HopsToRouteData(ctx sdk.Context, hops []string, exitLimitPrice sdk.Dec) ([]MultihopStep, error)

func (Keeper) IsBehindEnemyLines

func (k Keeper) IsBehindEnemyLines(ctx sdk.Context, pairID *types.PairID, tokenIn string, tickIndex int64) bool

func (Keeper) LimitOrderTranche

Returns a specific limit order tranche either from the tickLiquidity index or from the FillLimitOrderTranche index

func (Keeper) LimitOrderTrancheAll

Returns all ACTIVE limit order tranches for a given pairID/tokenIn combination Does NOT return inactiveLimitOrderTranches

func (Keeper) Logger

func (k Keeper) Logger(ctx sdk.Context) log.Logger

func (Keeper) MintShares

func (k Keeper) MintShares(ctx sdk.Context, addr sdk.AccAddress, shareCoin sdk.Coin) error

func (Keeper) MultiHopSwapCore

func (k Keeper) MultiHopSwapCore(
	goCtx context.Context,
	amountIn sdk.Int,
	routes []*types.MultiHopRoute,
	exitLimitPrice sdk.Dec,
	pickBestRoute bool,
	callerAddr sdk.AccAddress,
	receiverAddr sdk.AccAddress,
) (coinOut sdk.Coin, err error)

func (Keeper) MultihopStep

func (k Keeper) MultihopStep(
	bctx types.BranchableCache,
	step MultihopStep,
	inCoin sdk.Coin,
	exitLimitPrice sdk.Dec,
	currentPrice sdk.Dec,
	remainingSteps []MultihopStep,
	stepCache map[multihopCacheKey]StepResult,
) (sdk.Coin, types.BranchableCache, error)

func (Keeper) NewTickIterator

func (k Keeper) NewTickIterator(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
) TickIterator

func (Keeper) Params

func (Keeper) PlaceLimitOrderCore

func (k Keeper) PlaceLimitOrderCore(
	goCtx context.Context,
	tokenIn string,
	tokenOut string,
	amountIn sdk.Int,
	tickIndex int64,
	orderType types.LimitOrderType,
	goodTil *time.Time,
	callerAddr sdk.AccAddress,
	receiverAddr sdk.AccAddress,
) (trancheKeyP *string, err error)

Handles MsgPlaceLimitOrder, initializing (tick, pair) data structures if needed, calculating and storing information for a new limit order at a specific tick.

func (Keeper) PurgeExpiredLimitOrders

func (k Keeper) PurgeExpiredLimitOrders(ctx sdk.Context, curTime time.Time)

func (Keeper) RemoveInactiveLimitOrderTranche

func (k Keeper) RemoveInactiveLimitOrderTranche(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tickIndex int64,
	trancheKey string,
)

RemoveInactiveLimitOrderTranche removes a inactiveLimitOrderTranche from the store

func (Keeper) RemoveLimitOrderExpiration

func (k Keeper) RemoveLimitOrderExpiration(
	ctx sdk.Context,
	goodTilDate time.Time,
	trancheRef []byte,
)

RemoveLimitOrderExpiration removes a goodTilRecord from the store

func (Keeper) RemoveLimitOrderExpirationByKey

func (k Keeper) RemoveLimitOrderExpirationByKey(ctx sdk.Context, key []byte)

func (Keeper) RemoveLimitOrderTranche

func (k Keeper) RemoveLimitOrderTranche(ctx sdk.Context, tranche types.LimitOrderTranche)

func (Keeper) RemoveLimitOrderTrancheUser

func (k Keeper) RemoveLimitOrderTrancheUser(ctx sdk.Context, trancheUser types.LimitOrderTrancheUser)

func (Keeper) RemoveLimitOrderTrancheUserByKey

func (k Keeper) RemoveLimitOrderTrancheUserByKey(
	ctx sdk.Context,
	trancheKey string,
	address string,
)

RemoveLimitOrderTrancheUserByKey removes a LimitOrderTrancheUser from the store

func (Keeper) RemovePoolReserves

func (k Keeper) RemovePoolReserves(ctx sdk.Context, pool types.PoolReserves)

RemoveTickLiquidity removes a tickLiquidity from the store

func (Keeper) RunMultihopRoute

func (k Keeper) RunMultihopRoute(
	ctx sdk.Context,
	route types.MultiHopRoute,
	initialInCoin sdk.Coin,
	exitLimitPrice sdk.Dec,
	stepCache map[multihopCacheKey]StepResult,
) (sdk.Coin, func(), error)

func (Keeper) SaveInactiveTranche

func (k Keeper) SaveInactiveTranche(sdkCtx sdk.Context, tranche types.LimitOrderTranche)

func (Keeper) SaveLiquidity

func (k Keeper) SaveLiquidity(sdkCtx sdk.Context, liquidityI Liquidity)

func (Keeper) SavePool

func (k Keeper) SavePool(ctx sdk.Context, pool Pool)

func (Keeper) SaveTranche

func (k Keeper) SaveTranche(ctx sdk.Context, tranche types.LimitOrderTranche)

func (Keeper) SaveTrancheUser

func (k Keeper) SaveTrancheUser(ctx sdk.Context, trancheUser types.LimitOrderTrancheUser)

func (Keeper) SetInactiveLimitOrderTranche

func (k Keeper) SetInactiveLimitOrderTranche(ctx sdk.Context, inactiveLimitOrderTranche types.LimitOrderTranche)

SetInactiveLimitOrderTranche set a specific inactiveLimitOrderTranche in the store from its index

func (Keeper) SetLimitOrderExpiration

func (k Keeper) SetLimitOrderExpiration(ctx sdk.Context, goodTilRecord types.LimitOrderExpiration)

SetLimitOrderExpiration set a specific goodTilRecord in the store from its index

func (Keeper) SetLimitOrderTranche

func (k Keeper) SetLimitOrderTranche(ctx sdk.Context, tranche types.LimitOrderTranche)

func (Keeper) SetLimitOrderTrancheUser

func (k Keeper) SetLimitOrderTrancheUser(ctx sdk.Context, limitOrderTrancheUser types.LimitOrderTrancheUser)

SetLimitOrderTrancheUser set a specific LimitOrderTrancheUser in the store from its index

func (Keeper) SetParams

func (k Keeper) SetParams(ctx sdk.Context, params types.Params)

SetParams set the params

func (Keeper) SetPoolReserves

func (k Keeper) SetPoolReserves(ctx sdk.Context, pool types.PoolReserves)

func (Keeper) Swap

func (k Keeper) Swap(ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tokenOut string,
	maxAmountIn sdk.Int,
	maxAmountOut sdk.Int,
	limitPrice *sdk.Dec,
) (totalInCoin, totalOutCoin sdk.Coin, err error)

func (Keeper) SwapCore

func (k Keeper) SwapCore(goCtx context.Context,
	tokenIn string,
	tokenOut string,
	maxAmountIn sdk.Int,
	maxAmountOut sdk.Int,
	callerAddr sdk.AccAddress,
	receiverAddr sdk.AccAddress,
) (coinOut sdk.Coin, err error)

Handles core logic for the asset 0 to asset1 direction of MsgSwap; faciliates swapping amount0 for some amount of amount1, given a specified pair (token0, token1).

func (Keeper) SwapExactAmountIn

func (k Keeper) SwapExactAmountIn(ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tokenOut string,
	amountIn sdk.Int,
	maxAmountOut sdk.Int,
	limitPrice *sdk.Dec,
) (totalIn, totalOut sdk.Coin, err error)

func (Keeper) SwapWithCache

func (k Keeper) SwapWithCache(
	ctx sdk.Context,
	pairID *types.PairID,
	tokenIn string,
	tokenOut string,
	maxAmountIn sdk.Int,
	maxAmountOut sdk.Int,
	limitPrice *sdk.Dec,
) (totalIn, totalOut sdk.Coin, err error)

func (Keeper) WithdrawCore

func (k Keeper) WithdrawCore(
	goCtx context.Context,
	token0 string,
	token1 string,
	callerAddr sdk.AccAddress,
	receiverAddr sdk.AccAddress,
	sharesToRemoveList []sdk.Int,
	tickIndices []int64,
	fees []uint64,
) error

Handles core logic for MsgWithdrawal; calculating and withdrawing reserve0,reserve1 from a specified tick given a specfied number of shares to remove. Calculates the amount of reserve0, reserve1 to withdraw based on the percentage of the desired number of shares to remove compared to the total number of shares at the given tick.

func (Keeper) WithdrawFilledLimitOrderCore

func (k Keeper) WithdrawFilledLimitOrderCore(
	goCtx context.Context,
	trancheKey string,
	callerAddr sdk.AccAddress,
) error

Handles MsgWithdrawFilledLimitOrder, calculates and sends filled liqudity from module to user for a limit order based on amount wished to receive.

type Liquidity

type Liquidity interface {
	Swap(maxAmountIn sdk.Int, maxAmountOut sdk.Int) (inAmount, outAmount sdk.Int)
	Price() *types.Price
}

func NewLiquidityFromPool0To1

func NewLiquidityFromPool0To1(pool *Pool) Liquidity

func NewLiquidityFromPool1To0

func NewLiquidityFromPool1To0(pool *Pool) Liquidity

type LiquidityIterator

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

func NewLiquidityIterator

func NewLiquidityIterator(
	keeper Keeper,
	ctx sdk.Context,
	tradingPair types.DirectionalTradingPair,
) *LiquidityIterator

func (*LiquidityIterator) Close

func (s *LiquidityIterator) Close()

func (*LiquidityIterator) Next

func (s *LiquidityIterator) Next() Liquidity

type MultihopStep

type MultihopStep struct {
	BestPrice   types.Price
	TradingPair types.DirectionalTradingPair
}

type Pool

type Pool struct {
	CenterTickIndex int64
	Fee             uint64
	LowerTick0      *types.PoolReserves
	UpperTick1      *types.PoolReserves
	Price1To0Lower  *types.Price
	Price0To1Upper  *types.Price
}

func NewPool

func NewPool(
	centerTickIndex int64,
	lowerTick0 *types.PoolReserves,
	upperTick1 *types.PoolReserves,
) Pool

TODO: Accept a PairID here so that GetDepositDenom() can reference it directly

func (*Pool) CalcResidualSharesMinted

func (p *Pool) CalcResidualSharesMinted(
	residualAmount0 sdk.Int,
	residualAmount1 sdk.Int,
) (sharesMinted sdk.Coin, err error)

func (*Pool) CalcSharesMinted

func (p *Pool) CalcSharesMinted(
	amount0 sdk.Int,
	amount1 sdk.Int,
	existingShares sdk.Int,
) (sharesMinted sdk.Coin)

func (*Pool) Deposit

func (p *Pool) Deposit(
	maxAmount0,
	maxAmount1,
	existingShares sdk.Int,
	autoswap bool,
) (inAmount0, inAmount1 sdk.Int, outShares sdk.Coin)

Mutates the Pool object and returns relevant change variables. Deposit is not committed until pool.save() is called or the underlying ticks are saved; this method does not use any keeper methods.

func (*Pool) GetDepositDenom

func (p *Pool) GetDepositDenom() string

func (*Pool) GetLowerReserve0

func (p *Pool) GetLowerReserve0() sdk.Int

func (*Pool) GetUpperReserve1

func (p *Pool) GetUpperReserve1() sdk.Int

func (*Pool) MustCalcPrice1To0Center

func (p *Pool) MustCalcPrice1To0Center() *types.Price

func (*Pool) RedeemValue

func (p *Pool) RedeemValue(sharesToRemove, totalShares sdk.Int) (outAmount0, outAmount1 sdk.Int)

func (*Pool) Swap0To1

func (p *Pool) Swap0To1(maxAmount0 sdk.Int, maxAmountOut1 sdk.Int) (inAmount0, outAmount1 sdk.Int)

func (*Pool) Swap1To0

func (p *Pool) Swap1To0(maxAmount1 sdk.Int, maxAmountOut0 sdk.Int) (inAmount1, outAmount0 sdk.Int)

func (*Pool) Withdraw

func (p *Pool) Withdraw(sharesToRemove, totalShares sdk.Int) (outAmount0, outAmount1 sdk.Int)

type PoolLiquidity

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

func (*PoolLiquidity) Price

func (pl *PoolLiquidity) Price() *types.Price

func (*PoolLiquidity) Swap

func (pl *PoolLiquidity) Swap(maxAmountIn sdk.Int, maxAmountOut sdk.Int) (inAmount, outAmount sdk.Int)

type StepResult

type StepResult struct {
	Ctx     types.BranchableCache
	CoinOut sdk.Coin
	Err     error
}

type TickIterator

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

func (TickIterator) Close

func (ti TickIterator) Close() error

func (TickIterator) Next

func (ti TickIterator) Next()

func (TickIterator) Valid

func (ti TickIterator) Valid() bool

func (TickIterator) Value

func (ti TickIterator) Value() (tick types.TickLiquidity)

type UserProfile

type UserProfile struct {
	Address sdk.AccAddress
}

func NewUserProfile

func NewUserProfile(address sdk.AccAddress) UserProfile

func (UserProfile) GetAllDeposits

func (u UserProfile) GetAllDeposits(ctx sdk.Context, k Keeper) []types.DepositRecord

func (UserProfile) GetAllLimitOrders

func (u UserProfile) GetAllLimitOrders(ctx sdk.Context, k Keeper) []types.LimitOrderTrancheUser

func (UserProfile) GetAllPositions

func (u UserProfile) GetAllPositions(ctx sdk.Context, k Keeper) types.UserPositions

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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