Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions lba/contracts/interfaces/IAirdrop.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

interface IAirdrop {
function claimToLBA(
uint256 amount,
uint256 totalAmount,
bytes32[] calldata proof
) external;

function claim(
uint32 epoch,
uint256 amount,
uint256 totalAmount,
bytes32[] calldata proof
) external;

function getClaimed(
address account
) external view returns (uint256[] memory);

function getClaimingDeadlines() external view returns (uint64[] memory);
}
64 changes: 64 additions & 0 deletions lba/contracts/interfaces/IEndpoint.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

interface IEndpoint {
event SubmitTransactions();

event SubmitSlowModeTransaction(
uint64 executableAt,
address sender,
bytes tx
);

// events that we parse transactions into
enum TransactionType {
LiquidateSubaccount,
DepositCollateral,
WithdrawCollateral,
SpotTick,
UpdatePrice,
SettlePnl,
MatchOrders,
DepositInsurance,
ExecuteSlowMode,
MintLp,
BurnLp,
SwapAMM,
MatchOrderAMM,
DumpFees,
ClaimSequencerFees,
PerpTick,
ManualAssert,
Rebate,
UpdateProduct,
LinkSigner,
UpdateFeeRates,
BurnLpAndTransfer
}

struct MintLp {
bytes32 sender;
uint32 productId;
uint128 amountBase;
uint128 quoteAmountLow;
uint128 quoteAmountHigh;
uint64 nonce;
}

struct BurnLpAndTransfer {
bytes32 sender;
uint32 productId;
uint128 amount;
bytes32 recipient;
}

function depositCollateral(
bytes12 subaccountName,
uint32 productId,
uint128 amount
) external;

function submitSlowModeTransaction(bytes calldata transaction) external;

function getPriceX18(uint32 productId) external view returns (int128);
}
73 changes: 73 additions & 0 deletions lba/contracts/interfaces/ILBA.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

interface ILBA {
enum Stage {
NotStarted,
DepositingTokens,
WithdrawingUsdc,
LBAFinished,
DepositedToVertex,
LpMinted,
LpVesting,
LpVested
}

struct Config {
uint64 depositStartTime;
uint64 depositEndTime;
uint64 withdrawEndTime;
uint64 lpVestStartTime;
uint64 lpVestEndTime;
}

struct State {
uint256 totalVrtxDeposited;
uint256 totalUsdcDeposited;
uint256 totalLpMinted;
uint256 totalLpWithdrawn;
uint256 cumulativeRewardsPerShareX18;
}

function getStage() external view returns (Stage stage);

function depositVrtx(address account, uint256 amount) external;

function depositUsdc(uint256 amount) external;

function getDepositedVrtx(address account) external view returns (uint256);

function getDepositedUsdc(address account) external view returns (uint256);

function getMaxWithdrawableUsdc(
address account
) external view returns (uint256);

function withdrawUsdc(uint256 amount) external;

function getVrtxInitialPriceX18() external view returns (uint256);

function getLpBalance(address account) external view returns (uint256);

function getLockedLpBalance(
address account
) external view returns (uint256 lockedLpBalance);

function getWithdrawableLpBalance(
address account
) external view returns (uint256);

function withdrawLiquidity(uint256 lpAmount) external;

function getConfig() external view returns (Config memory);

function getState() external view returns (State memory);

function getClaimableRewards(
address account
) external view returns (uint256);

function claimRewards() external;

function distributeRewards(uint256 amount) external;
}
75 changes: 75 additions & 0 deletions lba/contracts/interfaces/IStaking.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

interface IStaking {
struct Segment {
uint64 startTime;
int256 vrtxSize;
address owner;
uint32 version;
}

struct QueueIndex {
uint64 count;
uint64 upTo;
}

struct State {
uint256 vrtxStaked;
int256 sumSize;
int256 sumSizeXTime;
}

struct ReleaseSchedule {
uint64 releaseTime;
uint256 amount;
}

struct Checkpoint {
uint64 time;
uint256 vrtxStaked;
int256 sumSize;
int256 sumSizeXTime;
uint256 rewards;
}

struct LastActionTimes {
uint64 lastStakeTime;
uint64 lastWithdrawTime;
}

struct WithdrawnVrtxStates {
uint256 vrtxClaimable;
uint256 vrtxPendingUnlock;
}

function stake(uint256 amount) external;

function withdraw(uint256 amount) external;

function claimVrtx() external;

function claimUsdc() external;

function getWithdrawnVrtxStates(
address account
) external view returns (WithdrawnVrtxStates memory);

function getRewardsBreakdown(
address account
) external view returns (uint256[] memory);

function getUsdcClaimable(address account) external view returns (uint256);

function getVrtxStaked(address account) external view returns (uint256);

function getTotalVrtxStaked() external view returns (uint256);

function getScore(address account) external view returns (uint256);

function getTotalScore() external view returns (uint256);

function getLastActionTimes(
address account
) external view returns (LastActionTimes memory);
}
22 changes: 22 additions & 0 deletions lba/contracts/interfaces/IVesting.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

interface IVesting {
function registerVesting(
address account,
uint256 amount,
uint64 period
) external;

function getVested(
uint64 vestingScheduleId
) external view returns (uint256);

function getVestable(
uint64 vestingScheduleId
) external view returns (uint256);

function getClaimable(address account) external view returns (uint256);

function claim() external;
}
Loading