Some functionality will be degraded until the official mainnet launch on the 9th.
Documentation
Reference

Contracts

Every deployed contract: functions, events and errors.

TartarusFeeEscrow#

0x44D1065fD59280cFa26B7BE3dBf13F364314616F

Functions an application calls#

balanceOf(address)#

0x70a08231 · view · view

Returns the claimable native HYPE balance for recipient.

Claimable native HYPE.

Parameters

NameTypeDescription
recipientaddress

Returns

NameTypeDescription
arg0uint256

balanceOfToken(address,address)#

0xf59e38b7 · view · view

Returns the claimable balance of token for recipient.

(recipient, token). Read this rather than an indexer if you want on-chain truth for a claim button.

Parameters

NameTypeDescription
recipientaddress
tokenaddress

Returns

NameTypeDescription
arg0uint256

claim(uint256)#

0x379607f5 · nonpayable · Pull-only, msg.sender.

Pays out amount of the caller's claimable native HYPE balance.

Partial native claim.

Parameters

NameTypeDescription
amountuint256

Returns

NameTypeDescription
arg0uint256

claim()#

0x4e71d92d · nonpayable · Pull-only, msg.sender.

Pays out the caller's entire claimable native HYPE balance.

Native HYPE balance — the creator fees of every HYPE-quoted launch.

Returns

NameTypeDescription
amountuint256

Reverts

  • NoBalance
  • TransferFailed — the caller rejected HYPE

claimToken(address,uint256)#

0x1698755f · nonpayable · Pull-only, msg.sender.

Pays out amount of the caller's claimable balance of token.

A recipient's balance aggregates credits from every launch and creditToken is permissionless, so a third party can enlarge that figure at will. Against a token with a fixed maximum per transfer, a single full-balance claim would then revert and leave the recipient unable to draw any of it. Choosing the amount keeps the aggregate from being a single point of failure, and lets a recipient work around any per-transfer limit its quote asset imposes.

Partial claim, for a quote asset with a per-transfer limit.

Parameters

NameTypeDescription
tokenaddress
amountuint256

Returns

NameTypeDescription
arg0uint256

Reverts

  • InsufficientBalance
  • NoBalance

claimToken(address)#

0x32f289cf · nonpayable · Pull-only — claims the balance of msg.sender. You cannot claim for someone else.

Pays out the caller's entire claimable balance of token.

The escrow holds ONE balance per (recipient, asset), aggregated across every launch. Use this for an ERC-20 quote asset; native HYPE fees are claimed with claim().

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
amountuint256

Reverts

  • NoBalance — nothing accrued for you in that token

Other functions#

SignatureSelectorMutability
credit(address)0xd5d44d80payable
creditToken(address,address,uint256)0x09ad4dd9nonpayable

Events#

Eventtopic0
Claimed(address,uint256)0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a
ClaimedToken(address,address,uint256)0xdbc1ea3a8459e4c7e11fb385b52bbb5cc8c8ab85eec5d883ac9aa78c171f5141
Credited(address,address,uint256)0x4e45da441832cf53bdaa69235704fc0575e68210f459ee1562911024b12967d5
CreditedToken(address,address,address,uint256)0x5d104c62f50449fadfe6f4013c8f36588d32737f94b5ac9b83ddad33b3e1ffdf

Errors#

ErrorSelector
InsufficientBalance(uint256,uint256)0xcf479181
NoBalance()0xc2caa2a6
ReentrancyGuardReentrantCall()0x3ee5aeb5
SafeERC20FailedOperation(address)0x5274afe7
TransferFailed()0x90b8ec18
ZeroAddress()0xd92e233d

TartarusMemeHook#

0x00b2Ff65E61aD8c57F957624EDc6C81908Ade044

Functions an application calls#

currentFeePolicy(uint16)#

0xf28f0e1b · view · view

Returns the terms a launch choosing creatorFeeBps would snapshot immutably right now. Reverts when the choice is outside the live bounds, so the factory cannot register a tranche the owner has not allowed.

The terms a launch choosing creatorFeeBps would freeze now. A launch keeps its own copy, so later policy changes do not touch it.

Parameters

NameTypeDescription
creatorFeeBpsuint16

Returns

NameTypeDescription
arg0(address,uint16,uint16,uint16)

pendingFees(bytes32,address)#

0x359b4f30 · view · view

Fees collected per pool and currency, held as this hook's ERC-6909 claims on the pool manager until a sweep or rescue redeems them.

(poolId, currency) — fees collected and not yet swept, held as ERC-6909 claims on the pool manager.

Parameters

NameTypeDescription
arg0bytes32
currencyaddress

Returns

NameTypeDescription
amountuint256

sweepPoolFees(bytes32,uint256)#

0xebe51768 · nonpayable · The fee-sweep operator, or the pool's creator when no internal conversion is needed.

Converts any pending memecoin-denominated fee into the quote against the pool's own liquidity, then splits the combined quote total between protocol and creator in proportion to their frozen tranches. The trusted sweep operator is required whenever the sweep would execute an internal conversion. The creator may still distribute already-quoted fees when no internal swap is needed.

Converts any pending memecoin-denominated fee into the quote against the pool's own liquidity, then credits protocol and creator shares into the fee escrow in proportion to their frozen tranches. A conversion needs the operator and a non-zero minConversionQuoteOut.

Parameters

NameTypeDescription
poolIdbytes32
minConversionQuoteOutuint256

Reverts

  • InternalSwapRequiresOperator
  • MinimumOutputRequired
  • SlippageExceeded
  • UnknownPool

sweepPoolQuoteFees(bytes32)#

0x9f8e76a7 · nonpayable · The fee-sweep operator or the pool's creator.

Pays out a pool's quote-denominated fees and leaves its memecoin bucket pending, without the internal conversion. For a memecoin bucket too small to convert: with no LP fee, a few million wei of memecoin fills for zero quote, so sweepPoolFees would revert on any minimum and refuse a zero one, and anyone could keep a pool's quote fees stuck that way with a dust-sized buy. No swap runs here, so there is nothing to manipulate and the creator may call it as well as the operator. The memecoin stays pending for the next sweepPoolFees, once it is worth converting.

