/* eslint-disable */

// @ts-nocheck

// This file was automatically generated by @icp-sdk/bindgen@0.2.0.
// You should NOT make any changes in this file as it will be overwritten.
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.

import type {ActorMethod} from '@icp-sdk/core/agent';
import type {IDL} from '@icp-sdk/core/candid';
import type {Principal} from '@icp-sdk/core/principal';

export interface Account {
  owner: Principal;
  subaccount: [] | [Subaccount];
}
/**
 * Number of nanoseconds between two [Timestamp]s.
 */
export type Duration = bigint;
export type Subaccount = Uint8Array;
/**
 * Number of nanoseconds since the UNIX epoch in UTC timezone.
 */
export type Timestamp = bigint;
export interface TransferArgs {
  to: Account;
  fee: [] | [bigint];
  memo: [] | [Uint8Array];
  from_subaccount: [] | [Subaccount];
  created_at_time: [] | [Timestamp];
  amount: bigint;
}
export type TransferError =
  | {
      GenericError: {message: string; error_code: bigint};
    }
  | {TemporarilyUnavailable: null}
  | {BadBurn: {min_burn_amount: bigint}}
  | {Duplicate: {duplicate_of: bigint}}
  | {BadFee: {expected_fee: bigint}}
  | {CreatedInFuture: {ledger_time: Timestamp}}
  | {TooOld: null}
  | {InsufficientFunds: {balance: bigint}};
export type Value = {Int: bigint} | {Nat: bigint} | {Blob: Uint8Array} | {Text: string};
export interface _SERVICE {
  icrc1_balance_of: ActorMethod<[Account], bigint>;
  icrc1_decimals: ActorMethod<[], number>;
  icrc1_fee: ActorMethod<[], bigint>;
  icrc1_metadata: ActorMethod<[], Array<[string, Value]>>;
  icrc1_minting_account: ActorMethod<[], [] | [Account]>;
  icrc1_name: ActorMethod<[], string>;
  icrc1_supported_standards: ActorMethod<[], Array<{url: string; name: string}>>;
  icrc1_symbol: ActorMethod<[], string>;
  icrc1_total_supply: ActorMethod<[], bigint>;
  icrc1_transfer: ActorMethod<[TransferArgs], {Ok: bigint} | {Err: TransferError}>;
}
export declare const idlService: IDL.ServiceClass;
export declare const idlInitArgs: IDL.Type[];
export declare const idlFactory: IDL.InterfaceFactory;
export declare const init: (args: {IDL: typeof IDL}) => IDL.Type[];
