/**
 * Flowtype definitions for internal
 * Generated by Flowgen from a Typescript Definition
 * Flowgen v1.21.0
 * @flow
 */

import {
  AddressType,
  CertificateType,
  CIP36VoteDelegationType,
  CIP36VoteRegistrationFormat,
  DatumType,
  MessageAddressFieldType,
  NativeScriptType,
  PoolKeyType,
  PoolOwnerType,
  PoolRewardAccountType,
  RelayType,
  TransactionSigningMode,
  TxAuxiliaryDataType,
  TxOutputDestinationType,
  TxOutputFormat,
  VoteOption,
  VoterType,
} from "./public";
export type VarLenAsciiString = {|
  ...string,
  ...{|
    __type: "ascii",
  |},
|};
export type FixLenHexString<N> = {|
  ...string,
  ...{|
    __type: "hex",
    __length: N,
  |},
|};
export type HexString = {|
  ...string,
  ...{|
    __type: "hex",
  |},
|};
export type _Uint64_num = {|
  ...number,
  ...{|
    __type: "uint64_t",
  |},
|};
export type _Uint64_bigint = {|
  ...bigint,
  ...{|
    __type: "uint64_t",
  |},
|};
export type Uint64_str = {|
  ...string,
  ...{|
    __type: "uint64_t",
  |},
|};
export type Uint32_t = {|
  ...number,
  ...{|
    __type: "uint32_t",
  |},
|};
export type Uint16_t = {|
  ...number,
  ...{|
    __type: "uint16_t",
  |},
|};
export type Uint8_t = {|
  ...number,
  ...{|
    __type: "uint8_t",
  |},
|};
export type _Int64_num = {|
  ...number,
  ...{|
    __type: "int64_t",
  |},
|};
export type _Int64_bigint = {|
  ...bigint,
  ...{|
    __type: "int64_t",
  |},
|};
export type Int64_str = {|
  ...string,
  ...{|
    __type: "int64_t",
  |},
|};
export type ValidBIP32Path = {|
  ...Array<Uint32_t>,
  ...{|
    __type: "bip32_path",
  |},
|};
declare export {
  AddressType,
  CertificateType,
  DatumType,
  NativeScriptType,
  RelayType,
  PoolKeyType,
  PoolOwnerType,
  PoolRewardAccountType,
  TransactionSigningMode,
  TxAuxiliaryDataType,
  CIP36VoteDelegationType,
  TxOutputDestinationType,
  TxOutputFormat,
};
declare export {
  Version,
  DeviceCompatibility,
  NativeScriptHashDisplayFormat,
} from "./public";
declare export var EXTENDED_PUBLIC_KEY_LENGTH: 64;
declare export var PUBLIC_KEY_LENGTH: 32;
declare export var KEY_HASH_LENGTH: 28;
declare export var SCRIPT_HASH_LENGTH: 28;
declare export var TX_HASH_LENGTH: 32;
declare export var AUXILIARY_DATA_HASH_LENGTH: 32;
declare export var POOL_METADATA_HASH_LENGTH: 32;
declare export var KES_PUBLIC_KEY_LENGTH: 32;
declare export var VRF_KEY_HASH_LENGTH: 32;
declare export var REWARD_ACCOUNT_HEX_LENGTH: 29;
declare export var ED25519_SIGNATURE_LENGTH: 64;
declare export var SCRIPT_DATA_HASH_LENGTH: 32;
declare export var DATUM_HASH_LENGTH: 32;
declare export var ANCHOR_HASH_LENGTH: 32;
declare export var MAX_URL_LENGTH: 128;
declare export var MAX_DNS_NAME_LENGTH: 128;
declare export var MAX_ADDRESS_LENGTH: 128;
export type ParsedInput = {|
  txHashHex: FixLenHexString<typeof TX_HASH_LENGTH>,
  outputIndex: Uint32_t,
  path: ValidBIP32Path | null,
|};
declare export var CredentialType: {|
  +KEY_PATH: 0, // 0
  +KEY_HASH: 2, // 2
  +SCRIPT_HASH: 1, // 1
|};
export type ParsedCredential =
  | {|
      type: typeof CredentialType.KEY_PATH,
      path: ValidBIP32Path,
    |}
  | {|
      type: typeof CredentialType.KEY_HASH,
      keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof CredentialType.SCRIPT_HASH,
      scriptHashHex: FixLenHexString<typeof SCRIPT_HASH_LENGTH>,
    |};
