{
  "version": "0.1.0",
  "name": "spl_binary_option",
  "instructions": [
    {
      "name": "initializeBinaryOption",
      "accounts": [
        {
          "name": "poolAccount",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "escrowAccount",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "longTokenMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "shortTokenMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "mintAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "updateAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "decimals",
          "type": "u8"
        }
      ]
    },
    {
      "name": "trade",
      "accounts": [
        {
          "name": "poolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "longTokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "shortTokenMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "buyer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "seller",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "buyerAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sellerAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "buyerLongTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "buyerShortTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sellerLongTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sellerShortTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "size",
          "type": "u64"
        },
        {
          "name": "buyPrice",
          "type": "u64"
        },
        {
          "name": "sellPrice",
          "type": "u64"
        }
      ]
    },
    {
      "name": "settle",
      "accounts": [
        {
          "name": "poolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "winningMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": []
    },
    {
      "name": "collect",
      "accounts": [
        {
          "name": "poolAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collectorAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "collectorLongTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collectorShortTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collectorCollateralAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "longTokenMintAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "shortTokenMintAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowAuthorityAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    }
  ],
  "accounts": [
    {
      "name": "BinaryOption",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "decimals",
            "type": "u8"
          },
          {
            "name": "circulation",
            "type": "u64"
          },
          {
            "name": "settled",
            "type": "bool"
          },
          {
            "name": "escrowMintAccountPubkey",
            "type": "publicKey"
          },
          {
            "name": "escrowAccountPubkey",
            "type": "publicKey"
          },
          {
            "name": "longMintAccountPubkey",
            "type": "publicKey"
          },
          {
            "name": "shortMintAccountPubkey",
            "type": "publicKey"
          },
          {
            "name": "owner",
            "type": "publicKey"
          },
          {
            "name": "winningSidePubkey",
            "type": "publicKey"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 0,
      "name": "PublicKeyMismatch",
      "msg": "PublicKeyMismatch"
    },
    {
      "code": 1,
      "name": "InvalidMintAuthority",
      "msg": "InvalidMintAuthority"
    },
    {
      "code": 2,
      "name": "NotMintAuthority",
      "msg": "NotMintAuthority"
    },
    {
      "code": 3,
      "name": "InvalidSupply",
      "msg": "InvalidSupply"
    },
    {
      "code": 4,
      "name": "InvalidWinner",
      "msg": "InvalidWinner"
    },
    {
      "code": 5,
      "name": "UninitializedAccount",
      "msg": "UninitializedAccount"
    },
    {
      "code": 6,
      "name": "IncorrectOwner",
      "msg": "IncorrectOwner"
    },
    {
      "code": 7,
      "name": "AlreadySettled",
      "msg": "AlreadySettled"
    },
    {
      "code": 8,
      "name": "BetNotSettled",
      "msg": "BetNotSettled"
    },
    {
      "code": 9,
      "name": "TokenNotFoundInPool",
      "msg": "TokenNotFoundInPool"
    },
    {
      "code": 10,
      "name": "PublicKeysShouldBeUnique",
      "msg": "PublicKeysShouldBeUnique"
    },
    {
      "code": 11,
      "name": "TradePricesIncorrect",
      "msg": "TradePricesIncorrect"
    }
  ]
}