{
    "version": "0.0.0",
    "name": "marinade_referral",
    "instructions": [
        {
            "name": "deposit",
            "accounts": [
                {
                    "name": "state",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liqPoolSolLegPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liqPoolMsolLeg",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liqPoolMsolLegAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "reservePda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "transferFrom",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "mintTo",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolMintAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "marinadeFinanceProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "referralState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolTokenPartnerAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "lamports",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "depositStakeAccount",
            "accounts": [
                {
                    "name": "state",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "validatorList",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "stakeList",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "stakeAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "stakeAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "duplicationFlag",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "rentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "msolMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "mintTo",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolMintAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "clock",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "stakeProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "marinadeFinanceProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "referralState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolTokenPartnerAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "validatorIndex",
                    "type": "u32"
                }
            ]
        },
        {
            "name": "liquidUnstake",
            "accounts": [
                {
                    "name": "state",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liqPoolSolLegPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "liqPoolMsolLeg",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "treasuryMsolAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "getMsolFrom",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "getMsolFromAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "transferSolTo",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "marinadeFinanceProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "referralState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolTokenPartnerAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "msolAmount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "orderUnstake",
            "accounts": [
                {
                    "name": "state",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "burnMsolFrom",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "burnMsolAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "newTicketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "clock",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "msolTokenPartnerAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "msolAmount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "claim",
            "accounts": [
                {
                    "name": "state",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "reservePda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "ticketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "transferSolTo",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "clock",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "initialize",
            "accounts": [
                {
                    "name": "adminAccount",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "globalState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "msolMintAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "foreman1",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "foreman2",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "minKeepPct",
                    "type": "u8"
                },
                {
                    "name": "maxKeepPct",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "initReferralAccount",
            "accounts": [
                {
                    "name": "globalState",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "signer",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "referralState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "partnerAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "msolTokenPartnerAccount",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "partnerName",
                    "type": "string"
                },
                {
                    "name": "validatorVoteKey",
                    "type": {
                        "option": "publicKey"
                    }
                },
                {
                    "name": "keepSelfStakePct",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "updateReferral",
            "accounts": [
                {
                    "name": "globalState",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "adminAccount",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "referralState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "newPartnerAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "newMsolTokenPartnerAccount",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "pause",
                    "type": "bool"
                }
            ]
        },
        {
            "name": "updateOperationFees",
            "accounts": [
                {
                    "name": "globalState",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "signer",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "referralState",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "operationDepositSolFee",
                    "type": {
                        "option": "u8"
                    }
                },
                {
                    "name": "operationDepositStakeAccountFee",
                    "type": {
                        "option": "u8"
                    }
                },
                {
                    "name": "operationLiquidUnstakeFee",
                    "type": {
                        "option": "u8"
                    }
                },
                {
                    "name": "operationDelayedUnstakeFee",
                    "type": {
                        "option": "u8"
                    }
                }
            ]
        },
        {
            "name": "changeAuthority",
            "accounts": [
                {
                    "name": "globalState",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "adminAccount",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "newAdminAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "newForeman1",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "newForeman2",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        }
    ],
    "accounts": [
        {
            "name": "GlobalState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "adminAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "msolMintAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "foreman1",
                        "type": "publicKey"
                    },
                    {
                        "name": "foreman2",
                        "type": "publicKey"
                    },
                    {
                        "name": "minKeepPct",
                        "type": "u8"
                    },
                    {
                        "name": "maxKeepPct",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "ReferralState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "partnerName",
                        "type": "string"
                    },
                    {
                        "name": "validatorVoteKey",
                        "type": {
                            "option": "publicKey"
                        }
                    },
                    {
                        "name": "keepSelfStakePct",
                        "type": "u8"
                    },
                    {
                        "name": "partnerAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "msolTokenPartnerAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "depositSolAmount",
                        "type": "u64"
                    },
                    {
                        "name": "depositSolOperations",
                        "type": "u64"
                    },
                    {
                        "name": "depositStakeAccountAmount",
                        "type": "u64"
                    },
                    {
                        "name": "depositStakeAccountOperations",
                        "type": "u64"
                    },
                    {
                        "name": "liqUnstakeMsolFees",
                        "type": "u64"
                    },
                    {
                        "name": "liqUnstakeSolAmount",
                        "type": "u64"
                    },
                    {
                        "name": "liqUnstakeMsolAmount",
                        "type": "u64"
                    },
                    {
                        "name": "liqUnstakeOperations",
                        "type": "u64"
                    },
                    {
                        "name": "delayedUnstakeAmount",
                        "type": "u64"
                    },
                    {
                        "name": "delayedUnstakeOperations",
                        "type": "u64"
                    },
                    {
                        "name": "baseFee",
                        "type": "u32"
                    },
                    {
                        "name": "maxFee",
                        "type": "u32"
                    },
                    {
                        "name": "maxNetStake",
                        "type": "u64"
                    },
                    {
                        "name": "pause",
                        "type": "bool"
                    },
                    {
                        "name": "operationDepositSolFee",
                        "type": "u8"
                    },
                    {
                        "name": "operationDepositStakeAccountFee",
                        "type": "u8"
                    },
                    {
                        "name": "operationLiquidUnstakeFee",
                        "type": "u8"
                    },
                    {
                        "name": "operationDelayedUnstakeFee",
                        "type": "u8"
                    },
                    {
                        "name": "accumDepositSolFee",
                        "type": "u64"
                    },
                    {
                        "name": "accumDepositStakeAccountFee",
                        "type": "u64"
                    },
                    {
                        "name": "accumLiquidUnstakeFee",
                        "type": "u64"
                    },
                    {
                        "name": "accumDelayedUnstakeFee",
                        "type": "u64"
                    }
                ]
            }
        }
    ],
    "errors": [
        {
            "code": 300,
            "name": "AccessDenied",
            "msg": "Access denied"
        },
        {
            "code": 301,
            "name": "Paused",
            "msg": "Paused"
        },
        {
            "code": 302,
            "name": "TransferNotAvailable",
            "msg": "Transfer is not available yet"
        },
        {
            "code": 303,
            "name": "InvalidPartnerAccountOwner",
            "msg": "Invalid partner account owner"
        },
        {
            "code": 304,
            "name": "InvalidPartnerAccountMint",
            "msg": "Invalid partner account mint"
        },
        {
            "code": 305,
            "name": "PartnerNameTooLong",
            "msg": "Partner name too long"
        },
        {
            "code": 306,
            "name": "NotInitializedMintAccount",
            "msg": "Mint account is not initialized"
        },
        {
            "code": 307,
            "name": "ReferralOperationFeeOverMax",
            "msg": "Referral operation fee was set over the maximum permitted amount"
        },
        {
            "code": 308,
            "name": "NotAllowedForStakeAsCollateralPartner",
            "msg": "Not allowed for stake-as-collateral-partners"
        },
        {
            "code": 309,
            "name": "KeepPctOutOfRange",
            "msg": "Keep_pct out of valid range"
        },
        {
            "code": 310,
            "name": "MaxKeepPctOutOfRange",
            "msg": "Max Keep_pct out of valid range, cannot go over 100%"
        },
        {
            "code": 311,
            "name": "MinMaxKeepPctOutOfRange",
            "msg": "Min Keep-pct is bounded by value of Max Keep_pct"
        },
        {
            "code": 312,
            "name": "StakeAccountMustBeDelegatedToPartnerValidator",
            "msg": "Stake-account must be delegated to partner validator"
        },
        {
            "code": 313,
            "name": "StakeAccountAuthMustBePartnerAccount",
            "msg": "Stake-account authority must be partner account"
        }
    ]
}