declare export var DRepType: {|
  +KEY_HASH: 0, // 0
  +KEY_PATH: 100, // 100
  +SCRIPT_HASH: 1, // 1
  +ABSTAIN: 2, // 2
  +NO_CONFIDENCE: 3, // 3
|};
export type ParsedDRep =
  | {|
      type: typeof DRepType.KEY_PATH,
      path: ValidBIP32Path,
    |}
  | {|
      type: typeof DRepType.KEY_HASH,
      keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof DRepType.SCRIPT_HASH,
      scriptHashHex: FixLenHexString<typeof SCRIPT_HASH_LENGTH>,
    |}
  | {|
      type: typeof DRepType.ABSTAIN,
    |}
  | {|
      type: typeof DRepType.NO_CONFIDENCE,
    |};
export type ParsedAnchor = {|
  ...{|
    url: VarLenAsciiString,
    hashHex: FixLenHexString<typeof ANCHOR_HASH_LENGTH>,
  |},
  ...{|
    __brand: "anchor",
  |},
|};
export type ParsedCertificate =
  | {|
      type: typeof CertificateType.STAKE_REGISTRATION,
      stakeCredential: ParsedCredential,
    |}
  | {|
      type: typeof CertificateType.STAKE_REGISTRATION_CONWAY,
      stakeCredential: ParsedCredential,
      deposit: Uint64_str,
    |}
  | {|
      type: typeof CertificateType.STAKE_DEREGISTRATION,
      stakeCredential: ParsedCredential,
    |}
  | {|
      type: typeof CertificateType.STAKE_DEREGISTRATION_CONWAY,
      stakeCredential: ParsedCredential,
      deposit: Uint64_str,
    |}
  | {|
      type: typeof CertificateType.STAKE_DELEGATION,
      stakeCredential: ParsedCredential,
      poolKeyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof CertificateType.VOTE_DELEGATION,
      stakeCredential: ParsedCredential,
      dRep: ParsedDRep,
    |}
  | {|
      type: typeof CertificateType.STAKE_POOL_AND_DREP_DELEGATION,
      stakeCredential: ParsedCredential,
      poolKeyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
      dRep: ParsedDRep,
    |}
  | {|
      type: typeof CertificateType.ACCOUNT_REGISTRATION_DELEGATION_TO_STAKE_POOL,
      stakeCredential: ParsedCredential,
      poolKeyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
      deposit: Uint64_str,
    |}
  | {|
      type: typeof CertificateType.ACCOUNT_REGISTRATION_DELEGATION_TO_DREP,
      stakeCredential: ParsedCredential,
      dRep: ParsedDRep,
      deposit: Uint64_str,
    |}
  | {|
      type: typeof CertificateType.ACCOUNT_REGISTRATION_DELEGATION_TO_STAKE_POOL_AND_DREP,
      stakeCredential: ParsedCredential,
      poolKeyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
      dRep: ParsedDRep,
      deposit: Uint64_str,
    |}
  | {|
      type: typeof CertificateType.AUTHORIZE_COMMITTEE_HOT,
      coldCredential: ParsedCredential,
      hotCredential: ParsedCredential,
    |}
  | {|
      type: typeof CertificateType.RESIGN_COMMITTEE_COLD,
      coldCredential: ParsedCredential,
      anchor: ParsedAnchor | null,
    |}
  | {|
      type: typeof CertificateType.DREP_REGISTRATION,
      dRepCredential: ParsedCredential,
      deposit: Uint64_str,
      anchor: ParsedAnchor | null,
    |}
  | {|
      type: typeof CertificateType.DREP_DEREGISTRATION,
      dRepCredential: ParsedCredential,
      deposit: Uint64_str,
    |}
  | {|
      type: typeof CertificateType.DREP_UPDATE,
      dRepCredential: ParsedCredential,
      anchor: ParsedAnchor | null,
    |}
  | {|
      type: typeof CertificateType.STAKE_POOL_REGISTRATION,
      pool: ParsedPoolParams,
    |}
  | {|
      type: typeof CertificateType.STAKE_POOL_RETIREMENT,
      path: ValidBIP32Path,
      retirementEpoch: Uint64_str,
    |};
