{
  "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
  "metadata": {
    "name": "pump",
    "version": "0.1.0",
    "spec": "0.1.0"
  },
  "instructions": [
    {
      "name": "initialize",
      "discriminator": [175, 175, 109, 31, 13, 152, 155, 237],
      "docs": ["Creates the global state."],
      "accounts": [
        {
          "name": "global",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108]
              }
            ]
          }
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "setParams",
      "discriminator": [165, 31, 134, 53, 189, 180, 130, 255],
      "docs": ["Sets the global state parameters."],
      "accounts": [
        {
          "name": "global",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108]
              }
            ]
          }
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "feeRecipient",
          "type": "pubkey"
        },
        {
          "name": "initialVirtualTokenReserves",
          "type": "u64"
        },
        {
          "name": "initialVirtualSolReserves",
          "type": "u64"
        },
        {
          "name": "initialRealTokenReserves",
          "type": "u64"
        },
        {
          "name": "tokenTotalSupply",
          "type": "u64"
        },
        {
          "name": "feeBasisPoints",
          "type": "u64"
        }
      ]
    },
    {
      "name": "create",
      "discriminator": [24, 30, 200, 40, 5, 28, 7, 119],
      "docs": ["Creates a new coin and bonding curve."],
      "accounts": [
        {
          "name": "mint",
          "writable": true,
          "signer": true
        },
        {
          "name": "mint_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109, 105, 110, 116, 45, 97, 117, 116, 104, 111, 114, 105, 116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "bonding_curve",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "associated_bonding_curve",
          "writable": true,
          "signer": false
        },
        {
          "name": "global",
          "writable": false,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108]
              }
            ]
          }
        },
        {
          "name": "mpl_token_metadata",
          "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
        },
        {
          "name": "metadata",
          "writable": true,
          "signer": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "buy",
      "discriminator": [102, 6, 61, 18, 1, 218, 235, 234],
      "docs": ["Buys tokens from a bonding curve."],
      "accounts": [
        {
          "name": "global",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108]
              }
            ]
          }
        },
        {
          "name": "fee_recipient",
          "writable": true,
          "signer": false
        },
        {
          "name": "mint",
          "writable": false,
          "signer": false
        },
        {
          "name": "bonding_curve",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "associated_bonding_curve",
          "writable": true,
          "signer": false
        },
        {
          "name": "associated_user",
          "writable": true,
          "signer": false
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "maxSolCost",
          "type": "u64"
        }
      ]
    },
    {
      "name": "sell",
      "discriminator": [51, 230, 133, 164, 1, 127, 131, 173],
      "docs": ["Sells tokens into a bonding curve."],
      "accounts": [
        {
          "name": "global",
          "writable": false,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108]
              }
            ]
          }
        },
        {
          "name": "feeRecipient",
          "writable": true,
          "signer": false
        },
        {
          "name": "mint",
          "writable": false,
          "signer": false
        },
        {
          "name": "bonding_curve",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "associatedBondingCurve",
          "writable": true,
          "signer": false
        },
        {
          "name": "associatedUser",
          "writable": true,
          "signer": false
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "minSolOutput",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdraw",
      "discriminator": [183, 18, 70, 156, 148, 109, 161, 34],
      "docs": [
        "Allows the admin to withdraw liquidity for a migration once the bonding curve completes"
      ],
      "accounts": [
        {
          "name": "global",
          "writable": false,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [103, 108, 111, 98, 97, 108]
              }
            ]
          }
        },
        {
          "name": "lastWithdraw",
          "writable": true,
          "signer": false
        },
        {
          "name": "mint",
          "writable": false,
          "signer": false
        },
        {
          "name": "bonding_curve",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  98, 111, 110, 100, 105, 110, 103, 45, 99, 117, 114, 118, 101
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "associatedBondingCurve",
          "writable": true,
          "signer": false
        },
        {
          "name": "associatedUser",
          "writable": true,
          "signer": false
        },
        {
          "name": "user",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "token_program",
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "rent",
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": []
    }
  ],
  "accounts": [
    {
      "name": "BondingCurve",
      "discriminator": [23, 183, 248, 55, 96, 216, 172, 96]
    },
    {
      "name": "Global",
      "discriminator": [167, 232, 232, 177, 200, 108, 114, 127]
    }
  ],
  "events": [
    {
      "name": "CreateEvent",
      "discriminator": [27, 114, 169, 77, 222, 235, 99, 118]
    },
    {
      "name": "TradeEvent",
      "discriminator": [189, 219, 127, 211, 78, 230, 97, 238]
    },
    {
      "name": "CompleteEvent",
      "discriminator": [95, 114, 97, 156, 212, 46, 152, 8]
    },
    {
      "name": "SetParamsEvent",
      "discriminator": [223, 195, 159, 246, 62, 48, 143, 131]
    }
  ],
  "types": [
    {
      "name": "Global",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "initialized",
            "type": "bool"
          },
          {
            "name": "authority",
            "type": "pubkey"
          },
          {
            "name": "feeRecipient",
            "type": "pubkey"
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "u64"
          },
          {
            "name": "initialVirtualSolReserves",
            "type": "u64"
          },
          {
            "name": "initialRealTokenReserves",
            "type": "u64"
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64"
          },
          {
            "name": "feeBasisPoints",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "LastWithdraw",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "lastWithdrawTimestamp",
            "type": "i64"
          }
        ]
      }
    },
    {
      "name": "BondingCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "virtualTokenReserves",
            "type": "u64"
          },
          {
            "name": "virtualSolReserves",
            "type": "u64"
          },
          {
            "name": "realTokenReserves",
            "type": "u64"
          },
          {
            "name": "realSolReserves",
            "type": "u64"
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64"
          },
          {
            "name": "complete",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "CreateEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": "string",
            "index": false
          },
          {
            "name": "symbol",
            "type": "string",
            "index": false
          },
          {
            "name": "uri",
            "type": "string",
            "index": false
          },
          {
            "name": "mint",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "bondingCurve",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "user",
            "type": "pubkey",
            "index": false
          }
        ]
      }
    },
    {
      "name": "TradeEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "solAmount",
            "type": "u64",
            "index": false
          },
          {
            "name": "tokenAmount",
            "type": "u64",
            "index": false
          },
          {
            "name": "isBuy",
            "type": "bool",
            "index": false
          },
          {
            "name": "user",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "timestamp",
            "type": "i64",
            "index": false
          },
          {
            "name": "virtualSolReserves",
            "type": "u64",
            "index": false
          },
          {
            "name": "virtualTokenReserves",
            "type": "u64",
            "index": false
          },
          {
            "name": "realSolReserves",
            "type": "u64",
            "index": false
          },
          {
            "name": "realTokenReserves",
            "type": "u64",
            "index": false
          }
        ]
      }
    },
    {
      "name": "CompleteEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "user",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "mint",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "bondingCurve",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "timestamp",
            "type": "i64",
            "index": false
          }
        ]
      }
    },
    {
      "name": "SetParamsEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "feeRecipient",
            "type": "pubkey",
            "index": false
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "u64",
            "index": false
          },
          {
            "name": "initialVirtualSolReserves",
            "type": "u64",
            "index": false
          },
          {
            "name": "initialRealTokenReserves",
            "type": "u64",
            "index": false
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64",
            "index": false
          },
          {
            "name": "feeBasisPoints",
            "type": "u64",
            "index": false
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "NotAuthorized",
      "msg": "The given account is not authorized to execute this instruction."
    },
    {
      "code": 6001,
      "name": "AlreadyInitialized",
      "msg": "The program is already initialized."
    },
    {
      "code": 6002,
      "name": "TooMuchSolRequired",
      "msg": "slippage: Too much SOL required to buy the given amount of tokens."
    },
    {
      "code": 6003,
      "name": "TooLittleSolReceived",
      "msg": "slippage: Too little SOL received to sell the given amount of tokens."
    },
    {
      "code": 6004,
      "name": "MintDoesNotMatchBondingCurve",
      "msg": "The mint does not match the bonding curve."
    },
    {
      "code": 6005,
      "name": "BondingCurveComplete",
      "msg": "The bonding curve has completed and liquidity migrated to raydium."
    },
    {
      "code": 6006,
      "name": "BondingCurveNotComplete",
      "msg": "The bonding curve has not completed."
    },
    {
      "code": 6007,
      "name": "NotInitialized",
      "msg": "The program is not initialized."
    },
    {
      "code": 6008,
      "name": "WithdrawTooFrequent",
      "msg": "Withdraw too frequent"
    }
  ]
}
