{
    "address": "idtynCMYbdisCTv4FrCWPSQboZb1uM4TV2cPi79yxQf",
    "metadata": {
        "name": "identity_registry",
        "version": "0.0.1",
        "spec": "0.1.0",
        "description": "The Identity Registry Program (IRP) manages the configurable issuance and tracking of on-chain identities to enable on-chain transaction permissioning.",
        "repository": "https://github.com/bridgesplit/rwa"
    },
    "instructions": [
        {
            "name": "add_level_to_identity_account",
            "docs": [
                "add level to identity account"
            ],
            "discriminator": [
                102,
                204,
                64,
                169,
                252,
                177,
                192,
                232
            ],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "identity_registry"
                },
                {
                    "name": "identity_account",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "identity_registry"
                            },
                            {
                                "kind": "account",
                                "path": "identity_account.owner",
                                "account": "IdentityAccount"
                            }
                        ]
                    }
                },
                {
                    "name": "identity_metadata_account",
                    "writable": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "level",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "create_identity_account",
            "docs": [
                "identity functions",
                "create identity account"
            ],
            "discriminator": [
                82,
                240,
                35,
                129,
                113,
                134,
                116,
                70
            ],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "identity_registry"
                },
                {
                    "name": "identity_account",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "identity_registry"
                            },
                            {
                                "kind": "arg",
                                "path": "owner"
                            }
                        ]
                    }
                },
                {
                    "name": "identity_metadata_account",
                    "writable": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "owner",
                    "type": "pubkey"
                },
                {
                    "name": "level",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "create_identity_registry",
            "docs": [
                "registry functions",
                "create identity registry"
            ],
            "discriminator": [
                180,
                3,
                39,
                22,
                183,
                212,
                39,
                209
            ],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "asset_mint"
                },
                {
                    "name": "identity_registry_account",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "asset_mint"
                            }
                        ]
                    }
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "authority",
                    "type": "pubkey"
                },
                {
                    "name": "delegate",
                    "type": {
                        "option": "pubkey"
                    }
                }
            ]
        },
        {
            "name": "delegate_identity_regsitry",
            "docs": [
                "delegate identity registry"
            ],
            "discriminator": [
                29,
                162,
                167,
                70,
                52,
                79,
                50,
                65
            ],
            "accounts": [
                {
                    "name": "authority",
                    "signer": true
                },
                {
                    "name": "identity_registry_account",
                    "writable": true
                }
            ],
            "args": [
                {
                    "name": "delegate",
                    "type": "pubkey"
                }
            ]
        },
        {
            "name": "edit_identity_metdata",
            "docs": [
                "edit identity metadata"
            ],
            "discriminator": [
                140,
                213,
                200,
                29,
                44,
                134,
                114,
                206
            ],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "identity_registry"
                },
                {
                    "name": "identity_metadata_account",
                    "writable": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "level",
                    "type": "u8"
                },
                {
                    "name": "max_allowed",
                    "type": {
                        "option": "u64"
                    }
                }
            ]
        },
        {
            "name": "remove_level_from_identity_account",
            "docs": [
                "remove level from identity account"
            ],
            "discriminator": [
                194,
                231,
                187,
                54,
                197,
                136,
                170,
                55
            ],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "identity_registry"
                },
                {
                    "name": "identity_account",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "identity_registry"
                            },
                            {
                                "kind": "account",
                                "path": "identity_account.owner",
                                "account": "IdentityAccount"
                            }
                        ]
                    }
                },
                {
                    "name": "identity_metadata_account",
                    "writable": true
                },
                {
                    "name": "system_program",
                    "address": "11111111111111111111111111111111"
                }
            ],
            "args": [
                {
                    "name": "level",
                    "type": "u8"
                }
            ]
        },
        {
            "name": "revoke_identity_account",
            "docs": [
                "revoke user identity account by closing account"
            ],
            "discriminator": [
                77,
                88,
                182,
                61,
                235,
                49,
                2,
                137
            ],
            "accounts": [
                {
                    "name": "payer",
                    "writable": true,
                    "signer": true
                },
                {
                    "name": "signer",
                    "signer": true
                },
                {
                    "name": "identity_registry",
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "identity_registry.asset_mint",
                                "account": "IdentityRegistryAccount"
                            }
                        ]
                    }
                },
                {
                    "name": "identity_account",
                    "writable": true,
                    "pda": {
                        "seeds": [
                            {
                                "kind": "account",
                                "path": "identity_registry"
                            },
                            {
                                "kind": "account",
                                "path": "identity_account.owner",
                                "account": "IdentityAccount"
                            }
                        ]
                    }
                }
            ],
            "args": [
                {
                    "name": "_owner",
                    "type": "pubkey"
                }
            ]
        }
    ],
    "accounts": [
        {
            "name": "IdentityAccount",
            "discriminator": [
                194,
                90,
                181,
                160,
                182,
                206,
                116,
                158
            ]
        },
        {
            "name": "IdentityMetadataAccount",
            "discriminator": [
                170,
                131,
                34,
                74,
                232,
                122,
                201,
                9
            ]
        },
        {
            "name": "IdentityRegistryAccount",
            "discriminator": [
                154,
                254,
                118,
                4,
                115,
                36,
                125,
                78
            ]
        }
    ],
    "errors": [
        {
            "code": 6000,
            "name": "LevelAlreadyPresent",
            "msg": "Identity level has already been attached to user"
        },
        {
            "code": 6001,
            "name": "MaxLevelsExceeded",
            "msg": "Number of levels that can be attached to user has been exceeded"
        },
        {
            "code": 6002,
            "name": "LevelNotFound",
            "msg": "Level to be removed not found"
        },
        {
            "code": 6003,
            "name": "UnauthorizedSigner",
            "msg": "Unauthorized signer"
        },
        {
            "code": 6004,
            "name": "LimitReached",
            "msg": "Identity limit reached"
        }
    ],
    "types": [
        {
            "name": "IdentityAccount",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "version",
                        "docs": [
                            "version of the account"
                        ],
                        "type": "u8"
                    },
                    {
                        "name": "identity_registry",
                        "docs": [
                            "identity registry to which the account belongs"
                        ],
                        "type": "pubkey"
                    },
                    {
                        "name": "owner",
                        "docs": [
                            "owner of the identity account"
                        ],
                        "type": "pubkey"
                    },
                    {
                        "name": "levels",
                        "type": "bytes"
                    }
                ]
            }
        },
        {
            "name": "IdentityMetadataAccount",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "version",
                        "docs": [
                            "version of the account"
                        ],
                        "type": "u8"
                    },
                    {
                        "name": "identity_registry",
                        "docs": [
                            "identity registry to which the account belongs"
                        ],
                        "type": "pubkey"
                    },
                    {
                        "name": "level",
                        "docs": [
                            "identity level"
                        ],
                        "type": "u8"
                    },
                    {
                        "name": "current_users",
                        "docs": [
                            "current number of users"
                        ],
                        "type": "u64"
                    },
                    {
                        "name": "max_users",
                        "docs": [
                            "max number of users"
                        ],
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "IdentityRegistryAccount",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "version",
                        "type": "u8"
                    },
                    {
                        "name": "asset_mint",
                        "docs": [
                            "corresponding asset mint"
                        ],
                        "type": "pubkey"
                    },
                    {
                        "name": "authority",
                        "docs": [
                            "authority to manage the registry"
                        ],
                        "type": "pubkey"
                    },
                    {
                        "name": "delegate",
                        "docs": [
                            "registry delegate"
                        ],
                        "type": "pubkey"
                    }
                ]
            }
        }
    ]
}
