Factory

Git Source

Inherits: ERC721, Owned

Author: out.eth (@outdoteth)

This contract is used to create and initialize new private pools. Each time a private pool is created, a new NFT representing that private pool is minted to the creator. All protocol fees also accrue to this contract and can be withdrawn by the admin.

State Variables

privatePoolImplementation

The address of the private pool implementation that proxies point to.

address public privatePoolImplementation;

privatePoolMetadata

Helper contract that constructs the private pool metadata svg and json for each pool NFT.

address public privatePoolMetadata;

protocolFeeRate

The protocol fee that is taken on each buy/sell/change. It's in basis points: 350 = 3.5%.

uint16 public protocolFeeRate;

Functions

constructor

receive

create

Creates a new private pool using the minimal proxy pattern that points to the private pool implementation. The caller must approve the factory to transfer the NFTs that will be deposited to the pool.

Parameters

Name
Type
Description

_baseToken

address

The address of the base token.

_nft

address

The address of the NFT.

_virtualBaseTokenReserves

uint128

The virtual base token reserves.

_virtualNftReserves

uint128

The virtual NFT reserves.

_changeFee

uint56

The change fee.

_feeRate

uint16

The fee rate.

_merkleRoot

bytes32

The merkle root.

_useStolenNftOracle

bool

Whether to use the stolen NFT oracle.

_payRoyalties

bool

_salt

bytes32

The salt that will used on deployment.

tokenIds

uint256[]

The token ids to deposit to the pool.

baseTokenAmount

uint256

The amount of base tokens to deposit to the pool.

Returns

Name
Type
Description

privatePool

PrivatePool

The address of the private pool.

predictPoolDeploymentAddress

Predicts the deployment address of a new private pool.

Parameters

Name
Type
Description

salt

bytes32

The salt that will used on deployment.

Returns

Name
Type
Description

predictedAddress

address

The predicted deployment address of the private pool.

setPrivatePoolMetadata

Sets private pool metadata contract.

Parameters

Name
Type
Description

_privatePoolMetadata

address

The private pool metadata contract.

setPrivatePoolImplementation

Sets the private pool implementation contract that newly deployed proxies point to.

Parameters

Name
Type
Description

_privatePoolImplementation

address

The private pool implementation contract.

setProtocolFeeRate

Sets the protocol fee that is taken on each buy/sell/change. It's in basis points: 350 = 3.5%.

Parameters

Name
Type
Description

_protocolFeeRate

uint16

The protocol fee.

withdraw

Withdraws the earned protocol fees.

Parameters

Name
Type
Description

token

address

The token to withdraw.

amount

uint256

The amount to withdraw.

tokenURI

Returns the token URI for a given token id.

Parameters

Name
Type
Description

id

uint256

The token id.

Returns

Name
Type
Description

<none>

string

uri The token URI.

Events

Create

Withdraw

Last updated