declare export var TOKEN_POLICY_LENGTH: 28;
export type ParsedToken<IntegerType> = {|
  assetNameHex: HexString,
  amount: IntegerType,
|};
export type ParsedAssetGroup<T> = {|
  policyIdHex: FixLenHexString<typeof TOKEN_POLICY_LENGTH>,
  tokens: Array<ParsedToken<T>>,
|};
export type ParsedWithdrawal = {|
  amount: Uint64_str,
  stakeCredential: ParsedCredential,
|};
declare export var RequiredSignerType: {|
  +PATH: 0, // 0
  +HASH: 1, // 1
|};
export type ParsedRequiredSigner =
  | {|
      type: typeof RequiredSignerType.HASH,
      hashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof RequiredSignerType.PATH,
      path: ValidBIP32Path,
    |};
export type ParsedGovActionId = {|
  txHashHex: FixLenHexString<typeof TX_HASH_LENGTH>,
  govActionIndex: Uint32_t,
|};
export type ParsedVotingProcedure = {|
  vote: $Values<typeof VoteOption>,
  anchor: ParsedAnchor | null,
|};
export type ParsedVote = {|
  govActionId: ParsedGovActionId,
  votingProcedure: ParsedVotingProcedure,
|};
export type ParsedVoter =
  | {|
      type: typeof VoterType.COMMITTEE_KEY_HASH,
      keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof VoterType.COMMITTEE_KEY_PATH,
      keyPath: ValidBIP32Path,
    |}
  | {|
      type: typeof VoterType.COMMITTEE_SCRIPT_HASH,
      scriptHashHex: FixLenHexString<typeof SCRIPT_HASH_LENGTH>,
    |}
  | {|
      type: typeof VoterType.DREP_KEY_HASH,
      keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof VoterType.DREP_KEY_PATH,
      keyPath: ValidBIP32Path,
    |}
  | {|
      type: typeof VoterType.DREP_SCRIPT_HASH,
      scriptHashHex: FixLenHexString<typeof SCRIPT_HASH_LENGTH>,
    |}
  | {|
      type: typeof VoterType.STAKE_POOL_KEY_HASH,
      keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |}
  | {|
      type: typeof VoterType.STAKE_POOL_KEY_PATH,
      keyPath: ValidBIP32Path,
    |};
export type ParsedVoterVotes = {|
  voter: ParsedVoter,
  votes: Array<ParsedVote>,
|};
declare export var CVOTE_PUBLIC_KEY_LENGTH: 32;
export type CVotePublicKey = FixLenHexString<typeof CVOTE_PUBLIC_KEY_LENGTH>;
export type ParsedTxAuxiliaryData =
  | {|
      type: typeof TxAuxiliaryDataType.ARBITRARY_HASH,
      hashHex: FixLenHexString<typeof AUXILIARY_DATA_HASH_LENGTH>,
    |}
  | {|
      type: typeof TxAuxiliaryDataType.CIP36_REGISTRATION,
      params: ParsedCVoteRegistrationParams,
    |};
export type ParsedCVoteRegistrationParams = {|
  format: $Values<typeof CIP36VoteRegistrationFormat>,
  votePublicKey: CVotePublicKey | null,
  votePublicKeyPath: ValidBIP32Path | null,
  delegations: Array<ParsedCVoteDelegation> | null,
  stakingPath: ValidBIP32Path,
  paymentDestination: ParsedOutputDestination,
  nonce: Uint64_str,
  votingPurpose: Uint64_str | null,
|};
export type ParsedCVoteDelegation =
  | {|
      type: typeof CIP36VoteDelegationType.PATH,
      voteKeyPath: ValidBIP32Path,
      weight: Uint32_t,
    |}
  | {|
      type: typeof CIP36VoteDelegationType.KEY,
      voteKey: CVotePublicKey,
      weight: Uint32_t,
    |};
