IAlgebraFactory

The interface for the Algebra Factory

Developer note: Credit to Uniswap Labs under GPL-2.0-or-later license: https://github.com/Uniswap/v3-core/tree/main/contracts/interfaces

Events

Owner

event Owner(address newOwner)

Emitted when the owner of the factory is changed

NameTypeDescription
newOwneraddressThe owner after the owner was changed

VaultAddress

event VaultAddress(address newVaultAddress)

Emitted when the vault address is changed

NameTypeDescription
newVaultAddressaddressThe vault address after the address was changed

Pool

event Pool(address token0, address token1, address pool)

Emitted when a pool is created

NameTypeDescription
token0addressThe first token of the pool by address sort order
token1addressThe second token of the pool by address sort order
pooladdressThe address of the created pool

FarmingAddress

event FarmingAddress(address newFarmingAddress)

Emitted when the farming address is changed

NameTypeDescription
newFarmingAddressaddressThe farming address after the address was changed

DefaultCommunityFee

event DefaultCommunityFee(uint8 newDefaultCommunityFee)

Emitted when the default community fee is changed

NameTypeDescription
newDefaultCommunityFeeuint8The new default community fee value

FeeConfiguration

event FeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee)

NameTypeDescription
alpha1uint16
alpha2uint16
beta1uint32
beta2uint32
gamma1uint16
gamma2uint16
volumeBetauint32
volumeGammauint16
baseFeeuint16

Functions

owner

function owner() external view returns (address) view external

Returns the current owner of the factory Developer note: Can be changed by the current owner via setOwner

Returns:

NameTypeDescription
[0]addressThe address of the factory owner

poolDeployer

function poolDeployer() external view returns (address) view external

Returns the current poolDeployerAddress

Returns:

NameTypeDescription
[0]addressThe address of the poolDeployer

farmingAddress

function farmingAddress() external view returns (address) view external

Developer note: Is retrieved from the pools to restrict calling certain functions not by a tokenomics contract

Returns:

NameTypeDescription
[0]addressThe tokenomics contract address

defaultCommunityFee

function defaultCommunityFee() external view returns (uint8) view external

Returns the default community fee

Returns:

NameTypeDescription
[0]uint8Fee which will be set at the creation of the pool

vaultAddress

function vaultAddress() external view returns (address) view external

Returns:

NameTypeDescription
[0]address

poolByPair

function poolByPair(address tokenA, address tokenB) external view returns (address pool) view external

Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist Developer note: tokenA and tokenB may be passed in either token0/token1 or token1/token0 order

NameTypeDescription
tokenAaddressThe contract address of either token0 or token1
tokenBaddressThe contract address of the other token

Returns:

NameTypeDescription
pooladdressThe pool address

createPool

function createPool(address tokenA, address tokenB) external returns (address pool) external

Creates a pool for the given two tokens and fee Developer note: tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.

NameTypeDescription
tokenAaddressOne of the two tokens in the desired pool
tokenBaddressThe other of the two tokens in the desired pool

Returns:

NameTypeDescription
pooladdressThe address of the newly created pool

setOwner

function setOwner(address _owner) external external

Updates the owner of the factory Developer note: Must be called by the current owner

NameTypeDescription
_owneraddressThe new owner of the factory

setFarmingAddress

function setFarmingAddress(address _farmingAddress) external external

Developer note: updates tokenomics address on the factory

NameTypeDescription
_farmingAddressaddressThe new tokenomics contract address

setDefaultCommunityFee

function setDefaultCommunityFee(uint8 newDefaultCommunityFee) external external

Developer note: updates default community fee for new pools

NameTypeDescription
newDefaultCommunityFeeuint8The new community fee, must be <= MAX_COMMUNITY_FEE

setVaultAddress

function setVaultAddress(address _vaultAddress) external external

Developer note: updates vault address on the factory

NameTypeDescription
_vaultAddressaddressThe new vault contract address

setBaseFeeConfiguration

function setBaseFeeConfiguration(uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint32 volumeBeta, uint16 volumeGamma, uint16 baseFee) external external

Changes initial fee configuration for new pools Developer note: changes coefficients for sigmoids: α / (1 + e^( (β-x) / γ)) alpha1 + alpha2 + baseFee (max possible fee) must be <= type(uint16).max gammas must be > 0

NameTypeDescription
alpha1uint16max value of the first sigmoid
alpha2uint16max value of the second sigmoid
beta1uint32shift along the x-axis for the first sigmoid
beta2uint32shift along the x-axis for the second sigmoid
gamma1uint16horizontal stretch factor for the first sigmoid
gamma2uint16horizontal stretch factor for the second sigmoid
volumeBetauint32shift along the x-axis for the outer volume-sigmoid
volumeGammauint16horizontal stretch factor the outer volume-sigmoid
baseFeeuint16minimum possible fee