// package: bet.beteran.rbac
// file: models/rbac/role.proto

import * as jspb from 'google-protobuf';
import * as models_rbac_resource_pb from '../../models/rbac/resource_pb';

export class Role extends jspb.Message {
  getId(): string;
  setId(value: string): void;

  hasParent(): boolean;
  clearParent(): void;
  getParent(): Role | undefined;
  setParent(value?: Role): void;

  getName(): string;
  setName(value: string): void;

  getKey(): string;
  setKey(value: string): void;

  getDescription(): string;
  setDescription(value: string): void;

  getCanUse(): boolean;
  setCanUse(value: boolean): void;

  getCreatedAt(): number;
  setCreatedAt(value: number): void;

  getUpdatedAt(): number;
  setUpdatedAt(value: number): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): Role.AsObject;
  static toObject(includeInstance: boolean, msg: Role): Role.AsObject;
  static extensions: { [key: number]: jspb.ExtensionFieldInfo<jspb.Message> };
  static extensionsBinary: {
    [key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>;
  };
  static serializeBinaryToWriter(
    message: Role,
    writer: jspb.BinaryWriter
  ): void;
  static deserializeBinary(bytes: Uint8Array): Role;
  static deserializeBinaryFromReader(
    message: Role,
    reader: jspb.BinaryReader
  ): Role;
}

export namespace Role {
  export type AsObject = {
    id: string;
    parent?: Role.AsObject;
    name: string;
    key: string;
    description: string;
    canUse: boolean;
    createdAt: number;
    updatedAt: number;
  };
}
