Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

router source realm

Package router provides swap routing and execution across GnoSwap liquidity pools.

Overview

Package router provides swap routing and execution across GnoSwap liquidity pools.

The router handles token swaps with multi-hop routing, slippage protection, and automatic GNOT wrapping/unwrapping. It supports both exact input and exact output swap modes with deadline validation.

Key features: - Multi-hop routing across up to 3 pools - Quote distribution for optimal execution - Native GNOT handling with automatic wrap/unwrap - Slippage protection via min/max amounts - Router fee (0.15%) on all swaps - Deadline enforcement to prevent stale transactions

The router acts as a proxy to version-specific implementations, currently routing to v1 for all swap operations.

Constants 1

Functions 12

func DrySwapRoute

Action
1func DrySwapRoute(
2	inputToken, outputToken string,
3	specifiedAmount string,
4	swapTypeStr string,
5	strRouteArr, quoteArr string,
6	tokenAmountLimit string,
7) (string, string, bool)
source

DrySwapRoute simulates a swap route without executing it.

Parameters:

  • inputToken: path of input token
  • outputToken: path of output token
  • specifiedAmount: specified amount for the swap
  • swapTypeStr: swap type string ("ExactIn" or "ExactOut")
  • strRouteArr: encoded route array
  • quoteArr: encoded quote array
  • tokenAmountLimit: token amount limit

Returns:

  • string: estimated input amount
  • string: estimated output amount
  • bool: success status

func ExactInSingleSwapRoute

crossing Action
1func ExactInSingleSwapRoute(cur realm, inputToken string, outputToken string, amountIn string, routeArr string, amountOutMin string, sqrtPriceLimitX96 string, deadline int64, referrer string) (string, string)
source

ExactInSingleSwapRoute executes a single-hop swap with exact input amount.

Parameters:

  • inputToken: path of input token
  • outputToken: path of output token
  • amountIn: exact input amount
  • routeArr: encoded route
  • amountOutMin: minimum output amount
  • sqrtPriceLimitX96: price limit for the swap
  • deadline: transaction deadline
  • referrer: referrer address for reward tracking

Returns:

  • string: actual input amount
  • string: actual output amount

func ExactInSwapRoute

crossing Action
1func ExactInSwapRoute(cur realm, inputToken string, outputToken string, amountIn string, routeArr string, quoteArr string, amountOutMin string, deadline int64, referrer string) (string, string)
source

ExactInSwapRoute executes a multi-hop swap with exact input amount.

Parameters:

  • inputToken: path of input token
  • outputToken: path of output token
  • amountIn: exact input amount
  • routeArr: encoded route array
  • quoteArr: encoded quote array
  • amountOutMin: minimum output amount
  • deadline: transaction deadline
  • referrer: referrer address for reward tracking

Returns:

  • string: actual input amount
  • string: actual output amount

func ExactOutSingleSwapRoute

crossing Action
1func ExactOutSingleSwapRoute(cur realm, inputToken string, outputToken string, amountOut string, routeArr string, amountInMax string, sqrtPriceLimitX96 string, deadline int64, referrer string) (string, string)
source

ExactOutSingleSwapRoute executes a single-hop swap with exact output amount.

Parameters:

  • inputToken: path of input token
  • outputToken: path of output token
  • amountOut: exact output amount
  • routeArr: encoded route
  • amountInMax: maximum input amount
  • sqrtPriceLimitX96: price limit for the swap
  • deadline: transaction deadline
  • referrer: referrer address for reward tracking

Returns:

  • string: actual input amount
  • string: actual output amount

func ExactOutSwapRoute

crossing Action
1func ExactOutSwapRoute(cur realm, inputToken string, outputToken string, amountOut string, routeArr string, quoteArr string, amountInMax string, deadline int64, referrer string) (string, string)
source

ExactOutSwapRoute executes a multi-hop swap with exact output amount.

Parameters:

  • inputToken: path of input token
  • outputToken: path of output token
  • amountOut: exact output amount
  • routeArr: encoded route array
  • quoteArr: encoded quote array
  • amountInMax: maximum input amount
  • deadline: transaction deadline
  • referrer: referrer address for reward tracking

Returns:

  • string: actual input amount
  • string: actual output amount

func RegisterInitializer

crossing Action
1func RegisterInitializer(cur realm, initializer func(_ int, rlm realm, routerStore IRouterStore) IRouter)
source

RegisterInitializer registers a new router implementation version. This function is called by each version (v1, v2, etc.) during initialization to register their implementation with the proxy system.

The initializer function creates a new instance of the implementation using the provided routerStore interface.

Security: Only contracts within the domain path can register initializers. Each package path can only register once to prevent duplicate registrations.

func SetSwapFee

crossing Action
1func SetSwapFee(cur realm, fee uint64)
source

SetSwapFee sets the swap fee rate.

Parameters:

  • fee: new swap fee in basis points

func SwapCallback

crossing Action
1func SwapCallback(cur realm, token0Path string, token1Path string, amount0Delta int64, amount1Delta int64, payer address) error
source

SwapCallback is called by pools to transfer tokens during a swap.

func UpgradeImpl

crossing Action
1func UpgradeImpl(cur realm, packagePath string)
source

UpgradeImpl switches the active router implementation to a different version. This function allows seamless upgrades from one version to another without data migration or downtime.

Security: Only admin or governance can perform upgrades. The new implementation must have been previously registered via RegisterInitializer.

func NewRouterStore

Action
1func NewRouterStore(kvStore store.KVStore) IRouterStore
source

NewRouterStore creates a new router store instance with the provided KV store. This function is used by the upgrade system to create storage instances for each implementation.

Types 3

type IRouter

interface
 1type IRouter interface {
 2	ExactInSwapRoute(_ int, rlm realm, inputToken string, outputToken string, amountIn string, routeArr string, quoteArr string, amountOutMin string, deadline int64, referrer string) (string, string)
 3	ExactInSingleSwapRoute(_ int, rlm realm, inputToken string, outputToken string, amountIn string, routeArr string, amountOutMin string, sqrtPriceLimitX96 string, deadline int64, referrer string) (string, string)
 4
 5	ExactOutSwapRoute(_ int, rlm realm, inputToken string, outputToken string, amountOut string, routeArr string, quoteArr string, amountInMax string, deadline int64, referrer string) (string, string)
 6	ExactOutSingleSwapRoute(_ int, rlm realm, inputToken string, outputToken string, amountOut string, routeArr string, amountInMax string, sqrtPriceLimitX96 string, deadline int64, referrer string) (string, string)
 7
 8	DrySwapRoute(inputToken, outputToken, specifiedAmount, swapTypeStr, strRouteArr, quoteArr, tokenAmountLimit string) (string, string, bool)
 9	SwapCallback(_ int, rlm realm, token0Path string, token1Path string, amount0Delta int64, amount1Delta int64, payer address) error
10
11	GetSwapFee() uint64
12	SetSwapFee(_ int, rlm realm, fee uint64)
13}
source

type IRouterStore

interface
1type IRouterStore interface {
2	HasSwapFeeKey() bool
3	GetSwapFee() uint64
4	SetSwapFee(_ int, rlm realm, fee uint64) error
5	HasPendingProtocolFeesKey() bool
6	GetPendingProtocolFees() map[string]int64
7	SetPendingProtocolFees(_ int, rlm realm, fees map[string]int64) error
8}
source

type StoreKey

ident
1type StoreKey string
source

Methods on StoreKey

func String

method on StoreKey
1func (s StoreKey) String() string
source

Imports 6

Source Files 7

Directories 1