// 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 IUint32 = number

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

export interface IAdduser {
  coopname: IName
  referer: IName
  username: IName
  type: IName
  created_at: ITimePointSec
  initial: IAsset
  minimum: IAsset
  spread_initial: boolean
  meta: string
}

export interface ICandidate {
  username: IName
  coopname: IName
  braname: IName
  status: IName
  created_at: ITimePointSec
  statement: IDocument2
  registration_hash: IChecksum256
  initial: IAsset
  minimum: IAsset
}

export interface ICandidateLegacy {
  username: IName
  coopname: IName
  braname: IName
  status: IName
  created_at: ITimePointSec
  statement: IDocument
  registration_hash: IChecksum256
  initial: IAsset
  minimum: IAsset
}

export interface IChangekey {
  coopname: IName
  changer: IName
  username: IName
  public_key: IPublicKey
}

export interface IConfirmpay {
  coopname: IName
  registration_hash: IChecksum256
}

export interface IConfirmreg {
  coopname: IName
  registration_hash: IChecksum256
  authorization: IDocument2
}

export interface ICooperative {
  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_registration: IAsset$
  org_initial: IAsset$
  org_minimum: IAsset$
  status: IName$
  created_at: ITimePointSec$
  document: IDocument$
}

export interface ICooperative2 {
  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_registration: IAsset$
  org_initial: IAsset$
  org_minimum: IAsset$
  status: IName$
  created_at: ITimePointSec$
  document: IDocument2$
  active_participants_count: IUint64$
}

export interface ICreatebranch {
  coopname: IName
  braname: IName
}

export interface IDeclinepay {
  coopname: IName
  registration_hash: IChecksum256
  reason: string
}

export interface IDeclinereg {
  coopname: IName
  registration_hash: IChecksum256
  reason: string
}

export interface IDecparticpnt {
  coopname: IName
  username: IName
}

export interface IDelcoop {
  registrator: IName
  coopname: IName
}

export interface IDisbranches {
  coopname: IName
}

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

export interface IDocument2 {
  version: string
  hash: IChecksum256
  doc_hash: IChecksum256
  meta_hash: IChecksum256
  meta: string
  signatures: ISignatureInfo[]
}

export interface IEnabranches {
  coopname: IName
}

export interface IInit {
}

export interface IMigrate {
}

export interface INewaccount {
  coopname: IName
  referer: IName
  username: IName
  public_key: IPublicKey
  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 IRegcoop {
  coopname: IName
  username: IName
  params: IOrgData
  document: IDocument2
}

export interface IReguser {
  coopname: IName
  braname: IName
  username: IName
  type: IName
  statement: IDocument2
  registration_hash: IChecksum256
}

export interface ISignatureInfo {
  id: IUint32
  signed_hash: IChecksum256
  signer: IName
  public_key: IPublicKey
  signature: ISignature
  signed_at: ITimePointSec
  meta: string
}

export interface IStcoopstatus {
  coopname: IName
  username: IName
  status: IName
}

export interface IUpdateaccnt {
  username: IName
  account_to_change: IName
  meta: string
}

export interface IUpdatecoop {
  coopname: IName
  username: IName
  initial: IAsset
  minimum: IAsset
  org_initial: IAsset
  org_minimum: IAsset
  announce: string
  description: 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
}

