Skip to main content

Contract Info

PropertyValue
AddressSee Addresses
NetworkKasplex (see Addresses for chain details)

Write Functions

createToken

Create a new token. Requires a platform signature obtained through kas.fun.
function createToken(CreateTokenParams params) external payable returns (uint256 tokenId, address token)
CreateTokenParams:
FieldTypeDescription
namestringToken name
symbolstringToken symbol
metadataUristringMetadata URI
creatorBuyAmountuint256Optional initial buy amount (wei)
saltbytes32Salt for deterministic address
nonceuint256Anti-replay nonce
deadlineuint256Signature expiry timestamp
signaturebytesPlatform EIP-712 signature
Value: creationFee + creatorBuyAmount

buy

Buy tokens with KAS.
function buy(address token, uint256 minTokensOut) external payable
ParameterTypeDescription
tokenaddressToken to buy
minTokensOutuint256Minimum tokens to receive (slippage protection)
Value: Amount of KAS to spend (wei)

sell

Sell tokens for KAS. Requires prior ERC-20 approval.
function sell(address token, uint256 tokenAmount, uint256 minKasOut) external
ParameterTypeDescription
tokenaddressToken to sell
tokenAmountuint256Amount of tokens to sell (wei)
minKasOutuint256Minimum KAS to receive (slippage protection)

Read Functions

getTokenInfo

function getTokenInfo(address token) external view returns (TokenInfo)
Returns (TokenInfo):
FieldTypeDescription
tokenIduint256Token ID (0 if not found)
creatoraddressToken creator
pooladdressPool address
tokenReservesuint256Token reserves in pool (wei)
kasReservesuint256KAS reserves in pool (wei)
createdAtuint256Creation timestamp
fulfilledboolBonding curve threshold reached
graduatedboolLiquidity migrated to DEX
metadataUristringMetadata URI
paramVersionuint256Curve parameter version

getCurrentPrice

function getCurrentPrice(address token) external view returns (uint256)
Returns the current price in KAS per token (18 decimals).

getBondingCurveProgress

function getBondingCurveProgress(address token) external view returns (uint256)
Returns progress from 0 to 10000 (representing 0.00% to 100.00%).

getTokenParamVersion

function getTokenParamVersion(address token) external view returns (ParamVersion)
Returns (ParamVersion):
FieldTypeDescription
graduationThresholduint256KAS amount needed to graduate (wei)
virtualTokenuint256Virtual token reserve for curve
virtualKasuint256Virtual KAS reserve for curve
sqrtPriceX96Token0uint160Uniswap V3 sqrt price (token0)
sqrtPriceX96Token1uint160Uniswap V3 sqrt price (token1)
activeboolWhether this param version is active

computeTokenAddress

function computeTokenAddress(bytes32 salt, address creator) external view returns (address)
Predict the token contract address before creation.

bondingCurve

function bondingCurve() external view returns (address)
Returns the BondingCurve contract address.

creationFee

function creationFee() external view returns (uint256)
Returns the token creation fee in KAS (wei).

authorizedSigner

function authorizedSigner() external view returns (address)
Returns the platform’s authorized signer address.

Events

Created

event Created(
    address indexed token,
    address indexed creator,
    uint256 indexed tokenId,
    address pool,
    string name,
    string symbol
)

Buy

event Buy(
    address indexed token,
    address indexed buyer,
    uint256 kasAmount,
    uint256 tokenAmount,
    uint256 fee
)

Sell

event Sell(
    address indexed token,
    address indexed seller,
    uint256 tokenAmount,
    uint256 kasAmount,
    uint256 fee
)

Full ABI (JSON)