export type ParsedNetwork = {|
  protocolMagic: Uint32_t,
  networkId: Uint8_t,
|};
export type ParsedTransaction = {|
  network: ParsedNetwork,
  inputs: ParsedInput[],
  outputs: ParsedOutput[],
  fee: Uint64_str,
  ttl: Uint64_str | null,
  certificates: ParsedCertificate[],
  withdrawals: ParsedWithdrawal[],
  auxiliaryData: ParsedTxAuxiliaryData | null,
  validityIntervalStart: Uint64_str | null,
  mint: Array<ParsedAssetGroup<Int64_str>> | null,
  scriptDataHashHex: ScriptDataHash | null,
  collateralInputs: ParsedInput[],
  requiredSigners: ParsedRequiredSigner[],
  includeNetworkId: boolean,
  collateralOutput: ParsedOutput | null,
  totalCollateral: Uint64_str | null,
  referenceInputs: ParsedInput[],
  votingProcedures: ParsedVoterVotes[],
  treasury: Uint64_str | null,
  donation: Uint64_str | null,
|};
export type ParsedTransactionOptions = {|
  tagCborSets: boolean,
|};
export type ParsedSigningRequest = {|
  tx: ParsedTransaction,
  signingMode: $Values<typeof TransactionSigningMode>,
  additionalWitnessPaths: ValidBIP32Path[],
  options: ParsedTransactionOptions,
|};
export type ScriptDataHash = FixLenHexString<typeof SCRIPT_DATA_HASH_LENGTH>;
export type ParsedMargin = {|
  numerator: Uint64_str,
  denominator: Uint64_str,
|};
export type ParsedPoolParams = {|
  poolKey: ParsedPoolKey,
  vrfHashHex: FixLenHexString<typeof VRF_KEY_HASH_LENGTH>,
  pledge: Uint64_str,
  cost: Uint64_str,
  margin: ParsedMargin,
  rewardAccount: ParsedPoolRewardAccount,
  owners: ParsedPoolOwner[],
  relays: ParsedPoolRelay[],
  metadata: ParsedPoolMetadata | null,
|};
export type ParsedPoolKey =
  | {|
      type: typeof PoolKeyType.DEVICE_OWNED,
      path: ValidBIP32Path,
    |}
  | {|
      type: typeof PoolKeyType.THIRD_PARTY,
      hashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |};
export type ParsedPoolOwner =
  | {|
      type: typeof PoolOwnerType.DEVICE_OWNED,
      path: ValidBIP32Path,
    |}
  | {|
      type: typeof PoolOwnerType.THIRD_PARTY,
      hashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
    |};
export type ParsedPoolRewardAccount =
  | {|
      type: typeof PoolRewardAccountType.DEVICE_OWNED,
      path: ValidBIP32Path,
    |}
  | {|
      type: typeof PoolRewardAccountType.THIRD_PARTY,
      rewardAccountHex: FixLenHexString<typeof REWARD_ACCOUNT_HEX_LENGTH>,
    |};
export type ParsedPoolRelay =
  | {|
      type: typeof RelayType.SINGLE_HOST_IP_ADDR,
      port: Uint16_t | null,
      ipv4: Buffer | null,
      ipv6: Buffer | null,
    |}
  | {|
      type: typeof RelayType.SINGLE_HOST_HOSTNAME,
      port: Uint16_t | null,
      dnsName: VarLenAsciiString,
    |}
  | {|
      type: typeof RelayType.MULTI_HOST,
      dnsName: VarLenAsciiString,
    |};
