/// <reference types="node" />
import type { ContractOptions } from "web3-eth-contract";
import type { EventLog } from "web3-core";
import type { EventEmitter } from "events";
import type { Callback, NonPayableTransactionObject, BlockType, ContractEventLog, BaseContract } from "./types";
export interface EventOptions {
    filter?: object;
    fromBlock?: BlockType;
    topics?: string[];
}
export type AddedPermissions = ContractEventLog<{
    role: string;
    resource: string;
    permissionsToAdd: string[];
    allowed: boolean;
    0: string;
    1: string;
    2: string[];
    3: boolean;
}>;
export type GrantedRoles = ContractEventLog<{
    to: string;
    rolesToGrant: string[];
    0: string;
    1: string[];
}>;
export type RemovedPermissions = ContractEventLog<{
    role: string;
    resource: string;
    permissionsToRemove: string[];
    allowed: boolean;
    0: string;
    1: string;
    2: string[];
    3: boolean;
}>;
export type RevokedRoles = ContractEventLog<{
    from: string;
    rolesToRevoke: string[];
    0: string;
    1: string[];
}>;
export interface IPermissionManager extends BaseContract {
    constructor(jsonInterface: any[], address?: string, options?: ContractOptions): IPermissionManager;
    clone(): IPermissionManager;
    methods: {
        addPermissionsToRole(role_: string, permissionsToAdd_: [string, string[]][], allowed_: boolean): NonPayableTransactionObject<void>;
        addVetoGroup(target_: string, name_: string, initialMembers_: string[], linkedMemberStorage_: string): NonPayableTransactionObject<void>;
        addVetoGroupMember(member_: string, target_: string): NonPayableTransactionObject<void>;
        addVetoGroups(vetoGroups_: [string, string, string[], string][]): NonPayableTransactionObject<void>;
        checkPermission(member_: string, permission_: string): NonPayableTransactionObject<boolean>;
        confExpertsGroups(dao_: string, voting_: string, panelName_: string): NonPayableTransactionObject<void>;
        confMemberGroup(dao_: string, voting_: string, panelName_: string): NonPayableTransactionObject<void>;
        confVotingModule(dao_: string, voting_: string, panelName_: string): NonPayableTransactionObject<void>;
        getResource(): NonPayableTransactionObject<string>;
        getRolePermissions(role_: string): NonPayableTransactionObject<{
            allowed_: [string, string[]][];
            disallowed_: [string, string[]][];
            0: [string, string[]][];
            1: [string, string[]][];
        }>;
        getUserRoles(who_: string): NonPayableTransactionObject<string[]>;
        getVetoGroupInfo(target_: string): NonPayableTransactionObject<{
            0: string;
            1: string;
            2: string[];
            3: string;
        }>;
        getVetoMembersCount(target_: string): NonPayableTransactionObject<string>;
        grantRoles(to_: string, rolesToGrant_: string[]): NonPayableTransactionObject<void>;
        hasPermission(who_: string, resource_: string, permission_: string): NonPayableTransactionObject<boolean>;
        initialConfiguration(dao_: string, voting_: string, panelName_: string): NonPayableTransactionObject<void>;
        linkStorageToVetoGroup(target_: string, linkedMemberStorage_: string): NonPayableTransactionObject<void>;
        removePermissionsFromRole(role_: string, permissionsToRemove_: [string, string[]][], allowed_: boolean): NonPayableTransactionObject<void>;
        removeVetoGroup(target_: string): NonPayableTransactionObject<void>;
        removeVetoGroupMember(member_: string, target_: string): NonPayableTransactionObject<void>;
        revokeRoles(from_: string, rolesToRevoke_: string[]): NonPayableTransactionObject<void>;
    };
    events: {
        AddedPermissions(cb?: Callback<AddedPermissions>): EventEmitter;
        AddedPermissions(options?: EventOptions, cb?: Callback<AddedPermissions>): EventEmitter;
        GrantedRoles(cb?: Callback<GrantedRoles>): EventEmitter;
        GrantedRoles(options?: EventOptions, cb?: Callback<GrantedRoles>): EventEmitter;
        RemovedPermissions(cb?: Callback<RemovedPermissions>): EventEmitter;
        RemovedPermissions(options?: EventOptions, cb?: Callback<RemovedPermissions>): EventEmitter;
        RevokedRoles(cb?: Callback<RevokedRoles>): EventEmitter;
        RevokedRoles(options?: EventOptions, cb?: Callback<RevokedRoles>): EventEmitter;
        allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
    };
    once(event: "AddedPermissions", cb: Callback<AddedPermissions>): void;
    once(event: "AddedPermissions", options: EventOptions, cb: Callback<AddedPermissions>): void;
    once(event: "GrantedRoles", cb: Callback<GrantedRoles>): void;
    once(event: "GrantedRoles", options: EventOptions, cb: Callback<GrantedRoles>): void;
    once(event: "RemovedPermissions", cb: Callback<RemovedPermissions>): void;
    once(event: "RemovedPermissions", options: EventOptions, cb: Callback<RemovedPermissions>): void;
    once(event: "RevokedRoles", cb: Callback<RevokedRoles>): void;
    once(event: "RevokedRoles", options: EventOptions, cb: Callback<RevokedRoles>): void;
}