[
  {
    "inputs": [{"components": [{"internalType": "string", "name": "name", "type": "string"}, {"internalType": "string", "name": "symbol", "type": "string"}, {"internalType": "string", "name": "metadataUri", "type": "string"}, {"internalType": "uint256", "name": "creatorBuyAmount", "type": "uint256"}, {"internalType": "bytes32", "name": "salt", "type": "bytes32"}, {"internalType": "uint256", "name": "nonce", "type": "uint256"}, {"internalType": "uint256", "name": "deadline", "type": "uint256"}, {"internalType": "bytes", "name": "signature", "type": "bytes"}], "internalType": "struct IMemeFactory.CreateTokenParams", "name": "params", "type": "tuple"}],
    "name": "createToken",
    "outputs": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}, {"internalType": "address", "name": "token", "type": "address"}],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "token", "type": "address"}, {"internalType": "uint256", "name": "minTokensOut", "type": "uint256"}],
    "name": "buy",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "token", "type": "address"}, {"internalType": "uint256", "name": "tokenAmount", "type": "uint256"}, {"internalType": "uint256", "name": "minKasOut", "type": "uint256"}],
    "name": "sell",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "token", "type": "address"}],
    "name": "getTokenInfo",
    "outputs": [{"components": [{"internalType": "uint256", "name": "tokenId", "type": "uint256"}, {"internalType": "address", "name": "creator", "type": "address"}, {"internalType": "address", "name": "pool", "type": "address"}, {"internalType": "uint256", "name": "tokenReserves", "type": "uint256"}, {"internalType": "uint256", "name": "kasReserves", "type": "uint256"}, {"internalType": "uint256", "name": "createdAt", "type": "uint256"}, {"internalType": "bool", "name": "fulfilled", "type": "bool"}, {"internalType": "bool", "name": "graduated", "type": "bool"}, {"internalType": "string", "name": "metadataUri", "type": "string"}, {"internalType": "uint256", "name": "paramVersion", "type": "uint256"}], "internalType": "struct IMemeFactory.TokenInfo", "name": "", "type": "tuple"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "token", "type": "address"}],
    "name": "getCurrentPrice",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "token", "type": "address"}],
    "name": "getBondingCurveProgress",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "address", "name": "token", "type": "address"}],
    "name": "getTokenParamVersion",
    "outputs": [{"components": [{"internalType": "uint256", "name": "graduationThreshold", "type": "uint256"}, {"internalType": "uint256", "name": "virtualToken", "type": "uint256"}, {"internalType": "uint256", "name": "virtualKas", "type": "uint256"}, {"internalType": "uint160", "name": "sqrtPriceX96Token0", "type": "uint160"}, {"internalType": "uint160", "name": "sqrtPriceX96Token1", "type": "uint160"}, {"internalType": "bool", "name": "active", "type": "bool"}], "internalType": "struct IMemeFactory.ParamVersion", "name": "", "type": "tuple"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{"internalType": "bytes32", "name": "salt", "type": "bytes32"}, {"internalType": "address", "name": "creator", "type": "address"}],
    "name": "computeTokenAddress",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bondingCurve",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "creationFee",
    "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "authorizedSigner",
    "outputs": [{"internalType": "address", "name": "", "type": "address"}],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [{"indexed": true, "internalType": "address", "name": "token", "type": "address"}, {"indexed": true, "internalType": "address", "name": "creator", "type": "address"}, {"indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256"}, {"indexed": false, "internalType": "address", "name": "pool", "type": "address"}, {"indexed": false, "internalType": "string", "name": "name", "type": "string"}, {"indexed": false, "internalType": "string", "name": "symbol", "type": "string"}],
    "name": "Created",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{"indexed": true, "internalType": "address", "name": "token", "type": "address"}, {"indexed": true, "internalType": "address", "name": "buyer", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "kasAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256"}],
    "name": "Buy",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{"indexed": true, "internalType": "address", "name": "token", "type": "address"}, {"indexed": true, "internalType": "address", "name": "seller", "type": "address"}, {"indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "kasAmount", "type": "uint256"}, {"indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256"}],
    "name": "Sell",
    "type": "event"
  }
]