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!

Last updated