Skip to content

Instantly share code, notes, and snippets.

@bitgamma
Last active November 27, 2025 10:15
Show Gist options
  • Select an option

  • Save bitgamma/a5ced5fd58335e5c6be3d39d9c907135 to your computer and use it in GitHub Desktop.

Select an option

Save bitgamma/a5ced5fd58335e5c6be3d39d9c907135 to your computer and use it in GitHub Desktop.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
struct PermitDetails {
address token;
uint160 amount;
uint48 expiration;
uint48 nonce;
}
struct PermitSingle {
PermitDetails details;
address spender;
uint256 sigDeadline;
}
struct PermitBatch {
PermitDetails[] details;
address spender;
uint256 sigDeadline;
}
struct AllowanceTransferDetails {
address from;
address to;
uint160 amount;
address token;
}
type Currency is address;
interface IHooks {}
struct PoolKey {
Currency currency0;
Currency currency1;
uint24 fee;
int24 tickSpacing;
IHooks hooks;
}
contract Stubs {
// Swap Functions
function v3SwapExactInput(address recipient, uint256 amountIn, uint256 amountOutMin, bytes calldata path, bool payerIsUser) public {}
function v3SwapExactOutput(address recipient, uint256 amountOut, uint256 amountInMax, bytes calldata path, bool payerIsUser) public {}
function v2SwapExactInput(address recipient, uint256 amountIn, uint256 amountOutMin, address[] calldata path, bool payerIsUser) public {}
function v2SwapExactOutput(address recipient, uint256 amountOut, uint256 amountInMax, address[] calldata path, bool payerIsUser) public {}
// Permit2
function permit2TransferFrom(address token, address recipient, uint160 amount) public {}
function permit(PermitBatch calldata permitBatch, bytes calldata signature) public {}
function permit(PermitSingle calldata permitSingle, bytes calldata signature) public {}
function permit2TransferFrom(AllowanceTransferDetails[] calldata batch) public {}
// Payment & Balance
function sweep(address token, address recipient, uint256 amountMin) public {}
function pay(address token, address recipient, uint256 amount) public {}
function payPortion(address token, address recipient, uint256 bips) public {}
function balanceOf(address owner, address token, uint256 minBalance) public {}
// ETH & WETH
/// forge-lint: disable-next-item(mixed-case-function)
function wrapETH(address recipient, uint256 amount) public {}
/// forge-lint: disable-next-item(mixed-case-function)
function unwrapWETH9(address recipient, uint256 amountMin) public {}
// v3 & v4 Advanced
function v4HandleAction(bytes calldata actions, bytes[] calldata params) public {}
function nftPermit(address spender, uint256 tokenId, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {}
function nftPositionCall(bytes calldata callData) public {}
function poolInitialize(PoolKey calldata key, uint160 sqrtPriceX96) public {}
function v4PositionCall(bytes calldata callData) public {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment