Proteus.sol

Github link: https://github.com/Shell-Protocol/Shell-Protocol/blob/main/src/proteus/Proteus.solarrow-up-right

constructor()

constructor(
    int128[] memory ms,
    int128[] memory _as,
    int128[] memory bs,
    int128[] memory ks
) Slices(ms, _as, bs, ks);
Parameter Name
Type
Description

ms

int128[]

a list of slopes of the radial lines

_as

int128[]

bs

int128[]

ks

int128[]

a list of values for relative scale factors of each slice

This method is called whenever a new pool is deployed.

swapGivenInputAmount()

/**
* @dev Given an input amount of a reserve token, we compute an output
*  amount of the other reserve token, keeping utility invariant.
* @dev We use FEE_DOWN because we want to decrease the perceived
*  input amount and decrease the observed output amount.
*/
function swapGivenInputAmount(
   uint256 xBalance,
   uint256 yBalance,
   uint256 inputAmount,
   SpecifiedToken inputToken
) external view returns (
   uint256 outputAmount
);
Parameter Name
Type
Description

xBalance

unit256

x token balance

yBalance

unit256

y token balance

inputAmount

unit256

amount of input tokens to swap for output tokens

inputToken

SpecifiedToken enum

SpecifiedToken.X or SpecifiedToken.Y

SpecifiedToken enum:

Enum Member Name
Type
Description

X

enum member (technically token Ocean ID)

an indicator stating usage of token X in the operation

Y

enum member (technically token Ocean ID)

an indicator stating usage of token Y in the operation

This function computes output amount of the reserve token based on the input amount of the reserved token.

It should...

  1. Return the output amount based on the input amount.

swapGivenOutputAmount()

Parameter Name
Type
Description

xBalance

unit256

x token balance

yBalance

unit256

y token balance

outputAmount

unit256

amount of output tokens to swap for input tokens

outputToken

SpecifiedToken enum

SpecifiedToken.X or SpecifiedToken.Y

SpecifiedToken enum:

Enum Member Name
Type
Description

X

enum member (technically token Ocean ID)

an indicator stating usage of token X in the operation

Y

enum member (technically token Ocean ID)

an indicator stating usage of token Y in the operation

This function computes input amount of the reserve token necessary to get for the desired amount of the output token.

It should...

  1. Return input amount necessary to receive the output amount.

depositGivenInputAmount()

Parameter Name
Type
Description

xBalance

unit256

x token balance

yBalance

unit256

y token balance

totalSupply

unit256

total supply of the LP tokens that exists currently

depositedAmount

unit256

the amount of token to be deposited

depositedToken

SpecifiedToken enum

SpecifiedToken.X or SpecifiedToken.Y

SpecifiedToken enum:

Enum Member Name
Type
Description

X

enum member (technically token Ocean ID)

an indicator stating usage of token X in the operation

Y

enum member (technically token Ocean ID)

an indicator stating usage of token Y in the operation

This function computes output amount of LP tokens based on the amount of the input token.

It should...

  1. Return amount of LP tokens minted for the amount of the provided token.

depositGivenOutputAmount()

Parameter Name
Type
Description

xBalance

unit256

x token balance

yBalance

unit256

y token balance

totalSupply

unit256

total supply of the LP tokens that exists currently

mintedAmount

unit256

the amount of LP token to be minted

depositedToken

SpecifiedToken enum

SpecifiedToken.X or SpecifiedToken.Y

SpecifiedToken enum:

Enum Member Name
Type
Description

X

enum member (technically token Ocean ID)

an indicator stating usage of token X in the operation

Y

enum member (technically token Ocean ID)

an indicator stating usage of token Y in the operation

This function computes deposit amount necessary to in order to receive desired amount of LP tokens (minted amount).

It should...

  1. Return amount of deposited token necessary to get the desired amount of LP tokens.

withdrawGivenOutputAmount()

Parameter Name
Type
Description

xBalance

unit256

x token balance

yBalance

unit256

y token balance

totalSupply

unit256

total supply of the LP tokens that exists currently

withdrawnAmount

unit256

the amount of token to be withdrawn

withdrawnToken

SpecifiedToken enum

SpecifiedToken.X or SpecifiedToken.Y

SpecifiedToken enum:

Enum Member Name
Type
Description

X

enum member (technically token Ocean ID)

an indicator stating usage of token X in the operation

Y

enum member (technically token Ocean ID)

an indicator stating usage of token Y in the operation

This function computes how many LP tokens should be burned in exchange for the withdraw amount of the specified token.

It should...

  1. Return amount of LP tokens burned for the request amount of withdraw token.

withdrawGivenInputAmount()

Parameter Name
Type
Description

xBalance

unit256

x token balance

yBalance

unit256

y token balance

totalSupply

unit256

total supply of the LP tokens that exists currently

burnedAmount

unit256

the amount of LP tokens that are going to be burned

withdrawnToken

SpecifiedToken enum

SpecifiedToken.X or SpecifiedToken.Y

SpecifiedToken enum:

Enum Member Name
Type
Description

X

enum member (technically token Ocean ID)

an indicator stating usage of token X in the operation

Y

enum member (technically token Ocean ID)

an indicator stating usage of token Y in the operation

This function computes amount of specified withdrawn token to be received for the given amount of burned LP tokens.

It should...

  1. Return amount of withdraw tokens to be received for the amount of burned LP tokens.

Last updated