Pays out the quote-denominated fees only and leaves the memecoin bucket pending. No swap runs, so the creator can always use it to release their quote fees.

Parameters

NameTypeDescription
poolIdbytes32

Reverts

  • UnknownPool

Other functions#

SignatureSelectorMutability
acceptOwnership()0x79ba5097nonpayable
afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)0x9f063efcnonpayable
afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)0xe1b4af69nonpayable
afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)0x6fe7e6ebnonpayable
afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)0x6c2bbe7enonpayable
afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)0xb47b2fb1nonpayable
beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)0x259982e5nonpayable
beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)0xb6a8b0fanonpayable
beforeInitialize(address,(address,address,uint24,int24,address),uint160)0xdc98354enonpayable
beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)0x21d0ee70nonpayable
beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)0x575e24b4nonpayable
factory()0xc45a0155view
feeEscrow()0xc4b7de97view
feeSweepOperator()0x8a36a6bbview
getHookPermissions()0xc4e833cepure
launches(bytes32)0xad091230view
MAX_TOTAL_FEE_BPS()0x431a9caaview
maxCreatorFeeBps()0x0a3c0856view
maxInternalPriceImpactBps()0x90addc1eview
minCreatorFeeBps()0x88f4684dview
owner()0x8da5cb5bview
pendingOwner()0xe30c3978view
poolManager()0xdc4c90d3view
protocolFeeBps()0x35659fb8view
protocolFeeRecipient()0x64df049eview
registerPool((address,address,uint24,int24,address),address,address,(address,uint16,uint16,uint16))0x7337a8b7nonpayable
renounceOwnership()0x715018a6pure
rescuePoolFees(bytes32)0x5cbe8117nonpayable
setCreatorFeeBounds(uint256,uint256)0x9f4042a2nonpayable
setCreatorFeeRecipient(bytes32,address)0xed8ef7a3nonpayable
setFactory(address)0x5bb47808nonpayable
setFeeSweepOperator(address)0x54faf9c3nonpayable
setMaxInternalPriceImpactBps(uint256)0xb89eddabnonpayable
setProtocolFeeBps(uint256)0xc0417e58nonpayable
setProtocolFeeRecipient(address)0xe521cb92nonpayable
transferOwnership(address)0xf2fde38bnonpayable
unlockCallback(bytes)0x91dd7346nonpayable

Events#

Eventtopic0
CreatorFeeBoundsUpdated(uint256,uint256)0x7da93c15168a31f5bef5eb6ae509ab6c0af7799e7a17a7f1ace13cc30012b96e
CreatorFeeRecipientUpdated(bytes32,address,address)0xb45e6b72a7de9a2077babe9717744436f3880e114099956ca85f91a77469a532
FactorySet(address)0x1edf3afd4ac789736e00d216cd88be164ddcef26a6eedcc30cdb0cb62f3741b1
FeeSweepOperatorUpdated(address)0xae994ca926e252e299c3df7516cb609272a57bf80b0e0715297e55939f873420
HookFeeCollected(bytes32,address,uint256)0xcf54f8cbb5f9c3a7061090beb81e0337579190a0137ed295e96cfecd9bab9542
MaxInternalPriceImpactUpdated(uint256)0x6968b68c1fb468c8b257b012290bf803a6a6d7e79468e0326050724f7573cf01
OwnershipTransferred(address,address)0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
OwnershipTransferStarted(address,address)0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
PoolConversionSkipped(bytes32,uint256)0xeed2d18eb96f3c2cb8c7b6993512a506c170e17d29355f2d7a0d5961f338de09
PoolFeesRescued(bytes32,address,uint256,uint256)0x0fbb28f9c335f55dcc5cc19e595ab55f9e6a0fd1b58ad77be3a98f99901daaff
PoolFeesSwept(bytes32,uint256,uint256)0x2b33b68d948eb789fd57906bde3dc24d9f748c1df9b98d7359910f6aa1c06e2f
PoolRegistered(bytes32,address,address,address)0x01bf263a1db1652580721573296e1a1fa70b3d4c87f61d02a69c4e1109d2d573
ProtocolFeeBpsUpdated(uint256)0x0c69d666e7ba3ce81300fa14cb3e9c03596138bfc8ecec0eacb0a8ef31442cdc
ProtocolFeeRecipientUpdated(address)0xc1b5345cce283376356748dc57f2dfa7120431d016fc7ca9ba641bc65f91411d

Errors#

ErrorSelector
AlreadyRegistered()0x3a81d6fc
AlreadySet()0xa741a045
CreatorFeeOutOfBounds(uint256,uint256,uint256)0x87ab5572
HookNotImplemented()0x0a85dc29
InexactQuoteTransfer(address,uint256,uint256)0x197001d6
InternalSwapRequiresOperator()0x31cdb504
InvalidBps()0xc6cc5d7f
InvalidPoolKey()0xc256622b
MinimumOutputRequired()0x3672d25f
NotFactory()0x32cc7236
NotFeeSweepOperator()0x8d42130c
NothingToRescue()0x00f6b210
NotPoolManager()0xae18210a
OwnableInvalidOwner(address)0x1e4fbdf7
OwnableUnauthorizedAccount(address)0x118cdaa7
OwnershipCannotBeRenounced()0x2fab92ca
ReentrancyGuardReentrantCall()0x3ee5aeb5
SafeCastOverflowedIntToUint(int256)0xa8ce4432
SafeCastOverflowedUintToInt(uint256)0x24775e06
SafeERC20FailedOperation(address)0x5274afe7
SlippageExceeded(uint256,uint256)0x71c4efed
UnknownPool()0xf7139e33
ZeroAddress()0xd92e233d

TartarusLaunchLocker#

0x8fABb780838c1662235002F70A94a7ef882a9598

Other functions#

SignatureSelectorMutability
acceptOwnership()0x79ba5097nonpayable
factory()0xc45a0155view
isLocked(address)0x4a4fbeecview
lockedPositions(address)0xfa22143dview
lockedTokenSupply(address)0x732e78e4view
lockPosition(address,uint256)0x292d5732nonpayable
lockTokenSupply(address,uint256)0xb8a0d7abnonpayable
onERC721Received(address,address,uint256,bytes)0x150b7a02view
owner()0x8da5cb5bview
pendingOwner()0xe30c3978view
positionManager()0x791b98bcview
renounceOwnership()0x715018a6pure
setFactory(address)0x5bb47808nonpayable
transferOwnership(address)0xf2fde38bnonpayable

