{
    "version": "0.1.0",
    "name": "escrow",
    "instructions": [
        {
            "name": "setTradeConfigAuthority",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "deployerAuthority",
                    "isMut": false,
                    "isSigner": true
                }
            ],
            "args": [
                {
                    "name": "newTradeConfigAuthority",
                    "type": "publicKey"
                }
            ]
        },
        {
            "name": "setAmlPolicyAuthority",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "deployerAuthority",
                    "isMut": true,
                    "isSigner": true
                }
            ],
            "args": [
                {
                    "name": "newAmlPolicyAuthority",
                    "type": "publicKey"
                }
            ]
        },
        {
            "name": "addArbitratorCert",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tradeConfigAuthority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "arbitratorAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "arbitratorCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "arbitratorCertBump",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "addTokenMetadata",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tradeConfigAuthority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "quota30Days",
                    "type": {
                        "vec": "u128"
                    }
                },
                {
                    "name": "quota24Hours",
                    "type": {
                        "vec": "u128"
                    }
                }
            ]
        },
        {
            "name": "addTokenOracleMetadata",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tradeConfigAuthority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "renecOraclePubkey",
                    "type": "publicKey"
                },
                {
                    "name": "quota30Days",
                    "type": {
                        "vec": "u128"
                    }
                },
                {
                    "name": "quota24Hours",
                    "type": {
                        "vec": "u128"
                    }
                }
            ]
        },
        {
            "name": "setRenecRate",
            "accounts": [
                {
                    "name": "tradeConfigAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "renecRate",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "setUsdRate",
            "accounts": [
                {
                    "name": "tradeConfigAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "usdRate",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "setMinimumOfferSize",
            "accounts": [
                {
                    "name": "tradeConfigAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "minimumOfferSize",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "updateMarketState",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tradeConfigAuthority",
                    "isMut": false,
                    "isSigner": true
                }
            ],
            "args": [
                {
                    "name": "treasuryPubkey",
                    "type": {
                        "option": "publicKey"
                    }
                },
                {
                    "name": "bondSize",
                    "type": {
                        "option": "u64"
                    }
                },
                {
                    "name": "arbitratorCommission",
                    "type": {
                        "option": "u64"
                    }
                },
                {
                    "name": "treasuryShare",
                    "type": {
                        "option": "u64"
                    }
                },
                {
                    "name": "paymentDuration",
                    "type": {
                        "option": "u64"
                    }
                },
                {
                    "name": "cancelPenaltyRate",
                    "type": {
                        "option": "u64"
                    }
                },
                {
                    "name": "limitActiveBondlessTrade",
                    "type": {
                        "option": "u16"
                    }
                }
            ]
        },
        {
            "name": "initKycCert",
            "docs": [
                "Init default kyc cert account for user. Anyone can call this ix",
                "By default, the kyc cert of the target user is 0"
            ],
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "caller",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "user",
                    "type": "publicKey"
                },
                {
                    "name": "kycCertBump",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "setKycCert",
            "docs": [
                "only aml_policy authority can call and set the level a kyc cert of an user",
                "prerequisite: the kyc cert account of the user has been initialized by the init_kyc_cert ix"
            ],
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "amlPolicyAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "user",
                    "type": "publicKey"
                },
                {
                    "name": "level",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "removeArbitratorCert",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tradeConfigAuthority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "arbitratorAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "arbitratorCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "initializeConfig",
            "accounts": [
                {
                    "name": "configAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "deployer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "configId",
                    "type": "string"
                },
                {
                    "name": "bump",
                    "type": "u8"
                },
                {
                    "name": "startOfferId",
                    "type": "u64"
                },
                {
                    "name": "startTradeId",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "initializeMarket",
            "accounts": [
                {
                    "name": "configAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "deployer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "marketId",
                    "type": "string"
                },
                {
                    "name": "tradeConfigAuthority",
                    "type": "publicKey"
                },
                {
                    "name": "amlPolicyAuthority",
                    "type": "publicKey"
                },
                {
                    "name": "treasuryPubkey",
                    "type": "publicKey"
                },
                {
                    "name": "bondSize",
                    "type": "u64"
                },
                {
                    "name": "arbitratorCommission",
                    "type": "u64"
                },
                {
                    "name": "treasuryShare",
                    "type": "u64"
                },
                {
                    "name": "paymentDuration",
                    "type": "u64"
                },
                {
                    "name": "cancelPenaltyRate",
                    "type": "u64"
                },
                {
                    "name": "marketBump",
                    "type": "u8"
                },
                {
                    "name": "tokenVaultBump",
                    "type": "u8"
                },
                {
                    "name": "nativeVaultBump",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "makeOffer",
            "accounts": [
                {
                    "name": "configAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "offerAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "side",
                    "type": {
                        "defined": "TradeSide"
                    }
                },
                {
                    "name": "bondType",
                    "type": {
                        "defined": "BondType"
                    }
                },
                {
                    "name": "minTradeSize",
                    "type": "u64"
                },
                {
                    "name": "tokenAmount",
                    "type": "u64"
                },
                {
                    "name": "rate",
                    "type": "u64"
                },
                {
                    "name": "fiatCurrency",
                    "type": "string"
                },
                {
                    "name": "offerBump",
                    "type": "u8"
                },
                {
                    "name": "bankName",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "accountNumber",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "accountName",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "nonce",
                    "type": {
                        "option": "string"
                    }
                }
            ]
        },
        {
            "name": "makeOfferOracle",
            "accounts": [
                {
                    "name": "configAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "offerAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "oracleProduct",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "oraclePrice",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "side",
                    "type": {
                        "defined": "TradeSide"
                    }
                },
                {
                    "name": "bondType",
                    "type": {
                        "defined": "BondType"
                    }
                },
                {
                    "name": "minTradeSize",
                    "type": "u64"
                },
                {
                    "name": "tokenAmount",
                    "type": "u64"
                },
                {
                    "name": "rate",
                    "type": "u64"
                },
                {
                    "name": "fiatCurrency",
                    "type": "string"
                },
                {
                    "name": "offerBump",
                    "type": "u8"
                },
                {
                    "name": "bankName",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "accountNumber",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "accountName",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "nonce",
                    "type": {
                        "option": "string"
                    }
                }
            ]
        },
        {
            "name": "matchCreateTrade",
            "accounts": [
                {
                    "name": "configAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "takerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "taker",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "offerQuantity",
                    "type": "u8"
                },
                {
                    "name": "totalTradeAmount",
                    "type": "u64"
                },
                {
                    "name": "amountSpecifiedIsCrypto",
                    "type": "bool"
                },
                {
                    "name": "rates",
                    "type": {
                        "vec": "u64"
                    }
                },
                {
                    "name": "tradeIds",
                    "type": {
                        "vec": "u64"
                    }
                },
                {
                    "name": "bumps",
                    "type": "bytes"
                },
                {
                    "name": "useBondless",
                    "type": "bool"
                },
                {
                    "name": "takerBondType",
                    "type": {
                        "defined": "BondType"
                    }
                }
            ]
        },
        {
            "name": "matchCreateTradeWithBuyOffer",
            "accounts": [
                {
                    "name": "configAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "takerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "taker",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "offerQuantity",
                    "type": "u8"
                },
                {
                    "name": "totalTradeAmount",
                    "type": "u64"
                },
                {
                    "name": "amountSpecifiedIsCrypto",
                    "type": "bool"
                },
                {
                    "name": "rates",
                    "type": {
                        "vec": "u64"
                    }
                },
                {
                    "name": "tradeIds",
                    "type": {
                        "vec": "u64"
                    }
                },
                {
                    "name": "bumps",
                    "type": "bytes"
                },
                {
                    "name": "useBondless",
                    "type": "bool"
                }
            ]
        },
        {
            "name": "cancelOffer",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "offerAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "cancelTrade",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sellOfferAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tradeAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "treasuryAuthority",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "treasuryTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "taker",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "takerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "release",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sellOfferAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tradeAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "seller",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "buyer",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sellerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "buyerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "callArbitrator",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "trade",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "caller",
                    "isMut": false,
                    "isSigner": true
                }
            ],
            "args": []
        },
        {
            "name": "resolveDispute",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "kycCert",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sellOfferAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tradeAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "arbitratorAuthority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "treasuryAuthority",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "treasuryTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "arbitratorCert",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "arbitratorTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "seller",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "sellerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "buyer",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "buyerTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "disputeAction",
                    "type": {
                        "defined": "DisputeAction"
                    }
                },
                {
                    "name": "compensationAction",
                    "type": {
                        "defined": "CompensationAction"
                    }
                }
            ]
        },
        {
            "name": "savePaymentEvidence",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "evidenceAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "trade",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "sellerData",
                    "type": "string"
                },
                {
                    "name": "arbitratorData",
                    "type": "string"
                },
                {
                    "name": "nonce",
                    "type": "string"
                },
                {
                    "name": "bump",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "redeemOffer",
            "accounts": [
                {
                    "name": "marketAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketTokenVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "marketNativeVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "offerAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "updateOffer",
            "accounts": [
                {
                    "name": "offerAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                }
            ],
            "args": [
                {
                    "name": "rate",
                    "type": {
                        "option": "u64"
                    }
                },
                {
                    "name": "bankName",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "accountName",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "accountNumber",
                    "type": {
                        "option": "string"
                    }
                },
                {
                    "name": "nonce",
                    "type": {
                        "option": "string"
                    }
                }
            ]
        }
    ],
    "accounts": [
        {
            "name": "ArbitratorCert",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "EscrowConfig",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "configId",
                        "type": "string"
                    },
                    {
                        "name": "currentTradeId",
                        "type": "u64"
                    },
                    {
                        "name": "currentOfferId",
                        "type": "u64"
                    },
                    {
                        "name": "bump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    }
                ]
            }
        },
        {
            "name": "EvidenceAccount",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "sellerData",
                        "type": "string"
                    },
                    {
                        "name": "arbitratorData",
                        "type": "string"
                    },
                    {
                        "name": "nonce",
                        "type": "string"
                    },
                    {
                        "name": "trade",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "KycCert",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "level",
                        "type": "u8"
                    },
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "totalTradedAmount",
                        "type": "u128"
                    },
                    {
                        "name": "totalActiveBondlessTrade",
                        "type": "u8"
                    },
                    {
                        "name": "dayVolumesHistory",
                        "type": {
                            "defined": "VolumeHistory30Days"
                        }
                    },
                    {
                        "name": "hourVolumesHistory",
                        "type": {
                            "defined": "VolumeHistory24Hours"
                        }
                    }
                ]
            }
        },
        {
            "name": "MarketState",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "marketId",
                        "type": "string"
                    },
                    {
                        "name": "configAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "deployerAuthority",
                        "type": "publicKey"
                    },
                    {
                        "name": "tradeConfigAuthority",
                        "type": "publicKey"
                    },
                    {
                        "name": "amlPolicyAuthority",
                        "type": "publicKey"
                    },
                    {
                        "name": "marketAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "treasuryPubkey",
                        "type": "publicKey"
                    },
                    {
                        "name": "marketTokenVaultAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "marketNativeVaultAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "totalDepositAmount",
                        "type": "u64"
                    },
                    {
                        "name": "totalPendingAmount",
                        "type": "u64"
                    },
                    {
                        "name": "totalAvailableAmount",
                        "type": "u64"
                    },
                    {
                        "name": "totalBondAmountInToken",
                        "type": "u64"
                    },
                    {
                        "name": "totalBondAmountInNative",
                        "type": "u64"
                    },
                    {
                        "name": "bondSize",
                        "type": "u64"
                    },
                    {
                        "name": "minimumOfferSize",
                        "type": "u64"
                    },
                    {
                        "name": "arbitratorCommission",
                        "type": "u64"
                    },
                    {
                        "name": "treasuryShare",
                        "type": "u64"
                    },
                    {
                        "name": "paymentDuration",
                        "type": "u64"
                    },
                    {
                        "name": "cancelPenaltyRate",
                        "type": "u64"
                    },
                    {
                        "name": "tokenMint",
                        "type": "publicKey"
                    },
                    {
                        "name": "tokenDecimals",
                        "type": "u8"
                    },
                    {
                        "name": "oracleTokenMetadata",
                        "docs": [
                            "The specification of the token of the market."
                        ],
                        "type": {
                            "defined": "TokenMetaData"
                        }
                    },
                    {
                        "name": "tokenMetadata",
                        "type": {
                            "defined": "TokenMetaData"
                        }
                    },
                    {
                        "name": "lastApplicableTime",
                        "type": "u64"
                    },
                    {
                        "name": "limitActiveBondlessTrade",
                        "type": "u16"
                    },
                    {
                        "name": "totalActiveBondlessTrade",
                        "type": "u16"
                    },
                    {
                        "name": "expo",
                        "type": "u8"
                    },
                    {
                        "name": "marketBump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    },
                    {
                        "name": "marketNativeVaultBump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    },
                    {
                        "name": "marketTokenVaultBump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    }
                ]
            }
        },
        {
            "name": "Offer",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "offerId",
                        "type": "u64"
                    },
                    {
                        "name": "offerIdSeed",
                        "type": {
                            "array": [
                                "u8",
                                8
                            ]
                        }
                    },
                    {
                        "name": "side",
                        "type": {
                            "defined": "TradeSide"
                        }
                    },
                    {
                        "name": "state",
                        "type": {
                            "defined": "OfferState"
                        }
                    },
                    {
                        "name": "bondType",
                        "type": {
                            "defined": "BondType"
                        }
                    },
                    {
                        "name": "marketAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "makerAuthority",
                        "type": "publicKey"
                    },
                    {
                        "name": "makerTokenAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "tokenMint",
                        "type": "publicKey"
                    },
                    {
                        "name": "fiatCurrency",
                        "type": "string"
                    },
                    {
                        "name": "configAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "bondAmountSpl",
                        "type": "u64"
                    },
                    {
                        "name": "bondAmountNative",
                        "type": "u64"
                    },
                    {
                        "name": "rate",
                        "type": "u64"
                    },
                    {
                        "name": "totalAmount",
                        "type": "u64"
                    },
                    {
                        "name": "pendingAmount",
                        "type": "u64"
                    },
                    {
                        "name": "availableAmount",
                        "type": "u64"
                    },
                    {
                        "name": "filledAmount",
                        "type": "u64"
                    },
                    {
                        "name": "minTradeSize",
                        "type": "u64"
                    },
                    {
                        "name": "createdAt",
                        "type": "u64"
                    },
                    {
                        "name": "finishedAt",
                        "type": "u64"
                    },
                    {
                        "name": "bump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    },
                    {
                        "name": "bankName",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "accountNumber",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "accountName",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "nonce",
                        "type": {
                            "option": "string"
                        }
                    }
                ]
            }
        },
        {
            "name": "Product",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "version",
                        "type": "u16"
                    },
                    {
                        "name": "status",
                        "type": {
                            "defined": "ProductStatus"
                        }
                    },
                    {
                        "name": "assetType",
                        "type": {
                            "defined": "AssetType"
                        }
                    },
                    {
                        "name": "quoteCurrency",
                        "type": "string"
                    },
                    {
                        "name": "quoteMint",
                        "type": "publicKey"
                    },
                    {
                        "name": "baseCurrency",
                        "type": "string"
                    },
                    {
                        "name": "baseMint",
                        "type": "publicKey"
                    },
                    {
                        "name": "priceAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "expo",
                        "type": "i32"
                    },
                    {
                        "name": "maxPrice",
                        "type": "u64"
                    },
                    {
                        "name": "minPrice",
                        "type": "u64"
                    },
                    {
                        "name": "windowSize",
                        "type": "u64"
                    },
                    {
                        "name": "controller",
                        "type": "publicKey"
                    },
                    {
                        "name": "bump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    }
                ]
            }
        },
        {
            "name": "Price",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "version",
                        "type": "u16"
                    },
                    {
                        "name": "status",
                        "type": {
                            "defined": "PriceStatus"
                        }
                    },
                    {
                        "name": "productAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "price",
                        "type": "u64"
                    },
                    {
                        "name": "numPublishers",
                        "type": "u16"
                    },
                    {
                        "name": "timestamp",
                        "type": "u64"
                    },
                    {
                        "name": "prevPrice",
                        "type": "u64"
                    },
                    {
                        "name": "prevTimestamp",
                        "type": "u64"
                    },
                    {
                        "name": "bump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    }
                ]
            }
        },
        {
            "name": "Trade",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "sellOfferId",
                        "type": "u64"
                    },
                    {
                        "name": "buyOfferId",
                        "type": "u64"
                    },
                    {
                        "name": "tradeId",
                        "type": "u64"
                    },
                    {
                        "name": "tradeIdSeed",
                        "type": {
                            "array": [
                                "u8",
                                8
                            ]
                        }
                    },
                    {
                        "name": "side",
                        "type": {
                            "defined": "TradeSide"
                        }
                    },
                    {
                        "name": "state",
                        "type": {
                            "defined": "TradeState"
                        }
                    },
                    {
                        "name": "sellerBondType",
                        "type": {
                            "defined": "BondType"
                        }
                    },
                    {
                        "name": "buyerBondType",
                        "type": {
                            "defined": "BondType"
                        }
                    },
                    {
                        "name": "marketAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "sellerAuthority",
                        "type": "publicKey"
                    },
                    {
                        "name": "sellerTokenAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "buyerAuthority",
                        "type": "publicKey"
                    },
                    {
                        "name": "buyerTokenAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "tokenMint",
                        "type": "publicKey"
                    },
                    {
                        "name": "fiatCurrency",
                        "type": "string"
                    },
                    {
                        "name": "configAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "bondAmountSpl",
                        "type": "u64"
                    },
                    {
                        "name": "bondAmountNative",
                        "type": "u64"
                    },
                    {
                        "name": "tradeAmount",
                        "type": "u64"
                    },
                    {
                        "name": "fiatAmount",
                        "type": "u64"
                    },
                    {
                        "name": "createdAt",
                        "type": "u64"
                    },
                    {
                        "name": "finishedAt",
                        "type": "u64"
                    },
                    {
                        "name": "bump",
                        "type": {
                            "array": [
                                "u8",
                                1
                            ]
                        }
                    },
                    {
                        "name": "bankName",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "accountNumber",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "accountName",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "nonce",
                        "type": {
                            "option": "string"
                        }
                    },
                    {
                        "name": "useBondless",
                        "type": "bool"
                    }
                ]
            }
        }
    ],
    "types": [
        {
            "name": "TokenMetaData",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "renecRate",
                        "type": "u64"
                    },
                    {
                        "name": "usdRate",
                        "type": "u64"
                    },
                    {
                        "name": "quota24Hours",
                        "type": {
                            "vec": "u128"
                        }
                    },
                    {
                        "name": "quota30Days",
                        "type": {
                            "vec": "u128"
                        }
                    },
                    {
                        "name": "renecOraclePubkey",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "VolumeHistory30Days",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "head",
                        "type": "u8"
                    },
                    {
                        "name": "volumes",
                        "type": {
                            "array": [
                                "u64",
                                30
                            ]
                        }
                    },
                    {
                        "name": "lastApplicableTime",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "VolumeHistory24Hours",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "head",
                        "type": "u8"
                    },
                    {
                        "name": "volumes",
                        "type": {
                            "array": [
                                "u64",
                                24
                            ]
                        }
                    },
                    {
                        "name": "lastApplicableTime",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "ErrorCode",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "InvalidInput"
                    },
                    {
                        "name": "NumberCastError"
                    },
                    {
                        "name": "InvalidTimestampConversion"
                    },
                    {
                        "name": "InvalidTokenAccountMint"
                    },
                    {
                        "name": "InvalidState"
                    },
                    {
                        "name": "InvalidCaller"
                    },
                    {
                        "name": "StillPaymentTime"
                    },
                    {
                        "name": "UnauthorizedUser"
                    },
                    {
                        "name": "SelfJoin"
                    },
                    {
                        "name": "InvalidKycLevel"
                    },
                    {
                        "name": "QuotaExceeded"
                    },
                    {
                        "name": "UserParticipated"
                    },
                    {
                        "name": "AmountCalcOverflow"
                    },
                    {
                        "name": "DivisionByZero"
                    },
                    {
                        "name": "Unimplemented"
                    },
                    {
                        "name": "RenecRateNotSet"
                    },
                    {
                        "name": "UsdRateNotSet"
                    },
                    {
                        "name": "MinTradeSizeNotValid"
                    },
                    {
                        "name": "BelowMinimumOfferSize"
                    },
                    {
                        "name": "BelowMinimumTradeAmount"
                    },
                    {
                        "name": "NotEnoughBalance"
                    },
                    {
                        "name": "InvalidBondType"
                    },
                    {
                        "name": "OfferCanceled"
                    },
                    {
                        "name": "DayQuotaExceeded"
                    },
                    {
                        "name": "MonthQuotaExceeded"
                    },
                    {
                        "name": "PendingAmountNotZero"
                    },
                    {
                        "name": "InvalidPriceOfProductOracle"
                    },
                    {
                        "name": "UnavailableProduct"
                    },
                    {
                        "name": "UnavailablePrice"
                    },
                    {
                        "name": "PriceTooOld"
                    },
                    {
                        "name": "ExpoPositiveNonSupport"
                    },
                    {
                        "name": "PriceMustBeNonZero"
                    },
                    {
                        "name": "InvalidProduct"
                    },
                    {
                        "name": "MaxBondlessTrade"
                    },
                    {
                        "name": "TradeVolumeNotAllowBondLess"
                    },
                    {
                        "name": "LimitBondlessTrade"
                    },
                    {
                        "name": "AmountCalcUnderflow"
                    },
                    {
                        "name": "NotEnoughFundForRent"
                    },
                    {
                        "name": "WrongTradeSide"
                    },
                    {
                        "name": "TradeNotBelongToAnyOffer"
                    },
                    {
                        "name": "MismatchSellAndBuyOffers"
                    },
                    {
                        "name": "MismatchOfferAndTrade"
                    },
                    {
                        "name": "InvalidCallerCreateTradeWithBuyOffer"
                    },
                    {
                        "name": "ExceedSlippageTolerance"
                    }
                ]
            }
        },
        {
            "name": "AssetType",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Forex"
                    },
                    {
                        "name": "Crypto"
                    }
                ]
            }
        },
        {
            "name": "ProductStatus",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Unknown"
                    },
                    {
                        "name": "Offline"
                    },
                    {
                        "name": "Online"
                    }
                ]
            }
        },
        {
            "name": "PriceStatus",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Unknown"
                    },
                    {
                        "name": "Offline"
                    },
                    {
                        "name": "Online"
                    }
                ]
            }
        },
        {
            "name": "TradeState",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Awaiting"
                    },
                    {
                        "name": "Deposited"
                    },
                    {
                        "name": "Disputed"
                    },
                    {
                        "name": "Released"
                    },
                    {
                        "name": "Canceled"
                    }
                ]
            }
        },
        {
            "name": "OfferState",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Awaiting"
                    },
                    {
                        "name": "Canceled"
                    },
                    {
                        "name": "OutOfFund"
                    },
                    {
                        "name": "Fulfilled"
                    }
                ]
            }
        },
        {
            "name": "TradeSide",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Buy"
                    },
                    {
                        "name": "Sell"
                    }
                ]
            }
        },
        {
            "name": "BondType",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Native"
                    },
                    {
                        "name": "Spl"
                    }
                ]
            }
        },
        {
            "name": "DisputeAction",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "Release"
                    },
                    {
                        "name": "Cancel"
                    }
                ]
            }
        },
        {
            "name": "CompensationAction",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "NoCompensate"
                    },
                    {
                        "name": "CompensateSeller"
                    },
                    {
                        "name": "CompensateBuyer"
                    }
                ]
            }
        }
    ]
}
