export * from './accounts';
export * from './instructions';
export interface EscrowMarketIDL {
    "version": "0.1.0";
    "name": "escrow_market";
    "instructions": [
        {
            "name": "initialize";
            "docs": [
                "Initialize the Config Account for the escrow market.",
                "This instruction can only be called once by the admin."
            ];
            "accounts": [
                {
                    "name": "payer";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "config";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "systemProgram";
                    "isMut": false;
                    "isSigner": false;
                }
            ];
            "args": [
                {
                    "name": "admin";
                    "type": "publicKey";
                },
                {
                    "name": "operator";
                    "type": "publicKey";
                }
            ];
        },
        {
            "name": "deposit";
            "accounts": [
                {
                    "name": "user";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "mint";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "userTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultAuthority";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "tokenProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "systemProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "associatedTokenProgram";
                    "isMut": false;
                    "isSigner": false;
                }
            ];
            "args": [
                {
                    "name": "amount";
                    "type": "u64";
                }
            ];
        },
        {
            "name": "initializeVault";
            "accounts": [
                {
                    "name": "payer";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "mint";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "vaultTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultAuthority";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "tokenProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "systemProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "rent";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "associatedTokenProgram";
                    "isMut": false;
                    "isSigner": false;
                }
            ];
            "args": [];
        },
        {
            "name": "withdraw";
            "accounts": [
                {
                    "name": "operator";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "user";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "config";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "mint";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "userTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultAuthority";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "withdrawNonce";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "tokenProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "systemProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "associatedTokenProgram";
                    "isMut": false;
                    "isSigner": false;
                }
            ];
            "args": [
                {
                    "name": "amount";
                    "type": "u64";
                },
                {
                    "name": "nonce";
                    "type": "u64";
                }
            ];
        },
        {
            "name": "settle";
            "accounts": [
                {
                    "name": "seller";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "operator";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "buyer";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "deal";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "config";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "tokenTransfer";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "sellerTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "buyerTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "tokenWithdraw";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "sellerWithdrawAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultAuthority";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "tokenTransferProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "tokenWithdrawProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "associatedTokenProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "systemProgram";
                    "isMut": false;
                    "isSigner": false;
                }
            ];
            "args": [
                {
                    "name": "dealId";
                    "type": "string";
                },
                {
                    "name": "transferAmount";
                    "type": "u64";
                },
                {
                    "name": "withdrawAmount";
                    "type": "u64";
                }
            ];
        },
        {
            "name": "operatorCancel";
            "accounts": [
                {
                    "name": "buyer";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "operator";
                    "isMut": true;
                    "isSigner": true;
                },
                {
                    "name": "deal";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "config";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "token";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "buyerTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultTokenAccount";
                    "isMut": true;
                    "isSigner": false;
                },
                {
                    "name": "vaultAuthority";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "tokenProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "associatedTokenProgram";
                    "isMut": false;
                    "isSigner": false;
                },
                {
                    "name": "systemProgram";
                    "isMut": false;
                    "isSigner": false;
                }
            ];
            "args": [
                {
                    "name": "dealId";
                    "type": "string";
                },
                {
                    "name": "amount";
                    "type": "u64";
                }
            ];
        }
    ];
    "accounts": [
        {
            "name": "withdrawNonce";
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "nonce";
                        "type": "u64";
                    }
                ];
            };
        },
        {
            "name": "config";
            "docs": [
                "Config account stores admin and operator information"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "admin";
                        "docs": [
                            "The admin pubkey"
                        ];
                        "type": "publicKey";
                    },
                    {
                        "name": "operator";
                        "docs": [
                            "The operator pubkey"
                        ];
                        "type": "publicKey";
                    },
                    {
                        "name": "bump";
                        "docs": [
                            "Bump seed for PDA"
                        ];
                        "type": "u8";
                    }
                ];
            };
        },
        {
            "name": "deal";
            "docs": [
                "Deal account stores information about a specific deal"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "dealId";
                        "docs": [
                            "Unique identifier for the deal"
                        ];
                        "type": "string";
                    },
                    {
                        "name": "bump";
                        "type": "u8";
                    }
                ];
            };
        }
    ];
    "types": [
        {
            "name": "CustomError";
            "type": {
                "kind": "enum";
                "variants": [
                    {
                        "name": "InvalidMint";
                    },
                    {
                        "name": "Overflow";
                    },
                    {
                        "name": "InsufficientFunds";
                    },
                    {
                        "name": "MintIsNotOwnedByTokenProgram";
                    }
                ];
            };
        }
    ];
    "events": [
        {
            "name": "DepositEvent";
            "fields": [
                {
                    "name": "user";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "token";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "amount";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "timestamp";
                    "type": "i64";
                    "index": false;
                }
            ];
        },
        {
            "name": "SettleEvent";
            "fields": [
                {
                    "name": "dealId";
                    "type": "string";
                    "index": false;
                },
                {
                    "name": "seller";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "buyer";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "tokenTransfer";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "transferAmount";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "tokenWithdraw";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "withdrawAmount";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "timestamp";
                    "type": "i64";
                    "index": false;
                }
            ];
        },
        {
            "name": "CancelEvent";
            "fields": [
                {
                    "name": "dealId";
                    "type": "string";
                    "index": false;
                },
                {
                    "name": "buyer";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "token";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "amount";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "cancelledBy";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "timestamp";
                    "type": "i64";
                    "index": false;
                }
            ];
        },
        {
            "name": "WithdrawEvent";
            "fields": [
                {
                    "name": "user";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "token";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "amount";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "nonce";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "operator";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "timestamp";
                    "type": "i64";
                    "index": false;
                }
            ];
        },
        {
            "name": "WithdrawEvent";
            "fields": [
                {
                    "name": "user";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "token";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "amount";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "nonce";
                    "type": "u64";
                    "index": false;
                },
                {
                    "name": "operator";
                    "type": "publicKey";
                    "index": false;
                },
                {
                    "name": "timestamp";
                    "type": "i64";
                    "index": false;
                }
            ];
        }
    ];
    "errors": [
        {
            "code": 6000;
            "name": "NotAdmin";
            "msg": "Caller is not admin";
        },
        {
            "code": 6001;
            "name": "NotOperator";
            "msg": "Caller is not operator";
        },
        {
            "code": 6002;
            "name": "NotSeller";
            "msg": "Caller is not seller";
        },
        {
            "code": 6003;
            "name": "NotBuyer";
            "msg": "Caller is not buyer";
        },
        {
            "code": 6004;
            "name": "DealAlreadySettled";
            "msg": "Deal already settled";
        },
        {
            "code": 6005;
            "name": "DealAlreadyCancelled";
            "msg": "Deal already cancelled";
        },
        {
            "code": 6006;
            "name": "DealNotFound";
            "msg": "Deal not found";
        },
        {
            "code": 6007;
            "name": "DealExpired";
            "msg": "Deal expired";
        },
        {
            "code": 6008;
            "name": "InvalidDealStatus";
            "msg": "Invalid deal status";
        },
        {
            "code": 6009;
            "name": "NonceUsed";
            "msg": "Nonce already used";
        },
        {
            "code": 6010;
            "name": "InvalidNonce";
            "msg": "Invalid nonce";
        },
        {
            "code": 6011;
            "name": "SignatureMissing";
            "msg": "Missing required signature";
        },
        {
            "code": 6012;
            "name": "NotEnoughSigner";
            "msg": "Not enough signers";
        },
        {
            "code": 6013;
            "name": "InvalidAddress";
            "msg": "Invalid address";
        },
        {
            "code": 6014;
            "name": "InvalidAmount";
            "msg": "Invalid amount";
        },
        {
            "code": 6015;
            "name": "InvalidToken";
            "msg": "Invalid token";
        },
        {
            "code": 6016;
            "name": "DeadlineInPast";
            "msg": "Deadline is in the past";
        },
        {
            "code": 6017;
            "name": "TokenTransferFailed";
            "msg": "Token transfer failed";
        },
        {
            "code": 6018;
            "name": "Unknown";
            "msg": "Unknown error";
        }
    ];
}
export declare const IDL: EscrowMarketIDL;