Events#

Eventtopic0
FactorySet(address)0x1edf3afd4ac789736e00d216cd88be164ddcef26a6eedcc30cdb0cb62f3741b1
OwnershipTransferred(address,address)0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
OwnershipTransferStarted(address,address)0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
PositionLocked(address,uint256)0x2cabb2a2973327d5863ceb4707e9441851243897e86d587ee35943599752eb54
TokenSupplyLocked(address,uint256)0xaf33c4aba92959b3e7ddc83ab728938262da159a6c05ca836f6c46f9bcb2c740

Errors#

ErrorSelector
AlreadyInitialized()0x0dc149f0
NotFactory()0x32cc7236
NotPositionManager()0x20fdc658
OwnableInvalidOwner(address)0x1e4fbdf7
OwnableUnauthorizedAccount(address)0x118cdaa7
OwnershipCannotBeRenounced()0x2fab92ca
PositionAlreadyLocked()0xfe3099b6
PositionNotHeld()0x6b49c94a
SafeERC20FailedOperation(address)0x5274afe7
ZeroAddress()0xd92e233d

TartarusLaunchFactory#

0x765f2ce211050ec8280257d76072cAa480D75A00

Functions an application calls#

bridgeWalletFor(address)#

0x31682149 · view · view

The Elysium bridge escrow wallet created for token, or zero if none exists yet. Reverts while no bridge factory is configured.

The Elysium bridge wallet created at launch, or zero. Reverts while no bridge factory is configured.

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
arg0address

canLaunch(address)#

0x58373f04 · view · view

Whether launcher may launch right now: true while the public gate is open, and true for whitelisted addresses while it is closed. The same predicate launchToken enforces on its caller, exposed so routers like TartarusLaunchAndBuy can hold their own callers to this single list instead of maintaining a second one.

Check this before showing a launch form; while the public gate is closed only whitelisted launchers pass.

Parameters

NameTypeDescription
launcheraddress

Returns

NameTypeDescription
arg0bool

executeCreatorFeeRecipientChange(address)#

0x3d3d2d58 · nonpayable · Permissionless once the timelock has elapsed.

Applies a protocol-owner's proposed creator fee recipient change once its timelock has elapsed. Permissionless: anyone can execute an already-matured proposal.

Applies a protocol-owner override proposed with setCreatorFeeRecipient. The API reports one as creatorFeeRecipientPending on the token.

Parameters

NameTypeDescription
tokenaddress

Reverts

  • NoPendingChange
  • TimelockNotElapsed
  • TimelockExpired

getLaunchConfig(uint256)#

0x1cad862d · view · view

Parameters

NameTypeDescription
iduint256

Returns

NameTypeDescription
arg0(address,int24,int24,bool)

getLaunchedToken(address)#

0x3cf28b5a · view · view

Returns the immutable record for a token created by this factory.

The immutable launch record: deployer, quote asset, config, pool id and the frozen fee tranches.

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
arg0(address,address,address,address,bytes32,uint256,int24,int24,bool)

getLaunchFeePolicy(address)#

0x470ef5fc · view · view

Returns the fee policy frozen for a launch.

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
arg0(address,uint16,uint16,uint16)

HOLDER_REWARDS()#

0x1acda2e3 · view · view

Pass as TokenParams.creatorFeeRecipient to pay the creator tranche to the launch's holders. The factory then resolves the recipient to the launch's rewards distributor itself, from the same inputs TartarusRewardsDistributorFactory.deploy checks later, so the address can never be mispredicted. A keyless address: it has no known preimage, so nobody can ever hold or spend from it.

The sentinel to pass as TokenParams.creatorFeeRecipient for a holder-rewards launch. The factory resolves it to the launch's distributor.

Returns

NameTypeDescription
arg0address

holderRewardsDistributorUsed(address)#

0x7ca38ca2 · view · view

Holder-rewards distributors already bound to a launch. A distributor's address depends only on (creator, salt, quote), while the token's also depends on its metadata, tranche and config, so a creator reusing a salt could otherwise send two launches' fees into one distributor that only the first can ever register, and the second's holders would get nothing.

True once a distributor is bound to a launch; a second holder-rewards launch with the same (creator, salt, quote) would revert.

Parameters

NameTypeDescription
distributoraddress

Returns

NameTypeDescription
arg0bool

isSymbolAvailable(string)#

0xebe4f36a · view · view

True when a launch would accept symbol: valid ticker format, not reserved, not already taken.

Valid HyperCore ticker format, not reserved, not taken. The API's /v1/launch/symbol answers the same question with a reason.

Parameters

NameTypeDescription
symbolstring

Returns

NameTypeDescription
arg0bool

launchFee()#

0xcf3cf573 · view · view

A flat charge on creating a launch, in native HYPE, credited to the protocol fee recipient through the escrow. Spam friction rather than revenue. Zero disables it.

Native HYPE, sent as msg.value.

Returns

NameTypeDescription
arg0uint256

launchForwarder()#

0x9b924452 · view · view

The router allowed to launch on a user's behalf. Launch-and-buy is available only while this is TartarusLaunchAndBuy.

Returns

NameTypeDescription
arg0address

launchToken((string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32),uint256)#

0x36fbbab8 · payable · Permissionless, but gated by canLaunch(msg.sender) — check it before offering a launch UI.

Deploys the launch token, creates and seeds its pool, and records the launch. msg.value must equal launchFee exactly.

Deploys the token, creates its single-sided Uniswap V4 pool at the config's starting tick and records the launch, all in one call; the token trades from this block. The launch fee is native HYPE sent as msg.value (not an allowance), whatever the launch quotes in. Use this when there is NO opening buy; for one, go through TartarusLaunchAndBuy.launchAndBuy. Set creatorFeeRecipient to HOLDER_REWARDS() to pay the creator tranche to holders.

Parameters

