// Generated by eosio-abi2ts 1.2.2 - eosio::abi/1.2

export type IAsset = string
export type IName = string
export type IChecksum256 = string
export type IPublicKey = string
export type ISignature = string
export type ITimePointSec = string
export type IUint64 = number | string

export interface IAccount {
  username: IName
  referer: IName
  registrator: IName
  type: IName
  status: IName
  meta: string
  storages: IName[]
  verifications: IVerification[]
  registered_at: ITimePointSec
  signature_expires_at: ITimePointSec
}

export interface IBalances extends IBalancesBase {
}

export interface IBalancesBase {
  id: IUint64
  contract: IName
  quantity: IAsset
}

export interface IChangekey {
  username: IName
  public_key: IPublicKey
}

export interface IConfirmreg {
  coopname: IName
  member: IName
}

export interface IDocument {
  hash: IChecksum256
  public_key: IPublicKey
  signature: ISignature
  meta: string
}

export interface IInit {
}

export interface IJoincoop {
  registrator: IName
  coopname: IName
  username: IName
  document: IDocument
}

export interface INewaccount {
  registrator: IName
  coopname: IName
  referer: IName
  username: IName
  public_key: IPublicKey
  signature_hash: string
  meta: string
}

export interface IOrgData {
  is_cooperative: boolean
  coop_type: IName
  announce: string
  description: string
  initial: IAsset
  minimum: IAsset
  org_initial: IAsset
  org_minimum: IAsset
}

export interface IOrganization {
  username: IName
  parent_username: IName
  announce: string
  description: string
  is_cooperative: boolean
  is_branched: boolean
  is_enrolled: boolean
  coop_type: IName
  registration: IAsset
  initial: IAsset
  minimum: IAsset
  org_initial: IAsset
  org_minimum: IAsset
  org_registration: IAsset
}

export interface IPlotData {
  announce: string
  description: string
}

export interface IRegdepartmnt {
  registrator: IName
  coopname: IName
  username: IName
  params: IPlotData
}

export interface IRegorg {
  registrator: IName
  coopname: IName
  username: IName
  params: IOrgData
}

export interface IReguser {
  registrator: IName
  coopname: IName
  username: IName
}

export interface IUpdate {
  username: IName
  meta: string
}

export interface IVerificate {
  username: IName
  procedure: IName
}

export interface IVerification {
  verificator: IName
  is_verified: boolean
  procedure: IName
  created_at: ITimePointSec
  last_update: ITimePointSec
  notice: string
}
