RelayPoolFactory
Solidity API
RelayPoolTimelock
Interface for initializing timelock contracts
Used to initialize cloned timelock instances with proper access control
initialize
Initializes a timelock contract with the specified parameters
Parameters
Name | Type | Description |
---|---|---|
minDelay | uint256 | The minimum delay in seconds for timelock operations |
proposers | address[] | Array of addresses that can propose operations |
executors | address[] | Array of addresses that can execute operations |
admin | address | The admin address (use address(0) for no admin) |
RelayPoolFactory
Factory contract for deploying RelayPool instances with associated timelocks
Deploys pools with timelock governance and tracks pools by asset
HYPERLANE_MAILBOX
The Hyperlane mailbox address used by all deployed pools
Immutable to ensure consistency across all pools
WETH
The WETH contract address for native currency pools
Used when creating pools that handle native currency
TIMELOCK_TEMPLATE
The timelock template contract to be cloned
Each pool gets its own timelock instance cloned from this template
MIN_TIMELOCK_DELAY
The minimum timelock delay enforced for non-owner deployments
Owner can deploy with shorter delays for testing/special cases
poolsByAsset
Mapping from asset address to array of deployed pool addresses
Multiple pools can exist for the same asset
UnauthorizedCaller
Error when unauthorized address attempts restricted operation
Parameters
Name | Type | Description |
---|---|---|
sender | address | The address that attempted the unauthorized action |
InsufficientInitialDeposit
Error when initial deposit is insufficient
Parameters
Name | Type | Description |
---|---|---|
deposit | uint256 | The insufficient deposit amount provided |
InsufficientTimelockDelay
Error when timelock delay is below minimum requirement
Parameters
Name | Type | Description |
---|---|---|
delay | uint256 | The insufficient delay provided |
PoolDeployed
Emitted when a new pool is deployed
Parameters
Name | Type | Description |
---|---|---|
pool | address | The address of the deployed RelayPool |
creator | address | The address that deployed the pool |
asset | address | The underlying asset of the pool |
name | string | The name of the pool’s share token |
symbol | string | The symbol of the pool’s share token |
thirdPartyPool | address | The yield pool where assets will be deposited |
timelock | address | The timelock contract governing the pool |
constructor
Initializes the factory with required infrastructure addresses
Parameters
Name | Type | Description |
---|---|---|
hMailbox | address | The Hyperlane mailbox contract address |
weth | address | The WETH contract address |
timelock | address | The timelock template to be cloned for each pool |
minTimelockDelay | uint256 | The minimum delay for timelock operations |
deployPool
Deploys a new RelayPool with associated timelock governance
Requires initial deposit to prevent inflation attacks, creates dedicated timelock
Parameters
Name | Type | Description |
---|---|---|
asset | contract ERC20 | The ERC20 asset for the pool |
name | string | The name for the pool’s share token |
symbol | string | The symbol for the pool’s share token |
thirdPartyPool | address | The yield pool where idle assets will be deposited |
timelockDelay | uint256 | The delay in seconds for timelock operations |
initialDeposit | uint256 | The initial deposit amount (must be at least 1 unit of asset) |
curator | address | The address that will control the pool through the timelock |
Return Values
Name | Type | Description |
---|---|---|
[0] | address | The address of the newly deployed RelayPool |