export type ParsedPoolMetadata = {|
  ...{|
    url: VarLenAsciiString,
    hashHex: FixLenHexString<32>,
  |},
  ...{|
    __brand: "pool_metadata",
  |},
|};
declare export var SpendingDataSourceType: {|
  +NONE: "no_spending", // "no_spending"
  +PATH: "spending_path", // "spending_path"
  +SCRIPT_HASH: "spending_script_hash", // "spending_script_hash"
|};
declare type SpendingDataSourceNone = {|
  type: typeof SpendingDataSourceType.NONE,
|};
declare type SpendingDataSourcePath = {|
  type: typeof SpendingDataSourceType.PATH,
  path: ValidBIP32Path,
|};
declare type SpendingDataSourceScriptHash = {|
  type: typeof SpendingDataSourceType.SCRIPT_HASH,
  scriptHashHex: FixLenHexString<typeof SCRIPT_HASH_LENGTH>,
|};
declare export var StakingDataSourceType: {|
  +NONE: "no_staking", // "no_staking"
  +KEY_PATH: "staking_key_path", // "staking_key_path"
  +KEY_HASH: "staking_key_hash", // "staking_key_hash"
  +BLOCKCHAIN_POINTER: "blockchain_pointer", // "blockchain_pointer"
  +SCRIPT_HASH: "staking_script_hash", // "staking_script_hash"
|};
declare type ParsedBlockchainPointer = {|
  blockIndex: Uint32_t,
  txIndex: Uint32_t,
  certificateIndex: Uint32_t,
|};
declare type StakingDataSourceNone = {|
  type: typeof StakingDataSourceType.NONE,
|};
declare type StakingDataSourcePath = {|
  type: typeof StakingDataSourceType.KEY_PATH,
  path: ValidBIP32Path,
|};
declare type StakingDataSourceKeyHash = {|
  type: typeof StakingDataSourceType.KEY_HASH,
  keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
|};
declare type StakingDataSourcePointer = {|
  type: typeof StakingDataSourceType.BLOCKCHAIN_POINTER,
  pointer: ParsedBlockchainPointer,
|};
declare type StakingDataSourceScriptHash = {|
  type: typeof StakingDataSourceType.SCRIPT_HASH,
  scriptHashHex: FixLenHexString<typeof SCRIPT_HASH_LENGTH>,
|};
export type SpendingDataSource =
  | SpendingDataSourcePath
  | SpendingDataSourceScriptHash
  | SpendingDataSourceNone;
export type StakingDataSource =
  | StakingDataSourceNone
  | StakingDataSourcePath
  | StakingDataSourceKeyHash
  | StakingDataSourcePointer
  | StakingDataSourceScriptHash;
export type ByronAddressParams = {|
  type: typeof AddressType.BYRON,
  protocolMagic: Uint32_t,
  spendingDataSource: SpendingDataSourcePath,
  stakingDataSource: StakingDataSourceNone,
|};
export type ShelleyAddressParams = {|
  ...{|
    type:
      | typeof AddressType.BASE_PAYMENT_KEY_STAKE_KEY
      | typeof AddressType.BASE_PAYMENT_SCRIPT_STAKE_KEY
      | typeof AddressType.BASE_PAYMENT_KEY_STAKE_SCRIPT
      | typeof AddressType.BASE_PAYMENT_SCRIPT_STAKE_SCRIPT
      | typeof AddressType.ENTERPRISE_KEY
      | typeof AddressType.ENTERPRISE_SCRIPT
      | typeof AddressType.POINTER_KEY
      | typeof AddressType.POINTER_SCRIPT
      | typeof AddressType.REWARD_KEY
      | typeof AddressType.REWARD_SCRIPT,
    networkId: Uint8_t,
  |},
  ...
    | {|
        type:
          | typeof AddressType.BASE_PAYMENT_KEY_STAKE_KEY
          | typeof AddressType.BASE_PAYMENT_KEY_STAKE_SCRIPT
          | typeof AddressType.ENTERPRISE_KEY
          | typeof AddressType.POINTER_KEY,
        spendingDataSource: SpendingDataSourcePath,
      |}
    | {|
        type:
          | typeof AddressType.BASE_PAYMENT_SCRIPT_STAKE_KEY
          | typeof AddressType.BASE_PAYMENT_SCRIPT_STAKE_SCRIPT
          | typeof AddressType.ENTERPRISE_SCRIPT
          | typeof AddressType.POINTER_SCRIPT,
        spendingDataSource: SpendingDataSourceScriptHash,
      |}
    | {|
        type: typeof AddressType.REWARD_KEY | typeof AddressType.REWARD_SCRIPT,
        spendingDataSource: SpendingDataSourceNone,
      |},
  ...
    | {|
        type:
          | typeof AddressType.BASE_PAYMENT_KEY_STAKE_KEY
          | typeof AddressType.BASE_PAYMENT_SCRIPT_STAKE_KEY
          | typeof AddressType.REWARD_KEY,
        stakingDataSource: StakingDataSourcePath | StakingDataSourceKeyHash,
      |}
    | {|
        type:
          | typeof AddressType.BASE_PAYMENT_KEY_STAKE_SCRIPT
          | typeof AddressType.BASE_PAYMENT_SCRIPT_STAKE_SCRIPT
          | typeof AddressType.REWARD_SCRIPT,
        stakingDataSource: StakingDataSourceScriptHash,
      |}
    | {|
        type:
          | typeof AddressType.ENTERPRISE_KEY
          | typeof AddressType.ENTERPRISE_SCRIPT,
        stakingDataSource: StakingDataSourceNone,
      |}
    | {|
        type:
          | typeof AddressType.POINTER_KEY
          | typeof AddressType.POINTER_SCRIPT,
        stakingDataSource: StakingDataSourcePointer,
      |},
|};
export type ParsedAddressParams = ByronAddressParams | ShelleyAddressParams;
export type ParsedOutputDestination =
  | {|
      type: typeof TxOutputDestinationType.THIRD_PARTY,
      addressHex: HexString,
    |}
  | {|
      type: typeof TxOutputDestinationType.DEVICE_OWNED,
      addressParams: ParsedAddressParams,
    |};
