Something.cool
  • Getting started
    • Why Something.cool?
    • 1st stage - Bonding curve
    • 2nd stage - CoolDEX trading
  • Zero-fee coins
    • What is Zero-fee coin?
    • How to launch Zero-fee coin
  • Community coins
    • What is Community coin?
    • Community contribution / How it works?
      • Holders
      • Liquidity providers
      • Burning
    • How to launch Сommunity coin
  • Features
    • Coin Explore
      • New Pairs
      • Coin Vision
    • Spaces
    • Rewards
  • Community
    • Referral program
    • X
    • Media kit
  • Developer Resources
  • Platform Architecture
    • Technical Introduction
    • Overview
    • Components
  • SC Bonding Curve
    • Overview
    • Functions
      • Create Token
      • Buy Token
      • Sell Token
      • Migrate
      • Admin Set Properties
    • Price Calculation
    • Fees
  • CoolDEX
    • Overview
    • Functions
      • Initialize Pool
      • Swap Base In
      • Swap Base Out
      • Deposit
      • Withdraw
      • Withdraw PnL
    • Price Calculation
    • Fees
  • Token Types
    • Token Types
  • Migration Process
    • Migration Process
  • Rewards Claiming
    • Overview
    • Authentication
    • Endpoints
    • Errors
    • Example
  • Reference
    • SC Bonding Curve IDL
    • CoolDEX IDL
    • Log Structure
    • DEVNET EXAMPLES
  • INTERNAL API
    • Overview
    • Register
  • Example: Registering a User via Internal API (JavaScript)
Powered by GitBook
On this page
  1. Reference

CoolDEX IDL

The IDL is just an example and DOES NOT work with ANCHOR!

This page provides the Interface Description Language (IDL) for the CoolDEX contract. The IDL describes the contract's instructions, accounts, and error codes in a standard format.

