{
    "address": "4PpiC9e179ufENLcgmK5NQJKHZ48NepLguqCJPsnBT9A",
    "metadata": {
        "name": "reflink",
        "version": "0.1.0",
        "spec": "0.1.0",
        "description": "Created with Anchor"
    },
    "instructions": [
        {
            "name": "register_affiliate",
            "discriminator": [
                87,
                121,
                99,
                184,
                126,
                63,
                103,
                217
            ],
            "accounts": [
                {
                    "name": "affiliate",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "authority",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": []
        },
        {
            "name": "register_merchant",
            "discriminator": [
                238,
                245,
                77,
                132,
                161,
                88,
                216,
                248
            ],
            "accounts": [
                {
                    "name": "merchant",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "authority",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "commission_bps",
                    "type": "u16"
                }
            ]
        },
        {
            "name": "register_referral_sol",
            "discriminator": [
                42,
                231,
                92,
                85,
                242,
                38,
                111,
                91
            ],
            "accounts": [
                {
                    "name": "affiliate",
                    "writable": true
                },
                {
                    "name": "referral",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "merchant"
                },
                {
                    "name": "merchant_wallet",
                    "docs": [
                        "The wallet that will receive the merchant's portion of the payment"
                    ],
                    "writable": true
                },
                {
                    "name": "affiliate_wallet",
                    "docs": [
                        "The wallet that will receive the affiliate's commission"
                    ],
                    "writable": true
                },
                {
                    "name": "payer",
                    "docs": [
                        "The wallet that is making the payment"
                    ],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "register_referral_token",
            "discriminator": [
                50,
                215,
                2,
                53,
                56,
                216,
                151,
                55
            ],
            "accounts": [
                {
                    "name": "affiliate",
                    "writable": true
                },
                {
                    "name": "referral",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "merchant"
                },
                {
                    "name": "token_mint",
                    "docs": [
                        "The token mint being used for payment"
                    ]
                },
                {
                    "name": "merchant_token_account",
                    "docs": [
                        "The merchant's token account that will receive payment"
                    ],
                    "writable": true
                },
                {
                    "name": "affiliate_token_account",
                    "docs": [
                        "The affiliate's token account that will receive commission"
                    ],
                    "writable": true
                },
                {
                    "name": "payer_token_account",
                    "docs": [
                        "The payer's token account"
                    ],
                    "writable": true
                },
                {
                    "name": "payer",
                    "docs": [
                        "The wallet that is making the payment"
                    ],
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "token_program",
                    "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "toggle_merchant_status",
            "discriminator": [
                251,
                186,
                166,
                45,
                108,
                107,
                186,
                170
            ],
            "accounts": [
                {
                    "name": "merchant",
                    "writable": true
                },
                {
                    "name": "authority",
                    "signer": true
                }
            ],
            "args": []
        },
        {
            "name": "update_merchant_commission",
            "discriminator": [
                77,
                99,
                119,
                206,
                140,
                212,
                161,
                195
            ],
            "accounts": [
                {
                    "name": "merchant",
                    "writable": true
                },
                {
                    "name": "authority",
                    "signer": true
                }
            ],
            "args": [
                {
                    "name": "new_commission_bps",
                    "type": "u16"
                }
            ]
        }
    ],
    "accounts": [
        {
            "name": "Affiliate",
            "discriminator": [
                136,
                95,
                107,
                149,
                36,
                195,
                146,
                35
            ]
        },
        {
            "name": "Merchant",
            "discriminator": [
                71,
                235,
                30,
                40,
                231,
                21,
                32,
                64
            ]
        },
        {
            "name": "Referral",
            "discriminator": [
                30,
                235,
                136,
                224,
                106,
                107,
                49,
                64
            ]
        }
    ],
    "errors": [
        {
            "code": 6000,
            "name": "InvalidCommissionRate",
            "msg": "Invalid commission rate."
        },
        {
            "code": 6001,
            "name": "Unauthorized",
            "msg": "Unauthorized."
        },
        {
            "code": 6002,
            "name": "InvalidAffiliate",
            "msg": "Invalid affiliate."
        },
        {
            "code": 6003,
            "name": "CalculationError",
            "msg": "Calculation error."
        },
        {
            "code": 6004,
            "name": "InactiveMerchant",
            "msg": "Merchant is not active."
        }
    ],
    "types": [
        {
            "name": "Affiliate",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "total_earned",
                        "type": "u64"
                    },
                    {
                        "name": "total_referrals",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Merchant",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "authority",
                        "type": "pubkey"
                    },
                    {
                        "name": "commission_bps",
                        "type": "u16"
                    },
                    {
                        "name": "active",
                        "type": "bool"
                    }
                ]
            }
        },
        {
            "name": "Referral",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "affiliate",
                        "type": "pubkey"
                    },
                    {
                        "name": "merchant",
                        "type": "pubkey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "commission",
                        "type": "u64"
                    },
                    {
                        "name": "timestamp",
                        "type": "i64"
                    },
                    {
                        "name": "is_token",
                        "type": "bool"
                    },
                    {
                        "name": "token_mint",
                        "type": "pubkey"
                    }
                ]
            }
        }
    ]
}
