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

SC Bonding Curve IDL

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

{
  "version": "1.0.0",
  "name": "sc_bonding_curve",
  "instructions": [
    {
      "name": "createToken",
      "accounts": [
        {
          "name": "propertiesAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "payerAccount",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ataProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerPda",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mplTokenMetadataProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mplTokenMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "afterMigrationCommunityContributionWsolStorage",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "afterMigrationCommunityContributionTokenStorage",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rentSysvar",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nativeMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "cooldexOwner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "programAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "logAuthorityAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "pdaTokenNonce",
          "type": "u8"
        },
        {
          "name": "uri",
          "type": "string"
        },
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "afterMigrationFee",
          "type": "u16"
        },
        {
          "name": "afterMigrationBurnBp",
          "type": "u16"
        },
        {
          "name": "afterMigrationHoldersBp",
          "type": "u16"
        },
        {
          "name": "afterMigrationLpBp",
          "type": "u16"
        },
        {
          "name": "loggingAccountBump",
          "type": "u8"
        }
      ]
    },
    {
      "name": "buyToken",
      "accounts": [
        {
          "name": "payerAccount",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerPda",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ownerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "propertiesAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "programAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "logAuthorityAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "pdaTokenNonce",
          "type": "u8"
        },
        {
          "name": "solToSpend",
          "type": "u64"
        },
        {
          "name": "minTokenToReceive",
          "type": "u64"
        },
        {
          "name": "loggingAccountBump",
          "type": "u8"
        }
      ]
    },
    {
      "name": "sellToken",
      "accounts": [
        {
          "name": "payerAccount",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerPda",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ownerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "programAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "propertiesAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "logAuthorityAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "pdaTokenNonce",
          "type": "u8"
        },
        {
          "name": "tokenToSpend",
          "type": "u64"
        },
        {
          "name": "minSolToReceive",
          "type": "u64"
        },
        {
          "name": "loggingAccountBump",
          "type": "u8"
        }
      ]
    },
    {
      "name": "migrate",
      "accounts": [
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerPda",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenOwnerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "pdaTokenNonce",
          "type": "u8"
        }
      ]
    },
    {
      "name": "validateLogRecord",
      "accounts": [
        {
          "name": "loggingAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "loggingAccountBump",
          "type": "u8"
        }
      ]
    },
    {
      "name": "adminSetProperties",
      "accounts": [
        {
          "name": "adminAccount",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "propertiesAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rentSysvar",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "initialVirtualSol",
          "type": "u64"
        },
        {
          "name": "initialVirtualToken",
          "type": "u64"
        },
        {
          "name": "platformFeeBps",
          "type": "u16"
        },
        {
          "name": "bump",
          "type": "u8"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "TokenOwnerData",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "initialized",
            "type": "u8"
          },
          {
            "name": "virtualSol",
            "type": "u64"
          },
          {
            "name": "virtualToken",
            "type": "u64"
          },
          {
            "name": "afterMigrationFee",
            "type": "u16"
          },
          {
            "name": "afterMigrationBurnBp",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "Properties",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "initialized",
            "type": "u8"
          },
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "initialVirtualSol",
            "type": "u64"
          },
          {
            "name": "initialVirtualToken",
            "type": "u64"
          },
          {
            "name": "platformFeeBps",
            "type": "u16"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "BondingCurveDoesNotMatchMint",
      "msg": "Bonding curve does not match mint"
    },
    {
      "code": 6001,
      "name": "TradingClosed",
      "msg": "Trading for this token is closed"
    },
    {
      "code": 6002,
      "name": "NotReadyToMigrate",
      "msg": "Token is not ready to migrate"
    },
    {
      "code": 6003,
      "name": "SlippageError",
      "msg": "Slippage error"
    },
    {
      "code": 6004,
      "name": "WrongFeeReceiver",
      "msg": "Wrong fee receiver"
    },
    {
      "code": 6005,
      "name": "LogicalError",
      "msg": "Logical error"
    }
  ]
}

Using the IDL

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

PreviousExampleNextCoolDEX IDL

Last updated 2 months ago