{
  "version": "1.0.0",
  "name": "cooldex_amm",
  "instructions": [
    {
      "name": "initialize2",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ataTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rentSysvar",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammInfo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammLpMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammCoinMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammPcMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammCoinVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammPcVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "createFeeDestination",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "marketInfo",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userWallet",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "userTokenCoin",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenPc",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenLp",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "nonce",
          "type": "u8"
        },
        {
          "name": "openTime",
          "type": "u64"
        },
        {
          "name": "initPcAmount",
          "type": "u64"
        },
        {
          "name": "initCoinAmount",
          "type": "u64"
        },
        {
          "name": "burnBp",
          "type": "u16"
        },
        {
          "name": "feeNumerator",
          "type": "u16"
        }
      ]
    },
    {
      "name": "deposit",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammInfo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammLpMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammCoinVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammPcVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceCoin",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourcePc",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestLp",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sourceOwner",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "maxCoinAmount",
          "type": "u64"
        },
        {
          "name": "maxPcAmount",
          "type": "u64"
        },
        {
          "name": "baseSide",
          "type": "u64"
        },
        {
          "name": "otherAmountMin",
          "type": { "option": "u64" }
        }
      ]
    },
    {
      "name": "withdraw",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammInfo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammLpMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammCoinVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammPcVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceLp",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestCoin",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestPc",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sourceLpOwner",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "minCoinAmount",
          "type": { "option": "u64" }
        },
        {
          "name": "minPcAmount",
          "type": { "option": "u64" }
        }
      ]
    },
    {
      "name": "swapBaseIn",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammInfo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammCoinVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammPcVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSource",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestination",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "coinMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "platformTaxWsolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cultContributionWsolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cultContributionTokenAccount",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amountIn",
          "type": "u64"
        },
        {
          "name": "minimumAmountOut",
          "type": "u64"
        }
      ]
    },
    {
      "name": "swapBaseOut",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammInfo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ammCoinVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ammPcVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSource",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userDestination",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSourceOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "coinMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "platformTaxWsolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cultContributionWsolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cultContributionTokenAccount",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "maxAmountIn",
          "type": "u64"
        },
        {
          "name": "amountOut",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "ammInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "status",
            "type": "u64"
          },
          {
            "name": "nonce",
            "type": "u64"
          },
          {
            "name": "orderNum",
            "type": "u64"
          },
          {
            "name": "depth",
            "type": "u64"
          },
          {
            "name": "coinDecimals",
            "type": "u64"
          },
          {
            "name": "pcDecimals",
            "type": "u64"
          },
          {
            "name": "state",
            "type": "u64"
          },
          {
            "name": "resetFlag",
            "type": "u64"
          },
          {
            "name": "minSize",
            "type": "u64"
          },
          {
            "name": "volMaxCutRatio",
            "type": "u64"
          },
          {
            "name": "amountWave",
            "type": "u64"
          },
          {
            "name": "coinLotSize",
            "type": "u64"
          },
          {
            "name": "pcLotSize",
            "type": "u64"
          },
          {
            "name": "minPriceMultiplier",
            "type": "u64"
          },
          {
            "name": "maxPriceMultiplier",
            "type": "u64"
          },
          {
            "name": "sysDecimalValue",
            "type": "u64"
          },
          {
            "name": "fees",
            "type": {
              "defined": "Fees"
            }
          },
          {
            "name": "stateData",
            "type": {
              "defined": "StateData"
            }
          },
          {
            "name": "coinVault",
            "type": "publicKey"
          },
          {
            "name": "pcVault",
            "type": "publicKey"
          },
          {
            "name": "coinVaultMint",
            "type": "publicKey"
          },
          {
            "name": "pcVaultMint",
            "type": "publicKey"
          },
          {
            "name": "lpMint",
            "type": "publicKey"
          },
          {
            "name": "openOrders",
            "type": "publicKey"
          },
          {
            "name": "market",
            "type": "publicKey"
          },
          {
            "name": "marketProgram",
            "type": "publicKey"
          },
          {
            "name": "targetOrders",
            "type": "publicKey"
          },
          {
            "name": "padding1",
            "type": {
              "array": ["u64", 8]
            }
          },
          {
            "name": "ammOwner",
            "type": "publicKey"
          },
          {
            "name": "lpAmount",
            "type": "u64"
          },
          {
            "name": "clientOrderId",
            "type": "u64"
          },
          {
            "name": "recentEpoch",
            "type": "u64"
          },
          {
            "name": "padding2",
            "type": "u64"
          },
          {
            "name": "isCoolpadToken",
            "type": "bool"
          },
          {
            "name": "burnRate",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "TargetOrders",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "ammId",
            "type": "publicKey"
          },
          {
            "name": "planOrderId",
            "type": "u64"
          },
          {
            "name": "targetX",
            "type": "u128"
          },
          {
            "name": "targetY",
            "type": "u128"
          }
        ]
      }
    },
    {
      "name": "AmmConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "status",
            "type": "u64"
          },
          {
            "name": "nonce",
            "type": "u64"
          },
          {
            "name": "ammOwner",
            "type": "publicKey"
          },
          {
            "name": "pnlOwner",
            "type": "publicKey"
          },
          {
            "name": "createPoolFee",
            "type": "u64"
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "AmmStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Uninitialized"
          },
          {
            "name": "Initialized"
          },
          {
            "name": "Disabled"
          },
          {
            "name": "OrderBookOnly"
          },
          {
            "name": "WaitingTrade"
          },
          {
            "name": "SwapOnly"
          }
        ]
      }
    },
    {
      "name": "SwapDirection",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Coin2PC"
          },
          {
            "name": "PC2Coin"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "InvalidProgramAddress",
      "msg": "Invalid program address"
    },
    {
      "code": 6001,
      "name": "AlreadyInUse",
      "msg": "Swap account already in use"
    },
    {
      "code": 6002,
      "name": "InvalidOwner",
      "msg": "Invalid owner"
    },
    {
      "code": 6003,
      "name": "InvalidSupply",
      "msg": "Invalid supply"
    },
    {
      "code": 6004,
      "name": "InvalidDelegate",
      "msg": "Invalid delegate"
    },
    {
      "code": 6005,
      "name": "InvalidInput",
      "msg": "Invalid input"
    },
    {
      "code": 6006,
      "name": "InvalidOutput",
      "msg": "Invalid output"
    },
    {
      "code": 6007,
      "name": "InsufficientFunds",
      "msg": "Insufficient funds"
    },
    {
      "code": 6008,
      "name": "ExceededSlippage",
      "msg": "Exceeded slippage tolerance"
    },
    {
      "code": 6009,
      "name": "InvalidStatus",
      "msg": "Invalid status"
    },
    {
      "code": 6010,
      "name": "NotAllowZeroLP",
      "msg": "Not allow zero LP"
    },
    {
      "code": 6011,
      "name": "InvalidFee",
      "msg": "Invalid fee"
    },
    {
      "code": 6012,
      "name": "InvalidFreezeAuthority",
      "msg": "Invalid freeze authority"
    },
    {
      "code": 6013,
      "name": "InvalidCloseAuthority",
      "msg": "Invalid close authority"
    },
    {
      "code": 6014,
      "name": "InvalidCoinMint",
      "msg": "Invalid coin mint"
    },
    {
      "code": 6015,
      "name": "InvalidPCMint",
      "msg": "Invalid PC mint"
    },
    {
      "code": 6016,
      "name": "InvalidCoinVault",
      "msg": "Invalid coin vault"
    },
    {
      "code": 6017,
      "name": "InvalidPCVault",
      "msg": "Invalid PC vault"
    },
    {
      "code": 6018,
      "name": "InvalidTokenLP",
      "msg": "Invalid LP token"
    },
    {
      "code": 6019,
      "name": "InvalidUserToken",
      "msg": "Invalid user token"
    },
    {
      "code": 6020,
      "name": "OnlyBondingCurveIsAllowed",
      "msg": "Only BondingCurve is allowed"
    }
  ]
}
PreviousSC Bonding Curve IDLNextLog Structure

Last updated 2 months ago