/**
 * Program IDL in camelCase format in order to be used in JS/TS.
 *
 * Note that this is only a type helper and is not the actual IDL. The original
 * IDL can be found at `target/idl/sol_did.json`.
 */
export type SolDid = {
    "address": "didso1Dpqpm4CsiCjzP766BGY89CAdD6ZBL68cRhFPc";
    "metadata": {
        "name": "solDid";
        "version": "3.3.0";
        "spec": "0.1.0";
        "description": "Martin Riedel";
        "repository": "https://github.com/identity-com/sol-did";
    };
    "instructions": [
        {
            "name": "addService";
            "discriminator": [
                133,
                207,
                106,
                32,
                91,
                111,
                153,
                30
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "service";
                    "type": {
                        "defined": {
                            "name": "service";
                        };
                    };
                },
                {
                    "name": "allowOverwrite";
                    "type": "bool";
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "addVerificationMethod";
            "discriminator": [
                213,
                200,
                190,
                61,
                28,
                104,
                245,
                25
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "verificationMethod";
                    "type": {
                        "defined": {
                            "name": "verificationMethod";
                        };
                    };
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "close";
            "discriminator": [
                98,
                165,
                201,
                177,
                108,
                65,
                206,
                96
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                },
                {
                    "name": "destination";
                    "writable": true;
                },
                {
                    "name": "systemProgram";
                    "address": "11111111111111111111111111111111";
                }
            ];
            "args": [
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "initialize";
            "discriminator": [
                175,
                175,
                109,
                31,
                13,
                152,
                155,
                237
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "authority";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "writable": true;
                    "signer": true;
                },
                {
                    "name": "payer";
                    "writable": true;
                    "signer": true;
                },
                {
                    "name": "systemProgram";
                    "address": "11111111111111111111111111111111";
                }
            ];
            "args": [
                {
                    "name": "size";
                    "type": "u32";
                }
            ];
        },
        {
            "name": "removeService";
            "discriminator": [
                19,
                102,
                8,
                231,
                40,
                141,
                9,
                110
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "fragment";
                    "type": "string";
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "removeVerificationMethod";
            "discriminator": [
                33,
                238,
                66,
                183,
                62,
                210,
                133,
                150
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "fragment";
                    "type": "string";
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "resize";
            "discriminator": [
                74,
                27,
                74,
                155,
                56,
                134,
                175,
                125
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "payer";
                    "writable": true;
                    "signer": true;
                },
                {
                    "name": "authority";
                    "signer": true;
                },
                {
                    "name": "systemProgram";
                    "address": "11111111111111111111111111111111";
                }
            ];
            "args": [
                {
                    "name": "size";
                    "type": "u32";
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "setControllers";
            "discriminator": [
                65,
                40,
                24,
                8,
                30,
                81,
                20,
                179
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "setControllersArg";
                    "type": {
                        "defined": {
                            "name": "setControllersArg";
                        };
                    };
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "setVmFlags";
            "discriminator": [
                216,
                172,
                84,
                171,
                196,
                72,
                7,
                41
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "flagsVm";
                    "type": {
                        "defined": {
                            "name": "updateFlagsVerificationMethod";
                        };
                    };
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        },
        {
            "name": "update";
            "discriminator": [
                219,
                200,
                88,
                176,
                158,
                63,
                253,
                127
            ];
            "accounts": [
                {
                    "name": "didData";
                    "writable": true;
                    "pda": {
                        "seeds": [
                            {
                                "kind": "const";
                                "value": [
                                    100,
                                    105,
                                    100,
                                    45,
                                    97,
                                    99,
                                    99,
                                    111,
                                    117,
                                    110,
                                    116
                                ];
                            },
                            {
                                "kind": "account";
                                "path": "did_data.initial_verification_method.key_data";
                                "account": "didAccount";
                            }
                        ];
                    };
                },
                {
                    "name": "authority";
                    "signer": true;
                }
            ];
            "args": [
                {
                    "name": "updateArg";
                    "type": {
                        "defined": {
                            "name": "updateArg";
                        };
                    };
                },
                {
                    "name": "ethSignature";
                    "type": {
                        "option": {
                            "defined": {
                                "name": "secp256k1RawSignature";
                            };
                        };
                    };
                }
            ];
        }
    ];
    "accounts": [
        {
            "name": "didAccount";
            "discriminator": [
                77,
                88,
                239,
                141,
                251,
                29,
                237,
                243
            ];
        }
    ];
    "errors": [
        {
            "code": 6000;
            "name": "vmFragmentNotFound";
            "msg": "No VM with the given fragment exists";
        },
        {
            "code": 6001;
            "name": "vmFragmentAlreadyInUse";
            "msg": "Given VM fragment is already in use";
        },
        {
            "code": 6002;
            "name": "vmGuardedFlagOnAdd";
            "msg": "Cannot add a verification method with guarded flag (OwnershipProof or Protected)";
        },
        {
            "code": 6003;
            "name": "vmCannotRemoveLastAuthority";
            "msg": "Removing the last verification method would lead to a lockout";
        },
        {
            "code": 6004;
            "name": "serviceFragmentAlreadyInUse";
            "msg": "Service already exists in current service list";
        },
        {
            "code": 6005;
            "name": "serviceFragmentNotFound";
            "msg": "Service doesn't exists in current service list";
        },
        {
            "code": 6006;
            "name": "invalidOtherControllers";
            "msg": "Invalid other controllers. Invalid DID format or did:sol:<did>";
        },
        {
            "code": 6007;
            "name": "invalidNativeControllers";
            "msg": "Invalid native controllers. Cannot set itself as a controller";
        },
        {
            "code": 6008;
            "name": "insufficientInitialSize";
            "msg": "Initial Account size is insufficient for serialization";
        },
        {
            "code": 6009;
            "name": "conversionError";
            "msg": "Could not convert between data types";
        },
        {
            "code": 6010;
            "name": "invalidControllerChain";
            "msg": "Invalid chain of controlling DidAccounts";
        },
        {
            "code": 6011;
            "name": "errorValidatingSecp256k1Signature";
            "msg": "An error occurred while validating Secp256k1 signature";
        },
        {
            "code": 6012;
            "name": "wrongAuthorityForDid";
            "msg": "Wrong Authority for given DID";
        },
        {
            "code": 6013;
            "name": "vmCannotRemoveProtected";
            "msg": "Cannot remove a protected verification method. You need to first remove the Protected Verification Method Flag in order for this operation to succeed";
        }
    ];
    "types": [
        {
            "name": "didAccount";
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "version";
                        "docs": [
                            "Version identifier"
                        ];
                        "type": "u8";
                    },
                    {
                        "name": "bump";
                        "docs": [
                            "Bump"
                        ];
                        "type": "u8";
                    },
                    {
                        "name": "nonce";
                        "docs": [
                            "Nonce, for protecting against replay attacks around secp256k1 signatures."
                        ];
                        "type": "u64";
                    },
                    {
                        "name": "initialVerificationMethod";
                        "docs": [
                            "The initial authority key, automatically being added to the array of all Verification Methods."
                        ];
                        "type": {
                            "defined": {
                                "name": "verificationMethod";
                            };
                        };
                    },
                    {
                        "name": "verificationMethods";
                        "docs": [
                            "All verification methods"
                        ];
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "verificationMethod";
                                };
                            };
                        };
                    },
                    {
                        "name": "services";
                        "docs": [
                            "Services"
                        ];
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "service";
                                };
                            };
                        };
                    },
                    {
                        "name": "nativeControllers";
                        "docs": [
                            "Controller (native) - did:sol:<controller>"
                        ];
                        "type": {
                            "vec": "pubkey";
                        };
                    },
                    {
                        "name": "otherControllers";
                        "docs": [
                            "Controller (others) - all others"
                        ];
                        "type": {
                            "vec": "string";
                        };
                    }
                ];
            };
        },
        {
            "name": "secp256k1RawSignature";
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "signature";
                        "type": {
                            "array": [
                                "u8",
                                64
                            ];
                        };
                    },
                    {
                        "name": "recoveryId";
                        "type": "u8";
                    }
                ];
            };
        },
        {
            "name": "service";
            "docs": [
                "A Service Definition [`DidAccount`]"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "fragment";
                        "type": "string";
                    },
                    {
                        "name": "serviceType";
                        "type": "string";
                    },
                    {
                        "name": "serviceEndpoint";
                        "type": "string";
                    }
                ];
            };
        },
        {
            "name": "setControllersArg";
            "docs": [
                "Argument"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "nativeControllers";
                        "type": {
                            "vec": "pubkey";
                        };
                    },
                    {
                        "name": "otherControllers";
                        "type": {
                            "vec": "string";
                        };
                    }
                ];
            };
        },
        {
            "name": "updateArg";
            "docs": [
                "Argument"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "verificationMethods";
                        "docs": [
                            "All verification methods"
                        ];
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "verificationMethod";
                                };
                            };
                        };
                    },
                    {
                        "name": "services";
                        "docs": [
                            "Services"
                        ];
                        "type": {
                            "vec": {
                                "defined": {
                                    "name": "service";
                                };
                            };
                        };
                    },
                    {
                        "name": "nativeControllers";
                        "docs": [
                            "Controller (native) - did:sol:<controller>"
                        ];
                        "type": {
                            "vec": "pubkey";
                        };
                    },
                    {
                        "name": "otherControllers";
                        "docs": [
                            "Controller (others) - all others"
                        ];
                        "type": {
                            "vec": "string";
                        };
                    }
                ];
            };
        },
        {
            "name": "updateFlagsVerificationMethod";
            "docs": [
                "Argument"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "fragment";
                        "type": "string";
                    },
                    {
                        "name": "flags";
                        "type": "u16";
                    }
                ];
            };
        },
        {
            "name": "verificationMethod";
            "docs": [
                "The native authority key for a [`DidAccount`]"
            ];
            "type": {
                "kind": "struct";
                "fields": [
                    {
                        "name": "fragment";
                        "docs": [
                            "fragment"
                        ];
                        "type": "string";
                    },
                    {
                        "name": "flags";
                        "docs": [
                            "The permissions this key has"
                        ];
                        "type": "u16";
                    },
                    {
                        "name": "methodType";
                        "docs": [
                            "The actual verification method"
                        ];
                        "type": "u8";
                    },
                    {
                        "name": "keyData";
                        "docs": [
                            "Dynamically sized key matching the given VerificationType"
                        ];
                        "type": "bytes";
                    }
                ];
            };
        }
    ];
};
