{
    "version": "0.0.2",
    "name": "dip_mm",
    "instructions": [
        {
            "name": "initDipMmAccount",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "authority",
                    "isMut": false,
                    "isSigner": false,
                    "docs": ["for later transaction"]
                },
                {
                    "name": "dipMmAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "splMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "withdraw",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "dipMmAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "dipMmTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "makeTrade",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "dipMmPremiumAccount",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "dipMmPremiumTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "dipMmOptionTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "rmPremiumTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "rmOptionTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "premiumAmount",
                    "type": "u64"
                },
                {
                    "name": "optionAmount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "initDeadManSwitch",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true,
                    "docs": ["Authority is the protocol wallet"]
                },
                {
                    "name": "addressMakingTrade",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "deadManSwitch",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "initPricing",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "baseMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "quoteMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "pricing",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "rent",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "symbol",
                    "type": "string"
                },
                {
                    "name": "strike",
                    "type": "u64"
                },
                {
                    "name": "expiration",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "cancelOrder",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "pricing",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "orderId",
                    "type": "string"
                }
            ]
        },
        {
            "name": "placeOrder",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "pricing",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "addressMakingTrade",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                },
                {
                    "name": "price",
                    "type": "u64"
                },
                {
                    "name": "orderId",
                    "type": "string"
                }
            ]
        },
        {
            "name": "refreshDeadManSwitch",
            "accounts": [
                {
                    "name": "authority",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "deadManSwitch",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "newTimeout",
                    "type": "u64"
                }
            ]
        }
    ],
    "accounts": [
        {
            "name": "DipMmAccount",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "tokenAccount",
                        "type": "publicKey"
                    },
                    {
                        "name": "tokenAccountBump",
                        "type": "u8"
                    },
                    {
                        "name": "authority",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "Pricing",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "dipState",
                        "type": "publicKey"
                    },
                    {
                        "name": "bids",
                        "type": {
                            "vec": {
                                "defined": "Bid"
                            }
                        }
                    },
                    {
                        "name": "pricingBump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "DeadManSwitch",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "address",
                        "type": "publicKey"
                    },
                    {
                        "name": "currentExtensionEnd",
                        "type": "u64"
                    },
                    {
                        "name": "currentExtensionStart",
                        "type": "u64"
                    },
                    {
                        "name": "dmsBump",
                        "type": "u8"
                    }
                ]
            }
        }
    ],
    "types": [
        {
            "name": "Bid",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "price",
                        "type": "u64"
                    },
                    {
                        "name": "orderId",
                        "type": "string"
                    },
                    {
                        "name": "account",
                        "type": "publicKey"
                    }
                ]
            }
        }
    ],
    "metadata": {
        "address": "esdUULhoeFHro46mvkTizMzg38hKBunvErmPuUw6n9p"
    }
}
