# DropSwap Launchpad Gateway — Integration ABI

**Documentation version:** 2.0.2
**API version:** v2
**Last updated:** 2026-09-04

The public Gateway API normally prepares calldata automatically through
`POST /v1/prepare`.

Gateway V2 deployments use a fixed Permanent Locker for LP tokens.
The launchpad does not supply an `lpRecipient`.

## Gateway V2 execution interface

### ERC20 / ERC20

```solidity
function seedLiquidity(
    bytes32 integrationId,
    address token,
    address quoteToken,
    uint256 tokenAmountDesired,
    uint256 quoteAmountDesired,
    uint256 tokenAmountMin,
    uint256 quoteAmountMin,
    uint256 deadline
) returns (
    address pair,
    uint256 tokenAmount,
    uint256 quoteAmount,
    uint256 liquidity
)
```

### ERC20 / native

```solidity
function seedLiquidityNative(
    bytes32 integrationId,
    address token,
    uint256 tokenAmountDesired,
    uint256 tokenAmountMin,
    uint256 nativeAmountMin,
    uint256 deadline
) payable returns (
    address pair,
    uint256 tokenAmount,
    uint256 nativeAmount,
    uint256 liquidity
)
```

## Gateway V2 read-only interface

```solidity
function paused() view returns (bool)

function executedFor(
    address launchpad,
    bytes32 integrationId
) view returns (bool)
```

## V2 differences from V1

Gateway V2 removes `lpRecipient` from the seed functions.

LP tokens are sent directly to the chain-specific Permanent Locker.
The launchpad cannot redirect newly created LP tokens to another recipient.

Replay protection is scoped by:

```text
launchpad + integrationId
```

A successful execution marks:

```text
executedFor(launchpad, integrationId) == true
```

The recommended integration path is to use `POST /v1/prepare` and sign the
returned transactions rather than constructing calldata manually.

See `QUICKSTART.md` for the complete integration flow.
See `SECURITY_INVARIANTS.md` for the V2 security model.
