import { Signer } from "ethers";
import type { Provider } from "@ethersproject/providers";
import type { IPermissionManager, IPermissionManagerInterface } from "../IPermissionManager";
export declare class IPermissionManager__factory {
    static readonly abi: readonly [{
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "string";
            readonly name: "role";
            readonly type: "string";
        }, {
            readonly indexed: false;
            readonly internalType: "string";
            readonly name: "resource";
            readonly type: "string";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "permissionsToAdd";
            readonly type: "string[]";
        }, {
            readonly indexed: false;
            readonly internalType: "bool";
            readonly name: "allowed";
            readonly type: "bool";
        }];
        readonly name: "AddedPermissions";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "who";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "groupsToAddTo";
            readonly type: "string[]";
        }];
        readonly name: "AddedToGroups";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "string";
            readonly name: "groupTo";
            readonly type: "string";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "rolesToGrant";
            readonly type: "string[]";
        }];
        readonly name: "GrantedGroupRoles";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "to";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "rolesToGrant";
            readonly type: "string[]";
        }];
        readonly name: "GrantedRoles";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "target";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "linkedMemberStorage";
            readonly type: "address";
        }];
        readonly name: "LinkedStorageToVetoGroup";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "who";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "groupsToRemoveFrom";
            readonly type: "string[]";
        }];
        readonly name: "RemovedFromGroups";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "string";
            readonly name: "role";
            readonly type: "string";
        }, {
            readonly indexed: false;
            readonly internalType: "string";
            readonly name: "resource";
            readonly type: "string";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "permissionsToRemove";
            readonly type: "string[]";
        }, {
            readonly indexed: false;
            readonly internalType: "bool";
            readonly name: "allowed";
            readonly type: "bool";
        }];
        readonly name: "RemovedPermissions";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "string";
            readonly name: "groupFrom";
            readonly type: "string";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "rolesToRevoke";
            readonly type: "string[]";
        }];
        readonly name: "RevokedGroupRoles";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "from";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "string[]";
            readonly name: "rolesToRevoke";
            readonly type: "string[]";
        }];
        readonly name: "RevokedRoles";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "bool";
            readonly name: "defaultGroupEnabled";
            readonly type: "bool";
        }];
        readonly name: "ToggledDefaultGroup";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "target";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "linkedMemberStorage";
            readonly type: "address";
        }];
        readonly name: "VetoGroupAdded";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "target";
            readonly type: "address";
        }];
        readonly name: "VetoGroupRemoved";
        readonly type: "event";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "member_";
            readonly type: "address";
        }, {
            readonly internalType: "string[]";
            readonly name: "groups_";
            readonly type: "string[]";
        }];
        readonly name: "addMemberToGroup";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "role_";
            readonly type: "string";
        }, {
            readonly components: readonly [{
                readonly internalType: "string";
                readonly name: "resource";
                readonly type: "string";
            }, {
                readonly internalType: "string[]";
                readonly name: "permissions";
                readonly type: "string[]";
            }];
            readonly internalType: "struct IRBAC.ResourceWithPermissions[]";
            readonly name: "permissionsToAdd_";
            readonly type: "tuple[]";
        }, {
            readonly internalType: "bool";
            readonly name: "allowed_";
            readonly type: "bool";
        }];
        readonly name: "addPermissionsToRole";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "who_";
            readonly type: "address";
        }, {
            readonly internalType: "string[]";
            readonly name: "groupsToAddTo_";
            readonly type: "string[]";
        }];
        readonly name: "addUserToGroups";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }, {
            readonly internalType: "contract DAOMemberStorage";
            readonly name: "linkedMemberStorage_";
            readonly type: "address";
        }];
        readonly name: "addVetoGroup";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "target";
                readonly type: "address";
            }, {
                readonly internalType: "contract DAOMemberStorage";
                readonly name: "linkedMemberStorage";
                readonly type: "address";
            }];
            readonly internalType: "struct IPermissionManager.VetoGroup[]";
            readonly name: "vetoGroups_";
            readonly type: "tuple[]";
        }];
        readonly name: "addVetoGroups";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "member_";
            readonly type: "address";
        }, {
            readonly internalType: "string";
            readonly name: "permission_";
            readonly type: "string";
        }];
        readonly name: "checkPermission";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "moduleName_";
            readonly type: "string";
        }];
        readonly name: "confExternalModule";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getDAORegistry";
        readonly outputs: readonly [{
            readonly internalType: "contract DAORegistry";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getDefaultGroupEnabled";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getExistingVetoGroupTargets";
        readonly outputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "";
            readonly type: "address[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "group_";
            readonly type: "string";
        }];
        readonly name: "getGroupRoles";
        readonly outputs: readonly [{
            readonly internalType: "string[]";
            readonly name: "roles_";
            readonly type: "string[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getResource";
        readonly outputs: readonly [{
            readonly internalType: "string";
            readonly name: "";
            readonly type: "string";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "role_";
            readonly type: "string";
        }];
        readonly name: "getRolePermissions";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "string";
                readonly name: "resource";
                readonly type: "string";
            }, {
                readonly internalType: "string[]";
                readonly name: "permissions";
                readonly type: "string[]";
            }];
            readonly internalType: "struct IRBAC.ResourceWithPermissions[]";
            readonly name: "allowed_";
            readonly type: "tuple[]";
        }, {
            readonly components: readonly [{
                readonly internalType: "string";
                readonly name: "resource";
                readonly type: "string";
            }, {
                readonly internalType: "string[]";
                readonly name: "permissions";
                readonly type: "string[]";
            }];
            readonly internalType: "struct IRBAC.ResourceWithPermissions[]";
            readonly name: "disallowed_";
            readonly type: "tuple[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "who_";
            readonly type: "address";
        }];
        readonly name: "getUserGroups";
        readonly outputs: readonly [{
            readonly internalType: "string[]";
            readonly name: "groups_";
            readonly type: "string[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "who_";
            readonly type: "address";
        }];
        readonly name: "getUserRoles";
        readonly outputs: readonly [{
            readonly internalType: "string[]";
            readonly name: "roles_";
            readonly type: "string[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }];
        readonly name: "getVetoGroupInfo";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "target";
                readonly type: "address";
            }, {
                readonly internalType: "contract DAOMemberStorage";
                readonly name: "linkedMemberStorage";
                readonly type: "address";
            }];
            readonly internalType: "struct IPermissionManager.VetoGroup";
            readonly name: "";
            readonly type: "tuple";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }];
        readonly name: "getVetoGroupMembers";
        readonly outputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "";
            readonly type: "address[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }];
        readonly name: "getVetoMembersCount";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "groupTo_";
            readonly type: "string";
        }, {
            readonly internalType: "string[]";
            readonly name: "rolesToGrant_";
            readonly type: "string[]";
        }];
        readonly name: "grantGroupRoles";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "to_";
            readonly type: "address";
        }, {
            readonly internalType: "string[]";
            readonly name: "rolesToGrant_";
            readonly type: "string[]";
        }];
        readonly name: "grantRoles";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "who_";
            readonly type: "address";
        }, {
            readonly internalType: "string";
            readonly name: "resource_";
            readonly type: "string";
        }, {
            readonly internalType: "string";
            readonly name: "permission_";
            readonly type: "string";
        }];
        readonly name: "hasPermission";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "isAllowed_";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }, {
            readonly internalType: "address";
            readonly name: "member_";
            readonly type: "address";
        }];
        readonly name: "isUserInVetoGroup";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }];
        readonly name: "isVetoGroupExists";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }, {
            readonly internalType: "contract DAOMemberStorage";
            readonly name: "linkedMemberStorage_";
            readonly type: "address";
        }];
        readonly name: "linkStorageToVetoGroup";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "member_";
            readonly type: "address";
        }, {
            readonly internalType: "string[]";
            readonly name: "groups_";
            readonly type: "string[]";
        }];
        readonly name: "removeMemberFromGroup";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "role_";
            readonly type: "string";
        }, {
            readonly components: readonly [{
                readonly internalType: "string";
                readonly name: "resource";
                readonly type: "string";
            }, {
                readonly internalType: "string[]";
                readonly name: "permissions";
                readonly type: "string[]";
            }];
            readonly internalType: "struct IRBAC.ResourceWithPermissions[]";
            readonly name: "permissionsToRemove_";
            readonly type: "tuple[]";
        }, {
            readonly internalType: "bool";
            readonly name: "allowed_";
            readonly type: "bool";
        }];
        readonly name: "removePermissionsFromRole";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "who_";
            readonly type: "address";
        }, {
            readonly internalType: "string[]";
            readonly name: "groupsToRemoveFrom_";
            readonly type: "string[]";
        }];
        readonly name: "removeUserFromGroups";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target_";
            readonly type: "address";
        }];
        readonly name: "removeVetoGroup";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "string";
            readonly name: "groupFrom_";
            readonly type: "string";
        }, {
            readonly internalType: "string[]";
            readonly name: "rolesToRevoke_";
            readonly type: "string[]";
        }];
        readonly name: "revokeGroupRoles";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "from_";
            readonly type: "address";
        }, {
            readonly internalType: "string[]";
            readonly name: "rolesToRevoke_";
            readonly type: "string[]";
        }];
        readonly name: "revokeRoles";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "toggleDefaultGroup";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }];
    static createInterface(): IPermissionManagerInterface;
    static connect(address: string, signerOrProvider: Signer | Provider): IPermissionManager;
}
