// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */

import type { Enum, Option, Struct, Vec, bool, u32 } from '@pezkuwi/types-codec';
import type { ITuple } from '@pezkuwi/types-codec/types';
import type { AccountId, Balance, BlockNumber, Hash } from '@pezkuwi/types/interfaces/runtime';

/** @name Bounty */
export interface Bounty extends Struct {
  readonly proposer: AccountId;
  readonly value: Balance;
  readonly fee: Balance;
  readonly curatorDeposit: Balance;
  readonly bond: Balance;
  readonly status: BountyStatus;
}

/** @name BountyIndex */
export interface BountyIndex extends u32 {}

/** @name BountyStatus */
export interface BountyStatus extends Enum {
  readonly isProposed: boolean;
  readonly isApproved: boolean;
  readonly isFunded: boolean;
  readonly isCuratorProposed: boolean;
  readonly asCuratorProposed: BountyStatusCuratorProposed;
  readonly isActive: boolean;
  readonly asActive: BountyStatusActive;
  readonly isPendingPayout: boolean;
  readonly asPendingPayout: BountyStatusPendingPayout;
  readonly type: 'Proposed' | 'Approved' | 'Funded' | 'CuratorProposed' | 'Active' | 'PendingPayout';
}

/** @name BountyStatusActive */
export interface BountyStatusActive extends Struct {
  readonly curator: AccountId;
  readonly updateDue: BlockNumber;
}

/** @name BountyStatusCuratorProposed */
export interface BountyStatusCuratorProposed extends Struct {
  readonly curator: AccountId;
}

/** @name BountyStatusPendingPayout */
export interface BountyStatusPendingPayout extends Struct {
  readonly curator: AccountId;
  readonly beneficiary: AccountId;
  readonly unlockAt: BlockNumber;
}

/** @name OpenTip */
export interface OpenTip extends Struct {
  readonly reason: Hash;
  readonly who: AccountId;
  readonly finder: AccountId;
  readonly deposit: Balance;
  readonly closes: Option<BlockNumber>;
  readonly tips: Vec<OpenTipTip>;
  readonly findersFee: bool;
}

/** @name OpenTipFinderTo225 */
export interface OpenTipFinderTo225 extends ITuple<[AccountId, Balance]> {}

/** @name OpenTipTip */
export interface OpenTipTip extends ITuple<[AccountId, Balance]> {}

/** @name OpenTipTo225 */
export interface OpenTipTo225 extends Struct {
  readonly reason: Hash;
  readonly who: AccountId;
  readonly finder: Option<OpenTipFinderTo225>;
  readonly closes: Option<BlockNumber>;
  readonly tips: Vec<OpenTipTip>;
}

/** @name TreasuryProposal */
export interface TreasuryProposal extends Struct {
  readonly proposer: AccountId;
  readonly value: Balance;
  readonly beneficiary: AccountId;
  readonly bond: Balance;
}

export type PHANTOM_TREASURY = 'treasury';
