{
    "version": "0.1.0",
    "name": "contract",
    "instructions": [
        {
            "name": "createLiquidityAccount",
            "accounts": [
                {
                    "name": "controller",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "ssl",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liquidityAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userWallet",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "deposit",
            "accounts": [
                {
                    "name": "controller",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "ssl",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liquidityAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "rtVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userRtAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userWallet",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "withdraw",
            "accounts": [
                {
                    "name": "controller",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "ssl",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liquidityAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "rtVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userRtAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userWallet",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "withdrawPercent",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "mintPt",
            "accounts": [
                {
                    "name": "controller",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "ssl",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "rtVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liquidityAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "ptMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userPtAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userWallet",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amountToMint",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "burnPt",
            "accounts": [
                {
                    "name": "controller",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "ssl",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liquidityAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "ptMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userPtAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userWallet",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amountToBurn",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "swap",
            "accounts": [
                {
                    "name": "controller",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "pair",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sslIn",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sslOut",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liabilityVaultIn",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "swappedLiabilityVaultIn",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liabilityVaultOut",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "swappedLiabilityVaultOut",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userInAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userOutAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "feeCollectorAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userWallet",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "feeCollector",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amountIn",
                    "type": "u64"
                },
                {
                    "name": "minOut",
                    "type": "u64"
                }
            ]
        }
    ],
    "accounts": [],
    "errors": [
        {
            "code": 6000,
            "name": "Suspended",
            "msg": "[G100] The pool is suspended"
        },
        {
            "code": 6001,
            "name": "NotAdmin",
            "msg": "[G101] Not admin"
        },
        {
            "code": 6002,
            "name": "MintsNotSorted",
            "msg": "[G102] Mints are not sorted"
        },
        {
            "code": 6003,
            "name": "WrongRTMint",
            "msg": "[G103] The risk token mint is wrong"
        },
        {
            "code": 6004,
            "name": "OracleNotPresent",
            "msg": "[G104] The required oracle is not present"
        },
        {
            "code": 6005,
            "name": "OracleNotHealthyStatus",
            "msg": "[G105] The oracle is not in a healthy state (status)"
        },
        {
            "code": 6006,
            "name": "OracleNotHealthyDelay",
            "msg": "[G106] The oracle is not in a healthy state (delay)"
        },
        {
            "code": 6007,
            "name": "OracleNotHealthyConfidence",
            "msg": "[G107] The oracle is not in a healthy state (confidence)"
        },
        {
            "code": 6008,
            "name": "SlippageTooLarge",
            "msg": "[G108] SlippageTooLarge"
        },
        {
            "code": 6009,
            "name": "PercentageOutOfRange",
            "msg": "[G109] Percentage out of range"
        },
        {
            "code": 6010,
            "name": "SwapIXNotInOrder",
            "msg": "[G110] Swap instruction is not executed in order"
        },
        {
            "code": 6011,
            "name": "MintNotMatchPair",
            "msg": "[G111] Mint does not match the pair"
        },
        {
            "code": 6012,
            "name": "FeeCollectorIncorrect",
            "msg": "[G112] Fee collector account incorrect"
        }
    ]
}