NameTypeDescription
params(string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32)
launchConfigIduint256

Returns

NameTypeDescription
tokenaddress

Reverts

  • NotWhitelisted — the public gate is closed and you are not a whitelisted launcher
  • IncorrectLaunchFee — msg.value is not exactly launchFee()
  • InvalidLaunchConfigId / LaunchConfigDisabled — no such config, or it is switched off
  • QuoteTokenNotApproved — the config's quote asset is no longer approved
  • InvalidSymbol / SymbolReserved / SymbolTaken — the ticker is not [A-Z0-9]{1,6}, is reserved, or is in use
  • CreatorFeeOutOfBounds (from the hook) — creatorFeeBps outside the live bounds
  • LaunchEconomicsMismatch(expected,actual) — terms moved since you read previewLaunchEconomics
  • RewardsFactoryNotSet / HolderRewardsDistributorTaken — HOLDER_REWARDS requested but not wired, or this salt's distributor is already bound

pendingCreatorFeeRecipient(address)#

0x9beacf4a · view · view

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
newRecipientaddress
effectiveAtuint256
expiresAtuint256

pendingLaunchForwarder()#

0x88e25296 · view · view

A timelocked forwarder change: the proposed address and its execution window. Anyone may execute it once matured.

Returns

NameTypeDescription
forwarderaddress
effectiveAtuint256
expiresAtuint256

poolKeyFor(address)#

0x21c099c8 · view · view

The Uniswap V4 pool key of a launched token, for routers and quoters. Reverts for unknown tokens.

The token's Uniswap V4 pool key, for the Universal Router's V4_SWAP. Reverts for an unknown token.

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
arg0(address,address,uint24,int24,address)

previewLaunchEconomics(uint256,uint16)#

0x63fa3362 · view · view

Returns the economics digest a launch of launchConfigId choosing creatorFeeBps would produce right now, for a creator to pass back as TokenParams.expectedEconomics.

Reading the digest and launching in separate transactions still leaves the terms free to move in between; the pin is what makes that movement revert instead of silently repricing the launch. Reverts with the hook's CreatorFeeOutOfBounds when the tranche is not allowed.

Returns the digest to put in TokenParams.expectedEconomics for (launchConfigId, creatorFeeBps). Fetch it in the same flow as the submit — an owner changing the fee policy or the launch fee between your read and your signature makes the launch revert rather than silently repricing. Reverts with the hook's CreatorFeeOutOfBounds for a disallowed tranche.

Parameters

NameTypeDescription
launchConfigIduint256
creatorFeeBpsuint16

Returns

NameTypeDescription
arg0bytes32

rewardsDistributorFactory()#

0xed743d1e · view · view

Resolves HOLDER_REWARDS launches to their distributor. Unset until wired; holder-rewards launches revert until then.

Zero while holder rewards are not wired; a HOLDER_REWARDS launch reverts with RewardsFactoryNotSet then.

Returns

NameTypeDescription
arg0address

transferCreatorFeeRecipient(address,address)#

0x2931861b · nonpayable · The launch's current creator fee recipient only.

Lets the current creator fee recipient hand off future creator fees for token to a new address.

Does not clear a pending protocol-owner override. If one is outstanding, it still executes on schedule and supersedes the address set here. See setCreatorFeeRecipient.

Hands future creator fees to a new address. Does not cancel a pending protocol-owner override; a matured override still executes on schedule.

Parameters

NameTypeDescription
tokenaddress
newRecipientaddress

Reverts

  • NotCreatorFeeRecipient
  • TokenNotFound
  • ZeroAddress

Other functions#

SignatureSelectorMutability
acceptOwnership()0x79ba5097nonpayable
addLaunchConfig((address,int24,int24,bool))0x7c61e47fnonpayable
approvedQuoteTokens(address)0x80729480view
BRIDGE_WALLET_GAS()0xffe338f1view
cancelCreatorFeeRecipientChange(address)0x6e47a188nonpayable
cancelLaunchForwarderChange()0x813dbbfanonpayable
CREATOR_FEE_RECIPIENT_EXECUTION_WINDOW()0x02d4753dview
CREATOR_FEE_RECIPIENT_TIMELOCK()0x5a83b00aview
disableLaunchForwarder()0x74767ea9nonpayable
elysiumBridgeFactory()0x2f828f0bview
executeLaunchForwarderChange()0x31d1fdafnonpayable
expectedMirrorFor(address)0xa60651fbview
feeEscrow()0xc4b7de97view
isSymbolReserved(string)0xd5e17fe3view
LAUNCH_FORWARDER_EXECUTION_WINDOW()0xf3feb0d3view
LAUNCH_FORWARDER_TIMELOCK()0xafe9f556view
launchConfigCount()0xae72d871view
launchDeployer()0x858f5964view
launchEnabled()0x236a4afbview
launchForwarderInitialized()0x3ab6ec24view
launchTokenFor((string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32),uint256,address)0x99558b64payable
locker()0xd7b96d4eview
memeHook()0x6651812cview
owner()0x8da5cb5bview
pendingOwner()0xe30c3978view
permit2()0x12261ee7view
poolManager()0xdc4c90d3view
positionManager()0x791b98bcview
proposeLaunchForwarder(address)0xce12a5bcnonpayable
renounceOwnership()0x715018a6pure
setCreatorFeeRecipient(address,address)0xe102c9aanonpayable
setElysiumBridgeFactory(address)0x29fc5422nonpayable
setLaunchDeployer(address)0x3a9391e8nonpayable
setLaunchEnabled(bool)0xf56f05b2nonpayable
setLaunchFee(uint256)0x5313be2cnonpayable
setLaunchForwarder(address)0x767b7c16nonpayable
setQuoteTokenApproved(address,bool)0x45619b6enonpayable
setReservedSymbol(string,bool)0x2ca1ff1bnonpayable
setRewardsDistributorFactory(address)0x353fc828nonpayable
setWhitelistedLauncher(address,bool)0x366f0f3enonpayable
SUPPLY()0xc50497aeview
tokenBySymbol(bytes32)0x26a2a16dview
transferOwnership(address)0xf2fde38bnonpayable
updateLaunchConfig(uint256,(address,int24,int24,bool))0xa954dc4dnonpayable
whitelistedLaunchers(address)0xda3eda65view

