/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import type BN from "bn.js";
import type { ContractOptions } from "web3-eth-contract";
import type { EventLog } from "web3-core";
import type { EventEmitter } from "events";
import type {
  Callback,
  PayableTransactionObject,
  NonPayableTransactionObject,
  BlockType,
  ContractEventLog,
  BaseContract,
} from "./types";

export interface EventOptions {
  filter?: object;
  fromBlock?: BlockType;
  topics?: string[];
}

export type AddedContract = ContractEventLog<{
  name: string;
  contractAddress: string;
  isProxy: boolean;
  0: string;
  1: string;
  2: boolean;
}>;
export type Initialized_uint8 = ContractEventLog<{
  version: string;
  0: string;
}>;
export type Initialized_ = ContractEventLog<{}>;
export type RemovedContract = ContractEventLog<{
  name: string;
  0: string;
}>;

export interface DAORegistry extends BaseContract {
  constructor(
    jsonInterface: any[],
    address?: string,
    options?: ContractOptions
  ): DAORegistry;
  clone(): DAORegistry;
  methods: {
    DAO_MEMBER_STORAGE_NAME(): NonPayableTransactionObject<string>;

    DAO_PARAMETER_STORAGE_NAME(): NonPayableTransactionObject<string>;

    DAO_REGISTRY_RESOURCE(): NonPayableTransactionObject<string>;

    DAO_VAULT_NAME(): NonPayableTransactionObject<string>;

    TOKEN_FACTORY_NAME(): NonPayableTransactionObject<string>;

    TOKEN_REGISTRY_NAME(): NonPayableTransactionObject<string>;

    VOTING_FACTORY_NAME(): NonPayableTransactionObject<string>;

    VOTING_REGISTRY_NAME(): NonPayableTransactionObject<string>;

    __DAORegistry_init(
      permissionManager_: string,
      masterAccess_: string,
      panelName_: string,
      registryResource_: string
    ): NonPayableTransactionObject<void>;

    addContract(
      name_: string,
      contractAddress_: string
    ): NonPayableTransactionObject<void>;

    addPanel(panelName_: string): NonPayableTransactionObject<void>;

    addProxyContract(
      name_: string,
      contractAddress_: string
    ): NonPayableTransactionObject<void>;

    checkPermission(
      account_: string,
      permission_: string
    ): NonPayableTransactionObject<boolean>;

    getContract(name_: string): NonPayableTransactionObject<string>;

    getDAOMemberStorage(
      panelName_: string
    ): NonPayableTransactionObject<string>;

    getDAOPanelResource(
      moduleType_: string,
      panelName_: string
    ): NonPayableTransactionObject<string>;

    getDAOParameterStorage(
      panelName_: string
    ): NonPayableTransactionObject<string>;

    getDAOVault(): NonPayableTransactionObject<string>;

    getDAOVoting(panelName_: string): NonPayableTransactionObject<string>;

    getImplementation(name_: string): NonPayableTransactionObject<string>;

    getPanels(): NonPayableTransactionObject<string[]>;

    getPermissionManager(): NonPayableTransactionObject<string>;

    getProxyUpgrader(): NonPayableTransactionObject<string>;

    getResource(): NonPayableTransactionObject<string>;

    getTokenFactory(): NonPayableTransactionObject<string>;

    getTokenRegistry(): NonPayableTransactionObject<string>;

    getVotingFactory(): NonPayableTransactionObject<string>;

    getVotingRegistry(): NonPayableTransactionObject<string>;

    hasContract(name_: string): NonPayableTransactionObject<boolean>;

    injectDependencies(name_: string): NonPayableTransactionObject<void>;

    justAddProxyContract(
      name_: string,
      contractAddress_: string
    ): NonPayableTransactionObject<void>;

    permissionManager(): NonPayableTransactionObject<string>;

    removeContract(name_: string): NonPayableTransactionObject<void>;

    removePanel(panelName_: string): NonPayableTransactionObject<void>;

    upgradeContract(
      name_: string,
      newImplementation_: string
    ): NonPayableTransactionObject<void>;

    upgradeContractAndCall(
      name_: string,
      newImplementation_: string,
      data_: string | number[]
    ): NonPayableTransactionObject<void>;
  };
  events: {
    AddedContract(cb?: Callback<AddedContract>): EventEmitter;
    AddedContract(
      options?: EventOptions,
      cb?: Callback<AddedContract>
    ): EventEmitter;

    "Initialized(uint8)"(cb?: Callback<Initialized_uint8>): EventEmitter;
    "Initialized(uint8)"(
      options?: EventOptions,
      cb?: Callback<Initialized_uint8>
    ): EventEmitter;

    "Initialized()"(cb?: Callback<Initialized_>): EventEmitter;
    "Initialized()"(
      options?: EventOptions,
      cb?: Callback<Initialized_>
    ): EventEmitter;

    RemovedContract(cb?: Callback<RemovedContract>): EventEmitter;
    RemovedContract(
      options?: EventOptions,
      cb?: Callback<RemovedContract>
    ): EventEmitter;

    allEvents(options?: EventOptions, cb?: Callback<EventLog>): EventEmitter;
  };

  once(event: "AddedContract", cb: Callback<AddedContract>): void;
  once(
    event: "AddedContract",
    options: EventOptions,
    cb: Callback<AddedContract>
  ): void;

  once(event: "RemovedContract", cb: Callback<RemovedContract>): void;
  once(
    event: "RemovedContract",
    options: EventOptions,
    cb: Callback<RemovedContract>
  ): void;
}