export type DatumHash = FixLenHexString<typeof DATUM_HASH_LENGTH>;
export type ParsedDatum =
  | {|
      type: typeof DatumType.HASH,
      datumHashHex: FixLenHexString<typeof DATUM_HASH_LENGTH>,
    |}
  | {|
      type: typeof DatumType.INLINE,
      datumHex: HexString,
    |};
export type ParsedOutput = {|
  format: $Values<typeof TxOutputFormat>,
  amount: Uint64_str,
  tokenBundle: ParsedAssetGroup<Uint64_str>[],
  destination: ParsedOutputDestination,
  datum: ParsedDatum | null,
  referenceScriptHex: HexString | null,
|};
declare export var ASSET_NAME_LENGTH_MAX: 32;
export type ParsedOperationalCertificate = {|
  kesPublicKeyHex: FixLenHexString<typeof KES_PUBLIC_KEY_LENGTH>,
  kesPeriod: Uint64_str,
  issueCounter: Uint64_str,
  coldKeyPath: ValidBIP32Path,
|};
export type ParsedMessageData = {|
  ...{|
    messageHex: HexString,
    signingPath: ValidBIP32Path,
    hashPayload: boolean,
    isAscii: boolean,
  |},
  ...
    | {|
        addressFieldType: typeof MessageAddressFieldType.ADDRESS,
        address: ParsedAddressParams,
      |}
    | {|
        addressFieldType: typeof MessageAddressFieldType.KEY_HASH,
      |},
|};
export type ParsedCVote = {|
  voteCastDataHex: HexString,
  witnessPath: ValidBIP32Path,
|};
declare export var NATIVE_SCRIPT_HASH_LENGTH: 28;
export type ParsedSimpleNativeScript =
  | {|
      type: typeof NativeScriptType.PUBKEY_DEVICE_OWNED,
      params: {|
        path: ValidBIP32Path,
      |},
    |}
  | {|
      type: typeof NativeScriptType.PUBKEY_THIRD_PARTY,
      params: {|
        keyHashHex: FixLenHexString<typeof KEY_HASH_LENGTH>,
      |},
    |}
  | {|
      type: typeof NativeScriptType.INVALID_BEFORE,
      params: {|
        slot: Uint64_str,
      |},
    |}
  | {|
      type: typeof NativeScriptType.INVALID_HEREAFTER,
      params: {|
        slot: Uint64_str,
      |},
    |};
export type ParsedComplexNativeScript =
  | {|
      type: typeof NativeScriptType.ALL | typeof NativeScriptType.ANY,
      params: {|
        scripts: ParsedNativeScript[],
      |},
    |}
  | {|
      type: typeof NativeScriptType.N_OF_K,
      params: {|
        requiredCount: Uint32_t,
        scripts: ParsedNativeScript[],
      |},
    |};
export type ParsedNativeScript =
  | ParsedSimpleNativeScript
  | ParsedComplexNativeScript;