Events#

Eventtopic0
BridgeWalletCreated(address,address)0x0784ee1925b81ceb1c4f909a494f11a35badad9b999bcceb2d1a5ad597a25abe
BridgeWalletSkipped(address)0xbcd7adc790364324699753894577b3c54f5c088135312e9ded902d5ae85d9a44
CreatorFeeRecipientChangeCancelled(address,address)0xbe2de91c1cbef653c760573fff8355c0c851d35ed2a898342b4db556301cccf4
CreatorFeeRecipientChangeProposed(address,address,address,uint256,uint256)0x7f119e44c84a715429bee60d30ad2e14afdef6c60bb1a7eaa01290ecf6d1b2e5
CreatorFeeRecipientUpdated(address,address,address)0x308c390ed1ab5873392818e036cabdf408bc8ad042fbaead3108954ff75ba980
ElysiumBridgeFactorySet(address)0xf93b11821bfd7ed7369be380bca7b1b96d8fe3219b8b59f682b1cf9aa348f1ae
LaunchConfigAdded(uint256)0xedd96c570c6e5ef9add0378e59df53579a283889dc5dab6440ef6eca2ee6c8ce
LaunchConfigUpdated(uint256)0x2f8ba78ae68cfd0c82c7756c540eaf4eead3341aef9ccebcb91d546bff10d62b
LaunchDeployerSet(address)0xd5ea7aa3e328a0594dcf6914cd9e5369779efaa194ee4dd4c5afcad4f4ebbb0c
LaunchEnabledUpdated(bool)0x4f1ea5016c51c2f82324e00e9b8a4a95ee5aeaa10c653dabaec5f1bc9047ba0b
LaunchFeeUpdated(uint256)0xc799be5eb19a1a6d6ba7368d21e2bc367c8a335e4a07cd3d954482e6f714d3c5
LaunchForwarderChangeCancelled(address)0x21ef2af51c6ff72bd6d142e45d2e01f0448c8fff50168bb73a1b862c427a76af
LaunchForwarderChangeProposed(address,address,uint256,uint256)0x40399dc1b46c2cbda42768dcf83944f62829bd45095ab22fb45ca8e387589135
LaunchForwarderSet(address)0x56b32d3633fed72f97c4df44a78b5fa04f1d662d4bddebcd8a9b216d26d093ad
LaunchSalt(address,bytes32)0x06ace689d4f9cc53fc9c544dbffde33266dedb0b9941235bc3086fb0824c03fd
OwnershipTransferred(address,address)0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
OwnershipTransferStarted(address,address)0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
PoolSeeded(address,uint256,uint128,uint256,uint256)0x1403071d82f5bf603e26432d669b9a1c9234f678a80ccd63ec2c4adf2428543b
QuoteTokenApprovalUpdated(address,bool)0x08a843625584ce1b83674addd05c56adbb63d59b99f3c11eabaab869734fd4c5
ReservedSymbolUpdated(string,bool)0xccaf9a1889196a07179623710ec905c42226f34ce9561f3e6a8ad2c545f64946
RewardsDistributorFactorySet(address)0x8584e5b12dbb992c74d868f3beef4084c46551850974ad70f5442beba0124fdf
TokenLaunched(address,address,address,uint256,bytes32,uint256,address,int24,uint16,uint16)0x94536bc2a8cb6d35f91cb7caf0da3a1c0af50c75501a7b69ab149d80c3ce1b60
WhitelistedLauncherUpdated(address,bool)0xef2b562a67f01ed4b7c4265ec09b539039c6d5dd7e752191d3940508c3dc0068

Errors#

ErrorSelector
AlreadySet()0xa741a045
BridgeFactoryNotSet()0xfba5239c
BridgeWalletOutOfGas()0xd66282ab
HolderRewardsDistributorTaken(address)0x0c40ebbe
IncorrectLaunchFee(uint256,uint256)0xe14cee31
InvalidLaunchConfigId()0x68b42c59
InvalidStartingTick()0x21bfef7e
InvalidSymbol()0x04119bc4
InvalidTickSpacing()0x270815a0
LaunchConfigDisabled()0xa8b63076
LaunchDependenciesNotWired()0x1de25df3
LaunchDeployerNotSet()0x57332dcf
LaunchEconomicsMismatch(bytes32,bytes32)0xecb27319
NoPendingChange()0xa3fef2f8
NotAContract()0x09ee12d5
NotCreatorFeeRecipient()0xb9f93944
NotLaunchForwarder()0xea9eaa96
NotWhitelisted()0x584a7938
OwnableInvalidOwner(address)0x1e4fbdf7
OwnableUnauthorizedAccount(address)0x118cdaa7
OwnershipCannotBeRenounced()0x2fab92ca
QuoteTokenNotApproved()0x8b44d1ae
ReentrancyGuardReentrantCall()0x3ee5aeb5
RewardsFactoryNotSet()0x662b8375
SafeERC20FailedOperation(address)0x5274afe7
SeedNotViable()0x70a5d0b7
SymbolReserved()0x18049c93
SymbolTaken(address)0x30214533
TimelockExpired(uint256)0xb79d40e8
TimelockNotElapsed(uint256)0x810c4f2a
TokenNotFound()0xcbdb7b30
ZeroAddress()0xd92e233d

TartarusLaunchDeployer#

0x94b7ed8968bF4323c03DE97395801D487771C44E

Functions an application calls#

isValidName(string)#

0x1e30397f · pure · pure

Whether name fits a single word (1..31 bytes, no NUL).

1..31 bytes, no NUL: the name packs into one bytes32.

Parameters

NameTypeDescription
namestring

Returns

NameTypeDescription
arg0bool

isValidSymbol(string)#

0x8fd4f71a · pure · pure

Whether symbol satisfies the HyperCore ticker format ([A-Z0-9]{1,6}).

[A-Z0-9]{1,6} — the HyperCore ticker verbatim.

Parameters

NameTypeDescription
symbolstring

Returns

NameTypeDescription
arg0bool

