Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sonic SwapX AMO Strategy #2407

Draft
wants to merge 15 commits into
base: nicka/sonic-curve-amo
Choose a base branch
from
Draft
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
52 changes: 52 additions & 0 deletions contracts/contracts/interfaces/sonic/ISwapXGauge.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IGauge {
function balanceOf(address account) external view returns (uint256);

function claimFees() external returns (uint256 claimed0, uint256 claimed1);

function deposit(uint256 amount) external;

function depositAll() external;

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

function getReward() external;

function getReward(address _user) external;

function isForPair() external view returns (bool);

function lastTimeRewardApplicable() external view returns (uint256);

function lastUpdateTime() external view returns (uint256);

function notifyRewardAmount(address token, uint256 reward) external;

function periodFinish() external view returns (uint256);

function rewardForDuration() external view returns (uint256);

function rewardPerToken() external view returns (uint256);

function rewardPerTokenStored() external view returns (uint256);

function rewardRate() external view returns (uint256);

function rewardToken() external view returns (address);

function rewards(address) external view returns (uint256);

function totalSupply() external view returns (uint256);

function userRewardPerTokenPaid(address) external view returns (uint256);

function withdraw(uint256 amount) external;

function withdrawAll() external;

function withdrawAllAndHarvest() external;

function withdrawExcess(address token, uint256 amount) external;
}
98 changes: 98 additions & 0 deletions contracts/contracts/interfaces/sonic/ISwapXPair.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IPair {
event Approval(address indexed src, address indexed guy, uint256 wad);
event Transfer(address indexed src, address indexed dst, uint256 wad);

function metadata()
external
view
returns (
uint256 dec0,
uint256 dec1,
uint256 r0,
uint256 r1,
bool st,
address t0,
address t1
);

function claimFees() external returns (uint256, uint256);

function tokens() external view returns (address, address);

function token0() external view returns (address);

function token1() external view returns (address);

function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;

function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;

function burn(address to)
external
returns (uint256 amount0, uint256 amount1);

function mint(address to) external returns (uint256 liquidity);

function getReserves()
external
view
returns (
uint256 _reserve0,
uint256 _reserve1,
uint256 _blockTimestampLast
);

function getAmountOut(uint256, address) external view returns (uint256);

// ERC20 methods
function name() external view returns (string memory);

function symbol() external view returns (string memory);

function decimals() external view returns (uint8);

function totalSupply() external view returns (uint256);

function balanceOf(address) external view returns (uint256);

function transfer(address recipient, uint256 amount)
external
returns (bool);

function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);

function allowance(address owner, address spender)
external
view
returns (uint256);

function approve(address spender, uint256 value) external returns (bool);

function claimable0(address _user) external view returns (uint256);

function claimable1(address _user) external view returns (uint256);

function isStable() external view returns (bool);

function skim(address to) external;
}
15 changes: 15 additions & 0 deletions contracts/contracts/interfaces/sonic/IVoterV3.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IVoterV3 {
/// @notice create a gauge
function createGauge(address _pool, uint256 _gaugeType)
external
returns (
address _gauge,
address _internal_bribe,
address _external_bribe
);

function gauges(address _pool) external view returns (address _gauge);
}
7 changes: 7 additions & 0 deletions contracts/contracts/proxies/SonicProxies.sol
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,10 @@ contract OSonicHarvesterProxy is InitializeGovernedUpgradeabilityProxy {
contract SonicCurveAMOStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
* @notice SonicSwapXAMOStrategyProxy delegates calls to a SonicSwapXAMOStrategy implementation
*/
contract SonicSwapXAMOStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}
Loading
Loading