{
  "version": "0.1.0",
  "name": "pump",
  "instructions": [
    {
      "name": "initialize",
      "accounts": [
        {
          "name": "global",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 175,
        "bytes": [175, 175, 109, 31, 13, 152, 155, 237]
      }
    },
    {
      "name": "setParams",
      "accounts": [
        {
          "name": "global",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false,
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false,
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "feeRecipient",
          "type": "publicKey",
          "attrs": []
        },
        {
          "name": "initialVirtualTokenReserves",
          "type": "u64",
          "attrs": []
        },
        {
          "name": "initialVirtualSolReserves",
          "type": "u64",
          "attrs": []
        },
        {
          "name": "initialRealTokenReserves",
          "type": "u64",
          "attrs": []
        },
        {
          "name": "tokenTotalSupply",
          "type": "u64",
          "attrs": []
        },
        {
          "name": "feeBasisPoints",
          "type": "u64",
          "attrs": []
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 165,
        "bytes": [165, 31, 134, 53, 189, 180, 130, 255]
      }
    },
    {
      "name": "create",
      "accounts": [
        {
          "name": "mint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "mintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedBondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "global",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mplTokenMetadata",
          "isMut": false,
          "isSigner": false,
          "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
        },
        {
          "name": "metadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false,
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false,
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false,
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false,
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false,
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string",
          "attrs": []
        },
        {
          "name": "symbol",
          "type": "string",
          "attrs": []
        },
        {
          "name": "uri",
          "type": "string",
          "attrs": []
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 24,
        "bytes": [24, 30, 200, 40, 5, 28, 7, 119]
      }
    },
    {
      "name": "buy",
      "accounts": [
        {
          "name": "global",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeRecipient",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedBondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedUser",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false,
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false,
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false,
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false,
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64",
          "attrs": []
        },
        {
          "name": "maxSolCost",
          "type": "u64",
          "attrs": []
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 102,
        "bytes": [102, 6, 61, 18, 1, 218, 235, 234]
      }
    },
    {
      "name": "sell",
      "accounts": [
        {
          "name": "global",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeRecipient",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedBondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedUser",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false,
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false,
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false,
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false,
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64",
          "attrs": []
        },
        {
          "name": "minSolOutput",
          "type": "u64",
          "attrs": []
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 51,
        "bytes": [51, 230, 133, 164, 1, 127, 131, 173]
      }
    },
    {
      "name": "withdraw",
      "accounts": [
        {
          "name": "global",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "lastWithdraw",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedBondingCurve",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "associatedUser",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false,
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false,
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "eventAuthority",
          "isMut": false,
          "isSigner": false,
          "address": "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false,
          "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 183,
        "bytes": [183, 18, 70, 156, 148, 109, 161, 34]
      }
    }
  ],
  "accounts": [
    {
      "name": "BondingCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "virtualTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "virtualSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "realTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "realSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "complete",
            "type": "bool",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "Global",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "initialized",
            "type": "bool",
            "attrs": []
          },
          {
            "name": "authority",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "feeRecipient",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "initialVirtualSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "initialRealTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "feeBasisPoints",
            "type": "u64",
            "attrs": []
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "Global",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "initialized",
            "type": "bool",
            "attrs": []
          },
          {
            "name": "authority",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "feeRecipient",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "initialVirtualSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "initialRealTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "feeBasisPoints",
            "type": "u64",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "LastWithdraw",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "lastWithdrawTimestamp",
            "type": "i64",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "BondingCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "virtualTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "virtualSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "realTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "realSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "complete",
            "type": "bool",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "CreateEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": "string",
            "attrs": []
          },
          {
            "name": "symbol",
            "type": "string",
            "attrs": []
          },
          {
            "name": "uri",
            "type": "string",
            "attrs": []
          },
          {
            "name": "mint",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "bondingCurve",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "user",
            "type": "publicKey",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "TradeEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "solAmount",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "tokenAmount",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "isBuy",
            "type": "bool",
            "attrs": []
          },
          {
            "name": "user",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "timestamp",
            "type": "i64",
            "attrs": []
          },
          {
            "name": "virtualSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "virtualTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "realSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "realTokenReserves",
            "type": "u64",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "CompleteEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "user",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "mint",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "bondingCurve",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "timestamp",
            "type": "i64",
            "attrs": []
          }
        ]
      }
    },
    {
      "name": "SetParamsEvent",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "feeRecipient",
            "type": "publicKey",
            "attrs": []
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "initialVirtualSolReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "initialRealTokenReserves",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "tokenTotalSupply",
            "type": "u64",
            "attrs": []
          },
          {
            "name": "feeBasisPoints",
            "type": "u64",
            "attrs": []
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "CreateEvent",
      "fields": [
        {
          "name": "name",
          "type": "string",
          "index": false
        },
        {
          "name": "symbol",
          "type": "string",
          "index": false
        },
        {
          "name": "uri",
          "type": "string",
          "index": false
        },
        {
          "name": "mint",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bondingCurve",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "user",
          "type": "publicKey",
          "index": false
        }
      ]
    },
    {
      "name": "TradeEvent",
      "fields": [
        {
          "name": "mint",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "solAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "isBuy",
          "type": "bool",
          "index": false
        },
        {
          "name": "user",
          "type": "publicKey",
          "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",
      "fields": [
        {
          "name": "user",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "mint",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bondingCurve",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "timestamp",
          "type": "i64",
          "index": false
        }
      ]
    },
    {
      "name": "SetParamsEvent",
      "fields": [
        {
          "name": "feeRecipient",
          "type": "publicKey",
          "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"
    }
  ],
  "metadata": {
    "origin": "anchor",
    "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
  }
}