predictLaunchAddress((address,address,bytes32,address,uint16,uint256,string,string,string,string,(string,string,string,string,string)))#

0xe1f82767 · view · view

Returns the address deployLaunch would produce for params, without deploying anything. Reverts on an invalid name or symbol, so it doubles as a dry run of the metadata rules.

Computes the CREATE2 token address before you send, and doubles as a dry run of the name and symbol rules (it reverts on either). The API's /v1/launch/predict wraps it and returns the pool id and expectedEconomics too.

Parameters

NameTypeDescription
params(address,address,bytes32,address,uint16,uint256,string,string,string,string,(string,string,string,string,string))

Returns

NameTypeDescription
tokenaddress

Other functions#

SignatureSelectorMutability
deployLaunch((address,address,bytes32,address,uint16,uint256,string,string,string,string,(string,string,string,string,string)))0xe637ebaanonpayable
factory()0xc45a0155view

Errors#

ErrorSelector
Create2EmptyBytecode()0x4ca249dc
FailedDeployment()0xb06ebf3d
InsufficientBalance(uint256,uint256)0xcf479181
InvalidName()0x430f13b3
InvalidSymbol()0x04119bc4
MetadataTooLong()0x85b8e2f4
NotFactory()0x32cc7236

TartarusLaunchAndBuy#

0x044a835456057915028DDdFfa161DeA9d4d40615

Functions an application calls#

launchAndBuy((string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32),uint256,uint256,uint256,address)#

0xcb8a0252 · payable · Permissionless, but factory.canLaunch(msg.sender) must hold — routing through the router does not widen the gate. Only usable while the factory's launchForwarder() is this router.

Launches a token and immediately buys into its pool for recipient, both in this transaction.

Native quote: msg.value == launchFee + quoteIn. ERC-20 quote: msg.value == launchFee and the caller has approved this router for quoteIn; the pool pulls exactly what it charges at settlement.

Approve first: launchAndBuy for native: msg.value = launchFee + quoteIn; ERC-20: msg.value = launchFee and an allowance of quoteIn to the router of native quote: nothing (send HYPE); ERC-20 quote: the launch's quote asset.

Launches the token and buys into its pool for recipient in the same transaction. Arguments after the params are (launchConfigId, quoteIn, minTokensOut, recipient). The opening buy is attributed to recipient (the indexer reports it as the trade's recipient; trader is the transaction sender). A scheduled forwarder change is visible as pendingLaunchForwarder().

Parameters

NameTypeDescription
params(string,string,string,string,(string,string,string,string,string),address,uint16,bytes32,bytes32)Launch parameters, forwarded to the factory untouched.
launchConfigIduint256Factory launch config to launch against; it fixes the quote asset.
quoteInuint256Exact quote amount to spend on the opening buy, in the quote's own units.
minTokensOutuint256Slippage bound on the opening buy. Reverts the whole launch when the buy would deliver less.
recipientaddressReceives the purchased tokens.

Returns

NameTypeDescription
tokenaddress
tokensOutuint256

Reverts

  • NotApprovedLauncher — the factory's launch gate is closed for you
  • WrongValue — msg.value does not match the rule above
  • ZeroBuy — quoteIn is zero; use factory.launchToken instead
  • BuyTooLarge — the opening buy exceeds what the launch allows
  • SlippageExceeded — fewer than minTokensOut tokens
  • NotLaunchForwarder (from the factory) — this router is not the configured forwarder
  • everything launchToken throws

Other functions#

SignatureSelectorMutability
acceptOwnership()0x79ba5097nonpayable
factory()0xc45a0155view
msgSender()0xd737d0c7view
owner()0x8da5cb5bview
pendingOwner()0xe30c3978view
poolManager()0xdc4c90d3view
renounceOwnership()0x715018a6nonpayable
rescue(address,address)0x4fdf5d1dnonpayable
transferOwnership(address)0xf2fde38bnonpayable
unlockCallback(bytes)0x91dd7346nonpayable

Events#

Eventtopic0
Launched(address,address,address,uint256,uint256)0xec774f0683e9ac48e8d835f412f9f877a8a5dee9af3170d78cf3ef33149d15e7
OwnershipTransferred(address,address)0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
OwnershipTransferStarted(address,address)0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
Rescued(address,address,uint256)0x3af790fafda720819b2fc6e15090606e81154e0ac9a92d38ecad006d99d20ecc

Errors#

ErrorSelector
BuyTooLarge(uint256)0xfaca41ea
NotApprovedLauncher()0x502ba015
NotPoolManager()0xae18210a
OwnableInvalidOwner(address)0x1e4fbdf7
OwnableUnauthorizedAccount(address)0x118cdaa7
ReentrancyGuardReentrantCall()0x3ee5aeb5
SafeERC20FailedOperation(address)0x5274afe7
SlippageExceeded(uint256,uint256)0x71c4efed
TransferFailed()0x90b8ec18
WrongValue(uint256,uint256)0x195a3ca1
ZeroAddress()0xd92e233d
ZeroBuy()0x6d01a63b

TartarusLauncherToken#

Deployed once per launch — no fixed address. Read it from factory.getLaunchedToken(token).

Other functions#

SignatureSelectorMutability
allowance(address,address)0xdd62ed3eview
approve(address,uint256)0x095ea7b3nonpayable
balanceOf(address)0x70a08231view
decimals()0x313ce567view
deployer()0xd5f39488view
description()0x7284e416view
getTokenInfo()0xabb1dc44view
launchFactory()0x536dac9bview
logo()0xfb7f21ebview
name()0x06fdde03view
socials()0x53cd512aview
SUPPLY()0xc50497aeview
symbol()0x95d89b41view
totalSupply()0x18160dddview
transfer(address,uint256)0xa9059cbbnonpayable
transferFrom(address,address,uint256)0x23b872ddnonpayable

Events#

Eventtopic0
Approval(address,address,uint256)0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
Transfer(address,address,uint256)0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Errors#

ErrorSelector
ERC20InsufficientAllowance(address,uint256,uint256)0xfb8f41b2
ERC20InsufficientBalance(address,uint256,uint256)0xe450d38c
ERC20InvalidApprover(address)0xe602df05
ERC20InvalidReceiver(address)0xec442f05
ERC20InvalidSender(address)0x96c6fd1e
ERC20InvalidSpender(address)0x94280d62
ZeroAddress()0xd92e233d

TartarusRewardsDistributorFactory#

0x3c8E2F5924629e629C5c4bFc56FddC4B2794E4F9

Functions an application calls#

deploy(address,bytes32)#

0x32c02a14 · nonpayable · Permissionless — every argument is checked against the launchpad's own record, so the caller cannot change the outcome. The keeper runs it minutes after a holder-rewards launch.

Deploys the distributor token already names as its creator fee recipient, and records the pair.

Permissionless: every argument is checked against the launchpad's own record, so who sends it cannot change the outcome. That matters because a creator's setup is only finished once this has run, and nothing should depend on them coming back to do it.

Deploys the distributor the launch already names as its creatorFeeRecipient, and records the pair in distributorOf / tokenOf. Re-attempting under the same salt is safe: the address is fixed, so the check either passes once or reverts.

Parameters

NameTypeDescription
tokenaddress
saltbytes32

Returns

NameTypeDescription
distributoraddress

Reverts

  • TokenNotFound — no such launch on the factory
  • AlreadyRegistered — this token already has a distributor, or the address is already bound to another token
  • NotCreatorFeeRecipient(expected, actual) — the launch's fee recipient is not predict(deployer, salt, quoteToken); the launch was made with a different salt, creator, or recipient

distributorOf(address)#

0x3f20b9b4 · view · View, anyone.

Token → its deployed distributor, or zero. Zero for a launch that pays its creator, and for a holder-rewards launch whose deploy has not run yet.

Parameters

NameTypeDescription
tokenaddress

Returns

NameTypeDescription
arg0address

initCodeHash(address)#

0x75fd9f28 · view · View, anyone.

Exposed so a prediction can be verified without this contract.

The creation-code hash predict uses, exposed so the prediction can be checked without this contract.

Parameters

NameTypeDescription
quoteTokenaddress

Returns

NameTypeDescription
arg0bytes32

predict(address,bytes32,address)#

0x6339c853 · view · View, anyone.

The address deploy will produce for creator and salt on a launch quoted in quoteToken (address(0) for native HYPE).

Callers should read this rather than recomputing the salt rule, so the namespacing lives in exactly one place.

Where the distributor for (creator, salt, quoteToken) will live (address(0) is native HYPE). creator is the launch's deployer (the account that signs launchToken, or the account the router launches for) and salt is the same TokenParams.salt the launch uses. Do NOT send the result as TokenParams.creatorFeeRecipient: pass the factory's HOLDER_REWARDS() sentinel and the factory resolves the distributor itself. Use this to display or check the address. Nothing exists there yet and nothing needs to: the escrow credits by address.

Parameters

NameTypeDescription
creatoraddress
saltbytes32
quoteTokenaddress

Returns

NameTypeDescription
arg0address

tokenOf(address)#

0x42ec38e2 · view · View, anyone.

Distributor → the token it was registered for. Informational only: the authoritative direction is the launch record's creatorFeeRecipient.

Parameters

NameTypeDescription
distributoraddress

Returns

NameTypeDescription
arg0address

Other functions#

SignatureSelectorMutability
distributorOwner()0x2127911dview
escrow()0xe2fdcc17view
launchFactory()0x536dac9bview

Events#

Eventtopic0
DistributorDeployed(address,address,address,address,bytes32)0x3ef9707063aece3a59b74cf57d0c1ed7a69cceb8630a1b4d42bd1a3f6743f560

Errors#

ErrorSelector
AlreadyRegistered()0x3a81d6fc
Create2EmptyBytecode()0x4ca249dc
FailedDeployment()0xb06ebf3d
InsufficientBalance(uint256,uint256)0xcf479181
NotCreatorFeeRecipient(address,address)0x02f5a580
TokenNotFound()0xcbdb7b30
ZeroAddress()0xd92e233d

TartarusRewardsDistributor#

Deployed once per launch — no fixed address. Read it from factory.getLaunchedToken(token).

Functions an application calls#

batchClaim(uint256[],address,uint256[],uint256[],bytes32[][])#

0xa12e01d4 · nonpayable · Permissionless to submit; the proof fixes the recipient.

Settles several epochs for one account in a single transaction.

A holder accumulates one open epoch per distribution, so by the time they get around to claiming there are usually several. Sending N transactions for what is one decision is a bad enough experience that dust goes unclaimed and rolls over. Deliberately all-or-nothing: a bad proof reverts the batch rather than being skipped. Silently dropping one entry would let a caller believe an epoch was settled when it was not, and hasClaimed is the only record.

claim for several epochs in one transaction — a holder accumulates one open epoch per weekly distribution. Same checks per element; the whole batch reverts if any fails.

Parameters

NameTypeDescription
epochIdsuint256[]
accountaddress
amountsuint256[]
indexesuint256[]
proofsbytes32[][]

Reverts

  • LengthMismatch — the four arrays differ in length
  • …then everything claim throws, per epoch

claim(uint256,address,uint256,uint256,bytes32[])#

0x3e4fcb21 · nonpayable · Permissionless to submit; the proof fixes the recipient. Pays account, never msg.sender.

Claims amount from epochId for account.

Permissionless in who submits it: the proof fixes the recipient, so a third party can settle on a holder's behalf without being able to redirect anything.

Claims one epoch. amount, index and proof come from the published tree — the API returns them under claimable.holders.byToken[].epochs[].calldata, or rebuild the tree from chain data. Leaves are keccak256(abi.encode(index, account, amount)) (leafFor returns the exact encoding); internal nodes hash sorted pairs.

Parameters

NameTypeDescription
epochIduint256
accountaddress
amountuint256
indexuint256
proofbytes32[]

Reverts

  • NoEpoch — no such epoch id
  • ClaimWindowClosed — more than 90 days since the epoch was published; the funds have rolled over
  • ExcludedAccount — account is on the exclusion list (the pool manager, the locker, the distributor itself, …)
  • AlreadyClaimed — this (epoch, account) already claimed
  • InvalidProof — leaf or proof does not match the epoch's root
  • EpochOverdrawn(total, claimed, amount) — the tree over-allocated this epoch; cannot happen for a correctly built tree

epochCount()#

0x829965cc · view · View, anyone.

Epoch ids are 0 … epochCount - 1.

Returns

NameTypeDescription
arg0uint256

getEpoch(uint256)#

0xbc0bc6ba · view · View, anyone.

Root, total, claimed so far, publication time and expiry for an epoch.

Parameters

NameTypeDescription
epochIduint256

Returns

NameTypeDescription
arg0(bytes32,uint256,uint256,uint64,bool)

harvest()#

0x4641257d · nonpayable · Permissionless. The keeper calls it once at least about $1 of the launch's quote asset is waiting in the escrow.

Pulls this contract's accrued fees out of the launchpad's escrow.

Permissionless: the destination and amount are fixed by the escrow's ledger, so who triggers it does not matter. Credits the balance delta rather than the escrow's reported figure, so a quote asset that under- delivers can never make this contract believe it holds more than it does.

Pulls the distributor's escrow balance into unallocated, from where epochs are published. Returns the amount moved.

Returns

NameTypeDescription
amountuint256

Reverts

  • NothingToHarvest — the escrow holds nothing for this distributor

hasClaimed(uint256,address)#

0x873f6f9e · view · View, anyone.

Parameters

NameTypeDescription
epochIduint256
accountaddress

Returns

NameTypeDescription
arg0bool

isExcluded(address)#

0xcba0e996 · view · View, anyone.

Addresses that can never receive a distribution, whatever a published root says. The pool above all: its liquidity is locked forever, so anything sent there is destroyed rather than distributed.

True for the distributor itself from construction (it self-excludes), and for anything the owner has excluded since.

Parameters

NameTypeDescription
accountaddress

Returns

NameTypeDescription
arg0bool

leafFor(uint256,address,uint256)#

0x98cd4d42 · pure · Pure, anyone.

The leaf a claim must prove, so callers and tree builders agree on the encoding rather than each guessing it.

The exact leaf encoding, keccak256(abi.encode(index, account, amount)), so a tree builder and the contract cannot disagree. Not encodePacked, not double-hashed.

Parameters

NameTypeDescription
indexuint256
accountaddress
amountuint256

Returns

NameTypeDescription
arg0bytes32

outstanding(uint256)#

0x874a0e73 · view · View, anyone.

What an epoch still owes, whether or not its window has closed.

total - claimed for an epoch — what rollOver will return once the window closes.

Parameters

NameTypeDescription
epochIduint256

Returns

NameTypeDescription
arg0uint256

rollOver(uint256)#

0xd27411ce · nonpayable · Permissionless. The keeper calls it once an epoch's window has closed.

Returns an expired epoch's unclaimed remainder to the unallocated pool, so it funds a later distribution instead of being stranded.

Permissionless once the window has closed. There is no path that sends it anywhere but back into the next epoch, so nobody needs to be trusted to run it.

Returns an expired epoch's unclaimed remainder to unallocated, so a later epoch distributes it. Emits RolledOver even when the remainder is zero.

Parameters

NameTypeDescription
epochIduint256

Returns

NameTypeDescription
amountuint256

Reverts

  • NoEpoch — no such epoch id
  • ClaimWindowOpen — the 90-day window has not closed
  • AlreadyRolledOver — already rolled

unallocated()#

0xdf1c455c · view · View, anyone.

Harvested but not yet committed to an epoch. Publishing draws from this, and a rolled-over epoch returns to it.

Harvested funds not yet committed to an epoch — what the next epoch can distribute.

Returns

NameTypeDescription
arg0uint256

Other functions#

SignatureSelectorMutability
acceptOwnership()0x79ba5097nonpayable
CLAIM_WINDOW()0x9f34fc80view
escrow()0xe2fdcc17view
owner()0x8da5cb5bview
pendingOwner()0xe30c3978view
publishEpoch(bytes32,uint256)0xc16f10eenonpayable
quoteToken()0x217a4b70view
renounceOwnership()0x715018a6pure
setExcluded(address,bool)0x2836be24nonpayable
setExcludedBatch(address[],bool)0x8018135dnonpayable
transferOwnership(address)0xf2fde38bnonpayable

Events#

Eventtopic0
Claimed(uint256,address,uint256)0x4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed026
EpochPublished(uint256,bytes32,uint256,uint64)0x92c85369eead3d8555a7298769ddafde22d0f2f5f1ec05b2aa4059520533f003
ExclusionUpdated(address,bool)0x83f2b279b6151af5a15cdbe8471d34fe8b34aed9bd9514ffeadb57c9ea366e61
Harvested(uint256,uint256)0xfa07446fad45314351eb89109a154880278451332bb87f1824d435fe58da5939
OwnershipTransferred(address,address)0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
OwnershipTransferStarted(address,address)0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
RolledOver(uint256,uint256)0xf52162a5e697efbc1377904d60df6a1b984cc85ca7964998e201cbea0b8e7549

Errors#

ErrorSelector
AlreadyClaimed()0x646cf558
AlreadyRolledOver()0xd4b3db41
ClaimWindowClosed()0xf0f25a33
ClaimWindowOpen()0x29dfa3ce
EpochOverdrawn(uint256,uint256,uint256)0x1e8a6f77
ExcludedAccount()0xb7594bec
InsufficientUnallocated(uint256,uint256)0x30e44a1d
InvalidProof()0x09bde339
LengthMismatch()0xff633a38
NoEpoch()0x6a0b56a8
NothingToHarvest()0x3f29331a
OwnableInvalidOwner(address)0x1e4fbdf7
OwnableUnauthorizedAccount(address)0x118cdaa7
OwnershipCannotBeRenounced()0x2fab92ca
ReentrancyGuardReentrantCall()0x3ee5aeb5
SafeERC20FailedOperation(address)0x5274afe7
TransferFailed(address,uint256)0x1c43b976
UnexpectedNativeTransfer()0xecb8b30d
ZeroAddress()0xd92e233d
ZeroAmount()0x1f2a2005
POLLINGElysium · 99901 · Mainnet
--:--:-- UTC