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

/**
 * @param {string} tx_hex
 * @param {JsVecString} resolved_utxos
 * @param {JsVecString} additional_txs
 * @param {string} network
 * @param {string} slot_config
 * @returns {WasmResult}
 */
declare export function js_evaluate_tx_scripts(
  tx_hex: string,
  resolved_utxos: JsVecString,
  additional_txs: JsVecString,
  network: string,
  slot_config: string
): WasmResult;

/**
 * @param {number} network_id
 * @param {string} script_hash
 * @param {string | void} stake_hash
 * @param {boolean} is_script_stake_key
 * @returns {string}
 */
declare export function wasm_script_to_address(
  network_id: number,
  script_hash: string,
  stake_hash: string | void,
  is_script_stake_key: boolean
): string;

/**
 * @param {string} script
 * @returns {string}
 */
declare export function get_v2_script_hash(script: string): string;

/**
 * @param {string} plutus_data_address_obj
 * @param {number} network_id
 * @returns {string}
 */
declare export function parse_plutus_address_obj_to_bech32(
  plutus_data_address_obj: string,
  network_id: number
): string;

/**
 * @param {string} bech32_addr
 * @returns {WasmDeserializedAddress}
 */
declare export function deserialize_bech32_address(
  bech32_addr: string
): WasmDeserializedAddress;

/**
 * ## WASM Transaction Prototype to Hex
 *
 * Convert a TransactionPrototype JSON to CBOR hex string
 *
 * ### Arguments
 *
 * * `tx_json` - The transaction prototype, serialized as JSON string
 *
 * ### Returns
 *
 * * `String` - the transaction CBOR hex
 * @param {string} tx_json
 * @returns {WasmResult}
 */
declare export function js_tx_prototype_to_hex(tx_json: string): WasmResult;

/**
 * ## WASM Transaction building method
 *
 * Serialize the transaction body
 *
 * ### Arguments
 *
 * * `tx_builder_body_json` - The transaction builder body information, serialized as JSON string
 * * `params_json` - Optional protocol parameters, default as Cardano mainnet configuration, serialized as JSON string
 *
 * ### Returns
 *
 * * `String` - the built transaction hex
 * @param {string} tx_builder_body_json
 * @param {string} params_json
 * @returns {WasmResult}
 */
declare export function js_serialize_tx_body(
  tx_builder_body_json: string,
  params_json: string
): WasmResult;

/**
 * @param {string} tx_hex
 * @returns {WasmResult}
 */
declare export function js_calculate_tx_hash(tx_hex: string): WasmResult;

/**
 * @param {string} tx_hex
 * @param {JsVecString} signing_keys
 * @returns {WasmResult}
 */
declare export function js_sign_transaction(
  tx_hex: string,
  signing_keys: JsVecString
): WasmResult;

/**
 * @param {string} tx_hex
 * @param {string} validation_context
 * @returns {string}
 */
declare export function js_validate_tx(
  tx_hex: string,
  validation_context: string
): string;

/**
 * @param {string} plutus_script
 * @param {JsVecString} params
 * @param {string} param_type
 * @returns {string}
 */
declare export function js_apply_params_to_script(
  plutus_script: string,
  params: JsVecString,
  param_type: string
): string;

/**
 * @param {string} tx_hex
 * @param {JsVecString} resolved_utxos
 * @returns {WasmResult}
 */
declare export function js_parse_tx_body(
  tx_hex: string,
  resolved_utxos: JsVecString
): WasmResult;

/**
 * @param {string} tx_hex
 * @returns {WasmResult}
 */
declare export function js_get_required_inputs_to_resolve(
  tx_hex: string
): WasmResult;

/**
 * @param {string} tx_hex
 * @returns {WasmResult}
 */
declare export function js_get_tx_outs_utxo(tx_hex: string): WasmResult;

/**
 * @param {string} cbor_hex
 * @returns {any}
 */
declare export function cbor_to_json(cbor_hex: string): any;

/**
 * @param {string} tx_hex
 * @param {string} validation_context
 * @returns {string}
 */
declare export function validate_transaction_js(
  tx_hex: string,
  validation_context: string
): string;

/**
 * @param {string} tx_hex
 * @returns {string}
 */
declare export function get_necessary_data_list_js(tx_hex: string): string;

/**
 * @param {string} hex_str
 * @returns {any}
 */
declare export function check_block_or_tx_signatures(hex_str: string): any;

/**
 * @param {string} hex
 * @returns {string}
 */
declare export function decode_plutus_program_pretty_uplc(hex: string): string;

/**
 * @param {string} hex
 * @returns {any}
 */
declare export function decode_plutus_program_uplc_json(hex: string): any;

/**
 * @param {string} tx_hex
 * @returns {(string)[]}
 */
declare export function get_utxo_list_from_tx(tx_hex: string): string[];

/**
 * @param {string} tx_hex
 * @param {any} utxo_json
 * @param {any} cost_models_json
 * @returns {any}
 */
declare export function execute_tx_scripts(
  tx_hex: string,
  utxo_json: any,
  cost_models_json: any
): any;

/**
 * @param {Redeemers} redeemers
 * @param {Costmdls} cost_models
 * @param {PlutusList | void} [datums]
 * @returns {ScriptDataHash}
 */
declare export function hash_script_data(
  redeemers: Redeemers,
  cost_models: Costmdls,
  datums?: PlutusList
): ScriptDataHash;

/**
 * returns minimal amount of ada for the output for case when the amount is included to the output
 * @param {TransactionOutput} output
 * @param {DataCost} data_cost
 * @returns {BigNum}
 */
declare export function min_ada_for_output(
  output: TransactionOutput,
  data_cost: DataCost
): BigNum;

/**
 * @param {TransactionHash} tx_body_hash
 * @param {ByronAddress} addr
 * @param {LegacyDaedalusPrivateKey} key
 * @returns {BootstrapWitness}
 */
declare export function make_daedalus_bootstrap_witness(
  tx_body_hash: TransactionHash,
  addr: ByronAddress,
  key: LegacyDaedalusPrivateKey
): BootstrapWitness;

/**
 * Returns the state of the transaction sets.
 * If all sets have a tag, it returns AllSetsHaveTag.
 * If all sets have no tag, it returns AllSetsHaveNoTag.
 * If there is a mix of tagged and untagged sets, it returns MixedSets.
 * This function is useful for checking if a transaction might be signed by a hardware wallet.
 * And for checking which parameter should be used in a hardware wallet api.
 * WARNING this function will be deleted after all tags for set types will be mandatory. Approx after next hf
 * @param {Uint8Array} tx_bytes
 * @returns {$Values<
                typeof 
                TransactionSetsState>}
 */
declare export function has_transaction_set_tag(
  tx_bytes: Uint8Array
): $Values<typeof TransactionSetsState>;

/**
 * Receives a script JSON string
 * and returns a NativeScript.
 * Cardano Wallet and Node styles are supported.
 * 
 * * wallet: https://github.com/input-output-hk/cardano-wallet/blob/master/specifications/api/swagger.yaml
 * * node: https://github.com/input-output-hk/cardano-node/blob/master/doc/reference/simple-scripts.md
 * 
 * self_xpub is expected to be a Bip32PublicKey as hex-encoded bytes
 * @param {string} json
 * @param {string} self_xpub
 * @param {$Values<
                typeof 
                ScriptSchema>} schema
 * @returns {NativeScript}
 */
declare export function encode_json_str_to_native_script(
  json: string,
  self_xpub: string,
  schema: $Values<typeof ScriptSchema>
): NativeScript;

/**
 * @param {TransactionBody} txbody
 * @param {BigNum} pool_deposit
 * @param {BigNum} key_deposit
 * @returns {Value}
 */
declare export function get_implicit_input(
  txbody: TransactionBody,
  pool_deposit: BigNum,
  key_deposit: BigNum
): Value;

/**
 * @param {PlutusData} plutus_data
 * @returns {DataHash}
 */
declare export function hash_plutus_data(plutus_data: PlutusData): DataHash;

/**
 * @param {TransactionHash} tx_body_hash
 * @param {PrivateKey} sk
 * @returns {Vkeywitness}
 */
declare export function make_vkey_witness(
  tx_body_hash: TransactionHash,
  sk: PrivateKey
): Vkeywitness;

/**
 * @param {TransactionBody} txbody
 * @param {BigNum} pool_deposit
 * @param {BigNum} key_deposit
 * @returns {BigNum}
 */
declare export function get_deposit(
  txbody: TransactionBody,
  pool_deposit: BigNum,
  key_deposit: BigNum
): BigNum;

/**
 * @param {AuxiliaryData} auxiliary_data
 * @returns {AuxiliaryDataHash}
 */
declare export function hash_auxiliary_data(
  auxiliary_data: AuxiliaryData
): AuxiliaryDataHash;

/**
 * @param {TransactionHash} tx_body_hash
 * @param {ByronAddress} addr
 * @param {Bip32PrivateKey} key
 * @returns {BootstrapWitness}
 */
declare export function make_icarus_bootstrap_witness(
  tx_body_hash: TransactionHash,
  addr: ByronAddress,
  key: Bip32PrivateKey
): BootstrapWitness;

/**
 * @param {Transaction} tx
 * @param {LinearFee} linear_fee
 * @returns {BigNum}
 */
declare export function min_fee(tx: Transaction, linear_fee: LinearFee): BigNum;

/**
 * @param {ExUnits} ex_units
 * @param {ExUnitPrices} ex_unit_prices
 * @returns {BigNum}
 */
declare export function calculate_ex_units_ceil_cost(
  ex_units: ExUnits,
  ex_unit_prices: ExUnitPrices
): BigNum;

/**
 * @param {Transaction} tx
 * @param {ExUnitPrices} ex_unit_prices
 * @returns {BigNum}
 */
declare export function min_script_fee(
  tx: Transaction,
  ex_unit_prices: ExUnitPrices
): BigNum;

/**
 * @param {number} total_ref_scripts_size
 * @param {UnitInterval} ref_script_coins_per_byte
 * @returns {BigNum}
 */
declare export function min_ref_script_fee(
  total_ref_scripts_size: number,
  ref_script_coins_per_byte: UnitInterval
): BigNum;

/**
 * @param {string} password
 * @param {string} salt
 * @param {string} nonce
 * @param {string} data
 * @returns {string}
 */
declare export function encrypt_with_password(
  password: string,
  salt: string,
  nonce: string,
  data: string
): string;

/**
 * @param {string} password
 * @param {string} data
 * @returns {string}
 */
declare export function decrypt_with_password(
  password: string,
  data: string
): string;

/**
 * @param {PlutusData} datum
 * @param {$Values<
                typeof 
                PlutusDatumSchema>} schema
 * @returns {string}
 */
declare export function decode_plutus_datum_to_json_str(
  datum: PlutusData,
  schema: $Values<typeof PlutusDatumSchema>
): string;

/**
 * @param {string} json
 * @param {$Values<
                typeof 
                PlutusDatumSchema>} schema
 * @returns {PlutusData}
 */
declare export function encode_json_str_to_plutus_datum(
  json: string,
  schema: $Values<typeof PlutusDatumSchema>
): PlutusData;

/**
 * @param {Address} address
 * @param {TransactionUnspentOutputs} utxos
 * @param {TransactionBuilderConfig} config
 * @returns {TransactionBatchList}
 */
declare export function create_send_all(
  address: Address,
  utxos: TransactionUnspentOutputs,
  config: TransactionBuilderConfig
): TransactionBatchList;

/**
 * @param {TransactionMetadatum} metadatum
 * @param {$Values<
                typeof 
                MetadataJsonSchema>} schema
 * @returns {string}
 */
declare export function decode_metadatum_to_json_str(
  metadatum: TransactionMetadatum,
  schema: $Values<typeof MetadataJsonSchema>
): string;

/**
 * @param {TransactionMetadatum} metadata
 * @returns {Uint8Array}
 */
declare export function decode_arbitrary_bytes_from_metadatum(
  metadata: TransactionMetadatum
): Uint8Array;

/**
 * @param {string} json
 * @param {$Values<
                typeof 
                MetadataJsonSchema>} schema
 * @returns {TransactionMetadatum}
 */
declare export function encode_json_str_to_metadatum(
  json: string,
  schema: $Values<typeof MetadataJsonSchema>
): TransactionMetadatum;

/**
 * @param {Uint8Array} bytes
 * @returns {TransactionMetadatum}
 */
declare export function encode_arbitrary_bytes_as_metadatum(
  bytes: Uint8Array
): TransactionMetadatum;

/**
 * @param {string} input
 * @returns {(string)[]}
 */
declare export function get_possible_types_for_input(input: string): string[];

/**
 * @returns {(string)[]}
 */
declare export function get_decodable_types(): string[];

/**
 * @param {string} input
 * @param {string} type_name
 * @param {any} params_json
 * @returns {any}
 */
declare export function decode_specific_type(
  input: string,
  type_name: string,
  params_json: any
): any;

/**
 */

declare export var TransactionMetadatumKind: {|
  +MetadataMap: 0, // 0
  +MetadataList: 1, // 1
  +Int: 2, // 2
  +Bytes: 3, // 3
  +Text: 4, // 4
|};

/**
 */

declare export var VoteKind: {|
  +No: 0, // 0
  +Yes: 1, // 1
  +Abstain: 2, // 2
|};

/**
 */

declare export var CredKind: {|
  +Key: 0, // 0
  +Script: 1, // 1
|};

/**
 */

declare export var MIRPot: {|
  +Reserves: 0, // 0
  +Treasury: 1, // 1
|};

/**
 */

declare export var BlockEra: {|
  +Byron: 0, // 0
  +Shelley: 1, // 1
  +Allegra: 2, // 2
  +Mary: 3, // 3
  +Alonzo: 4, // 4
  +Babbage: 5, // 5
  +Conway: 6, // 6
  +Unknown: 7, // 7
|};

/**
 */

declare export var MetadataJsonSchema: {|
  +NoConversions: 0, // 0
  +BasicConversions: 1, // 1
  +DetailedSchema: 2, // 2
|};

/**
 */

declare export var CoinSelectionStrategyCIP2: {|
  +LargestFirst: 0, // 0
  +RandomImprove: 1, // 1
  +LargestFirstMultiAsset: 2, // 2
  +RandomImproveMultiAsset: 3, // 3
|};

/**
 */

declare export var RelayKind: {|
  +SingleHostAddr: 0, // 0
  +SingleHostName: 1, // 1
  +MultiHostName: 2, // 2
|};

/**
 */

declare export var DRepKind: {|
  +KeyHash: 0, // 0
  +ScriptHash: 1, // 1
  +AlwaysAbstain: 2, // 2
  +AlwaysNoConfidence: 3, // 3
|};

/**
 * Used to choosed the schema for a script JSON string
 */

declare export var ScriptSchema: {|
  +Wallet: 0, // 0
  +Node: 1, // 1
|};

/**
 */

declare export var PlutusDataKind: {|
  +ConstrPlutusData: 0, // 0
  +Map: 1, // 1
  +List: 2, // 2
  +Integer: 3, // 3
  +Bytes: 4, // 4
|};

/**
 */

declare export var ByronAddressType: {|
  +ATPubKey: 0, // 0
  +ATScript: 1, // 1
  +ATRedeem: 2, // 2
|};

/**
 */

declare export var NativeScriptKind: {|
  +ScriptPubkey: 0, // 0
  +ScriptAll: 1, // 1
  +ScriptAny: 2, // 2
  +ScriptNOfK: 3, // 3
  +TimelockStart: 4, // 4
  +TimelockExpiry: 5, // 5
|};

/**
 */

declare export var AddressKind: {|
  +Base: 0, // 0
  +Pointer: 1, // 1
  +Enterprise: 2, // 2
  +Reward: 3, // 3
  +Byron: 4, // 4
  +Malformed: 5, // 5
|};

/**
 */

declare export var CborContainerType: {|
  +Array: 0, // 0
  +Map: 1, // 1
|};

/**
 */

declare export var CborSetType: {|
  +Tagged: 0, // 0
  +Untagged: 1, // 1
|};

/**
 */

declare export var GovernanceActionKind: {|
  +ParameterChangeAction: 0, // 0
  +HardForkInitiationAction: 1, // 1
  +TreasuryWithdrawalsAction: 2, // 2
  +NoConfidenceAction: 3, // 3
  +UpdateCommitteeAction: 4, // 4
  +NewConstitutionAction: 5, // 5
  +InfoAction: 6, // 6
|};

/**
 */

declare export var CertificateKind: {|
  +StakeRegistration: 0, // 0
  +StakeDeregistration: 1, // 1
  +StakeDelegation: 2, // 2
  +PoolRegistration: 3, // 3
  +PoolRetirement: 4, // 4
  +GenesisKeyDelegation: 5, // 5
  +MoveInstantaneousRewardsCert: 6, // 6
  +CommitteeHotAuth: 7, // 7
  +CommitteeColdResign: 8, // 8
  +DRepDeregistration: 9, // 9
  +DRepRegistration: 10, // 10
  +DRepUpdate: 11, // 11
  +StakeAndVoteDelegation: 12, // 12
  +StakeRegistrationAndDelegation: 13, // 13
  +StakeVoteRegistrationAndDelegation: 14, // 14
  +VoteDelegation: 15, // 15
  +VoteRegistrationAndDelegation: 16, // 16
|};

/**
 */

declare export var LanguageKind: {|
  +PlutusV1: 0, // 0
  +PlutusV2: 1, // 1
  +PlutusV3: 2, // 2
|};

/**
 * JSON <-> PlutusData conversion schemas.
 * Follows ScriptDataJsonSchema in cardano-cli defined at:
 * https://github.com/input-output-hk/cardano-node/blob/master/cardano-api/src/Cardano/Api/ScriptData.hs#L254
 *
 * All methods here have the following restrictions due to limitations on dependencies:
 * * JSON numbers above u64::MAX (positive) or below i64::MIN (negative) will throw errors
 * * Hex strings for bytes don't accept odd-length (half-byte) strings.
 *      cardano-cli seems to support these however but it seems to be different than just 0-padding
 *      on either side when tested so proceed with caution
 */

declare export var PlutusDatumSchema: {|
  +BasicConversions: 0, // 0
  +DetailedSchema: 1, // 1
|};

/**
 */

declare export var NetworkIdKind: {|
  +Testnet: 0, // 0
  +Mainnet: 1, // 1
|};

/**
 */

declare export var RedeemerTagKind: {|
  +Spend: 0, // 0
  +Mint: 1, // 1
  +Cert: 2, // 2
  +Reward: 3, // 3
  +Vote: 4, // 4
  +VotingProposal: 5, // 5
|};

/**
 */

declare export var VoterKind: {|
  +ConstitutionalCommitteeHotKeyHash: 0, // 0
  +ConstitutionalCommitteeHotScriptHash: 1, // 1
  +DRepKeyHash: 2, // 2
  +DRepScriptHash: 3, // 3
  +StakingPoolKeyHash: 4, // 4
|};

/**
 * Each new language uses a different namespace for hashing its script
 * This is because you could have a language where the same bytes have different semantics
 * So this avoids scripts in different languages mapping to the same hash
 * Note that the enum value here is different than the enum value for deciding the cost model of a script
 */

declare export var ScriptHashNamespace: {|
  +NativeScript: 0, // 0
  +PlutusScript: 1, // 1
  +PlutusScriptV2: 2, // 2
  +PlutusScriptV3: 3, // 3
|};

/**
 */

declare export var MIRKind: {|
  +ToOtherPot: 0, // 0
  +ToStakeCredentials: 1, // 1
|};

/**
 */

declare export var TransactionSetsState: {|
  +AllSetsHaveTag: 0, // 0
  +AllSetsHaveNoTag: 1, // 1
  +MixedSets: 2, // 2
|};

/**
 */
declare export class Address {
  free(): void;

  /**
   * @param {Uint8Array} data
   * @returns {Address}
   */
  static from_bytes(data: Uint8Array): Address;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @param {string} bech_str
   * @returns {Address}
   */
  static from_bech32(bech_str: string): Address;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {boolean}
   */
  is_malformed(): boolean;

  /**
   * @returns {Credential | void}
   */
  payment_cred(): Credential | void;

  /**
 * @returns {$Values<
                typeof 
                AddressKind>}
 */
  kind(): $Values<typeof AddressKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Address}
   */
  static from_hex(hex_str: string): Address;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Address}
   */
  static from_json(json: string): Address;

  /**
   * @param {string | void} [prefix]
   * @returns {string}
   */
  to_bech32(prefix?: string): string;
}
/**
 */
declare export class Anchor {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Anchor}
   */
  static from_bytes(bytes: Uint8Array): Anchor;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {AnchorDataHash}
   */
  anchor_data_hash(): AnchorDataHash;

  /**
   * @param {URL} anchor_url
   * @param {AnchorDataHash} anchor_data_hash
   * @returns {Anchor}
   */
  static new(anchor_url: URL, anchor_data_hash: AnchorDataHash): Anchor;

  /**
   * @returns {URL}
   */
  url(): URL;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Anchor}
   */
  static from_hex(hex_str: string): Anchor;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Anchor}
   */
  static from_json(json: string): Anchor;
}
/**
 */
declare export class AnchorDataHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {AnchorDataHash}
   */
  static from_bytes(bytes: Uint8Array): AnchorDataHash;

  /**
   * @param {string} bech_str
   * @returns {AnchorDataHash}
   */
  static from_bech32(bech_str: string): AnchorDataHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {AnchorDataHash}
   */
  static from_hex(hex: string): AnchorDataHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class AssetName {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {AssetName}
   */
  static from_bytes(bytes: Uint8Array): AssetName;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Uint8Array} name
   * @returns {AssetName}
   */
  static new(name: Uint8Array): AssetName;

  /**
   * @returns {Uint8Array}
   */
  name(): Uint8Array;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {AssetName}
   */
  static from_hex(hex_str: string): AssetName;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {AssetName}
   */
  static from_json(json: string): AssetName;
}
/**
 */
declare export class AssetNames {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {AssetNames}
   */
  static from_bytes(bytes: Uint8Array): AssetNames;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {AssetName} elem
   */
  add(elem: AssetName): void;

  /**
   * @param {number} index
   * @returns {AssetName}
   */
  get(index: number): AssetName;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {AssetNames}
   */
  static new(): AssetNames;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {AssetNames}
   */
  static from_hex(hex_str: string): AssetNames;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {AssetNames}
   */
  static from_json(json: string): AssetNames;
}
/**
 */
declare export class Assets {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Assets}
   */
  static from_bytes(bytes: Uint8Array): Assets;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {AssetName} key
   * @returns {BigNum | void}
   */
  get(key: AssetName): BigNum | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Assets}
   */
  static new(): Assets;

  /**
   * @returns {AssetNames}
   */
  keys(): AssetNames;

  /**
   * @param {AssetName} key
   * @param {BigNum} value
   * @returns {BigNum | void}
   */
  insert(key: AssetName, value: BigNum): BigNum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Assets}
   */
  static from_hex(hex_str: string): Assets;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Assets}
   */
  static from_json(json: string): Assets;
}
/**
 */
declare export class AuxiliaryData {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {AuxiliaryData}
   */
  static from_bytes(bytes: Uint8Array): AuxiliaryData;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {GeneralTransactionMetadata} metadata
   */
  set_metadata(metadata: GeneralTransactionMetadata): void;

  /**
   * @returns {NativeScripts | void}
   */
  native_scripts(): NativeScripts | void;

  /**
   * @returns {PlutusScripts | void}
   */
  plutus_scripts(): PlutusScripts | void;

  /**
   * @param {NativeScripts} native_scripts
   */
  set_native_scripts(native_scripts: NativeScripts): void;

  /**
   * @param {PlutusScripts} plutus_scripts
   */
  set_plutus_scripts(plutus_scripts: PlutusScripts): void;

  /**
   * @returns {boolean}
   */
  prefer_alonzo_format(): boolean;

  /**
   * @param {boolean} prefer
   */
  set_prefer_alonzo_format(prefer: boolean): void;

  /**
   * @returns {AuxiliaryData}
   */
  static new(): AuxiliaryData;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {AuxiliaryData}
   */
  static from_hex(hex_str: string): AuxiliaryData;

  /**
   * @returns {GeneralTransactionMetadata | void}
   */
  metadata(): GeneralTransactionMetadata | void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {AuxiliaryData}
   */
  static from_json(json: string): AuxiliaryData;
}
/**
 */
declare export class AuxiliaryDataHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {AuxiliaryDataHash}
   */
  static from_bytes(bytes: Uint8Array): AuxiliaryDataHash;

  /**
   * @param {string} bech_str
   * @returns {AuxiliaryDataHash}
   */
  static from_bech32(bech_str: string): AuxiliaryDataHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {AuxiliaryDataHash}
   */
  static from_hex(hex: string): AuxiliaryDataHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class AuxiliaryDataSet {
  free(): void;

  /**
   * @param {number} tx_index
   * @returns {AuxiliaryData | void}
   */
  get(tx_index: number): AuxiliaryData | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {AuxiliaryDataSet}
   */
  static new(): AuxiliaryDataSet;

  /**
   * @param {number} tx_index
   * @param {AuxiliaryData} data
   * @returns {AuxiliaryData | void}
   */
  insert(tx_index: number, data: AuxiliaryData): AuxiliaryData | void;

  /**
   * @returns {Uint32Array}
   */
  indices(): Uint32Array;
}
/**
 */
declare export class BaseAddress {
  free(): void;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @returns {Credential}
   */
  stake_cred(): Credential;

  /**
   * @returns {Address}
   */
  to_address(): Address;

  /**
   * @param {Address} addr
   * @returns {BaseAddress | void}
   */
  static from_address(addr: Address): BaseAddress | void;

  /**
   * @returns {Credential}
   */
  payment_cred(): Credential;

  /**
   * @param {number} network
   * @param {Credential} payment
   * @param {Credential} stake
   * @returns {BaseAddress}
   */
  static new(
    network: number,
    payment: Credential,
    stake: Credential
  ): BaseAddress;
}
/**
 */
declare export class BigInt {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {BigInt}
   */
  static from_bytes(bytes: Uint8Array): BigInt;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {BigInt}
   */
  abs(): BigInt;

  /**
   * @param {BigInt} other
   * @returns {BigInt}
   */
  add(other: BigInt): BigInt;

  /**
   * @param {BigInt} other
   * @returns {BigInt}
   */
  mul(other: BigInt): BigInt;

  /**
   * @returns {BigInt}
   */
  static one(): BigInt;

  /**
   * @param {number} exp
   * @returns {BigInt}
   */
  pow(exp: number): BigInt;

  /**
   * @param {BigInt} other
   * @returns {BigInt}
   */
  sub(other: BigInt): BigInt;

  /**
   * @returns {BigInt}
   */
  static zero(): BigInt;

  /**
   * @returns {Int | void}
   */
  as_int(): Int | void;

  /**
   * @returns {BigNum | void}
   */
  as_u64(): BigNum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_str(): string;

  /**
   * @returns {boolean}
   */
  is_zero(): boolean;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {BigInt} other
   * @returns {BigInt}
   */
  div_ceil(other: BigInt): BigInt;

  /**
   * @param {string} hex_str
   * @returns {BigInt}
   */
  static from_hex(hex_str: string): BigInt;

  /**
   * @param {string} text
   * @returns {BigInt}
   */
  static from_str(text: string): BigInt;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {BigInt} other
   * @returns {BigInt}
   */
  div_floor(other: BigInt): BigInt;

  /**
   * @param {string} json
   * @returns {BigInt}
   */
  static from_json(json: string): BigInt;

  /**
   * @returns {BigInt}
   */
  increment(): BigInt;
}
/**
 */
declare export class BigNum {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {BigNum}
   */
  static from_bytes(bytes: Uint8Array): BigNum;

  /**
   * @param {BigNum} other
   * @returns {BigNum}
   */
  checked_add(other: BigNum): BigNum;

  /**
   * @param {BigNum} other
   * @returns {BigNum}
   */
  checked_mul(other: BigNum): BigNum;

  /**
   * @param {BigNum} other
   * @returns {BigNum}
   */
  checked_sub(other: BigNum): BigNum;

  /**
   * returns 0 if it would otherwise underflow
   * @param {BigNum} other
   * @returns {BigNum}
   */
  clamped_sub(other: BigNum): BigNum;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {BigNum} a
   * @param {BigNum} b
   * @returns {BigNum}
   */
  static max(a: BigNum, b: BigNum): BigNum;

  /**
   * @returns {BigNum}
   */
  static one(): BigNum;

  /**
   * @returns {BigNum}
   */
  static zero(): BigNum;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_str(): string;

  /**
   * @param {BigNum} rhs_value
   * @returns {number}
   */
  compare(rhs_value: BigNum): number;

  /**
   * @returns {boolean}
   */
  is_zero(): boolean;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {BigNum}
   */
  static from_hex(hex_str: string): BigNum;

  /**
   * @param {string} string
   * @returns {BigNum}
   */
  static from_str(string: string): BigNum;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {BigNum} other
   * @returns {BigNum}
   */
  div_floor(other: BigNum): BigNum;

  /**
   * @param {string} json
   * @returns {BigNum}
   */
  static from_json(json: string): BigNum;

  /**
   * @param {BigNum} rhs_value
   * @returns {boolean}
   */
  less_than(rhs_value: BigNum): boolean;

  /**
   * @returns {BigNum}
   */
  static max_value(): BigNum;
}
/**
 */
declare export class Bip32PrivateKey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Bip32PrivateKey}
   */
  static from_bytes(bytes: Uint8Array): Bip32PrivateKey;

  /**
   * @returns {PrivateKey}
   */
  to_raw_key(): PrivateKey;

  /**
   * @param {string} bech32_str
   * @returns {Bip32PrivateKey}
   */
  static from_bech32(bech32_str: string): Bip32PrivateKey;

  /**
   * see from_128_xprv
   * @returns {Uint8Array}
   */
  to_128_xprv(): Uint8Array;

  /**
   * 128-byte xprv a key format in Cardano that some software still uses or requires
   * the traditional 96-byte xprv is simply encoded as
   * prv | chaincode
   * however, because some software may not know how to compute a public key from a private key,
   * the 128-byte inlines the public key in the following format
   * prv | pub | chaincode
   * so be careful if you see the term "xprv" as it could refer to either one
   * our library does not require the pub (instead we compute the pub key when needed)
   * @param {Uint8Array} bytes
   * @returns {Bip32PrivateKey}
   */
  static from_128_xprv(bytes: Uint8Array): Bip32PrivateKey;

  /**
   * @param {Uint8Array} entropy
   * @param {Uint8Array} password
   * @returns {Bip32PrivateKey}
   */
  static from_bip39_entropy(
    entropy: Uint8Array,
    password: Uint8Array
  ): Bip32PrivateKey;

  /**
   * @returns {Bip32PrivateKey}
   */
  static generate_ed25519_bip32(): Bip32PrivateKey;

  /**
   * derive this private key with the given index.
   *
   * # Security considerations
   *
   * * hard derivation index cannot be soft derived with the public key
   *
   * # Hard derivation vs Soft derivation
   *
   * If you pass an index below 0x80000000 then it is a soft derivation.
   * The advantage of soft derivation is that it is possible to derive the
   * public key too. I.e. derivation the private key with a soft derivation
   * index and then retrieving the associated public key is equivalent to
   * deriving the public key associated to the parent private key.
   *
   * Hard derivation index does not allow public key derivation.
   *
   * This is why deriving the private key should not fail while deriving
   * the public key may fail (if the derivation index is invalid).
   * @param {number} index
   * @returns {Bip32PrivateKey}
   */
  derive(index: number): Bip32PrivateKey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @param {string} hex_str
   * @returns {Bip32PrivateKey}
   */
  static from_hex(hex_str: string): Bip32PrivateKey;

  /**
   * @returns {Uint8Array}
   */
  chaincode(): Uint8Array;

  /**
   * @returns {string}
   */
  to_bech32(): string;

  /**
   * @returns {Bip32PublicKey}
   */
  to_public(): Bip32PublicKey;
}
/**
 */
declare export class Bip32PublicKey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Bip32PublicKey}
   */
  static from_bytes(bytes: Uint8Array): Bip32PublicKey;

  /**
   * @returns {PublicKey}
   */
  to_raw_key(): PublicKey;

  /**
   * @param {string} bech32_str
   * @returns {Bip32PublicKey}
   */
  static from_bech32(bech32_str: string): Bip32PublicKey;

  /**
   * derive this public key with the given index.
   *
   * # Errors
   *
   * If the index is not a soft derivation index (< 0x80000000) then
   * calling this method will fail.
   *
   * # Security considerations
   *
   * * hard derivation index cannot be soft derived with the public key
   *
   * # Hard derivation vs Soft derivation
   *
   * If you pass an index below 0x80000000 then it is a soft derivation.
   * The advantage of soft derivation is that it is possible to derive the
   * public key too. I.e. derivation the private key with a soft derivation
   * index and then retrieving the associated public key is equivalent to
   * deriving the public key associated to the parent private key.
   *
   * Hard derivation index does not allow public key derivation.
   *
   * This is why deriving the private key should not fail while deriving
   * the public key may fail (if the derivation index is invalid).
   * @param {number} index
   * @returns {Bip32PublicKey}
   */
  derive(index: number): Bip32PublicKey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @param {string} hex_str
   * @returns {Bip32PublicKey}
   */
  static from_hex(hex_str: string): Bip32PublicKey;

  /**
   * @returns {Uint8Array}
   */
  chaincode(): Uint8Array;

  /**
   * @returns {string}
   */
  to_bech32(): string;
}
/**
 */
declare export class Block {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Block}
   */
  static from_bytes(bytes: Uint8Array): Block;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {AuxiliaryDataSet}
   */
  auxiliary_data_set(): AuxiliaryDataSet;

  /**
   * @returns {TransactionBodies}
   */
  transaction_bodies(): TransactionBodies;

  /**
   * @returns {Uint32Array}
   */
  invalid_transactions(): Uint32Array;

  /**
   * @returns {TransactionWitnessSets}
   */
  transaction_witness_sets(): TransactionWitnessSets;

  /**
   * @param {Header} header
   * @param {TransactionBodies} transaction_bodies
   * @param {TransactionWitnessSets} transaction_witness_sets
   * @param {AuxiliaryDataSet} auxiliary_data_set
   * @param {Uint32Array} invalid_transactions
   * @returns {Block}
   */
  static new(
    header: Header,
    transaction_bodies: TransactionBodies,
    transaction_witness_sets: TransactionWitnessSets,
    auxiliary_data_set: AuxiliaryDataSet,
    invalid_transactions: Uint32Array
  ): Block;

  /**
   * @returns {Header}
   */
  header(): Header;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Block}
   */
  static from_hex(hex_str: string): Block;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Block}
   */
  static from_json(json: string): Block;
}
/**
 */
declare export class BlockHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {BlockHash}
   */
  static from_bytes(bytes: Uint8Array): BlockHash;

  /**
   * @param {string} bech_str
   * @returns {BlockHash}
   */
  static from_bech32(bech_str: string): BlockHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {BlockHash}
   */
  static from_hex(hex: string): BlockHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class BootstrapWitness {
  free(): void;

  /**
   * @returns {Uint8Array}
   */
  attributes(): Uint8Array;

  /**
   * @returns {Uint8Array}
   */
  chain_code(): Uint8Array;

  /**
   * @param {Uint8Array} bytes
   * @returns {BootstrapWitness}
   */
  static from_bytes(bytes: Uint8Array): BootstrapWitness;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Vkey} vkey
   * @param {Ed25519Signature} signature
   * @param {Uint8Array} chain_code
   * @param {Uint8Array} attributes
   * @returns {BootstrapWitness}
   */
  static new(
    vkey: Vkey,
    signature: Ed25519Signature,
    chain_code: Uint8Array,
    attributes: Uint8Array
  ): BootstrapWitness;

  /**
   * @returns {Vkey}
   */
  vkey(): Vkey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {BootstrapWitness}
   */
  static from_hex(hex_str: string): BootstrapWitness;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {BootstrapWitness}
   */
  static from_json(json: string): BootstrapWitness;

  /**
   * @returns {Ed25519Signature}
   */
  signature(): Ed25519Signature;
}
/**
 */
declare export class BootstrapWitnesses {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {BootstrapWitnesses}
   */
  static from_bytes(bytes: Uint8Array): BootstrapWitnesses;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `BootstrapWitness` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {BootstrapWitness} witness
   * @returns {boolean}
   */
  add(witness: BootstrapWitness): boolean;

  /**
   * @param {number} index
   * @returns {BootstrapWitness}
   */
  get(index: number): BootstrapWitness;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {BootstrapWitnesses}
   */
  static new(): BootstrapWitnesses;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {BootstrapWitnesses}
   */
  static from_hex(hex_str: string): BootstrapWitnesses;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {BootstrapWitnesses}
   */
  static from_json(json: string): BootstrapWitnesses;
}
/**
 */
declare export class ByronAddress {
  free(): void;

  /**
   * @returns {Uint8Array}
   */
  attributes(): Uint8Array;

  /**
   * @param {Uint8Array} bytes
   * @returns {ByronAddress}
   */
  static from_bytes(bytes: Uint8Array): ByronAddress;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @returns {Address}
   */
  to_address(): Address;

  /**
   * @param {string} s
   * @returns {ByronAddress}
   */
  static from_base58(s: string): ByronAddress;

  /**
   * @param {Address} addr
   * @returns {ByronAddress | void}
   */
  static from_address(addr: Address): ByronAddress | void;

  /**
   * @param {Bip32PublicKey} key
   * @param {number} protocol_magic
   * @returns {ByronAddress}
   */
  static icarus_from_key(
    key: Bip32PublicKey,
    protocol_magic: number
  ): ByronAddress;

  /**
 * @returns {$Values<
                typeof 
                ByronAddressType>}
 */
  byron_address_kind(): $Values<typeof ByronAddressType>;

  /**
   * returns the byron protocol magic embedded in the address, or mainnet id if none is present
   * note: for bech32 addresses, you need to use network_id instead
   * @returns {number}
   */
  byron_protocol_magic(): number;

  /**
   * @param {string} s
   * @returns {boolean}
   */
  static is_valid(s: string): boolean;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @returns {string}
   */
  to_base58(): string;
}
/**
 */
declare export class Certificate {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Certificate}
   */
  static from_bytes(bytes: Uint8Array): Certificate;

  /**
   * Since StakeRegistration can represent stake_registration certificate or reg_cert certificate, because both certificates have the same semantics.
   * And in some cases you want to get a reg_cert, this function is used to get a reg_cert.
   * The function will return None if StakeRegistration represents a stake_registration certificate or Certificate is not a StakeRegistration.
   * @returns {StakeRegistration | void}
   */
  as_reg_cert(): StakeRegistration | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Since StakeRegistration can represent stake_registration certificate or reg_cert certificate, because both certificates have the same semantics.
   * And in some cases you want to create a reg_cert, this function is used to create a reg_cert.
   * The function will return an error if StakeRegistration represents a stake_registration certificate.
   * @param {StakeRegistration} stake_registration
   * @returns {Certificate}
   */
  static new_reg_cert(stake_registration: StakeRegistration): Certificate;

  /**
   * Since StakeDeregistration can represent stake_deregistration certificate or unreg_cert certificate, because both certificates have the same semantics.
   * And in some cases you want to get an unreg_cert, this function is used to get an unreg_cert.
   * The function will return None if StakeDeregistration represents a stake_deregistration certificate or Certificate is not a StakeDeregistration.
   * @returns {StakeDeregistration | void}
   */
  as_unreg_cert(): StakeDeregistration | void;

  /**
   * @returns {DRepUpdate | void}
   */
  as_drep_update(): DRepUpdate | void;

  /**
   * Since StakeDeregistration can represent stake_deregistration certificate or unreg_cert certificate, because both certificates have the same semantics.
   * And in some cases you want to create an unreg_cert, this function is used to create an unreg_cert.
   * The function will return an error if StakeDeregistration represents a stake_deregistration certificate.
   * @param {StakeDeregistration} stake_deregistration
   * @returns {Certificate}
   */
  static new_unreg_cert(stake_deregistration: StakeDeregistration): Certificate;

  /**
   * @param {DRepUpdate} drep_update
   * @returns {Certificate}
   */
  static new_drep_update(drep_update: DRepUpdate): Certificate;

  /**
   * @returns {PoolRetirement | void}
   */
  as_pool_retirement(): PoolRetirement | void;

  /**
   * @returns {VoteDelegation | void}
   */
  as_vote_delegation(): VoteDelegation | void;

  /**
   * @returns {StakeDelegation | void}
   */
  as_stake_delegation(): StakeDelegation | void;

  /**
   * @param {PoolRetirement} pool_retirement
   * @returns {Certificate}
   */
  static new_pool_retirement(pool_retirement: PoolRetirement): Certificate;

  /**
   * @param {VoteDelegation} vote_delegation
   * @returns {Certificate}
   */
  static new_vote_delegation(vote_delegation: VoteDelegation): Certificate;

  /**
   * @returns {DRepRegistration | void}
   */
  as_drep_registration(): DRepRegistration | void;

  /**
   * @returns {PoolRegistration | void}
   */
  as_pool_registration(): PoolRegistration | void;

  /**
   * @param {StakeDelegation} stake_delegation
   * @returns {Certificate}
   */
  static new_stake_delegation(stake_delegation: StakeDelegation): Certificate;

  /**
   * @returns {CommitteeHotAuth | void}
   */
  as_committee_hot_auth(): CommitteeHotAuth | void;

  /**
   * @returns {StakeRegistration | void}
   */
  as_stake_registration(): StakeRegistration | void;

  /**
   * @param {DRepRegistration} drep_registration
   * @returns {Certificate}
   */
  static new_drep_registration(
    drep_registration: DRepRegistration
  ): Certificate;

  /**
   * @param {PoolRegistration} pool_registration
   * @returns {Certificate}
   */
  static new_pool_registration(
    pool_registration: PoolRegistration
  ): Certificate;

  /**
   * @returns {DRepDeregistration | void}
   */
  as_drep_deregistration(): DRepDeregistration | void;

  /**
   * @param {CommitteeHotAuth} committee_hot_auth
   * @returns {Certificate}
   */
  static new_committee_hot_auth(
    committee_hot_auth: CommitteeHotAuth
  ): Certificate;

  /**
   * @param {StakeRegistration} stake_registration
   * @returns {Certificate}
   */
  static new_stake_registration(
    stake_registration: StakeRegistration
  ): Certificate;

  /**
   * @returns {StakeDeregistration | void}
   */
  as_stake_deregistration(): StakeDeregistration | void;

  /**
   * @param {DRepDeregistration} drep_deregistration
   * @returns {Certificate}
   */
  static new_drep_deregistration(
    drep_deregistration: DRepDeregistration
  ): Certificate;

  /**
   * @returns {CommitteeColdResign | void}
   */
  as_committee_cold_resign(): CommitteeColdResign | void;

  /**
   * @param {StakeDeregistration} stake_deregistration
   * @returns {Certificate}
   */
  static new_stake_deregistration(
    stake_deregistration: StakeDeregistration
  ): Certificate;

  /**
   * @returns {GenesisKeyDelegation | void}
   */
  as_genesis_key_delegation(): GenesisKeyDelegation | void;

  /**
   * @param {CommitteeColdResign} committee_cold_resign
   * @returns {Certificate}
   */
  static new_committee_cold_resign(
    committee_cold_resign: CommitteeColdResign
  ): Certificate;

  /**
   * @param {GenesisKeyDelegation} genesis_key_delegation
   * @returns {Certificate}
   */
  static new_genesis_key_delegation(
    genesis_key_delegation: GenesisKeyDelegation
  ): Certificate;

  /**
   * @returns {boolean}
   */
  has_required_script_witness(): boolean;

  /**
   * @returns {StakeAndVoteDelegation | void}
   */
  as_stake_and_vote_delegation(): StakeAndVoteDelegation | void;

  /**
   * @param {StakeAndVoteDelegation} stake_and_vote_delegation
   * @returns {Certificate}
   */
  static new_stake_and_vote_delegation(
    stake_and_vote_delegation: StakeAndVoteDelegation
  ): Certificate;

  /**
   * @returns {MoveInstantaneousRewardsCert | void}
   */
  as_move_instantaneous_rewards_cert(): MoveInstantaneousRewardsCert | void;

  /**
   * @returns {VoteRegistrationAndDelegation | void}
   */
  as_vote_registration_and_delegation(): VoteRegistrationAndDelegation | void;

  /**
   * @param {MoveInstantaneousRewardsCert} move_instantaneous_rewards_cert
   * @returns {Certificate}
   */
  static new_move_instantaneous_rewards_cert(
    move_instantaneous_rewards_cert: MoveInstantaneousRewardsCert
  ): Certificate;

  /**
   * @returns {StakeRegistrationAndDelegation | void}
   */
  as_stake_registration_and_delegation(): StakeRegistrationAndDelegation | void;

  /**
   * @param {VoteRegistrationAndDelegation} vote_registration_and_delegation
   * @returns {Certificate}
   */
  static new_vote_registration_and_delegation(
    vote_registration_and_delegation: VoteRegistrationAndDelegation
  ): Certificate;

  /**
   * @param {StakeRegistrationAndDelegation} stake_registration_and_delegation
   * @returns {Certificate}
   */
  static new_stake_registration_and_delegation(
    stake_registration_and_delegation: StakeRegistrationAndDelegation
  ): Certificate;

  /**
   * @returns {StakeVoteRegistrationAndDelegation | void}
   */
  as_stake_vote_registration_and_delegation(): StakeVoteRegistrationAndDelegation | void;

  /**
   * @param {StakeVoteRegistrationAndDelegation} stake_vote_registration_and_delegation
   * @returns {Certificate}
   */
  static new_stake_vote_registration_and_delegation(
    stake_vote_registration_and_delegation: StakeVoteRegistrationAndDelegation
  ): Certificate;

  /**
 * @returns {$Values<
                typeof 
                CertificateKind>}
 */
  kind(): $Values<typeof CertificateKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Certificate}
   */
  static from_hex(hex_str: string): Certificate;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Certificate}
   */
  static from_json(json: string): Certificate;
}
/**
 */
declare export class Certificates {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Certificates}
   */
  static from_bytes(bytes: Uint8Array): Certificates;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `Certificate` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {Certificate} elem
   * @returns {boolean}
   */
  add(elem: Certificate): boolean;

  /**
   * @param {number} index
   * @returns {Certificate}
   */
  get(index: number): Certificate;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Certificates}
   */
  static new(): Certificates;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Certificates}
   */
  static from_hex(hex_str: string): Certificates;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Certificates}
   */
  static from_json(json: string): Certificates;
}
/**
 */
declare export class CertificatesBuilder {
  free(): void;

  /**
   * @returns {TransactionInputs}
   */
  get_ref_inputs(): TransactionInputs;

  /**
   * @returns {NativeScripts}
   */
  get_native_scripts(): NativeScripts;

  /**
   * @returns {boolean}
   */
  has_plutus_scripts(): boolean;

  /**
   * @returns {PlutusWitnesses}
   */
  get_plutus_witnesses(): PlutusWitnesses;

  /**
   * @param {Certificate} cert
   * @param {NativeScriptSource} native_script_source
   */
  add_with_native_script(
    cert: Certificate,
    native_script_source: NativeScriptSource
  ): void;

  /**
   * @param {Certificate} cert
   * @param {PlutusWitness} witness
   */
  add_with_plutus_witness(cert: Certificate, witness: PlutusWitness): void;

  /**
   * @param {BigNum} pool_deposit
   * @param {BigNum} key_deposit
   * @returns {Value}
   */
  get_certificates_refund(pool_deposit: BigNum, key_deposit: BigNum): Value;

  /**
   * @param {BigNum} pool_deposit
   * @param {BigNum} key_deposit
   * @returns {BigNum}
   */
  get_certificates_deposit(pool_deposit: BigNum, key_deposit: BigNum): BigNum;

  /**
   * @param {Certificate} cert
   */
  add(cert: Certificate): void;

  /**
   * @returns {CertificatesBuilder}
   */
  static new(): CertificatesBuilder;

  /**
   * @returns {Certificates}
   */
  build(): Certificates;
}
/**
 */
declare export class ChangeConfig {
  free(): void;

  /**
   * @param {Address} address
   * @returns {ChangeConfig}
   */
  change_address(address: Address): ChangeConfig;

  /**
   * @param {ScriptRef} script_ref
   * @returns {ChangeConfig}
   */
  change_script_ref(script_ref: ScriptRef): ChangeConfig;

  /**
   * @param {OutputDatum} plutus_data
   * @returns {ChangeConfig}
   */
  change_plutus_data(plutus_data: OutputDatum): ChangeConfig;

  /**
   * @param {Address} address
   * @returns {ChangeConfig}
   */
  static new(address: Address): ChangeConfig;
}
/**
 */
declare export class Committee {
  free(): void;

  /**
   * @param {Credential} committee_cold_credential
   * @param {number} epoch
   */
  add_member(committee_cold_credential: Credential, epoch: number): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Committee}
   */
  static from_bytes(bytes: Uint8Array): Committee;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Credentials}
   */
  members_keys(): Credentials;

  /**
   * @param {Credential} committee_cold_credential
   * @returns {number | void}
   */
  get_member_epoch(committee_cold_credential: Credential): number | void;

  /**
   * @returns {UnitInterval}
   */
  quorum_threshold(): UnitInterval;

  /**
   * @param {UnitInterval} quorum_threshold
   * @returns {Committee}
   */
  static new(quorum_threshold: UnitInterval): Committee;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Committee}
   */
  static from_hex(hex_str: string): Committee;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Committee}
   */
  static from_json(json: string): Committee;
}
/**
 */
declare export class CommitteeColdResign {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {CommitteeColdResign}
   */
  static from_bytes(bytes: Uint8Array): CommitteeColdResign;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Credential} committee_cold_credential
   * @param {Anchor} anchor
   * @returns {CommitteeColdResign}
   */
  static new_with_anchor(
    committee_cold_credential: Credential,
    anchor: Anchor
  ): CommitteeColdResign;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @returns {Credential}
   */
  committee_cold_credential(): Credential;

  /**
   * @param {Credential} committee_cold_credential
   * @returns {CommitteeColdResign}
   */
  static new(committee_cold_credential: Credential): CommitteeColdResign;

  /**
   * @returns {Anchor | void}
   */
  anchor(): Anchor | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {CommitteeColdResign}
   */
  static from_hex(hex_str: string): CommitteeColdResign;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {CommitteeColdResign}
   */
  static from_json(json: string): CommitteeColdResign;
}
/**
 */
declare export class CommitteeHotAuth {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {CommitteeHotAuth}
   */
  static from_bytes(bytes: Uint8Array): CommitteeHotAuth;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @returns {Credential}
   */
  committee_hot_credential(): Credential;

  /**
   * @returns {Credential}
   */
  committee_cold_credential(): Credential;

  /**
   * @param {Credential} committee_cold_credential
   * @param {Credential} committee_hot_credential
   * @returns {CommitteeHotAuth}
   */
  static new(
    committee_cold_credential: Credential,
    committee_hot_credential: Credential
  ): CommitteeHotAuth;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {CommitteeHotAuth}
   */
  static from_hex(hex_str: string): CommitteeHotAuth;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {CommitteeHotAuth}
   */
  static from_json(json: string): CommitteeHotAuth;
}
/**
 */
declare export class Constitution {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Constitution}
   */
  static from_bytes(bytes: Uint8Array): Constitution;

  /**
   * @returns {ScriptHash | void}
   */
  script_hash(): ScriptHash | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Anchor} anchor
   * @param {ScriptHash} script_hash
   * @returns {Constitution}
   */
  static new_with_script_hash(
    anchor: Anchor,
    script_hash: ScriptHash
  ): Constitution;

  /**
   * @param {Anchor} anchor
   * @returns {Constitution}
   */
  static new(anchor: Anchor): Constitution;

  /**
   * @returns {Anchor}
   */
  anchor(): Anchor;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Constitution}
   */
  static from_hex(hex_str: string): Constitution;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Constitution}
   */
  static from_json(json: string): Constitution;
}
/**
 */
declare export class ConstrPlutusData {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ConstrPlutusData}
   */
  static from_bytes(bytes: Uint8Array): ConstrPlutusData;

  /**
   * @returns {BigNum}
   */
  alternative(): BigNum;

  /**
   * @param {BigNum} alternative
   * @param {PlutusList} data
   * @returns {ConstrPlutusData}
   */
  static new(alternative: BigNum, data: PlutusList): ConstrPlutusData;

  /**
   * @returns {PlutusList}
   */
  data(): PlutusList;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {ConstrPlutusData}
   */
  static from_hex(hex_str: string): ConstrPlutusData;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class CostModel {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {CostModel}
   */
  static from_bytes(bytes: Uint8Array): CostModel;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {number} operation
   * @returns {Int}
   */
  get(operation: number): Int;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * Creates a new CostModels instance of an unrestricted length
   * @returns {CostModel}
   */
  static new(): CostModel;

  /**
   * Sets the cost at the specified index to the specified value.
   * In case the operation index is larger than the previous largest used index,
   * it will fill any inbetween indexes with zeroes
   * @param {number} operation
   * @param {Int} cost
   * @returns {Int}
   */
  set(operation: number, cost: Int): Int;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {CostModel}
   */
  static from_hex(hex_str: string): CostModel;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {CostModel}
   */
  static from_json(json: string): CostModel;
}
/**
 */
declare export class Costmdls {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Costmdls}
   */
  static from_bytes(bytes: Uint8Array): Costmdls;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Languages} languages
   * @returns {Costmdls}
   */
  retain_language_versions(languages: Languages): Costmdls;

  /**
   * @param {Language} key
   * @returns {CostModel | void}
   */
  get(key: Language): CostModel | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Costmdls}
   */
  static new(): Costmdls;

  /**
   * @returns {Languages}
   */
  keys(): Languages;

  /**
   * @param {Language} key
   * @param {CostModel} value
   * @returns {CostModel | void}
   */
  insert(key: Language, value: CostModel): CostModel | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Costmdls}
   */
  static from_hex(hex_str: string): Costmdls;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Costmdls}
   */
  static from_json(json: string): Costmdls;
}
/**
 */
declare export class Credential {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Credential}
   */
  static from_bytes(bytes: Uint8Array): Credential;

  /**
   * @returns {Ed25519KeyHash | void}
   */
  to_keyhash(): Ed25519KeyHash | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Ed25519KeyHash} hash
   * @returns {Credential}
   */
  static from_keyhash(hash: Ed25519KeyHash): Credential;

  /**
   * @returns {ScriptHash | void}
   */
  to_scripthash(): ScriptHash | void;

  /**
   * @param {ScriptHash} hash
   * @returns {Credential}
   */
  static from_scripthash(hash: ScriptHash): Credential;

  /**
   * @returns {boolean}
   */
  has_script_hash(): boolean;

  /**
 * @returns {$Values<
                typeof 
                CredKind>}
 */
  kind(): $Values<typeof CredKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Credential}
   */
  static from_hex(hex_str: string): Credential;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Credential}
   */
  static from_json(json: string): Credential;
}
/**
 */
declare export class Credentials {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Credentials}
   */
  static from_bytes(bytes: Uint8Array): Credentials;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `Credential` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {Credential} credential
   * @returns {boolean}
   */
  add(credential: Credential): boolean;

  /**
   * @param {number} index
   * @returns {Credential}
   */
  get(index: number): Credential;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Credentials}
   */
  static new(): Credentials;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Credentials}
   */
  static from_hex(hex_str: string): Credentials;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Credentials}
   */
  static from_json(json: string): Credentials;
}
/**
 */
declare export class DNSRecordAorAAAA {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DNSRecordAorAAAA}
   */
  static from_bytes(bytes: Uint8Array): DNSRecordAorAAAA;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {string} dns_name
   * @returns {DNSRecordAorAAAA}
   */
  static new(dns_name: string): DNSRecordAorAAAA;

  /**
   * @returns {string}
   */
  record(): string;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DNSRecordAorAAAA}
   */
  static from_hex(hex_str: string): DNSRecordAorAAAA;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DNSRecordAorAAAA}
   */
  static from_json(json: string): DNSRecordAorAAAA;
}
/**
 */
declare export class DNSRecordSRV {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DNSRecordSRV}
   */
  static from_bytes(bytes: Uint8Array): DNSRecordSRV;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {string} dns_name
   * @returns {DNSRecordSRV}
   */
  static new(dns_name: string): DNSRecordSRV;

  /**
   * @returns {string}
   */
  record(): string;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DNSRecordSRV}
   */
  static from_hex(hex_str: string): DNSRecordSRV;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DNSRecordSRV}
   */
  static from_json(json: string): DNSRecordSRV;
}
/**
 */
declare export class DRep {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DRep}
   */
  static from_bytes(bytes: Uint8Array): DRep;

  /**
   * @param {string} bech32_str
   * @returns {DRep}
   */
  static from_bech32(bech32_str: string): DRep;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash | void}
   */
  to_key_hash(): Ed25519KeyHash | void;

  /**
   * @param {Ed25519KeyHash} key_hash
   * @returns {DRep}
   */
  static new_key_hash(key_hash: Ed25519KeyHash): DRep;

  /**
   * @returns {ScriptHash | void}
   */
  to_script_hash(): ScriptHash | void;

  /**
   * @param {ScriptHash} script_hash
   * @returns {DRep}
   */
  static new_script_hash(script_hash: ScriptHash): DRep;

  /**
   * @returns {DRep}
   */
  static new_always_abstain(): DRep;

  /**
   * @param {Credential} cred
   * @returns {DRep}
   */
  static new_from_credential(cred: Credential): DRep;

  /**
   * @returns {DRep}
   */
  static new_always_no_confidence(): DRep;

  /**
 * @returns {$Values<
                typeof 
                DRepKind>}
 */
  kind(): $Values<typeof DRepKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DRep}
   */
  static from_hex(hex_str: string): DRep;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DRep}
   */
  static from_json(json: string): DRep;

  /**
   * @param {boolean} cip_129_format
   * @returns {string}
   */
  to_bech32(cip_129_format: boolean): string;
}
/**
 */
declare export class DRepDeregistration {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DRepDeregistration}
   */
  static from_bytes(bytes: Uint8Array): DRepDeregistration;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Credential}
   */
  voting_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} voting_credential
   * @param {BigNum} coin
   * @returns {DRepDeregistration}
   */
  static new(voting_credential: Credential, coin: BigNum): DRepDeregistration;

  /**
   * @returns {BigNum}
   */
  coin(): BigNum;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DRepDeregistration}
   */
  static from_hex(hex_str: string): DRepDeregistration;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DRepDeregistration}
   */
  static from_json(json: string): DRepDeregistration;
}
/**
 */
declare export class DRepRegistration {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DRepRegistration}
   */
  static from_bytes(bytes: Uint8Array): DRepRegistration;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Credential} voting_credential
   * @param {BigNum} coin
   * @param {Anchor} anchor
   * @returns {DRepRegistration}
   */
  static new_with_anchor(
    voting_credential: Credential,
    coin: BigNum,
    anchor: Anchor
  ): DRepRegistration;

  /**
   * @returns {Credential}
   */
  voting_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} voting_credential
   * @param {BigNum} coin
   * @returns {DRepRegistration}
   */
  static new(voting_credential: Credential, coin: BigNum): DRepRegistration;

  /**
   * @returns {BigNum}
   */
  coin(): BigNum;

  /**
   * @returns {Anchor | void}
   */
  anchor(): Anchor | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DRepRegistration}
   */
  static from_hex(hex_str: string): DRepRegistration;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DRepRegistration}
   */
  static from_json(json: string): DRepRegistration;
}
/**
 */
declare export class DRepUpdate {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DRepUpdate}
   */
  static from_bytes(bytes: Uint8Array): DRepUpdate;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Credential} voting_credential
   * @param {Anchor} anchor
   * @returns {DRepUpdate}
   */
  static new_with_anchor(
    voting_credential: Credential,
    anchor: Anchor
  ): DRepUpdate;

  /**
   * @returns {Credential}
   */
  voting_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} voting_credential
   * @returns {DRepUpdate}
   */
  static new(voting_credential: Credential): DRepUpdate;

  /**
   * @returns {Anchor | void}
   */
  anchor(): Anchor | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DRepUpdate}
   */
  static from_hex(hex_str: string): DRepUpdate;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DRepUpdate}
   */
  static from_json(json: string): DRepUpdate;
}
/**
 */
declare export class DRepVotingThresholds {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DRepVotingThresholds}
   */
  static from_bytes(bytes: Uint8Array): DRepVotingThresholds;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {UnitInterval}
   */
  committee_normal(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  pp_network_group(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  pp_economic_group(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  pp_technical_group(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  pp_governance_group(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  treasury_withdrawal(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  update_constitution(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  hard_fork_initiation(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  motion_no_confidence(): UnitInterval;

  /**
   * @param {UnitInterval} committee_normal
   */
  set_committee_normal(committee_normal: UnitInterval): void;

  /**
   * @param {UnitInterval} pp_network_group
   */
  set_pp_network_group(pp_network_group: UnitInterval): void;

  /**
   * @param {UnitInterval} pp_economic_group
   */
  set_pp_economic_group(pp_economic_group: UnitInterval): void;

  /**
   * @param {UnitInterval} pp_technical_group
   */
  set_pp_technical_group(pp_technical_group: UnitInterval): void;

  /**
   * @returns {UnitInterval}
   */
  committee_no_confidence(): UnitInterval;

  /**
   * @param {UnitInterval} pp_governance_group
   */
  set_pp_governance_group(pp_governance_group: UnitInterval): void;

  /**
   * @param {UnitInterval} treasury_withdrawal
   */
  set_treasury_withdrawal(treasury_withdrawal: UnitInterval): void;

  /**
   * @param {UnitInterval} update_constitution
   */
  set_update_constitution(update_constitution: UnitInterval): void;

  /**
   * @param {UnitInterval} hard_fork_initiation
   */
  set_hard_fork_initiation(hard_fork_initiation: UnitInterval): void;

  /**
   * @param {UnitInterval} motion_no_confidence
   */
  set_motion_no_confidence(motion_no_confidence: UnitInterval): void;

  /**
   * @param {UnitInterval} committee_no_confidence
   */
  set_committee_no_confidence(committee_no_confidence: UnitInterval): void;

  /**
   * @param {UnitInterval} motion_no_confidence
   * @param {UnitInterval} committee_normal
   * @param {UnitInterval} committee_no_confidence
   * @param {UnitInterval} update_constitution
   * @param {UnitInterval} hard_fork_initiation
   * @param {UnitInterval} pp_network_group
   * @param {UnitInterval} pp_economic_group
   * @param {UnitInterval} pp_technical_group
   * @param {UnitInterval} pp_governance_group
   * @param {UnitInterval} treasury_withdrawal
   * @returns {DRepVotingThresholds}
   */
  static new(
    motion_no_confidence: UnitInterval,
    committee_normal: UnitInterval,
    committee_no_confidence: UnitInterval,
    update_constitution: UnitInterval,
    hard_fork_initiation: UnitInterval,
    pp_network_group: UnitInterval,
    pp_economic_group: UnitInterval,
    pp_technical_group: UnitInterval,
    pp_governance_group: UnitInterval,
    treasury_withdrawal: UnitInterval
  ): DRepVotingThresholds;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {DRepVotingThresholds}
   */
  static from_hex(hex_str: string): DRepVotingThresholds;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {DRepVotingThresholds}
   */
  static from_json(json: string): DRepVotingThresholds;
}
/**
 */
declare export class DataCost {
  free(): void;

  /**
   * @returns {BigNum}
   */
  coins_per_byte(): BigNum;

  /**
   * @param {BigNum} coins_per_byte
   * @returns {DataCost}
   */
  static new_coins_per_byte(coins_per_byte: BigNum): DataCost;
}
/**
 */
declare export class DataHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {DataHash}
   */
  static from_bytes(bytes: Uint8Array): DataHash;

  /**
   * @param {string} bech_str
   * @returns {DataHash}
   */
  static from_bech32(bech_str: string): DataHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {DataHash}
   */
  static from_hex(hex: string): DataHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class DatumSource {
  free(): void;

  /**
   * @param {TransactionInput} input
   * @returns {DatumSource}
   */
  static new_ref_input(input: TransactionInput): DatumSource;

  /**
   * @param {PlutusData} datum
   * @returns {DatumSource}
   */
  static new(datum: PlutusData): DatumSource;
}
/**
 */
declare export class Ed25519KeyHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Ed25519KeyHash}
   */
  static from_bytes(bytes: Uint8Array): Ed25519KeyHash;

  /**
   * @param {string} bech_str
   * @returns {Ed25519KeyHash}
   */
  static from_bech32(bech_str: string): Ed25519KeyHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {Ed25519KeyHash}
   */
  static from_hex(hex: string): Ed25519KeyHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class Ed25519KeyHashes {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Ed25519KeyHashes}
   */
  static from_bytes(bytes: Uint8Array): Ed25519KeyHashes;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `Ed25519KeyHash` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {Ed25519KeyHash} keyhash
   * @returns {boolean}
   */
  add(keyhash: Ed25519KeyHash): boolean;

  /**
   * @param {number} index
   * @returns {Ed25519KeyHash}
   */
  get(index: number): Ed25519KeyHash;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Ed25519KeyHashes}
   */
  static new(): Ed25519KeyHashes;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {Ed25519KeyHash} elem
   * @returns {boolean}
   */
  contains(elem: Ed25519KeyHash): boolean;

  /**
   * @param {string} hex_str
   * @returns {Ed25519KeyHashes}
   */
  static from_hex(hex_str: string): Ed25519KeyHashes;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Ed25519KeyHashes}
   */
  static from_json(json: string): Ed25519KeyHashes;

  /**
   * @returns {Ed25519KeyHashes | void}
   */
  to_option(): Ed25519KeyHashes | void;
}
/**
 */
declare export class Ed25519Signature {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Ed25519Signature}
   */
  static from_bytes(bytes: Uint8Array): Ed25519Signature;

  /**
   * @param {string} bech32_str
   * @returns {Ed25519Signature}
   */
  static from_bech32(bech32_str: string): Ed25519Signature;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} input
   * @returns {Ed25519Signature}
   */
  static from_hex(input: string): Ed25519Signature;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @returns {string}
   */
  to_bech32(): string;
}
/**
 */
declare export class EnterpriseAddress {
  free(): void;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @returns {Address}
   */
  to_address(): Address;

  /**
   * @param {Address} addr
   * @returns {EnterpriseAddress | void}
   */
  static from_address(addr: Address): EnterpriseAddress | void;

  /**
   * @returns {Credential}
   */
  payment_cred(): Credential;

  /**
   * @param {number} network
   * @param {Credential} payment
   * @returns {EnterpriseAddress}
   */
  static new(network: number, payment: Credential): EnterpriseAddress;
}
/**
 */
declare export class ExUnitPrices {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ExUnitPrices}
   */
  static from_bytes(bytes: Uint8Array): ExUnitPrices;

  /**
   * @returns {UnitInterval}
   */
  step_price(): UnitInterval;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {UnitInterval} mem_price
   * @param {UnitInterval} step_price
   * @returns {ExUnitPrices}
   */
  static new(mem_price: UnitInterval, step_price: UnitInterval): ExUnitPrices;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ExUnitPrices}
   */
  static from_hex(hex_str: string): ExUnitPrices;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ExUnitPrices}
   */
  static from_json(json: string): ExUnitPrices;

  /**
   * @returns {UnitInterval}
   */
  mem_price(): UnitInterval;
}
/**
 */
declare export class ExUnits {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ExUnits}
   */
  static from_bytes(bytes: Uint8Array): ExUnits;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {BigNum}
   */
  mem(): BigNum;

  /**
   * @param {BigNum} mem
   * @param {BigNum} steps
   * @returns {ExUnits}
   */
  static new(mem: BigNum, steps: BigNum): ExUnits;

  /**
   * @returns {BigNum}
   */
  steps(): BigNum;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ExUnits}
   */
  static from_hex(hex_str: string): ExUnits;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ExUnits}
   */
  static from_json(json: string): ExUnits;
}
/**
 * Read only view of a block with more strict structs for hash sensitive structs.
 * Warning: This is experimental and may be removed or changed in the future.
 */
declare export class FixedBlock {
  free(): void;

  /**
   * @returns {BlockHash}
   */
  block_hash(): BlockHash;

  /**
   * @param {Uint8Array} bytes
   * @returns {FixedBlock}
   */
  static from_bytes(bytes: Uint8Array): FixedBlock;

  /**
   * @returns {AuxiliaryDataSet}
   */
  auxiliary_data_set(): AuxiliaryDataSet;

  /**
   * @returns {FixedTransactionBodies}
   */
  transaction_bodies(): FixedTransactionBodies;

  /**
   * @returns {Uint32Array}
   */
  invalid_transactions(): Uint32Array;

  /**
   * @returns {TransactionWitnessSets}
   */
  transaction_witness_sets(): TransactionWitnessSets;

  /**
   * @returns {Header}
   */
  header(): Header;

  /**
   * @param {string} hex_str
   * @returns {FixedBlock}
   */
  static from_hex(hex_str: string): FixedBlock;
}
/**
 */
declare export class FixedTransaction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {FixedTransaction}
   */
  static from_bytes(bytes: Uint8Array): FixedTransaction;

  /**
   * @returns {TransactionWitnessSet}
   */
  witness_set(): TransactionWitnessSet;

  /**
   * @param {boolean} valid
   */
  set_is_valid(valid: boolean): void;

  /**
   * @returns {AuxiliaryData | void}
   */
  auxiliary_data(): AuxiliaryData | void;

  /**
   * @returns {Uint8Array}
   */
  raw_witness_set(): Uint8Array;

  /**
   * We do not recommend using this function, since it might lead to script integrity hash.
   * The only purpose of this struct is to sign the transaction from third-party sources.
   * Use `.sign_and_add_vkey_signature` or `.sign_and_add_icarus_bootstrap_signature` or `.sign_and_add_daedalus_bootstrap_signature` instead.
   * @param {Uint8Array} raw_witness_set
   */
  set_witness_set(raw_witness_set: Uint8Array): void;

  /**
   * @param {Vkeywitness} vkey_witness
   */
  add_vkey_witness(vkey_witness: Vkeywitness): void;

  /**
   * @returns {TransactionHash}
   */
  transaction_hash(): TransactionHash;

  /**
   * @param {Uint8Array} raw_body
   * @param {Uint8Array} raw_witness_set
   * @param {Uint8Array} raw_auxiliary_data
   * @param {boolean} is_valid
   * @returns {FixedTransaction}
   */
  static new_with_auxiliary(
    raw_body: Uint8Array,
    raw_witness_set: Uint8Array,
    raw_auxiliary_data: Uint8Array,
    is_valid: boolean
  ): FixedTransaction;

  /**
   * @returns {Uint8Array | void}
   */
  raw_auxiliary_data(): Uint8Array | void;

  /**
   * @param {Uint8Array} raw_auxiliary_data
   */
  set_auxiliary_data(raw_auxiliary_data: Uint8Array): void;

  /**
   * @param {Uint8Array} raw_body
   * @returns {FixedTransaction}
   */
  static new_from_body_bytes(raw_body: Uint8Array): FixedTransaction;

  /**
   * @param {BootstrapWitness} bootstrap_witness
   */
  add_bootstrap_witness(bootstrap_witness: BootstrapWitness): void;

  /**
   * @param {PrivateKey} private_key
   */
  sign_and_add_vkey_signature(private_key: PrivateKey): void;

  /**
   * @param {ByronAddress} addr
   * @param {Bip32PrivateKey} private_key
   */
  sign_and_add_icarus_bootstrap_signature(
    addr: ByronAddress,
    private_key: Bip32PrivateKey
  ): void;

  /**
   * @param {Uint8Array} raw_body
   * @param {Uint8Array} raw_witness_set
   * @param {boolean} is_valid
   * @returns {FixedTransaction}
   */
  static new(
    raw_body: Uint8Array,
    raw_witness_set: Uint8Array,
    is_valid: boolean
  ): FixedTransaction;

  /**
   * @param {ByronAddress} addr
   * @param {LegacyDaedalusPrivateKey} private_key
   */
  sign_and_add_daedalus_bootstrap_signature(
    addr: ByronAddress,
    private_key: LegacyDaedalusPrivateKey
  ): void;

  /**
   * @returns {TransactionBody}
   */
  body(): TransactionBody;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {FixedTransaction}
   */
  static from_hex(hex_str: string): FixedTransaction;

  /**
   * @returns {boolean}
   */
  is_valid(): boolean;

  /**
   * @returns {Uint8Array}
   */
  raw_body(): Uint8Array;

  /**
   * @param {Uint8Array} raw_body
   */
  set_body(raw_body: Uint8Array): void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 * Warning: This is experimental and may be removed or changed in the future.
 */
declare export class FixedTransactionBodies {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {FixedTransactionBodies}
   */
  static from_bytes(bytes: Uint8Array): FixedTransactionBodies;

  /**
   * @param {FixedTransactionBody} elem
   */
  add(elem: FixedTransactionBody): void;

  /**
   * @param {number} index
   * @returns {FixedTransactionBody}
   */
  get(index: number): FixedTransactionBody;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {FixedTransactionBodies}
   */
  static new(): FixedTransactionBodies;

  /**
   * @param {string} hex_str
   * @returns {FixedTransactionBodies}
   */
  static from_hex(hex_str: string): FixedTransactionBodies;
}
/**
 * Read-only view of a transaction body. With correct hash and original bytes.
 * Warning: This is experimental and may be removed in the future.
 */
declare export class FixedTransactionBody {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {FixedTransactionBody}
   */
  static from_bytes(bytes: Uint8Array): FixedTransactionBody;

  /**
   * @returns {Uint8Array}
   */
  original_bytes(): Uint8Array;

  /**
   * @returns {TransactionBody}
   */
  transaction_body(): TransactionBody;

  /**
   * @returns {TransactionHash}
   */
  tx_hash(): TransactionHash;

  /**
   * @param {string} hex_str
   * @returns {FixedTransactionBody}
   */
  static from_hex(hex_str: string): FixedTransactionBody;
}
/**
 * A set of witnesses for a transaction.
 * Keeps original bytes to allow for safe roundtrip serialization.
 * That helps to avoid incorrect script data hash after adding a  vkey or bootstrap witness.
 * You can add a vkey witness or a bootstrap witness to the set.
 * Or get TransactionWitnessSet to read fields.
 */
declare export class FixedTxWitnessesSet {
  free(): void;

  /**
   * @param {Uint8Array} data
   * @returns {FixedTxWitnessesSet}
   */
  static from_bytes(data: Uint8Array): FixedTxWitnessesSet;

  /**
   * @param {Vkeywitness} vkey_witness
   */
  add_vkey_witness(vkey_witness: Vkeywitness): void;

  /**
   * @returns {TransactionWitnessSet}
   */
  tx_witnesses_set(): TransactionWitnessSet;

  /**
   * @param {BootstrapWitness} bootstrap_witness
   */
  add_bootstrap_witness(bootstrap_witness: BootstrapWitness): void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 * Warning: This is experimental and may be removed in the future.
 */
declare export class FixedVersionedBlock {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {FixedVersionedBlock}
   */
  static from_bytes(bytes: Uint8Array): FixedVersionedBlock;

  /**
 * @returns {$Values<
                typeof 
                BlockEra>}
 */
  era(): $Values<typeof BlockEra>;

  /**
   * @returns {FixedBlock}
   */
  block(): FixedBlock;

  /**
   * @param {string} hex_str
   * @returns {FixedVersionedBlock}
   */
  static from_hex(hex_str: string): FixedVersionedBlock;
}
/**
 */
declare export class GeneralTransactionMetadata {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GeneralTransactionMetadata}
   */
  static from_bytes(bytes: Uint8Array): GeneralTransactionMetadata;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {BigNum} key
   * @returns {TransactionMetadatum | void}
   */
  get(key: BigNum): TransactionMetadatum | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {GeneralTransactionMetadata}
   */
  static new(): GeneralTransactionMetadata;

  /**
   * @returns {TransactionMetadatumLabels}
   */
  keys(): TransactionMetadatumLabels;

  /**
   * @param {BigNum} key
   * @param {TransactionMetadatum} value
   * @returns {TransactionMetadatum | void}
   */
  insert(key: BigNum, value: TransactionMetadatum): TransactionMetadatum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {GeneralTransactionMetadata}
   */
  static from_hex(hex_str: string): GeneralTransactionMetadata;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {GeneralTransactionMetadata}
   */
  static from_json(json: string): GeneralTransactionMetadata;
}
/**
 */
declare export class GenesisDelegateHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GenesisDelegateHash}
   */
  static from_bytes(bytes: Uint8Array): GenesisDelegateHash;

  /**
   * @param {string} bech_str
   * @returns {GenesisDelegateHash}
   */
  static from_bech32(bech_str: string): GenesisDelegateHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {GenesisDelegateHash}
   */
  static from_hex(hex: string): GenesisDelegateHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class GenesisHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GenesisHash}
   */
  static from_bytes(bytes: Uint8Array): GenesisHash;

  /**
   * @param {string} bech_str
   * @returns {GenesisHash}
   */
  static from_bech32(bech_str: string): GenesisHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {GenesisHash}
   */
  static from_hex(hex: string): GenesisHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class GenesisHashes {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GenesisHashes}
   */
  static from_bytes(bytes: Uint8Array): GenesisHashes;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {GenesisHash} elem
   */
  add(elem: GenesisHash): void;

  /**
   * @param {number} index
   * @returns {GenesisHash}
   */
  get(index: number): GenesisHash;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {GenesisHashes}
   */
  static new(): GenesisHashes;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {GenesisHashes}
   */
  static from_hex(hex_str: string): GenesisHashes;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {GenesisHashes}
   */
  static from_json(json: string): GenesisHashes;
}
/**
 */
declare export class GenesisKeyDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GenesisKeyDelegation}
   */
  static from_bytes(bytes: Uint8Array): GenesisKeyDelegation;

  /**
   * @returns {GenesisHash}
   */
  genesishash(): GenesisHash;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {VRFKeyHash}
   */
  vrf_keyhash(): VRFKeyHash;

  /**
   * @returns {GenesisDelegateHash}
   */
  genesis_delegate_hash(): GenesisDelegateHash;

  /**
   * @param {GenesisHash} genesishash
   * @param {GenesisDelegateHash} genesis_delegate_hash
   * @param {VRFKeyHash} vrf_keyhash
   * @returns {GenesisKeyDelegation}
   */
  static new(
    genesishash: GenesisHash,
    genesis_delegate_hash: GenesisDelegateHash,
    vrf_keyhash: VRFKeyHash
  ): GenesisKeyDelegation;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {GenesisKeyDelegation}
   */
  static from_hex(hex_str: string): GenesisKeyDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {GenesisKeyDelegation}
   */
  static from_json(json: string): GenesisKeyDelegation;
}
/**
 */
declare export class GovernanceAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GovernanceAction}
   */
  static from_bytes(bytes: Uint8Array): GovernanceAction;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {InfoAction | void}
   */
  as_info_action(): InfoAction | void;

  /**
   * @param {InfoAction} info_action
   * @returns {GovernanceAction}
   */
  static new_info_action(info_action: InfoAction): GovernanceAction;

  /**
   * @returns {UpdateCommitteeAction | void}
   */
  as_new_committee_action(): UpdateCommitteeAction | void;

  /**
   * @returns {NoConfidenceAction | void}
   */
  as_no_confidence_action(): NoConfidenceAction | void;

  /**
   * @param {UpdateCommitteeAction} new_committee_action
   * @returns {GovernanceAction}
   */
  static new_new_committee_action(
    new_committee_action: UpdateCommitteeAction
  ): GovernanceAction;

  /**
   * @param {NoConfidenceAction} no_confidence_action
   * @returns {GovernanceAction}
   */
  static new_no_confidence_action(
    no_confidence_action: NoConfidenceAction
  ): GovernanceAction;

  /**
   * @returns {NewConstitutionAction | void}
   */
  as_new_constitution_action(): NewConstitutionAction | void;

  /**
   * @returns {ParameterChangeAction | void}
   */
  as_parameter_change_action(): ParameterChangeAction | void;

  /**
   * @param {NewConstitutionAction} new_constitution_action
   * @returns {GovernanceAction}
   */
  static new_new_constitution_action(
    new_constitution_action: NewConstitutionAction
  ): GovernanceAction;

  /**
   * @param {ParameterChangeAction} parameter_change_action
   * @returns {GovernanceAction}
   */
  static new_parameter_change_action(
    parameter_change_action: ParameterChangeAction
  ): GovernanceAction;

  /**
   * @returns {HardForkInitiationAction | void}
   */
  as_hard_fork_initiation_action(): HardForkInitiationAction | void;

  /**
   * @returns {TreasuryWithdrawalsAction | void}
   */
  as_treasury_withdrawals_action(): TreasuryWithdrawalsAction | void;

  /**
   * @param {HardForkInitiationAction} hard_fork_initiation_action
   * @returns {GovernanceAction}
   */
  static new_hard_fork_initiation_action(
    hard_fork_initiation_action: HardForkInitiationAction
  ): GovernanceAction;

  /**
   * @param {TreasuryWithdrawalsAction} treasury_withdrawals_action
   * @returns {GovernanceAction}
   */
  static new_treasury_withdrawals_action(
    treasury_withdrawals_action: TreasuryWithdrawalsAction
  ): GovernanceAction;

  /**
 * @returns {$Values<
                typeof 
                GovernanceActionKind>}
 */
  kind(): $Values<typeof GovernanceActionKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {GovernanceAction}
   */
  static from_hex(hex_str: string): GovernanceAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {GovernanceAction}
   */
  static from_json(json: string): GovernanceAction;
}
/**
 */
declare export class GovernanceActionId {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {GovernanceActionId}
   */
  static from_bytes(bytes: Uint8Array): GovernanceActionId;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {TransactionHash}
   */
  transaction_id(): TransactionHash;

  /**
   * @param {TransactionHash} transaction_id
   * @param {number} index
   * @returns {GovernanceActionId}
   */
  static new(
    transaction_id: TransactionHash,
    index: number
  ): GovernanceActionId;

  /**
   * @returns {number}
   */
  index(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {GovernanceActionId}
   */
  static from_hex(hex_str: string): GovernanceActionId;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {GovernanceActionId}
   */
  static from_json(json: string): GovernanceActionId;
}
/**
 */
declare export class GovernanceActionIds {
  free(): void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {GovernanceActionId} governance_action_id
   */
  add(governance_action_id: GovernanceActionId): void;

  /**
   * @param {number} index
   * @returns {GovernanceActionId | void}
   */
  get(index: number): GovernanceActionId | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {GovernanceActionIds}
   */
  static new(): GovernanceActionIds;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} json
   * @returns {GovernanceActionIds}
   */
  static from_json(json: string): GovernanceActionIds;
}
/**
 */
declare export class HardForkInitiationAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {HardForkInitiationAction}
   */
  static from_bytes(bytes: Uint8Array): HardForkInitiationAction;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {GovernanceActionId | void}
   */
  gov_action_id(): GovernanceActionId | void;

  /**
   * @returns {ProtocolVersion}
   */
  protocol_version(): ProtocolVersion;

  /**
   * @param {GovernanceActionId} gov_action_id
   * @param {ProtocolVersion} protocol_version
   * @returns {HardForkInitiationAction}
   */
  static new_with_action_id(
    gov_action_id: GovernanceActionId,
    protocol_version: ProtocolVersion
  ): HardForkInitiationAction;

  /**
   * @param {ProtocolVersion} protocol_version
   * @returns {HardForkInitiationAction}
   */
  static new(protocol_version: ProtocolVersion): HardForkInitiationAction;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {HardForkInitiationAction}
   */
  static from_hex(hex_str: string): HardForkInitiationAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {HardForkInitiationAction}
   */
  static from_json(json: string): HardForkInitiationAction;
}
/**
 */
declare export class Header {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Header}
   */
  static from_bytes(bytes: Uint8Array): Header;

  /**
   * @returns {HeaderBody}
   */
  header_body(): HeaderBody;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {KESSignature}
   */
  body_signature(): KESSignature;

  /**
   * @param {HeaderBody} header_body
   * @param {KESSignature} body_signature
   * @returns {Header}
   */
  static new(header_body: HeaderBody, body_signature: KESSignature): Header;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Header}
   */
  static from_hex(hex_str: string): Header;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Header}
   */
  static from_json(json: string): Header;
}
/**
 */
declare export class HeaderBody {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {HeaderBody}
   */
  static from_bytes(bytes: Uint8Array): HeaderBody;

  /**
   * @returns {Vkey}
   */
  issuer_vkey(): Vkey;

  /**
   * @returns {BigNum}
   */
  slot_bignum(): BigNum;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {number}
   */
  block_number(): number;

  /**
   * If this function returns true, the `.vrf_result_or_nothing`
   * function will return a non-empty result
   * @returns {boolean}
   */
  has_vrf_result(): boolean;

  /**
   * @param {number} block_number
   * @param {BigNum} slot
   * @param {BlockHash | void} prev_hash
   * @param {Vkey} issuer_vkey
   * @param {VRFVKey} vrf_vkey
   * @param {VRFCert} vrf_result
   * @param {number} block_body_size
   * @param {BlockHash} block_body_hash
   * @param {OperationalCert} operational_cert
   * @param {ProtocolVersion} protocol_version
   * @returns {HeaderBody}
   */
  static new_headerbody(
    block_number: number,
    slot: BigNum,
    prev_hash: BlockHash | void,
    issuer_vkey: Vkey,
    vrf_vkey: VRFVKey,
    vrf_result: VRFCert,
    block_body_size: number,
    block_body_hash: BlockHash,
    operational_cert: OperationalCert,
    protocol_version: ProtocolVersion
  ): HeaderBody;

  /**
   * @returns {BlockHash}
   */
  block_body_hash(): BlockHash;

  /**
   * @returns {number}
   */
  block_body_size(): number;

  /**
   * @returns {OperationalCert}
   */
  operational_cert(): OperationalCert;

  /**
   * @returns {ProtocolVersion}
   */
  protocol_version(): ProtocolVersion;

  /**
   * Might return nothing in case `.has_nonce_and_leader_vrf` returns false
   * @returns {VRFCert | void}
   */
  nonce_vrf_or_nothing(): VRFCert | void;

  /**
   * Might return nothing in case `.has_nonce_and_leader_vrf` returns false
   * @returns {VRFCert | void}
   */
  leader_vrf_or_nothing(): VRFCert | void;

  /**
   * Might return nothing in case `.has_vrf_result` returns false
   * @returns {VRFCert | void}
   */
  vrf_result_or_nothing(): VRFCert | void;

  /**
   * If this function returns true, the `.nonce_vrf_or_nothing`
   * and the `.leader_vrf_or_nothing` functions will return
   * non-empty results
   * @returns {boolean}
   */
  has_nonce_and_leader_vrf(): boolean;

  /**
   * !!! DEPRECATED !!!
   * This constructor uses outdated slot number format.
   * Use `.new_headerbody` instead
   * @param {number} block_number
   * @param {number} slot
   * @param {BlockHash | void} prev_hash
   * @param {Vkey} issuer_vkey
   * @param {VRFVKey} vrf_vkey
   * @param {VRFCert} vrf_result
   * @param {number} block_body_size
   * @param {BlockHash} block_body_hash
   * @param {OperationalCert} operational_cert
   * @param {ProtocolVersion} protocol_version
   * @returns {HeaderBody}
   */
  static new(
    block_number: number,
    slot: number,
    prev_hash: BlockHash | void,
    issuer_vkey: Vkey,
    vrf_vkey: VRFVKey,
    vrf_result: VRFCert,
    block_body_size: number,
    block_body_hash: BlockHash,
    operational_cert: OperationalCert,
    protocol_version: ProtocolVersion
  ): HeaderBody;

  /**
   * !!! DEPRECATED !!!
   * Returns a Slot32 (u32) value in case the underlying original BigNum (u64) value is within the limits.
   * Otherwise will just raise an error.
   * @returns {number}
   */
  slot(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {HeaderBody}
   */
  static from_hex(hex_str: string): HeaderBody;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @returns {VRFVKey}
   */
  vrf_vkey(): VRFVKey;

  /**
   * @param {string} json
   * @returns {HeaderBody}
   */
  static from_json(json: string): HeaderBody;

  /**
   * @returns {BlockHash | void}
   */
  prev_hash(): BlockHash | void;
}
/**
 */
declare export class InfoAction {
  free(): void;

  /**
   * @returns {InfoAction}
   */
  static new(): InfoAction;
}
/**
 */
declare export class Int {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Int}
   */
  static from_bytes(bytes: Uint8Array): Int;

  /**
   * BigNum can only contain unsigned u64 values
   *
   * This function will return the *absolute* BigNum representation
   * only in case the underlying i128 value is negative.
   *
   * Otherwise nothing will be returned (undefined).
   * @returns {BigNum | void}
   */
  as_negative(): BigNum | void;

  /**
   * BigNum can only contain unsigned u64 values
   *
   * This function will return the BigNum representation
   * only in case the underlying i128 value is positive.
   *
   * Otherwise nothing will be returned (undefined).
   * @returns {BigNum | void}
   */
  as_positive(): BigNum | void;

  /**
   * @returns {boolean}
   */
  is_positive(): boolean;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {BigNum} x
   * @returns {Int}
   */
  static new_negative(x: BigNum): Int;

  /**
   * Returns the underlying value converted to i32 if possible (within limits)
   * JsError in case of out of boundary overflow
   * @returns {number}
   */
  as_i32_or_fail(): number;

  /**
   * Returns the underlying value converted to i32 if possible (within limits)
   * Otherwise will just return an empty value (undefined).
   * @returns {number | void}
   */
  as_i32_or_nothing(): number | void;

  /**
   * @param {BigNum} x
   * @returns {Int}
   */
  static new(x: BigNum): Int;

  /**
   * !!! DEPRECATED !!!
   * Returns an i32 value in case the underlying original i128 value is within the limits.
   * Otherwise will just return an empty value (undefined).
   * @returns {number | void}
   */
  as_i32(): number | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * Returns string representation of the underlying i128 value directly.
   * Might contain the minus sign (-) in case of negative value.
   * @returns {string}
   */
  to_str(): string;

  /**
   * @param {number} x
   * @returns {Int}
   */
  static new_i32(x: number): Int;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Int}
   */
  static from_hex(hex_str: string): Int;

  /**
   * @param {string} string
   * @returns {Int}
   */
  static from_str(string: string): Int;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Int}
   */
  static from_json(json: string): Int;
}
/**
 */
declare export class Ipv4 {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Ipv4}
   */
  static from_bytes(bytes: Uint8Array): Ipv4;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Uint8Array}
   */
  ip(): Uint8Array;

  /**
   * @param {Uint8Array} data
   * @returns {Ipv4}
   */
  static new(data: Uint8Array): Ipv4;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Ipv4}
   */
  static from_hex(hex_str: string): Ipv4;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Ipv4}
   */
  static from_json(json: string): Ipv4;
}
/**
 */
declare export class Ipv6 {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Ipv6}
   */
  static from_bytes(bytes: Uint8Array): Ipv6;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Uint8Array}
   */
  ip(): Uint8Array;

  /**
   * @param {Uint8Array} data
   * @returns {Ipv6}
   */
  static new(data: Uint8Array): Ipv6;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Ipv6}
   */
  static from_hex(hex_str: string): Ipv6;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Ipv6}
   */
  static from_json(json: string): Ipv6;
}
/**
 */
declare export class JsVecString {
  free(): void;

  /**
   * @param {string} elem
   */
  add(elem: string): void;

  /**
   * @param {number} index
   * @returns {string}
   */
  get(index: number): string;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {JsVecString}
   */
  static new(): JsVecString;

  /**
   * @returns {(string)[]}
   */
  into_vec(): string[];

  /**
   * @returns {boolean}
   */
  is_empty(): boolean;
}
/**
 */
declare export class KESSignature {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {KESSignature}
   */
  static from_bytes(bytes: Uint8Array): KESSignature;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class KESVKey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {KESVKey}
   */
  static from_bytes(bytes: Uint8Array): KESVKey;

  /**
   * @param {string} bech_str
   * @returns {KESVKey}
   */
  static from_bech32(bech_str: string): KESVKey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {KESVKey}
   */
  static from_hex(hex: string): KESVKey;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class Language {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Language}
   */
  static from_bytes(bytes: Uint8Array): Language;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Language}
   */
  static new_plutus_v1(): Language;

  /**
   * @returns {Language}
   */
  static new_plutus_v2(): Language;

  /**
   * @returns {Language}
   */
  static new_plutus_v3(): Language;

  /**
 * @returns {$Values<
                typeof 
                LanguageKind>}
 */
  kind(): $Values<typeof LanguageKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Language}
   */
  static from_hex(hex_str: string): Language;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Language}
   */
  static from_json(json: string): Language;
}
/**
 */
declare export class Languages {
  free(): void;

  /**
   * @param {Language} elem
   */
  add(elem: Language): void;

  /**
   * @param {number} index
   * @returns {Language}
   */
  get(index: number): Language;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Languages}
   */
  static new(): Languages;

  /**
   * @returns {Languages}
   */
  static list(): Languages;
}
/**
 */
declare export class LegacyDaedalusPrivateKey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {LegacyDaedalusPrivateKey}
   */
  static from_bytes(bytes: Uint8Array): LegacyDaedalusPrivateKey;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @returns {Uint8Array}
   */
  chaincode(): Uint8Array;
}
/**
 */
declare export class LinearFee {
  free(): void;

  /**
   * @returns {BigNum}
   */
  coefficient(): BigNum;

  /**
   * @param {BigNum} coefficient
   * @param {BigNum} constant
   * @returns {LinearFee}
   */
  static new(coefficient: BigNum, constant: BigNum): LinearFee;

  /**
   * @returns {BigNum}
   */
  constant(): BigNum;
}
/**
 */
declare export class MIRToStakeCredentials {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MIRToStakeCredentials}
   */
  static from_bytes(bytes: Uint8Array): MIRToStakeCredentials;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Credential} cred
   * @returns {Int | void}
   */
  get(cred: Credential): Int | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {MIRToStakeCredentials}
   */
  static new(): MIRToStakeCredentials;

  /**
   * @returns {Credentials}
   */
  keys(): Credentials;

  /**
   * @param {Credential} cred
   * @param {Int} delta
   * @returns {Int | void}
   */
  insert(cred: Credential, delta: Int): Int | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {MIRToStakeCredentials}
   */
  static from_hex(hex_str: string): MIRToStakeCredentials;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {MIRToStakeCredentials}
   */
  static from_json(json: string): MIRToStakeCredentials;
}
/**
 */
declare export class MalformedAddress {
  free(): void;

  /**
   * @returns {Address}
   */
  to_address(): Address;

  /**
   * @param {Address} addr
   * @returns {MalformedAddress | void}
   */
  static from_address(addr: Address): MalformedAddress | void;

  /**
   * @returns {Uint8Array}
   */
  original_bytes(): Uint8Array;
}
/**
 */
declare export class MetadataList {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MetadataList}
   */
  static from_bytes(bytes: Uint8Array): MetadataList;

  /**
   * @param {TransactionMetadatum} elem
   */
  add(elem: TransactionMetadatum): void;

  /**
   * @param {number} index
   * @returns {TransactionMetadatum}
   */
  get(index: number): TransactionMetadatum;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {MetadataList}
   */
  static new(): MetadataList;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {MetadataList}
   */
  static from_hex(hex_str: string): MetadataList;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class MetadataMap {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MetadataMap}
   */
  static from_bytes(bytes: Uint8Array): MetadataMap;

  /**
   * @param {number} key
   * @param {TransactionMetadatum} value
   * @returns {TransactionMetadatum | void}
   */
  insert_i32(
    key: number,
    value: TransactionMetadatum
  ): TransactionMetadatum | void;

  /**
   * @param {string} key
   * @param {TransactionMetadatum} value
   * @returns {TransactionMetadatum | void}
   */
  insert_str(
    key: string,
    value: TransactionMetadatum
  ): TransactionMetadatum | void;

  /**
   * @param {TransactionMetadatum} key
   * @returns {TransactionMetadatum}
   */
  get(key: TransactionMetadatum): TransactionMetadatum;

  /**
   * @param {TransactionMetadatum} key
   * @returns {boolean}
   */
  has(key: TransactionMetadatum): boolean;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {MetadataMap}
   */
  static new(): MetadataMap;

  /**
   * @returns {MetadataList}
   */
  keys(): MetadataList;

  /**
   * @param {TransactionMetadatum} key
   * @param {TransactionMetadatum} value
   * @returns {TransactionMetadatum | void}
   */
  insert(
    key: TransactionMetadatum,
    value: TransactionMetadatum
  ): TransactionMetadatum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {number} key
   * @returns {TransactionMetadatum}
   */
  get_i32(key: number): TransactionMetadatum;

  /**
   * @param {string} key
   * @returns {TransactionMetadatum}
   */
  get_str(key: string): TransactionMetadatum;

  /**
   * @param {string} hex_str
   * @returns {MetadataMap}
   */
  static from_hex(hex_str: string): MetadataMap;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class Mint {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Mint}
   */
  static from_bytes(bytes: Uint8Array): Mint;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {ScriptHash} key
   * @param {MintAssets} value
   * @returns {Mint}
   */
  static new_from_entry(key: ScriptHash, value: MintAssets): Mint;

  /**
   * Returns the multiasset where only negative (burning) entries are present
   * @returns {MultiAsset}
   */
  as_negative_multiasset(): MultiAsset;

  /**
   * Returns the multiasset where only positive (minting) entries are present
   * @returns {MultiAsset}
   */
  as_positive_multiasset(): MultiAsset;

  /**
   * @param {ScriptHash} key
   * @returns {MintsAssets | void}
   */
  get(key: ScriptHash): MintsAssets | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Mint}
   */
  static new(): Mint;

  /**
   * @returns {ScriptHashes}
   */
  keys(): ScriptHashes;

  /**
   * @param {ScriptHash} key
   * @param {MintAssets} value
   * @returns {MintAssets | void}
   */
  insert(key: ScriptHash, value: MintAssets): MintAssets | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Mint}
   */
  static from_hex(hex_str: string): Mint;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Mint}
   */
  static from_json(json: string): Mint;
}
/**
 */
declare export class MintAssets {
  free(): void;

  /**
   * @param {AssetName} key
   * @param {Int} value
   * @returns {MintAssets}
   */
  static new_from_entry(key: AssetName, value: Int): MintAssets;

  /**
   * @param {AssetName} key
   * @returns {Int | void}
   */
  get(key: AssetName): Int | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {MintAssets}
   */
  static new(): MintAssets;

  /**
   * @returns {AssetNames}
   */
  keys(): AssetNames;

  /**
   * @param {AssetName} key
   * @param {Int} value
   * @returns {Int | void}
   */
  insert(key: AssetName, value: Int): Int | void;
}
/**
 */
declare export class MintBuilder {
  free(): void;

  /**
   * @returns {Redeemers}
   */
  get_redeemers(): Redeemers;

  /**
   * @returns {TransactionInputs}
   */
  get_ref_inputs(): TransactionInputs;

  /**
   * @returns {NativeScripts}
   */
  get_native_scripts(): NativeScripts;

  /**
   * @returns {boolean}
   */
  has_native_scripts(): boolean;

  /**
   * @returns {boolean}
   */
  has_plutus_scripts(): boolean;

  /**
   * @returns {PlutusWitnesses}
   */
  get_plutus_witnesses(): PlutusWitnesses;

  /**
   * @returns {MintBuilder}
   */
  static new(): MintBuilder;

  /**
   * @returns {Mint}
   */
  build(): Mint;

  /**
   * @param {MintWitness} mint
   * @param {AssetName} asset_name
   * @param {Int} amount
   */
  add_asset(mint: MintWitness, asset_name: AssetName, amount: Int): void;

  /**
   * @param {MintWitness} mint
   * @param {AssetName} asset_name
   * @param {Int} amount
   */
  set_asset(mint: MintWitness, asset_name: AssetName, amount: Int): void;
}
/**
 */
declare export class MintWitness {
  free(): void;

  /**
   * @param {NativeScriptSource} native_script
   * @returns {MintWitness}
   */
  static new_native_script(native_script: NativeScriptSource): MintWitness;

  /**
   * @param {PlutusScriptSource} plutus_script
   * @param {Redeemer} redeemer
   * @returns {MintWitness}
   */
  static new_plutus_script(
    plutus_script: PlutusScriptSource,
    redeemer: Redeemer
  ): MintWitness;
}
/**
 */
declare export class MintsAssets {
  free(): void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {MintAssets} mint_assets
   */
  add(mint_assets: MintAssets): void;

  /**
   * @param {number} index
   * @returns {MintAssets | void}
   */
  get(index: number): MintAssets | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {MintsAssets}
   */
  static new(): MintsAssets;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} json
   * @returns {MintsAssets}
   */
  static from_json(json: string): MintsAssets;
}
/**
 */
declare export class MoveInstantaneousReward {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MoveInstantaneousReward}
   */
  static from_bytes(bytes: Uint8Array): MoveInstantaneousReward;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {BigNum | void}
   */
  as_to_other_pot(): BigNum | void;

  /**
 * @param {$Values<
                typeof 
                MIRPot>} pot
 * @param {BigNum} amount
 * @returns {MoveInstantaneousReward}
 */
  static new_to_other_pot(
    pot: $Values<typeof MIRPot>,
    amount: BigNum
  ): MoveInstantaneousReward;

  /**
   * @returns {MIRToStakeCredentials | void}
   */
  as_to_stake_creds(): MIRToStakeCredentials | void;

  /**
 * @param {$Values<
                typeof 
                MIRPot>} pot
 * @param {MIRToStakeCredentials} amounts
 * @returns {MoveInstantaneousReward}
 */
  static new_to_stake_creds(
    pot: $Values<typeof MIRPot>,
    amounts: MIRToStakeCredentials
  ): MoveInstantaneousReward;

  /**
 * @returns {$Values<
                typeof 
                MIRPot>}
 */
  pot(): $Values<typeof MIRPot>;

  /**
 * @returns {$Values<
                typeof 
                MIRKind>}
 */
  kind(): $Values<typeof MIRKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {MoveInstantaneousReward}
   */
  static from_hex(hex_str: string): MoveInstantaneousReward;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {MoveInstantaneousReward}
   */
  static from_json(json: string): MoveInstantaneousReward;
}
/**
 */
declare export class MoveInstantaneousRewardsCert {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MoveInstantaneousRewardsCert}
   */
  static from_bytes(bytes: Uint8Array): MoveInstantaneousRewardsCert;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {MoveInstantaneousReward}
   */
  move_instantaneous_reward(): MoveInstantaneousReward;

  /**
   * @param {MoveInstantaneousReward} move_instantaneous_reward
   * @returns {MoveInstantaneousRewardsCert}
   */
  static new(
    move_instantaneous_reward: MoveInstantaneousReward
  ): MoveInstantaneousRewardsCert;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {MoveInstantaneousRewardsCert}
   */
  static from_hex(hex_str: string): MoveInstantaneousRewardsCert;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {MoveInstantaneousRewardsCert}
   */
  static from_json(json: string): MoveInstantaneousRewardsCert;
}
/**
 */
declare export class MultiAsset {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MultiAsset}
   */
  static from_bytes(bytes: Uint8Array): MultiAsset;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * all assets under {policy_id}, if any exist, or else None (undefined in JS)
   * @param {ScriptHash} policy_id
   * @returns {Assets | void}
   */
  get(policy_id: ScriptHash): Assets | void;

  /**
   * the number of unique policy IDs in the multiasset
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {MultiAsset}
   */
  static new(): MultiAsset;

  /**
   * removes an asset from the list if the result is 0 or less
   * does not modify this object, instead the result is returned
   * @param {MultiAsset} rhs_ma
   * @returns {MultiAsset}
   */
  sub(rhs_ma: MultiAsset): MultiAsset;

  /**
   * returns all policy IDs used by assets in this multiasset
   * @returns {ScriptHashes}
   */
  keys(): ScriptHashes;

  /**
   * set (and replace if it exists) all assets with policy {policy_id} to a copy of {assets}
   * @param {ScriptHash} policy_id
   * @param {Assets} assets
   * @returns {Assets | void}
   */
  insert(policy_id: ScriptHash, assets: Assets): Assets | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {MultiAsset}
   */
  static from_hex(hex_str: string): MultiAsset;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {MultiAsset}
   */
  static from_json(json: string): MultiAsset;

  /**
   * returns the amount of asset {asset_name} under policy {policy_id}
   * If such an asset does not exist, 0 is returned.
   * @param {ScriptHash} policy_id
   * @param {AssetName} asset_name
   * @returns {BigNum}
   */
  get_asset(policy_id: ScriptHash, asset_name: AssetName): BigNum;

  /**
   * sets the asset {asset_name} to {value} under policy {policy_id}
   * returns the previous amount if it was set, or else None (undefined in JS)
   * @param {ScriptHash} policy_id
   * @param {AssetName} asset_name
   * @param {BigNum} value
   * @returns {BigNum | void}
   */
  set_asset(
    policy_id: ScriptHash,
    asset_name: AssetName,
    value: BigNum
  ): BigNum | void;
}
/**
 */
declare export class MultiHostName {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {MultiHostName}
   */
  static from_bytes(bytes: Uint8Array): MultiHostName;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {DNSRecordSRV} dns_name
   * @returns {MultiHostName}
   */
  static new(dns_name: DNSRecordSRV): MultiHostName;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @returns {DNSRecordSRV}
   */
  dns_name(): DNSRecordSRV;

  /**
   * @param {string} hex_str
   * @returns {MultiHostName}
   */
  static from_hex(hex_str: string): MultiHostName;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {MultiHostName}
   */
  static from_json(json: string): MultiHostName;
}
/**
 */
declare export class NativeScript {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {NativeScript}
   */
  static from_bytes(bytes: Uint8Array): NativeScript;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {ScriptAll | void}
   */
  as_script_all(): ScriptAll | void;

  /**
   * @returns {ScriptAny | void}
   */
  as_script_any(): ScriptAny | void;

  /**
   * @param {ScriptAll} script_all
   * @returns {NativeScript}
   */
  static new_script_all(script_all: ScriptAll): NativeScript;

  /**
   * @param {ScriptAny} script_any
   * @returns {NativeScript}
   */
  static new_script_any(script_any: ScriptAny): NativeScript;

  /**
   * @returns {ScriptNOfK | void}
   */
  as_script_n_of_k(): ScriptNOfK | void;

  /**
   * @returns {ScriptPubkey | void}
   */
  as_script_pubkey(): ScriptPubkey | void;

  /**
   * @returns {TimelockStart | void}
   */
  as_timelock_start(): TimelockStart | void;

  /**
   * @param {ScriptNOfK} script_n_of_k
   * @returns {NativeScript}
   */
  static new_script_n_of_k(script_n_of_k: ScriptNOfK): NativeScript;

  /**
   * @param {ScriptPubkey} script_pubkey
   * @returns {NativeScript}
   */
  static new_script_pubkey(script_pubkey: ScriptPubkey): NativeScript;

  /**
   * @returns {TimelockExpiry | void}
   */
  as_timelock_expiry(): TimelockExpiry | void;

  /**
   * @param {TimelockStart} timelock_start
   * @returns {NativeScript}
   */
  static new_timelock_start(timelock_start: TimelockStart): NativeScript;

  /**
   * @param {TimelockExpiry} timelock_expiry
   * @returns {NativeScript}
   */
  static new_timelock_expiry(timelock_expiry: TimelockExpiry): NativeScript;

  /**
   * Returns a set of Ed25519KeyHashes
   * contained within this script recursively on any depth level.
   * The order of the keys in the result is not determined in any way.
   * @returns {Ed25519KeyHashes}
   */
  get_required_signers(): Ed25519KeyHashes;

  /**
   * @returns {ScriptHash}
   */
  hash(): ScriptHash;

  /**
 * @returns {$Values<
                typeof 
                NativeScriptKind>}
 */
  kind(): $Values<typeof NativeScriptKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {NativeScript}
   */
  static from_hex(hex_str: string): NativeScript;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {NativeScript}
   */
  static from_json(json: string): NativeScript;
}
/**
 */
declare export class NativeScriptSource {
  free(): void;

  /**
   * @param {ScriptHash} script_hash
   * @param {TransactionInput} input
   * @param {number} script_size
   * @returns {NativeScriptSource}
   */
  static new_ref_input(
    script_hash: ScriptHash,
    input: TransactionInput,
    script_size: number
  ): NativeScriptSource;

  /**
   * @returns {number | void}
   */
  get_ref_script_size(): number | void;

  /**
   * @param {Ed25519KeyHashes} key_hashes
   */
  set_required_signers(key_hashes: Ed25519KeyHashes): void;

  /**
   * @param {NativeScript} script
   * @returns {NativeScriptSource}
   */
  static new(script: NativeScript): NativeScriptSource;
}
/**
 */
declare export class NativeScripts {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {NativeScripts}
   */
  static from_bytes(bytes: Uint8Array): NativeScripts;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {NativeScript} elem
   */
  add(elem: NativeScript): void;

  /**
   * @param {number} index
   * @returns {NativeScript}
   */
  get(index: number): NativeScript;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {NativeScripts}
   */
  static new(): NativeScripts;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {NativeScripts}
   */
  static from_hex(hex_str: string): NativeScripts;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {NativeScripts}
   */
  static from_json(json: string): NativeScripts;
}
/**
 */
declare export class NetworkId {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {NetworkId}
   */
  static from_bytes(bytes: Uint8Array): NetworkId;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
 * @returns {$Values<
                typeof 
                NetworkIdKind>}
 */
  kind(): $Values<typeof NetworkIdKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {NetworkId}
   */
  static mainnet(): NetworkId;

  /**
   * @returns {NetworkId}
   */
  static testnet(): NetworkId;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {NetworkId}
   */
  static from_hex(hex_str: string): NetworkId;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {NetworkId}
   */
  static from_json(json: string): NetworkId;
}
/**
 */
declare export class NetworkInfo {
  free(): void;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @returns {number}
   */
  protocol_magic(): number;

  /**
   * @returns {NetworkInfo}
   */
  static testnet_preprod(): NetworkInfo;

  /**
   * @returns {NetworkInfo}
   */
  static testnet_preview(): NetworkInfo;

  /**
   * @param {number} network_id
   * @param {number} protocol_magic
   * @returns {NetworkInfo}
   */
  static new(network_id: number, protocol_magic: number): NetworkInfo;

  /**
   * @returns {NetworkInfo}
   */
  static mainnet(): NetworkInfo;
}
/**
 */
declare export class NewConstitutionAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {NewConstitutionAction}
   */
  static from_bytes(bytes: Uint8Array): NewConstitutionAction;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Constitution}
   */
  constitution(): Constitution;

  /**
   * @returns {GovernanceActionId | void}
   */
  gov_action_id(): GovernanceActionId | void;

  /**
   * @returns {boolean}
   */
  has_script_hash(): boolean;

  /**
   * @param {GovernanceActionId} gov_action_id
   * @param {Constitution} constitution
   * @returns {NewConstitutionAction}
   */
  static new_with_action_id(
    gov_action_id: GovernanceActionId,
    constitution: Constitution
  ): NewConstitutionAction;

  /**
   * @param {Constitution} constitution
   * @returns {NewConstitutionAction}
   */
  static new(constitution: Constitution): NewConstitutionAction;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {NewConstitutionAction}
   */
  static from_hex(hex_str: string): NewConstitutionAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {NewConstitutionAction}
   */
  static from_json(json: string): NewConstitutionAction;
}
/**
 */
declare export class NoConfidenceAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {NoConfidenceAction}
   */
  static from_bytes(bytes: Uint8Array): NoConfidenceAction;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {GovernanceActionId | void}
   */
  gov_action_id(): GovernanceActionId | void;

  /**
   * @param {GovernanceActionId} gov_action_id
   * @returns {NoConfidenceAction}
   */
  static new_with_action_id(
    gov_action_id: GovernanceActionId
  ): NoConfidenceAction;

  /**
   * @returns {NoConfidenceAction}
   */
  static new(): NoConfidenceAction;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {NoConfidenceAction}
   */
  static from_hex(hex_str: string): NoConfidenceAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {NoConfidenceAction}
   */
  static from_json(json: string): NoConfidenceAction;
}
/**
 */
declare export class Nonce {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Nonce}
   */
  static from_bytes(bytes: Uint8Array): Nonce;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Nonce}
   */
  static new_identity(): Nonce;

  /**
   * @param {Uint8Array} hash
   * @returns {Nonce}
   */
  static new_from_hash(hash: Uint8Array): Nonce;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Nonce}
   */
  static from_hex(hex_str: string): Nonce;

  /**
   * @returns {Uint8Array | void}
   */
  get_hash(): Uint8Array | void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Nonce}
   */
  static from_json(json: string): Nonce;
}
/**
 */
declare export class OperationalCert {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {OperationalCert}
   */
  static from_bytes(bytes: Uint8Array): OperationalCert;

  /**
   * @returns {number}
   */
  kes_period(): number;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {number}
   */
  sequence_number(): number;

  /**
   * @param {KESVKey} hot_vkey
   * @param {number} sequence_number
   * @param {number} kes_period
   * @param {Ed25519Signature} sigma
   * @returns {OperationalCert}
   */
  static new(
    hot_vkey: KESVKey,
    sequence_number: number,
    kes_period: number,
    sigma: Ed25519Signature
  ): OperationalCert;

  /**
   * @returns {Ed25519Signature}
   */
  sigma(): Ed25519Signature;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {OperationalCert}
   */
  static from_hex(hex_str: string): OperationalCert;

  /**
   * @returns {KESVKey}
   */
  hot_vkey(): KESVKey;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {OperationalCert}
   */
  static from_json(json: string): OperationalCert;
}
/**
 */
declare export class OutputDatum {
  free(): void;

  /**
   * @param {DataHash} data_hash
   * @returns {OutputDatum}
   */
  static new_data_hash(data_hash: DataHash): OutputDatum;

  /**
   * @returns {PlutusData | void}
   */
  data(): PlutusData | void;

  /**
   * @param {PlutusData} data
   * @returns {OutputDatum}
   */
  static new_data(data: PlutusData): OutputDatum;

  /**
   * @returns {DataHash | void}
   */
  data_hash(): DataHash | void;
}
/**
 */
declare export class ParameterChangeAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ParameterChangeAction}
   */
  static from_bytes(bytes: Uint8Array): ParameterChangeAction;

  /**
   * @returns {ScriptHash | void}
   */
  policy_hash(): ScriptHash | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {GovernanceActionId | void}
   */
  gov_action_id(): GovernanceActionId | void;

  /**
   * @param {GovernanceActionId} gov_action_id
   * @param {ProtocolParamUpdate} protocol_param_updates
   * @returns {ParameterChangeAction}
   */
  static new_with_action_id(
    gov_action_id: GovernanceActionId,
    protocol_param_updates: ProtocolParamUpdate
  ): ParameterChangeAction;

  /**
   * @param {ProtocolParamUpdate} protocol_param_updates
   * @param {ScriptHash} policy_hash
   * @returns {ParameterChangeAction}
   */
  static new_with_policy_hash(
    protocol_param_updates: ProtocolParamUpdate,
    policy_hash: ScriptHash
  ): ParameterChangeAction;

  /**
   * @returns {ProtocolParamUpdate}
   */
  protocol_param_updates(): ProtocolParamUpdate;

  /**
   * @param {GovernanceActionId} gov_action_id
   * @param {ProtocolParamUpdate} protocol_param_updates
   * @param {ScriptHash} policy_hash
   * @returns {ParameterChangeAction}
   */
  static new_with_policy_hash_and_action_id(
    gov_action_id: GovernanceActionId,
    protocol_param_updates: ProtocolParamUpdate,
    policy_hash: ScriptHash
  ): ParameterChangeAction;

  /**
   * @param {ProtocolParamUpdate} protocol_param_updates
   * @returns {ParameterChangeAction}
   */
  static new(
    protocol_param_updates: ProtocolParamUpdate
  ): ParameterChangeAction;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ParameterChangeAction}
   */
  static from_hex(hex_str: string): ParameterChangeAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ParameterChangeAction}
   */
  static from_json(json: string): ParameterChangeAction;
}
/**
 */
declare export class PlutusData {
  free(): void;

  /**
   * @param {NetworkInfo} network
   * @returns {Address}
   */
  as_address(network: NetworkInfo): Address;

  /**
   * @returns {BigInt | void}
   */
  as_integer(): BigInt | void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PlutusData}
   */
  static from_bytes(bytes: Uint8Array): PlutusData;

  /**
   * @param {BigInt} integer
   * @returns {PlutusData}
   */
  static new_integer(integer: BigInt): PlutusData;

  /**
   * @param {Address} address
   * @returns {PlutusData}
   */
  static from_address(address: Address): PlutusData;

  /**
   * @returns {ConstrPlutusData | void}
   */
  as_constr_plutus_data(): ConstrPlutusData | void;

  /**
   * @param {ConstrPlutusData} constr_plutus_data
   * @returns {PlutusData}
   */
  static new_constr_plutus_data(
    constr_plutus_data: ConstrPlutusData
  ): PlutusData;

  /**
   * Same as `.new_constr_plutus_data` but creates constr with empty data list
   * @param {BigNum} alternative
   * @returns {PlutusData}
   */
  static new_empty_constr_plutus_data(alternative: BigNum): PlutusData;

  /**
   * @param {BigNum} alternative
   * @param {PlutusData} plutus_data
   * @returns {PlutusData}
   */
  static new_single_value_constr_plutus_data(
    alternative: BigNum,
    plutus_data: PlutusData
  ): PlutusData;

  /**
 * @returns {$Values<
                typeof 
                PlutusDataKind>}
 */
  kind(): $Values<typeof PlutusDataKind>;

  /**
   * @returns {PlutusMap | void}
   */
  as_map(): PlutusMap | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {PlutusList | void}
   */
  as_list(): PlutusList | void;

  /**
   * @param {PlutusMap} map
   * @returns {PlutusData}
   */
  static new_map(map: PlutusMap): PlutusData;

  /**
 * @param {$Values<
                typeof 
                PlutusDatumSchema>} schema
 * @returns {string}
 */
  to_json(schema: $Values<typeof PlutusDatumSchema>): string;

  /**
   * @returns {Uint8Array | void}
   */
  as_bytes(): Uint8Array | void;

  /**
   * @param {string} hex_str
   * @returns {PlutusData}
   */
  static from_hex(hex_str: string): PlutusData;

  /**
   * @param {PlutusList} list
   * @returns {PlutusData}
   */
  static new_list(list: PlutusList): PlutusData;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
 * @param {string} json
 * @param {$Values<
                typeof 
                PlutusDatumSchema>} schema
 * @returns {PlutusData}
 */
  static from_json(
    json: string,
    schema: $Values<typeof PlutusDatumSchema>
  ): PlutusData;

  /**
   * @param {Uint8Array} bytes
   * @returns {PlutusData}
   */
  static new_bytes(bytes: Uint8Array): PlutusData;
}
/**
 */
declare export class PlutusList {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PlutusList}
   */
  static from_bytes(bytes: Uint8Array): PlutusList;

  /**
   * @param {PlutusData} elem
   */
  add(elem: PlutusData): void;

  /**
   * @param {number} index
   * @returns {PlutusData}
   */
  get(index: number): PlutusData;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {PlutusList}
   */
  static new(): PlutusList;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {PlutusList}
   */
  static from_hex(hex_str: string): PlutusList;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class PlutusMap {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PlutusMap}
   */
  static from_bytes(bytes: Uint8Array): PlutusMap;

  /**
   * @param {PlutusData} key
   * @returns {PlutusMapValues | void}
   */
  get(key: PlutusData): PlutusMapValues | void;

  /**
   * Return count ok different keys in the map.
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {PlutusMap}
   */
  static new(): PlutusMap;

  /**
   * @returns {PlutusList}
   */
  keys(): PlutusList;

  /**
   * Returns the previous value associated with the key, if any.
   * Replace the values associated with the key.
   * @param {PlutusData} key
   * @param {PlutusMapValues} values
   * @returns {PlutusMapValues | void}
   */
  insert(key: PlutusData, values: PlutusMapValues): PlutusMapValues | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {PlutusMap}
   */
  static from_hex(hex_str: string): PlutusMap;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class PlutusMapValues {
  free(): void;

  /**
   * @param {PlutusData} elem
   */
  add(elem: PlutusData): void;

  /**
   * @param {number} index
   * @returns {PlutusData | void}
   */
  get(index: number): PlutusData | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {PlutusMapValues}
   */
  static new(): PlutusMapValues;
}
/**
 */
declare export class PlutusScript {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PlutusScript}
   */
  static from_bytes(bytes: Uint8Array): PlutusScript;

  /**
   * Same as `.from_bytes` but will consider the script as requiring the Plutus Language V2
   * @param {Uint8Array} bytes
   * @returns {PlutusScript}
   */
  static from_bytes_v2(bytes: Uint8Array): PlutusScript;

  /**
   * Same as `.from_bytes` but will consider the script as requiring the Plutus Language V3
   * @param {Uint8Array} bytes
   * @returns {PlutusScript}
   */
  static from_bytes_v3(bytes: Uint8Array): PlutusScript;

  /**
   * @returns {Language}
   */
  language_version(): Language;

  /**
   *
   * * Creates a new Plutus script from the RAW bytes of the compiled script.
   * * This does NOT include any CBOR encoding around these bytes (e.g. from "cborBytes" in cardano-cli)
   * * If you creating this from those you should use PlutusScript::from_bytes() instead.
   * @param {Uint8Array} bytes
   * @param {Language} language
   * @returns {PlutusScript}
   */
  static new_with_version(bytes: Uint8Array, language: Language): PlutusScript;

  /**
   * Same as .from_hex but will consider the script as requiring the specified language version
   * @param {string} hex_str
   * @param {Language} language
   * @returns {PlutusScript}
   */
  static from_hex_with_version(
    hex_str: string,
    language: Language
  ): PlutusScript;

  /**
   * Same as `.from_bytes` but will consider the script as requiring the specified language version
   * @param {Uint8Array} bytes
   * @param {Language} language
   * @returns {PlutusScript}
   */
  static from_bytes_with_version(
    bytes: Uint8Array,
    language: Language
  ): PlutusScript;

  /**
   *
   * * Creates a new Plutus script from the RAW bytes of the compiled script.
   * * This does NOT include any CBOR encoding around these bytes (e.g. from "cborBytes" in cardano-cli)
   * * If you creating this from those you should use PlutusScript::from_bytes() instead.
   * @param {Uint8Array} bytes
   * @returns {PlutusScript}
   */
  static new(bytes: Uint8Array): PlutusScript;

  /**
   * @returns {ScriptHash}
   */
  hash(): ScriptHash;

  /**
   *
   * * The raw bytes of this compiled Plutus script.
   * * If you need "cborBytes" for cardano-cli use PlutusScript::to_bytes() instead.
   * @returns {Uint8Array}
   */
  bytes(): Uint8Array;

  /**
   *
   * * Creates a new Plutus script from the RAW bytes of the compiled script.
   * * This does NOT include any CBOR encoding around these bytes (e.g. from "cborBytes" in cardano-cli)
   * * If you creating this from those you should use PlutusScript::from_bytes() instead.
   * @param {Uint8Array} bytes
   * @returns {PlutusScript}
   */
  static new_v2(bytes: Uint8Array): PlutusScript;

  /**
   *
   * * Creates a new Plutus script from the RAW bytes of the compiled script.
   * * This does NOT include any CBOR encoding around these bytes (e.g. from "cborBytes" in cardano-cli)
   * * If you creating this from those you should use PlutusScript::from_bytes() instead.
   * @param {Uint8Array} bytes
   * @returns {PlutusScript}
   */
  static new_v3(bytes: Uint8Array): PlutusScript;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {PlutusScript}
   */
  static from_hex(hex_str: string): PlutusScript;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class PlutusScriptSource {
  free(): void;

  /**
   * @param {ScriptHash} script_hash
   * @param {TransactionInput} input
   * @param {Language} lang_ver
   * @param {number} script_size
   * @returns {PlutusScriptSource}
   */
  static new_ref_input(
    script_hash: ScriptHash,
    input: TransactionInput,
    lang_ver: Language,
    script_size: number
  ): PlutusScriptSource;

  /**
   * @returns {number | void}
   */
  get_ref_script_size(): number | void;

  /**
   * @param {Ed25519KeyHashes} key_hashes
   */
  set_required_signers(key_hashes: Ed25519KeyHashes): void;

  /**
   * @param {PlutusScript} script
   * @returns {PlutusScriptSource}
   */
  static new(script: PlutusScript): PlutusScriptSource;
}
/**
 */
declare export class PlutusScripts {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PlutusScripts}
   */
  static from_bytes(bytes: Uint8Array): PlutusScripts;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {PlutusScript} elem
   */
  add(elem: PlutusScript): void;

  /**
   * @param {number} index
   * @returns {PlutusScript}
   */
  get(index: number): PlutusScript;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {PlutusScripts}
   */
  static new(): PlutusScripts;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {PlutusScripts}
   */
  static from_hex(hex_str: string): PlutusScripts;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {PlutusScripts}
   */
  static from_json(json: string): PlutusScripts;
}
/**
 */
declare export class PlutusWitness {
  free(): void;

  /**
   * @param {PlutusScriptSource} script
   * @param {DatumSource} datum
   * @param {Redeemer} redeemer
   * @returns {PlutusWitness}
   */
  static new_with_ref(
    script: PlutusScriptSource,
    datum: DatumSource,
    redeemer: Redeemer
  ): PlutusWitness;

  /**
   * @param {PlutusScript} script
   * @param {Redeemer} redeemer
   * @returns {PlutusWitness}
   */
  static new_without_datum(
    script: PlutusScript,
    redeemer: Redeemer
  ): PlutusWitness;

  /**
   * @param {PlutusScriptSource} script
   * @param {Redeemer} redeemer
   * @returns {PlutusWitness}
   */
  static new_with_ref_without_datum(
    script: PlutusScriptSource,
    redeemer: Redeemer
  ): PlutusWitness;

  /**
   * @param {PlutusScript} script
   * @param {PlutusData} datum
   * @param {Redeemer} redeemer
   * @returns {PlutusWitness}
   */
  static new(
    script: PlutusScript,
    datum: PlutusData,
    redeemer: Redeemer
  ): PlutusWitness;

  /**
   * @returns {PlutusData | void}
   */
  datum(): PlutusData | void;

  /**
   * @returns {PlutusScript | void}
   */
  script(): PlutusScript | void;

  /**
   * @returns {Redeemer}
   */
  redeemer(): Redeemer;
}
/**
 */
declare export class PlutusWitnesses {
  free(): void;

  /**
   * @param {PlutusWitness} elem
   */
  add(elem: PlutusWitness): void;

  /**
   * @param {number} index
   * @returns {PlutusWitness}
   */
  get(index: number): PlutusWitness;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {PlutusWitnesses}
   */
  static new(): PlutusWitnesses;
}
/**
 */
declare export class Pointer {
  free(): void;

  /**
   * @returns {number}
   */
  cert_index(): number;

  /**
   * @param {BigNum} slot
   * @param {BigNum} tx_index
   * @param {BigNum} cert_index
   * @returns {Pointer}
   */
  static new_pointer(
    slot: BigNum,
    tx_index: BigNum,
    cert_index: BigNum
  ): Pointer;

  /**
   * @returns {BigNum}
   */
  slot_bignum(): BigNum;

  /**
   * @returns {BigNum}
   */
  tx_index_bignum(): BigNum;

  /**
   * @returns {BigNum}
   */
  cert_index_bignum(): BigNum;

  /**
   * !!! DEPRECATED !!!
   * This constructor uses outdated slot number format for the ttl value, tx_index and cert_index.
   * Use `.new_pointer` instead
   * @param {number} slot
   * @param {number} tx_index
   * @param {number} cert_index
   * @returns {Pointer}
   */
  static new(slot: number, tx_index: number, cert_index: number): Pointer;

  /**
   * @returns {number}
   */
  slot(): number;

  /**
   * @returns {number}
   */
  tx_index(): number;
}
/**
 */
declare export class PointerAddress {
  free(): void;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @returns {Address}
   */
  to_address(): Address;

  /**
   * @param {Address} addr
   * @returns {PointerAddress | void}
   */
  static from_address(addr: Address): PointerAddress | void;

  /**
   * @returns {Credential}
   */
  payment_cred(): Credential;

  /**
   * @returns {Pointer}
   */
  stake_pointer(): Pointer;

  /**
   * @param {number} network
   * @param {Credential} payment
   * @param {Pointer} stake
   * @returns {PointerAddress}
   */
  static new(
    network: number,
    payment: Credential,
    stake: Pointer
  ): PointerAddress;
}
/**
 */
declare export class PoolMetadata {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PoolMetadata}
   */
  static from_bytes(bytes: Uint8Array): PoolMetadata;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {PoolMetadataHash}
   */
  pool_metadata_hash(): PoolMetadataHash;

  /**
   * @param {URL} url
   * @param {PoolMetadataHash} pool_metadata_hash
   * @returns {PoolMetadata}
   */
  static new(url: URL, pool_metadata_hash: PoolMetadataHash): PoolMetadata;

  /**
   * @returns {URL}
   */
  url(): URL;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {PoolMetadata}
   */
  static from_hex(hex_str: string): PoolMetadata;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {PoolMetadata}
   */
  static from_json(json: string): PoolMetadata;
}
/**
 */
declare export class PoolMetadataHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PoolMetadataHash}
   */
  static from_bytes(bytes: Uint8Array): PoolMetadataHash;

  /**
   * @param {string} bech_str
   * @returns {PoolMetadataHash}
   */
  static from_bech32(bech_str: string): PoolMetadataHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {PoolMetadataHash}
   */
  static from_hex(hex: string): PoolMetadataHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class PoolParams {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PoolParams}
   */
  static from_bytes(bytes: Uint8Array): PoolParams;

  /**
   * @returns {Ed25519KeyHashes}
   */
  pool_owners(): Ed25519KeyHashes;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {VRFKeyHash}
   */
  vrf_keyhash(): VRFKeyHash;

  /**
   * @returns {PoolMetadata | void}
   */
  pool_metadata(): PoolMetadata | void;

  /**
   * @returns {RewardAddress}
   */
  reward_account(): RewardAddress;

  /**
   * @param {Ed25519KeyHash} operator
   * @param {VRFKeyHash} vrf_keyhash
   * @param {BigNum} pledge
   * @param {BigNum} cost
   * @param {UnitInterval} margin
   * @param {RewardAddress} reward_account
   * @param {Ed25519KeyHashes} pool_owners
   * @param {Relays} relays
   * @param {PoolMetadata | void} [pool_metadata]
   * @returns {PoolParams}
   */
  static new(
    operator: Ed25519KeyHash,
    vrf_keyhash: VRFKeyHash,
    pledge: BigNum,
    cost: BigNum,
    margin: UnitInterval,
    reward_account: RewardAddress,
    pool_owners: Ed25519KeyHashes,
    relays: Relays,
    pool_metadata?: PoolMetadata
  ): PoolParams;

  /**
   * @returns {BigNum}
   */
  cost(): BigNum;

  /**
   * @returns {UnitInterval}
   */
  margin(): UnitInterval;

  /**
   * @returns {BigNum}
   */
  pledge(): BigNum;

  /**
   * @returns {Relays}
   */
  relays(): Relays;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {PoolParams}
   */
  static from_hex(hex_str: string): PoolParams;

  /**
   * @returns {Ed25519KeyHash}
   */
  operator(): Ed25519KeyHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {PoolParams}
   */
  static from_json(json: string): PoolParams;
}
/**
 */
declare export class PoolRegistration {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PoolRegistration}
   */
  static from_bytes(bytes: Uint8Array): PoolRegistration;

  /**
   * @returns {PoolParams}
   */
  pool_params(): PoolParams;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {PoolParams} pool_params
   * @returns {PoolRegistration}
   */
  static new(pool_params: PoolParams): PoolRegistration;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {PoolRegistration}
   */
  static from_hex(hex_str: string): PoolRegistration;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {PoolRegistration}
   */
  static from_json(json: string): PoolRegistration;
}
/**
 */
declare export class PoolRetirement {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PoolRetirement}
   */
  static from_bytes(bytes: Uint8Array): PoolRetirement;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash}
   */
  pool_keyhash(): Ed25519KeyHash;

  /**
   * @param {Ed25519KeyHash} pool_keyhash
   * @param {number} epoch
   * @returns {PoolRetirement}
   */
  static new(pool_keyhash: Ed25519KeyHash, epoch: number): PoolRetirement;

  /**
   * @returns {number}
   */
  epoch(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {PoolRetirement}
   */
  static from_hex(hex_str: string): PoolRetirement;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {PoolRetirement}
   */
  static from_json(json: string): PoolRetirement;
}
/**
 */
declare export class PoolVotingThresholds {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PoolVotingThresholds}
   */
  static from_bytes(bytes: Uint8Array): PoolVotingThresholds;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {UnitInterval}
   */
  committee_normal(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  hard_fork_initiation(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  motion_no_confidence(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  committee_no_confidence(): UnitInterval;

  /**
   * @returns {UnitInterval}
   */
  security_relevant_threshold(): UnitInterval;

  /**
   * @param {UnitInterval} motion_no_confidence
   * @param {UnitInterval} committee_normal
   * @param {UnitInterval} committee_no_confidence
   * @param {UnitInterval} hard_fork_initiation
   * @param {UnitInterval} security_relevant_threshold
   * @returns {PoolVotingThresholds}
   */
  static new(
    motion_no_confidence: UnitInterval,
    committee_normal: UnitInterval,
    committee_no_confidence: UnitInterval,
    hard_fork_initiation: UnitInterval,
    security_relevant_threshold: UnitInterval
  ): PoolVotingThresholds;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {PoolVotingThresholds}
   */
  static from_hex(hex_str: string): PoolVotingThresholds;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {PoolVotingThresholds}
   */
  static from_json(json: string): PoolVotingThresholds;
}
/**
 */
declare export class PrivateKey {
  free(): void;

  /**
   * Get private key from its bech32 representation
   * ```javascript
   * PrivateKey.from_bech32(&#39;ed25519_sk1ahfetf02qwwg4dkq7mgp4a25lx5vh9920cr5wnxmpzz9906qvm8qwvlts0&#39;);
   * ```
   * For an extended 25519 key
   * ```javascript
   * PrivateKey.from_bech32(&#39;ed25519e_sk1gqwl4szuwwh6d0yk3nsqcc6xxc3fpvjlevgwvt60df59v8zd8f8prazt8ln3lmz096ux3xvhhvm3ca9wj2yctdh3pnw0szrma07rt5gl748fp&#39;);
   * ```
   * @param {string} bech32_str
   * @returns {PrivateKey}
   */
  static from_bech32(bech32_str: string): PrivateKey;

  /**
   * @returns {PrivateKey}
   */
  static generate_ed25519(): PrivateKey;

  /**
   * @param {Uint8Array} bytes
   * @returns {PrivateKey}
   */
  static from_normal_bytes(bytes: Uint8Array): PrivateKey;

  /**
   * @param {Uint8Array} bytes
   * @returns {PrivateKey}
   */
  static from_extended_bytes(bytes: Uint8Array): PrivateKey;

  /**
   * @returns {PrivateKey}
   */
  static generate_ed25519extended(): PrivateKey;

  /**
   * @param {Uint8Array} message
   * @returns {Ed25519Signature}
   */
  sign(message: Uint8Array): Ed25519Signature;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @param {string} hex_str
   * @returns {PrivateKey}
   */
  static from_hex(hex_str: string): PrivateKey;

  /**
   * @returns {string}
   */
  to_bech32(): string;

  /**
   * @returns {PublicKey}
   */
  to_public(): PublicKey;
}
/**
 */
declare export class ProposedProtocolParameterUpdates {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ProposedProtocolParameterUpdates}
   */
  static from_bytes(bytes: Uint8Array): ProposedProtocolParameterUpdates;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {GenesisHash} key
   * @returns {ProtocolParamUpdate | void}
   */
  get(key: GenesisHash): ProtocolParamUpdate | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {ProposedProtocolParameterUpdates}
   */
  static new(): ProposedProtocolParameterUpdates;

  /**
   * @returns {GenesisHashes}
   */
  keys(): GenesisHashes;

  /**
   * @param {GenesisHash} key
   * @param {ProtocolParamUpdate} value
   * @returns {ProtocolParamUpdate | void}
   */
  insert(
    key: GenesisHash,
    value: ProtocolParamUpdate
  ): ProtocolParamUpdate | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ProposedProtocolParameterUpdates}
   */
  static from_hex(hex_str: string): ProposedProtocolParameterUpdates;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ProposedProtocolParameterUpdates}
   */
  static from_json(json: string): ProposedProtocolParameterUpdates;
}
/**
 */
declare export class ProtocolParamUpdate {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ProtocolParamUpdate}
   */
  static from_bytes(bytes: Uint8Array): ProtocolParamUpdate;

  /**
   * @returns {Costmdls | void}
   */
  cost_models(): Costmdls | void;

  /**
   * @returns {BigNum | void}
   */
  key_deposit(): BigNum | void;

  /**
   * @returns {number | void}
   */
  max_tx_size(): number | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {BigNum | void}
   */
  drep_deposit(): BigNum | void;

  /**
   * @returns {BigNum | void}
   */
  pool_deposit(): BigNum | void;

  /**
   * @param {BigNum} minfee_a
   */
  set_minfee_a(minfee_a: BigNum): void;

  /**
   * @param {BigNum} minfee_b
   */
  set_minfee_b(minfee_b: BigNum): void;

  /**
   * !!! DEPRECATED !!!
   * Since babbage era this param is outdated. But this param you can meet in a pre-babbage block.
   * @returns {Nonce | void}
   */
  extra_entropy(): Nonce | void;

  /**
   * @returns {BigNum | void}
   */
  min_pool_cost(): BigNum | void;

  /**
   * @param {number} max_epoch
   */
  set_max_epoch(max_epoch: number): void;

  /**
   * @returns {UnitInterval | void}
   */
  expansion_rate(): UnitInterval | void;

  /**
   * @returns {number | void}
   */
  max_value_size(): number | void;

  /**
   * @returns {ExUnitPrices | void}
   */
  execution_costs(): ExUnitPrices | void;

  /**
   * @returns {ExUnits | void}
   */
  max_tx_ex_units(): ExUnits | void;

  /**
   * @param {Costmdls} cost_models
   */
  set_cost_models(cost_models: Costmdls): void;

  /**
   * @param {BigNum} key_deposit
   */
  set_key_deposit(key_deposit: BigNum): void;

  /**
   * @param {number} max_tx_size
   */
  set_max_tx_size(max_tx_size: number): void;

  /**
   * @returns {ProtocolVersion | void}
   */
  protocol_version(): ProtocolVersion | void;

  /**
   * @param {BigNum} drep_deposit
   */
  set_drep_deposit(drep_deposit: BigNum): void;

  /**
   * @param {BigNum} pool_deposit
   */
  set_pool_deposit(pool_deposit: BigNum): void;

  /**
   * @returns {BigNum | void}
   */
  ada_per_utxo_byte(): BigNum | void;

  /**
   * @param {BigNum} min_pool_cost
   */
  set_min_pool_cost(min_pool_cost: BigNum): void;

  /**
   * @returns {ExUnits | void}
   */
  max_block_ex_units(): ExUnits | void;

  /**
   * @returns {number | void}
   */
  min_committee_size(): number | void;

  /**
   * @param {UnitInterval} expansion_rate
   */
  set_expansion_rate(expansion_rate: UnitInterval): void;

  /**
   * @param {number} max_value_size
   */
  set_max_value_size(max_value_size: number): void;

  /**
   * @returns {number | void}
   */
  max_block_body_size(): number | void;

  /**
   * @param {ExUnitPrices} execution_costs
   */
  set_execution_costs(execution_costs: ExUnitPrices): void;

  /**
   * @param {ExUnits} max_tx_ex_units
   */
  set_max_tx_ex_units(max_tx_ex_units: ExUnits): void;

  /**
   * !!! DEPRECATED !!!
   * Since babbage era this param is outdated. But this param you can meet in a pre-babbage block.
   * @returns {UnitInterval | void}
   */
  d(): UnitInterval | void;

  /**
   * @returns {number | void}
   */
  committee_term_limit(): number | void;

  /**
   * !!! DEPRECATED !!!
   * Since conway era this param is outdated. But this param you can meet in a pre-conway block.
   * @param {ProtocolVersion} protocol_version
   */
  set_protocol_version(protocol_version: ProtocolVersion): void;

  /**
   * @returns {UnitInterval | void}
   */
  treasury_growth_rate(): UnitInterval | void;

  /**
   * @returns {number | void}
   */
  collateral_percentage(): number | void;

  /**
   * @returns {number | void}
   */
  max_block_header_size(): number | void;

  /**
   * @returns {number | void}
   */
  max_collateral_inputs(): number | void;

  /**
   * @returns {UnitInterval | void}
   */
  pool_pledge_influence(): UnitInterval | void;

  /**
   * @param {BigNum} ada_per_utxo_byte
   */
  set_ada_per_utxo_byte(ada_per_utxo_byte: BigNum): void;

  /**
   * @returns {number | void}
   */
  drep_inactivity_period(): number | void;

  /**
   * @returns {DRepVotingThresholds | void}
   */
  drep_voting_thresholds(): DRepVotingThresholds | void;

  /**
   * @returns {PoolVotingThresholds | void}
   */
  pool_voting_thresholds(): PoolVotingThresholds | void;

  /**
   * @param {ExUnits} max_block_ex_units
   */
  set_max_block_ex_units(max_block_ex_units: ExUnits): void;

  /**
   * @param {number} min_committee_size
   */
  set_min_committee_size(min_committee_size: number): void;

  /**
   * @param {number} max_block_body_size
   */
  set_max_block_body_size(max_block_body_size: number): void;

  /**
   * @param {number} committee_term_limit
   */
  set_committee_term_limit(committee_term_limit: number): void;

  /**
   * @param {UnitInterval} treasury_growth_rate
   */
  set_treasury_growth_rate(treasury_growth_rate: UnitInterval): void;

  /**
   * @returns {BigNum | void}
   */
  governance_action_deposit(): BigNum | void;

  /**
   * @returns {UnitInterval | void}
   */
  ref_script_coins_per_byte(): UnitInterval | void;

  /**
   * @param {number} collateral_percentage
   */
  set_collateral_percentage(collateral_percentage: number): void;

  /**
   * @param {number} max_block_header_size
   */
  set_max_block_header_size(max_block_header_size: number): void;

  /**
   * @param {number} max_collateral_inputs
   */
  set_max_collateral_inputs(max_collateral_inputs: number): void;

  /**
   * @param {UnitInterval} pool_pledge_influence
   */
  set_pool_pledge_influence(pool_pledge_influence: UnitInterval): void;

  /**
   * @param {number} drep_inactivity_period
   */
  set_drep_inactivity_period(drep_inactivity_period: number): void;

  /**
   * @param {DRepVotingThresholds} drep_voting_thresholds
   */
  set_drep_voting_thresholds(
    drep_voting_thresholds: DRepVotingThresholds
  ): void;

  /**
   * @param {PoolVotingThresholds} pool_voting_thresholds
   */
  set_pool_voting_thresholds(
    pool_voting_thresholds: PoolVotingThresholds
  ): void;

  /**
   * @param {BigNum} governance_action_deposit
   */
  set_governance_action_deposit(governance_action_deposit: BigNum): void;

  /**
   * @param {UnitInterval} ref_script_coins_per_byte
   */
  set_ref_script_coins_per_byte(ref_script_coins_per_byte: UnitInterval): void;

  /**
   * @returns {number | void}
   */
  governance_action_validity_period(): number | void;

  /**
   * @param {number} governance_action_validity_period
   */
  set_governance_action_validity_period(
    governance_action_validity_period: number
  ): void;

  /**
   * @returns {ProtocolParamUpdate}
   */
  static new(): ProtocolParamUpdate;

  /**
   * @returns {number | void}
   */
  n_opt(): number | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ProtocolParamUpdate}
   */
  static from_hex(hex_str: string): ProtocolParamUpdate;

  /**
   * @returns {BigNum | void}
   */
  minfee_a(): BigNum | void;

  /**
   * @returns {BigNum | void}
   */
  minfee_b(): BigNum | void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ProtocolParamUpdate}
   */
  static from_json(json: string): ProtocolParamUpdate;

  /**
   * @returns {number | void}
   */
  max_epoch(): number | void;

  /**
   * @param {number} n_opt
   */
  set_n_opt(n_opt: number): void;
}
/**
 */
declare export class ProtocolVersion {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ProtocolVersion}
   */
  static from_bytes(bytes: Uint8Array): ProtocolVersion;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {number} major
   * @param {number} minor
   * @returns {ProtocolVersion}
   */
  static new(major: number, minor: number): ProtocolVersion;

  /**
   * @returns {number}
   */
  major(): number;

  /**
   * @returns {number}
   */
  minor(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ProtocolVersion}
   */
  static from_hex(hex_str: string): ProtocolVersion;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ProtocolVersion}
   */
  static from_json(json: string): ProtocolVersion;
}
/**
 * ED25519 key used as public key
 */
declare export class PublicKey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {PublicKey}
   */
  static from_bytes(bytes: Uint8Array): PublicKey;

  /**
   * Get public key from its bech32 representation
   * Example:
   * ```javascript
   * const pkey = PublicKey.from_bech32(&#39;ed25519_pk1dgaagyh470y66p899txcl3r0jaeaxu6yd7z2dxyk55qcycdml8gszkxze2&#39;);
   * ```
   * @param {string} bech32_str
   * @returns {PublicKey}
   */
  static from_bech32(bech32_str: string): PublicKey;

  /**
   * @returns {Ed25519KeyHash}
   */
  hash(): Ed25519KeyHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {Uint8Array} data
   * @param {Ed25519Signature} signature
   * @returns {boolean}
   */
  verify(data: Uint8Array, signature: Ed25519Signature): boolean;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @param {string} hex_str
   * @returns {PublicKey}
   */
  static from_hex(hex_str: string): PublicKey;

  /**
   * @returns {string}
   */
  to_bech32(): string;
}
/**
 */
declare export class PublicKeys {
  free(): void;

  /**
   * @param {PublicKey} key
   */
  add(key: PublicKey): void;

  /**
   * @param {number} index
   * @returns {PublicKey}
   */
  get(index: number): PublicKey;

  /**
   */
  constructor(): this;

  /**
   * @returns {number}
   */
  size(): number;
}
/**
 */
declare export class Redeemer {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Redeemer}
   */
  static from_bytes(bytes: Uint8Array): Redeemer;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {RedeemerTag} tag
   * @param {BigNum} index
   * @param {PlutusData} data
   * @param {ExUnits} ex_units
   * @returns {Redeemer}
   */
  static new(
    tag: RedeemerTag,
    index: BigNum,
    data: PlutusData,
    ex_units: ExUnits
  ): Redeemer;

  /**
   * @returns {RedeemerTag}
   */
  tag(): RedeemerTag;

  /**
   * @returns {PlutusData}
   */
  data(): PlutusData;

  /**
   * @returns {BigNum}
   */
  index(): BigNum;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @returns {ExUnits}
   */
  ex_units(): ExUnits;

  /**
   * @param {string} hex_str
   * @returns {Redeemer}
   */
  static from_hex(hex_str: string): Redeemer;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Redeemer}
   */
  static from_json(json: string): Redeemer;
}
/**
 */
declare export class RedeemerTag {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {RedeemerTag}
   */
  static from_bytes(bytes: Uint8Array): RedeemerTag;

  /**
   * @returns {RedeemerTag}
   */
  static new_reward(): RedeemerTag;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {RedeemerTag}
   */
  static new_voting_proposal(): RedeemerTag;

  /**
 * @returns {$Values<
                typeof 
                RedeemerTagKind>}
 */
  kind(): $Values<typeof RedeemerTagKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {RedeemerTag}
   */
  static from_hex(hex_str: string): RedeemerTag;

  /**
   * @returns {RedeemerTag}
   */
  static new_cert(): RedeemerTag;

  /**
   * @returns {RedeemerTag}
   */
  static new_mint(): RedeemerTag;

  /**
   * @returns {RedeemerTag}
   */
  static new_vote(): RedeemerTag;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {RedeemerTag}
   */
  static from_json(json: string): RedeemerTag;

  /**
   * @returns {RedeemerTag}
   */
  static new_spend(): RedeemerTag;
}
/**
 */
declare export class Redeemers {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Redeemers}
   */
  static from_bytes(bytes: Uint8Array): Redeemers;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {ExUnits}
   */
  total_ex_units(): ExUnits;

  /**
 * WARNING: This function will be removed in after next hard fork
 * @returns {$Values<
                typeof 
                CborContainerType>}
 */
  get_container_type(): $Values<typeof CborContainerType>;

  /**
   * @param {Redeemer} elem
   */
  add(elem: Redeemer): void;

  /**
   * @param {number} index
   * @returns {Redeemer}
   */
  get(index: number): Redeemer;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Redeemers}
   */
  static new(): Redeemers;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Redeemers}
   */
  static from_hex(hex_str: string): Redeemers;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Redeemers}
   */
  static from_json(json: string): Redeemers;
}
/**
 */
declare export class Relay {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Relay}
   */
  static from_bytes(bytes: Uint8Array): Relay;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {MultiHostName | void}
   */
  as_multi_host_name(): MultiHostName | void;

  /**
   * @returns {SingleHostAddr | void}
   */
  as_single_host_addr(): SingleHostAddr | void;

  /**
   * @returns {SingleHostName | void}
   */
  as_single_host_name(): SingleHostName | void;

  /**
   * @param {MultiHostName} multi_host_name
   * @returns {Relay}
   */
  static new_multi_host_name(multi_host_name: MultiHostName): Relay;

  /**
   * @param {SingleHostAddr} single_host_addr
   * @returns {Relay}
   */
  static new_single_host_addr(single_host_addr: SingleHostAddr): Relay;

  /**
   * @param {SingleHostName} single_host_name
   * @returns {Relay}
   */
  static new_single_host_name(single_host_name: SingleHostName): Relay;

  /**
 * @returns {$Values<
                typeof 
                RelayKind>}
 */
  kind(): $Values<typeof RelayKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Relay}
   */
  static from_hex(hex_str: string): Relay;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Relay}
   */
  static from_json(json: string): Relay;
}
/**
 */
declare export class Relays {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Relays}
   */
  static from_bytes(bytes: Uint8Array): Relays;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Relay} elem
   */
  add(elem: Relay): void;

  /**
   * @param {number} index
   * @returns {Relay}
   */
  get(index: number): Relay;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Relays}
   */
  static new(): Relays;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Relays}
   */
  static from_hex(hex_str: string): Relays;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Relays}
   */
  static from_json(json: string): Relays;
}
/**
 */
declare export class RewardAddress {
  free(): void;

  /**
   * @returns {number}
   */
  network_id(): number;

  /**
   * @returns {Address}
   */
  to_address(): Address;

  /**
   * @param {Address} addr
   * @returns {RewardAddress | void}
   */
  static from_address(addr: Address): RewardAddress | void;

  /**
   * @returns {Credential}
   */
  payment_cred(): Credential;

  /**
   * @param {number} network
   * @param {Credential} payment
   * @returns {RewardAddress}
   */
  static new(network: number, payment: Credential): RewardAddress;
}
/**
 */
declare export class RewardAddresses {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {RewardAddresses}
   */
  static from_bytes(bytes: Uint8Array): RewardAddresses;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {RewardAddress} elem
   */
  add(elem: RewardAddress): void;

  /**
   * @param {number} index
   * @returns {RewardAddress}
   */
  get(index: number): RewardAddress;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {RewardAddresses}
   */
  static new(): RewardAddresses;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {RewardAddresses}
   */
  static from_hex(hex_str: string): RewardAddresses;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {RewardAddresses}
   */
  static from_json(json: string): RewardAddresses;
}
/**
 */
declare export class ScriptAll {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptAll}
   */
  static from_bytes(bytes: Uint8Array): ScriptAll;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {NativeScripts}
   */
  native_scripts(): NativeScripts;

  /**
   * @param {NativeScripts} native_scripts
   * @returns {ScriptAll}
   */
  static new(native_scripts: NativeScripts): ScriptAll;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ScriptAll}
   */
  static from_hex(hex_str: string): ScriptAll;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ScriptAll}
   */
  static from_json(json: string): ScriptAll;
}
/**
 */
declare export class ScriptAny {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptAny}
   */
  static from_bytes(bytes: Uint8Array): ScriptAny;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {NativeScripts}
   */
  native_scripts(): NativeScripts;

  /**
   * @param {NativeScripts} native_scripts
   * @returns {ScriptAny}
   */
  static new(native_scripts: NativeScripts): ScriptAny;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ScriptAny}
   */
  static from_hex(hex_str: string): ScriptAny;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ScriptAny}
   */
  static from_json(json: string): ScriptAny;
}
/**
 */
declare export class ScriptDataHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptDataHash}
   */
  static from_bytes(bytes: Uint8Array): ScriptDataHash;

  /**
   * @param {string} bech_str
   * @returns {ScriptDataHash}
   */
  static from_bech32(bech_str: string): ScriptDataHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {ScriptDataHash}
   */
  static from_hex(hex: string): ScriptDataHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class ScriptHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptHash}
   */
  static from_bytes(bytes: Uint8Array): ScriptHash;

  /**
   * @param {string} bech_str
   * @returns {ScriptHash}
   */
  static from_bech32(bech_str: string): ScriptHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {ScriptHash}
   */
  static from_hex(hex: string): ScriptHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class ScriptHashes {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptHashes}
   */
  static from_bytes(bytes: Uint8Array): ScriptHashes;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {ScriptHash} elem
   */
  add(elem: ScriptHash): void;

  /**
   * @param {number} index
   * @returns {ScriptHash}
   */
  get(index: number): ScriptHash;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {ScriptHashes}
   */
  static new(): ScriptHashes;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ScriptHashes}
   */
  static from_hex(hex_str: string): ScriptHashes;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ScriptHashes}
   */
  static from_json(json: string): ScriptHashes;
}
/**
 */
declare export class ScriptNOfK {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptNOfK}
   */
  static from_bytes(bytes: Uint8Array): ScriptNOfK;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {NativeScripts}
   */
  native_scripts(): NativeScripts;

  /**
   * @returns {number}
   */
  n(): number;

  /**
   * @param {number} n
   * @param {NativeScripts} native_scripts
   * @returns {ScriptNOfK}
   */
  static new(n: number, native_scripts: NativeScripts): ScriptNOfK;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ScriptNOfK}
   */
  static from_hex(hex_str: string): ScriptNOfK;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ScriptNOfK}
   */
  static from_json(json: string): ScriptNOfK;
}
/**
 */
declare export class ScriptPubkey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptPubkey}
   */
  static from_bytes(bytes: Uint8Array): ScriptPubkey;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash}
   */
  addr_keyhash(): Ed25519KeyHash;

  /**
   * @param {Ed25519KeyHash} addr_keyhash
   * @returns {ScriptPubkey}
   */
  static new(addr_keyhash: Ed25519KeyHash): ScriptPubkey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ScriptPubkey}
   */
  static from_hex(hex_str: string): ScriptPubkey;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ScriptPubkey}
   */
  static from_json(json: string): ScriptPubkey;
}
/**
 */
declare export class ScriptRef {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {ScriptRef}
   */
  static from_bytes(bytes: Uint8Array): ScriptRef;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {NativeScript | void}
   */
  native_script(): NativeScript | void;

  /**
   * @returns {PlutusScript | void}
   */
  plutus_script(): PlutusScript | void;

  /**
   * @returns {boolean}
   */
  is_native_script(): boolean;

  /**
   * @returns {boolean}
   */
  is_plutus_script(): boolean;

  /**
   * @param {NativeScript} native_script
   * @returns {ScriptRef}
   */
  static new_native_script(native_script: NativeScript): ScriptRef;

  /**
   * @param {PlutusScript} plutus_script
   * @returns {ScriptRef}
   */
  static new_plutus_script(plutus_script: PlutusScript): ScriptRef;

  /**
   * Return bytes array of script ref struct but without wrapping into CBOR array under the tag
   * to_bytes returns "#6.24(bytes .cbor script)" from CDDL
   * to_unwrapped_bytes return "script" from CDDL
   * @returns {Uint8Array}
   */
  to_unwrapped_bytes(): Uint8Array;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {ScriptRef}
   */
  static from_hex(hex_str: string): ScriptRef;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {ScriptRef}
   */
  static from_json(json: string): ScriptRef;
}
/**
 */
declare export class SingleHostAddr {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {SingleHostAddr}
   */
  static from_bytes(bytes: Uint8Array): SingleHostAddr;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {number | void} [port]
   * @param {Ipv4 | void} [ipv4]
   * @param {Ipv6 | void} [ipv6]
   * @returns {SingleHostAddr}
   */
  static new(port?: number, ipv4?: Ipv4, ipv6?: Ipv6): SingleHostAddr;

  /**
   * @returns {Ipv4 | void}
   */
  ipv4(): Ipv4 | void;

  /**
   * @returns {Ipv6 | void}
   */
  ipv6(): Ipv6 | void;

  /**
   * @returns {number | void}
   */
  port(): number | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {SingleHostAddr}
   */
  static from_hex(hex_str: string): SingleHostAddr;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {SingleHostAddr}
   */
  static from_json(json: string): SingleHostAddr;
}
/**
 */
declare export class SingleHostName {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {SingleHostName}
   */
  static from_bytes(bytes: Uint8Array): SingleHostName;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {number | void} port
   * @param {DNSRecordAorAAAA} dns_name
   * @returns {SingleHostName}
   */
  static new(port: number | void, dns_name: DNSRecordAorAAAA): SingleHostName;

  /**
   * @returns {number | void}
   */
  port(): number | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @returns {DNSRecordAorAAAA}
   */
  dns_name(): DNSRecordAorAAAA;

  /**
   * @param {string} hex_str
   * @returns {SingleHostName}
   */
  static from_hex(hex_str: string): SingleHostName;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {SingleHostName}
   */
  static from_json(json: string): SingleHostName;
}
/**
 */
declare export class StakeAndVoteDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {StakeAndVoteDelegation}
   */
  static from_bytes(bytes: Uint8Array): StakeAndVoteDelegation;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash}
   */
  pool_keyhash(): Ed25519KeyHash;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {Ed25519KeyHash} pool_keyhash
   * @param {DRep} drep
   * @returns {StakeAndVoteDelegation}
   */
  static new(
    stake_credential: Credential,
    pool_keyhash: Ed25519KeyHash,
    drep: DRep
  ): StakeAndVoteDelegation;

  /**
   * @returns {DRep}
   */
  drep(): DRep;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {StakeAndVoteDelegation}
   */
  static from_hex(hex_str: string): StakeAndVoteDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {StakeAndVoteDelegation}
   */
  static from_json(json: string): StakeAndVoteDelegation;
}
/**
 */
declare export class StakeDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {StakeDelegation}
   */
  static from_bytes(bytes: Uint8Array): StakeDelegation;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash}
   */
  pool_keyhash(): Ed25519KeyHash;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {Ed25519KeyHash} pool_keyhash
   * @returns {StakeDelegation}
   */
  static new(
    stake_credential: Credential,
    pool_keyhash: Ed25519KeyHash
  ): StakeDelegation;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {StakeDelegation}
   */
  static from_hex(hex_str: string): StakeDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {StakeDelegation}
   */
  static from_json(json: string): StakeDelegation;
}
/**
 */
declare export class StakeDeregistration {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {StakeDeregistration}
   */
  static from_bytes(bytes: Uint8Array): StakeDeregistration;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {BigNum} coin
   * @returns {StakeDeregistration}
   */
  static new_with_explicit_refund(
    stake_credential: Credential,
    coin: BigNum
  ): StakeDeregistration;

  /**
   * @param {Credential} stake_credential
   * @returns {StakeDeregistration}
   */
  static new(stake_credential: Credential): StakeDeregistration;

  /**
   * @returns {BigNum | void}
   */
  coin(): BigNum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {StakeDeregistration}
   */
  static from_hex(hex_str: string): StakeDeregistration;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {StakeDeregistration}
   */
  static from_json(json: string): StakeDeregistration;
}
/**
 */
declare export class StakeRegistration {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {StakeRegistration}
   */
  static from_bytes(bytes: Uint8Array): StakeRegistration;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {BigNum} coin
   * @returns {StakeRegistration}
   */
  static new_with_explicit_deposit(
    stake_credential: Credential,
    coin: BigNum
  ): StakeRegistration;

  /**
   * @param {Credential} stake_credential
   * @returns {StakeRegistration}
   */
  static new(stake_credential: Credential): StakeRegistration;

  /**
   * @returns {BigNum | void}
   */
  coin(): BigNum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {StakeRegistration}
   */
  static from_hex(hex_str: string): StakeRegistration;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {StakeRegistration}
   */
  static from_json(json: string): StakeRegistration;
}
/**
 */
declare export class StakeRegistrationAndDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {StakeRegistrationAndDelegation}
   */
  static from_bytes(bytes: Uint8Array): StakeRegistrationAndDelegation;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash}
   */
  pool_keyhash(): Ed25519KeyHash;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {Ed25519KeyHash} pool_keyhash
   * @param {BigNum} coin
   * @returns {StakeRegistrationAndDelegation}
   */
  static new(
    stake_credential: Credential,
    pool_keyhash: Ed25519KeyHash,
    coin: BigNum
  ): StakeRegistrationAndDelegation;

  /**
   * @returns {BigNum}
   */
  coin(): BigNum;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {StakeRegistrationAndDelegation}
   */
  static from_hex(hex_str: string): StakeRegistrationAndDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {StakeRegistrationAndDelegation}
   */
  static from_json(json: string): StakeRegistrationAndDelegation;
}
/**
 */
declare export class StakeVoteRegistrationAndDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {StakeVoteRegistrationAndDelegation}
   */
  static from_bytes(bytes: Uint8Array): StakeVoteRegistrationAndDelegation;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash}
   */
  pool_keyhash(): Ed25519KeyHash;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {Ed25519KeyHash} pool_keyhash
   * @param {DRep} drep
   * @param {BigNum} coin
   * @returns {StakeVoteRegistrationAndDelegation}
   */
  static new(
    stake_credential: Credential,
    pool_keyhash: Ed25519KeyHash,
    drep: DRep,
    coin: BigNum
  ): StakeVoteRegistrationAndDelegation;

  /**
   * @returns {BigNum}
   */
  coin(): BigNum;

  /**
   * @returns {DRep}
   */
  drep(): DRep;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {StakeVoteRegistrationAndDelegation}
   */
  static from_hex(hex_str: string): StakeVoteRegistrationAndDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {StakeVoteRegistrationAndDelegation}
   */
  static from_json(json: string): StakeVoteRegistrationAndDelegation;
}
/**
 */
declare export class Strings {
  free(): void;

  /**
   * @param {string} elem
   */
  add(elem: string): void;

  /**
   * @param {number} index
   * @returns {string}
   */
  get(index: number): string;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Strings}
   */
  static new(): Strings;
}
/**
 */
declare export class TimelockExpiry {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TimelockExpiry}
   */
  static from_bytes(bytes: Uint8Array): TimelockExpiry;

  /**
   * @returns {BigNum}
   */
  slot_bignum(): BigNum;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {BigNum} slot
   * @returns {TimelockExpiry}
   */
  static new_timelockexpiry(slot: BigNum): TimelockExpiry;

  /**
   * !!! DEPRECATED !!!
   * This constructor uses outdated slot number format.
   * Use `.new_timelockexpiry` instead
   * @param {number} slot
   * @returns {TimelockExpiry}
   */
  static new(slot: number): TimelockExpiry;

  /**
   * @returns {number}
   */
  slot(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TimelockExpiry}
   */
  static from_hex(hex_str: string): TimelockExpiry;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TimelockExpiry}
   */
  static from_json(json: string): TimelockExpiry;
}
/**
 */
declare export class TimelockStart {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TimelockStart}
   */
  static from_bytes(bytes: Uint8Array): TimelockStart;

  /**
   * @returns {BigNum}
   */
  slot_bignum(): BigNum;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {BigNum} slot
   * @returns {TimelockStart}
   */
  static new_timelockstart(slot: BigNum): TimelockStart;

  /**
   * !!! DEPRECATED !!!
   * This constructor uses outdated slot number format.
   * Use `.new_timelockstart` instead.
   * @param {number} slot
   * @returns {TimelockStart}
   */
  static new(slot: number): TimelockStart;

  /**
   * !!! DEPRECATED !!!
   * Returns a Slot32 (u32) value in case the underlying original BigNum (u64) value is within the limits.
   * Otherwise will just raise an error.
   * Use `.slot_bignum` instead
   * @returns {number}
   */
  slot(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TimelockStart}
   */
  static from_hex(hex_str: string): TimelockStart;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TimelockStart}
   */
  static from_json(json: string): TimelockStart;
}
/**
 */
declare export class Transaction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Transaction}
   */
  static from_bytes(bytes: Uint8Array): Transaction;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {TransactionWitnessSet}
   */
  witness_set(): TransactionWitnessSet;

  /**
   * @param {boolean} valid
   */
  set_is_valid(valid: boolean): void;

  /**
   * @returns {AuxiliaryData | void}
   */
  auxiliary_data(): AuxiliaryData | void;

  /**
   * @param {TransactionBody} body
   * @param {TransactionWitnessSet} witness_set
   * @param {AuxiliaryData | void} [auxiliary_data]
   * @returns {Transaction}
   */
  static new(
    body: TransactionBody,
    witness_set: TransactionWitnessSet,
    auxiliary_data?: AuxiliaryData
  ): Transaction;

  /**
   * @returns {TransactionBody}
   */
  body(): TransactionBody;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Transaction}
   */
  static from_hex(hex_str: string): Transaction;

  /**
   * @returns {boolean}
   */
  is_valid(): boolean;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Transaction}
   */
  static from_json(json: string): Transaction;
}
/**
 */
declare export class TransactionBatch {
  free(): void;

  /**
   * @param {number} index
   * @returns {Transaction}
   */
  get(index: number): Transaction;

  /**
   * @returns {number}
   */
  len(): number;
}
/**
 */
declare export class TransactionBatchList {
  free(): void;

  /**
   * @param {number} index
   * @returns {TransactionBatch}
   */
  get(index: number): TransactionBatch;

  /**
   * @returns {number}
   */
  len(): number;
}
/**
 */
declare export class TransactionBodies {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionBodies}
   */
  static from_bytes(bytes: Uint8Array): TransactionBodies;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {TransactionBody} elem
   */
  add(elem: TransactionBody): void;

  /**
   * @param {number} index
   * @returns {TransactionBody}
   */
  get(index: number): TransactionBody;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TransactionBodies}
   */
  static new(): TransactionBodies;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionBodies}
   */
  static from_hex(hex_str: string): TransactionBodies;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionBodies}
   */
  static from_json(json: string): TransactionBodies;
}
/**
 */
declare export class TransactionBody {
  free(): void;

  /**
   * @returns {TransactionInputs | void}
   */
  collateral(): TransactionInputs | void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionBody}
   */
  static from_bytes(bytes: Uint8Array): TransactionBody;

  /**
   * @returns {NetworkId | void}
   */
  network_id(): NetworkId | void;

  /**
   */
  remove_ttl(): void;

  /**
   * @param {Update} update
   */
  set_update(update: Update): void;

  /**
   * @returns {BigNum | void}
   */
  ttl_bignum(): BigNum | void;

  /**
   * Returns a new TransactionBody.
   * In the new version of "new" we removed optional ttl for support it by wasm_bingen.
   * Your can use "set_ttl" and "remove_ttl" to set a new value for ttl or set it as None.
   * @param {TransactionInputs} inputs
   * @param {TransactionOutputs} outputs
   * @param {BigNum} fee
   * @returns {TransactionBody}
   */
  static new_tx_body(
    inputs: TransactionInputs,
    outputs: TransactionOutputs,
    fee: BigNum
  ): TransactionBody;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Withdrawals | void}
   */
  withdrawals(): Withdrawals | void;

  /**
   * @param {BigNum} donation
   */
  set_donation(donation: BigNum): void;

  /**
   * @param {TransactionInputs} collateral
   */
  set_collateral(collateral: TransactionInputs): void;

  /**
   * @param {NetworkId} network_id
   */
  set_network_id(network_id: NetworkId): void;

  /**
   * @param {Withdrawals} withdrawals
   */
  set_withdrawals(withdrawals: Withdrawals): void;

  /**
   * @returns {TransactionInputs | void}
   */
  reference_inputs(): TransactionInputs | void;

  /**
   * @returns {Ed25519KeyHashes | void}
   */
  required_signers(): Ed25519KeyHashes | void;

  /**
   * @returns {ScriptDataHash | void}
   */
  script_data_hash(): ScriptDataHash | void;

  /**
   * @returns {BigNum | void}
   */
  total_collateral(): BigNum | void;

  /**
   * @returns {VotingProposals | void}
   */
  voting_proposals(): VotingProposals | void;

  /**
   * @returns {TransactionOutput | void}
   */
  collateral_return(): TransactionOutput | void;

  /**
   * @returns {VotingProcedures | void}
   */
  voting_procedures(): VotingProcedures | void;

  /**
   * @returns {AuxiliaryDataHash | void}
   */
  auxiliary_data_hash(): AuxiliaryDataHash | void;

  /**
   * @param {TransactionInputs} reference_inputs
   */
  set_reference_inputs(reference_inputs: TransactionInputs): void;

  /**
   * @param {Ed25519KeyHashes} required_signers
   */
  set_required_signers(required_signers: Ed25519KeyHashes): void;

  /**
   * @param {ScriptDataHash} script_data_hash
   */
  set_script_data_hash(script_data_hash: ScriptDataHash): void;

  /**
   * @param {BigNum} total_collateral
   */
  set_total_collateral(total_collateral: BigNum): void;

  /**
   * @param {VotingProposals} voting_proposals
   */
  set_voting_proposals(voting_proposals: VotingProposals): void;

  /**
   * @param {TransactionOutput} collateral_return
   */
  set_collateral_return(collateral_return: TransactionOutput): void;

  /**
   * @param {VotingProcedures} voting_procedures
   */
  set_voting_procedures(voting_procedures: VotingProcedures): void;

  /**
   * @returns {BigNum | void}
   */
  current_treasury_value(): BigNum | void;

  /**
   * @param {AuxiliaryDataHash} auxiliary_data_hash
   */
  set_auxiliary_data_hash(auxiliary_data_hash: AuxiliaryDataHash): void;

  /**
   * !!! DEPRECATED !!!
   * Returns a Option<Slot32> (u32) value in case the underlying original Option<BigNum> (u64) value is within the limits.
   * Otherwise will just raise an error.
   * Use `.validity_start_interval_bignum` instead.
   * @returns {number | void}
   */
  validity_start_interval(): number | void;

  /**
   * @param {BigNum} current_treasury_value
   */
  set_current_treasury_value(current_treasury_value: BigNum): void;

  /**
   * !!! DEPRECATED !!!
   * Uses outdated slot number format.
   * @param {number} validity_start_interval
   */
  set_validity_start_interval(validity_start_interval: number): void;

  /**
   * @returns {BigNum | void}
   */
  validity_start_interval_bignum(): BigNum | void;

  /**
   * @param {BigNum} validity_start_interval
   */
  set_validity_start_interval_bignum(validity_start_interval: BigNum): void;

  /**
   * @returns {BigNum}
   */
  fee(): BigNum;

  /**
   * !!! DEPRECATED !!!
   * This constructor uses outdated slot number format for the ttl value.
   * Use `.new_tx_body` and then `.set_ttl` instead
   * @param {TransactionInputs} inputs
   * @param {TransactionOutputs} outputs
   * @param {BigNum} fee
   * @param {number | void} [ttl]
   * @returns {TransactionBody}
   */
  static new(
    inputs: TransactionInputs,
    outputs: TransactionOutputs,
    fee: BigNum,
    ttl?: number
  ): TransactionBody;

  /**
   * !!! DEPRECATED !!!
   * Returns a Slot32 (u32) value in case the underlying original BigNum (u64) value is within the limits.
   * Otherwise will just raise an error.
   * @returns {number | void}
   */
  ttl(): number | void;

  /**
   * @returns {Mint | void}
   */
  mint(): Mint | void;

  /**
   * @returns {Certificates | void}
   */
  certs(): Certificates | void;

  /**
   * @returns {TransactionInputs}
   */
  inputs(): TransactionInputs;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {Update | void}
   */
  update(): Update | void;

  /**
   * @returns {TransactionOutputs}
   */
  outputs(): TransactionOutputs;

  /**
   * @param {BigNum} ttl
   */
  set_ttl(ttl: BigNum): void;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @returns {BigNum | void}
   */
  donation(): BigNum | void;

  /**
   * @param {string} hex_str
   * @returns {TransactionBody}
   */
  static from_hex(hex_str: string): TransactionBody;

  /**
   * @param {Mint} mint
   */
  set_mint(mint: Mint): void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionBody}
   */
  static from_json(json: string): TransactionBody;

  /**
   * @param {Certificates} certs
   */
  set_certs(certs: Certificates): void;
}
/**
 */
declare export class TransactionBuilder {
  free(): void;

  /**
   * Add explicit output via a TransactionOutput object
   * @param {TransactionOutput} output
   */
  add_output(output: TransactionOutput): void;

  /**
   */
  remove_ttl(): void;

  /**
   * @param {TxInputsBuilder} inputs
   */
  set_inputs(inputs: TxInputsBuilder): void;

  /**
   * @returns {BigNum}
   */
  get_deposit(): BigNum;

  /**
   * Set minimal fee for the transaction. If the real fee will be bigger then the set value, the transaction will be created with the real fee.
   * @param {BigNum} fee
   */
  set_min_fee(fee: BigNum): void;

  /**
   * @returns {BigNum | void}
   */
  get_donation(): BigNum | void;

  /**
   * @returns {Uint32Array}
   */
  output_sizes(): Uint32Array;

  /**
   */
  remove_certs(): void;

  /**
   * @param {BigNum} donation
   */
  set_donation(donation: BigNum): void;

  /**
   * Set metadata using a GeneralTransactionMetadata object
   * It will be set to the existing or new auxiliary data in this builder
   * @param {GeneralTransactionMetadata} metadata
   */
  set_metadata(metadata: GeneralTransactionMetadata): void;

  /**
   * We have to know what kind of inputs these are to know what kind of mock witnesses to create since
   * 1) mock witnesses have different lengths depending on the type which changes the expecting fee
   * 2) Witnesses are a set so we need to get rid of duplicates to avoid over-estimating the fee
   * @param {Ed25519KeyHash} hash
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_key_input(
    hash: Ed25519KeyHash,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * Add a single metadatum using TransactionMetadatumLabel and TransactionMetadatum objects
   * It will be securely added to existing or new metadata in this builder
   * @param {BigNum} key
   * @param {TransactionMetadatum} val
   */
  add_metadatum(key: BigNum, val: TransactionMetadatum): void;

  /**
   * calculates how much the fee would increase if you added a given output
   * @param {Address} address
   * @param {TransactionInput} input
   * @param {Value} amount
   * @returns {BigNum}
   */
  fee_for_input(
    address: Address,
    input: TransactionInput,
    amount: Value
  ): BigNum;

  /**
   * !!! DEPRECATED !!!
   * Mints are defining by MintBuilder now.
   * Use `.set_mint_builder()` and `MintBuilder` instead.
   * Add a mint entry to this builder using a PolicyID, AssetName, and Int object for amount
   * It will be securely added to existing or new Mint in this builder
   * It will replace any previous existing amount same PolicyID and AssetName
   * @param {NativeScript} policy_script
   * @param {AssetName} asset_name
   * @param {Int} amount
   */
  add_mint_asset(
    policy_script: NativeScript,
    asset_name: AssetName,
    amount: Int
  ): void;

  /**
   * calculates how much the fee would increase if you added a given output
   * @param {TransactionOutput} output
   * @returns {BigNum}
   */
  fee_for_output(output: TransactionOutput): BigNum;

  /**
   * @returns {BigNum | void}
   */
  get_fee_if_set(): BigNum | void;

  /**
   * @param {TxInputsBuilder} collateral
   */
  set_collateral(collateral: TxInputsBuilder): void;

  /**
   * !!! DEPRECATED !!!
   * Mints are defining by MintBuilder now.
   * Use `.set_mint_builder()` and `MintBuilder` instead.
   * Add a mint entry to this builder using a PolicyID and MintAssets object
   * It will be securely added to existing or new Mint in this builder
   * It will replace any existing mint assets with the same PolicyID
   * @param {NativeScript} policy_script
   * @param {MintAssets} mint_assets
   */
  set_mint_asset(policy_script: NativeScript, mint_assets: MintAssets): void;

  /**
   * @param {BigNum} ttl
   */
  set_ttl_bignum(ttl: BigNum): void;

  /**
 * This automatically selects and adds inputs from {inputs} consisting of just enough to cover
 * the outputs that have already been added.
 * This should be called after adding all certs/outputs/etc and will be an error otherwise.
 * Uses CIP2: https://github.com/cardano-foundation/CIPs/blob/master/CIP-0002/CIP-0002.md
 * Adding a change output must be called after via TransactionBuilder::add_change_if_needed()
 * This function, diverging from CIP2, takes into account fees and will attempt to add additional
 * inputs to cover the minimum fees. This does not, however, set the txbuilder's fee.
 * @param {TransactionUnspentOutputs} inputs
 * @param {$Values<
                typeof 
                CoinSelectionStrategyCIP2>} strategy
 */
  add_inputs_from(
    inputs: TransactionUnspentOutputs,
    strategy: $Values<typeof CoinSelectionStrategyCIP2>
  ): void;

  /**
   * Similar to `.build_tx()` but will NOT fail in case there are missing script witnesses
   * @returns {Transaction}
   */
  build_tx_unsafe(): Transaction;

  /**
   * Return explicit input plus implicit input plus mint
   * @returns {Value}
   */
  get_total_input(): Value;

  /**
   * !!! DEPRECATED !!!
   * Can emit error if add a withdrawal with script credential.
   * Use set_withdrawals_builder instead.
   * @param {Withdrawals} withdrawals
   */
  set_withdrawals(withdrawals: Withdrawals): void;

  /**
   * @returns {MintBuilder | void}
   */
  get_mint_builder(): MintBuilder | void;

  /**
   * Returns a copy of the current mint witness scripts in the builder
   * @returns {NativeScripts | void}
   */
  get_mint_scripts(): NativeScripts | void;

  /**
   * Return explicit output plus deposit plus burn
   * @returns {Value}
   */
  get_total_output(): Value;

  /**
   * @param {MintBuilder} mint_builder
   */
  set_mint_builder(mint_builder: MintBuilder): void;

  /**
   * This function is replace for previous one add_input.
   * The functions adds a non script input, if it is a script input it returns an error.
   * To add script input you need to use add_native_script_input or add_plutus_script_input.
   * Also we recommend to use TxInputsBuilder and .set_inputs, because all add_*_input functions might be removed from transaction builder.
   * @param {Address} address
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_regular_input(
    address: Address,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * @param {CertificatesBuilder} certs
   */
  set_certs_builder(certs: CertificatesBuilder): void;

  /**
   * Add a single JSON metadatum using a TransactionMetadatumLabel and a String
   * It will be securely added to existing or new metadata in this builder
   * @param {BigNum} key
   * @param {string} val
   */
  add_json_metadatum(key: BigNum, val: string): void;

  /**
   * @returns {AuxiliaryData | void}
   */
  get_auxiliary_data(): AuxiliaryData | void;

  /**
   * does not include refunds or withdrawals
   * @returns {Value}
   */
  get_explicit_input(): Value;

  /**
   * withdrawals and refunds
   * @returns {Value}
   */
  get_implicit_input(): Value;

  /**
   */
  remove_withdrawals(): void;

  /**
   * Set explicit auxiliary data via an AuxiliaryData object
   * It might contain some metadata plus native or Plutus scripts
   * @param {AuxiliaryData} auxiliary_data
   */
  set_auxiliary_data(auxiliary_data: AuxiliaryData): void;

  /**
   * @param {VotingBuilder} voting_builder
   */
  set_voting_builder(voting_builder: VotingBuilder): void;

  /**
   * @param {ByronAddress} hash
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_bootstrap_input(
    hash: ByronAddress,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * @param {TransactionInput} reference_input
   */
  add_reference_input(reference_input: TransactionInput): void;

  /**
   * @param {Ed25519KeyHash} key
   */
  add_required_signer(key: Ed25519KeyHash): void;

  /**
   * does not include fee
   * @returns {Value}
   */
  get_explicit_output(): Value;

  /**
   */
  remove_mint_builder(): void;

  /**
   * Warning: this function will mutate the /fee/ field
   * Make sure to call this function last after setting all other tx-body properties
   * Editing inputs, outputs, mint, etc. after change been calculated
   * might cause a mismatch in calculated fee versus the required fee
   * @param {Address} address
   * @returns {boolean}
   */
  add_change_if_needed(address: Address): boolean;

  /**
   * @returns {TransactionInputs}
   */
  get_reference_inputs(): TransactionInputs;

  /**
   * Sets the specified hash value.
   * Alternatively you can use `.calc_script_data_hash` to calculate the hash automatically.
   * Or use `.remove_script_data_hash` to delete the previously set value
   * @param {ScriptDataHash} hash
   */
  set_script_data_hash(hash: ScriptDataHash): void;

  /**
   * @param {BigNum} total_collateral
   */
  set_total_collateral(total_collateral: BigNum): void;

  /**
   * This method will calculate the script hash data
   * using the plutus datums and redeemers already present in the builder
   * along with the provided cost model, and will register the calculated value
   * in the builder to be used when building the tx body.
   * In case there are no plutus input witnesses present - nothing will change
   * You can set specific hash value using `.set_script_data_hash`
   * NOTE: this function will check which language versions are used in the present scripts
   * and will assert and require for a corresponding cost-model to be present in the passed map.
   * Only the cost-models for the present language versions will be used in the hash calculation.
   * @param {Costmdls} cost_models
   */
  calc_script_data_hash(cost_models: Costmdls): void;

  /**
   */
  remove_auxiliary_data(): void;

  /**
   * @param {TransactionOutput} collateral_return
   */
  set_collateral_return(collateral_return: TransactionOutput): void;

  /**
   * @param {PlutusData} datum
   */
  add_extra_witness_datum(datum: PlutusData): void;

  /**
   * This method will add the input to the builder and also register the required native script witness
   * @param {NativeScript} script
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_native_script_input(
    script: NativeScript,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * This method will add the input to the builder and also register the required plutus witness
   * @param {PlutusWitness} witness
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_plutus_script_input(
    witness: PlutusWitness,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * Deletes any previously set plutus data hash value.
   * Use `.set_script_data_hash` or `.calc_script_data_hash` to set it.
   */
  remove_script_data_hash(): void;

  /**
   */
  remove_total_collateral(): void;

  /**
   * @param {WithdrawalsBuilder} withdrawals
   */
  set_withdrawals_builder(withdrawals: WithdrawalsBuilder): void;

  /**
   * @returns {PlutusList | void}
   */
  get_extra_witness_datums(): PlutusList | void;

  /**
   * Returns a copy of the current script input witness scripts in the builder
   * @returns {NativeScripts | void}
   */
  get_native_input_scripts(): NativeScripts | void;

  /**
   * Returns a copy of the current plutus input witness scripts in the builder.
   * NOTE: each plutus witness will be cloned with a specific corresponding input index
   * @returns {PlutusWitnesses | void}
   */
  get_plutus_input_scripts(): PlutusWitnesses | void;

  /**
   */
  remove_collateral_return(): void;

  /**
   * Add a mint entry together with an output to this builder
   * Using a PolicyID, AssetName, Int for amount, Address, and Coin (BigNum) objects
   * The asset will be securely added to existing or new Mint in this builder
   * A new output will be added with the specified Address, the Coin value, and the minted asset
   * @param {NativeScript} policy_script
   * @param {AssetName} asset_name
   * @param {Int} amount
   * @param {TransactionOutputAmountBuilder} output_builder
   * @param {BigNum} output_coin
   */
  add_mint_asset_and_output(
    policy_script: NativeScript,
    asset_name: AssetName,
    amount: Int,
    output_builder: TransactionOutputAmountBuilder,
    output_coin: BigNum
  ): void;

  /**
 * @param {TransactionUnspentOutputs} inputs
 * @param {$Values<
                typeof 
                CoinSelectionStrategyCIP2>} strategy
 * @param {ChangeConfig} change_config
 * @returns {boolean}
 */
  add_inputs_from_and_change(
    inputs: TransactionUnspentOutputs,
    strategy: $Values<typeof CoinSelectionStrategyCIP2>,
    change_config: ChangeConfig
  ): boolean;

  /**
   * @param {TransactionInput} reference_input
   * @param {number} script_size
   */
  add_script_reference_input(
    reference_input: TransactionInput,
    script_size: number
  ): void;

  /**
   * @returns {BigNum | void}
   */
  get_current_treasury_value(): BigNum | void;

  /**
   * @param {BigNum} current_treasury_value
   */
  set_current_treasury_value(current_treasury_value: BigNum): void;

  /**
   * !!! DEPRECATED !!!
   * Uses outdated slot number format.
   * @param {number} validity_start_interval
   */
  set_validity_start_interval(validity_start_interval: number): void;

  /**
   * @param {VotingProposalBuilder} voting_proposal_builder
   */
  set_voting_proposal_builder(
    voting_proposal_builder: VotingProposalBuilder
  ): void;

  /**
 * Add a single JSON metadatum using a TransactionMetadatumLabel, a String, and a MetadataJsonSchema object
 * It will be securely added to existing or new metadata in this builder
 * @param {BigNum} key
 * @param {string} val
 * @param {$Values<
                typeof 
                MetadataJsonSchema>} schema
 */
  add_json_metadatum_with_schema(
    key: BigNum,
    val: string,
    schema: $Values<typeof MetadataJsonSchema>
  ): void;

  /**
   */
  remove_validity_start_interval(): void;

  /**
   * @param {Address} address
   * @param {OutputDatum} plutus_data
   * @returns {boolean}
   */
  add_change_if_needed_with_datum(
    address: Address,
    plutus_data: OutputDatum
  ): boolean;

  /**
   * This function will set the collateral-return value and then auto-calculate and assign
   * the total collateral coin value. Will raise an error in case no collateral inputs are set
   * or in case the total collateral value will have any assets in it except coin.
   * @param {TransactionOutput} collateral_return
   */
  set_collateral_return_and_total(collateral_return: TransactionOutput): void;

  /**
   * This function will set the total-collateral coin and then auto-calculate and assign
   * the collateral return value. Will raise an error in case no collateral inputs are set.
   * The specified address will be the received of the collateral return
   * @param {BigNum} total_collateral
   * @param {Address} return_address
   */
  set_total_collateral_and_return(
    total_collateral: BigNum,
    return_address: Address
  ): void;

  /**
   * @param {BigNum} validity_start_interval
   */
  set_validity_start_interval_bignum(validity_start_interval: BigNum): void;

  /**
   * @param {TransactionBuilderConfig} cfg
   * @returns {TransactionBuilder}
   */
  static new(cfg: TransactionBuilderConfig): TransactionBuilder;

  /**
   * Add a mint entry together with an output to this builder
   * Using a PolicyID, AssetName, Int for amount, and Address objects
   * The asset will be securely added to existing or new Mint in this builder
   * A new output will be added with the specified Address and the minted asset
   * The output will be set to contain the minimum required amount of Coin
   * @param {NativeScript} policy_script
   * @param {AssetName} asset_name
   * @param {Int} amount
   * @param {TransactionOutputAmountBuilder} output_builder
   */
  add_mint_asset_and_output_min_required_coin(
    policy_script: NativeScript,
    asset_name: AssetName,
    amount: Int,
    output_builder: TransactionOutputAmountBuilder
  ): void;

  /**
 * @param {TransactionUnspentOutputs} inputs
 * @param {$Values<
                typeof 
                CoinSelectionStrategyCIP2>} strategy
 * @param {ChangeConfig} change_config
 * @param {BigNum} collateral_percentage
 */
  add_inputs_from_and_change_with_collateral_return(
    inputs: TransactionUnspentOutputs,
    strategy: $Values<typeof CoinSelectionStrategyCIP2>,
    change_config: ChangeConfig,
    collateral_percentage: BigNum
  ): void;

  /**
   * Returns object the body of the new transaction
   * Auxiliary data itself is not included
   * You can use `get_auxiliary_data` or `build_tx`
   * @returns {TransactionBody}
   */
  build(): TransactionBody;

  /**
   * warning: sum of all parts of a transaction must equal 0. You cannot just set the fee to the min value and forget about it
   * warning: min_fee may be slightly larger than the actual minimum fee (ex: a few lovelaces)
   * this is done to simplify the library code, but can be fixed later
   * @returns {BigNum}
   */
  min_fee(): BigNum;

  /**
   * Set exact fee for the transaction. If the real fee will be bigger then the set value, the transaction will not be created on .build_tx()
   * @param {BigNum} fee
   */
  set_fee(fee: BigNum): void;

  /**
   * !!! DEPRECATED !!!
   * Set ttl value.
   * @param {number} ttl
   */
  set_ttl(ttl: number): void;

  /**
   * Returns full Transaction object with the body and the auxiliary data
   * NOTE: witness_set will contain all mint_scripts if any been added or set
   * NOTE: is_valid set to true
   * NOTE: Will fail in case there are any script inputs added with no corresponding witness
   * @returns {Transaction}
   */
  build_tx(): Transaction;

  /**
   * !!! DEPRECATED !!!
   * Mints are defining by MintBuilder now.
   * Use `.get_mint_builder()` and `.build()` instead.
   * Returns a copy of the current mint state in the builder
   * @returns {Mint | void}
   */
  get_mint(): Mint | void;

  /**
   * !!! DEPRECATED !!!
   * Mints are defining by MintBuilder now.
   * Use `.set_mint_builder()` and `MintBuilder` instead.
   * Set explicit Mint object and the required witnesses to this builder
   * it will replace any previously existing mint and mint scripts
   * NOTE! Error will be returned in case a mint policy does not have a matching script
   * @param {Mint} mint
   * @param {NativeScripts} mint_scripts
   */
  set_mint(mint: Mint, mint_scripts: NativeScripts): void;

  /**
   * @returns {number}
   */
  full_size(): number;

  /**
   * !!! DEPRECATED !!!
   * Can emit error if add a cert with script credential.
   * Use set_certs_builder instead.
   * @param {Certificates} certs
   */
  set_certs(certs: Certificates): void;
}
/**
 */
declare export class TransactionBuilderConfig {
  free(): void;
}
/**
 */
declare export class TransactionBuilderConfigBuilder {
  free(): void;

  /**
   * @param {BigNum} key_deposit
   * @returns {TransactionBuilderConfigBuilder}
   */
  key_deposit(key_deposit: BigNum): TransactionBuilderConfigBuilder;

  /**
   * @param {number} max_tx_size
   * @returns {TransactionBuilderConfigBuilder}
   */
  max_tx_size(max_tx_size: number): TransactionBuilderConfigBuilder;

  /**
   * @param {BigNum} pool_deposit
   * @returns {TransactionBuilderConfigBuilder}
   */
  pool_deposit(pool_deposit: BigNum): TransactionBuilderConfigBuilder;

  /**
   * @param {ExUnitPrices} ex_unit_prices
   * @returns {TransactionBuilderConfigBuilder}
   */
  ex_unit_prices(ex_unit_prices: ExUnitPrices): TransactionBuilderConfigBuilder;

  /**
   * @param {number} max_value_size
   * @returns {TransactionBuilderConfigBuilder}
   */
  max_value_size(max_value_size: number): TransactionBuilderConfigBuilder;

  /**
   * @param {boolean} prefer_pure_change
   * @returns {TransactionBuilderConfigBuilder}
   */
  prefer_pure_change(
    prefer_pure_change: boolean
  ): TransactionBuilderConfigBuilder;

  /**
   * @param {BigNum} coins_per_utxo_byte
   * @returns {TransactionBuilderConfigBuilder}
   */
  coins_per_utxo_byte(
    coins_per_utxo_byte: BigNum
  ): TransactionBuilderConfigBuilder;

  /**
   * If set to true, the transaction builder will not burn extra change if it's impossible to crate change output
   * due to the value being too small to cover min ada for change output. Instead, tx builder will throw an error.
   * @param {boolean} do_not_burn_extra_change
   * @returns {TransactionBuilderConfigBuilder}
   */
  do_not_burn_extra_change(
    do_not_burn_extra_change: boolean
  ): TransactionBuilderConfigBuilder;

  /**
   * @param {UnitInterval} ref_script_coins_per_byte
   * @returns {TransactionBuilderConfigBuilder}
   */
  ref_script_coins_per_byte(
    ref_script_coins_per_byte: UnitInterval
  ): TransactionBuilderConfigBuilder;

  /**
   * @returns {TransactionBuilderConfigBuilder}
   */
  static new(): TransactionBuilderConfigBuilder;

  /**
   * Removes a ref input (that was set via set_reference_inputs) if the ref inputs was presented in regular tx inputs
   * @param {boolean} deduplicate_explicit_ref_inputs_with_regular_inputs
   * @returns {TransactionBuilderConfigBuilder}
   */
  deduplicate_explicit_ref_inputs_with_regular_inputs(
    deduplicate_explicit_ref_inputs_with_regular_inputs: boolean
  ): TransactionBuilderConfigBuilder;

  /**
   * @returns {TransactionBuilderConfig}
   */
  build(): TransactionBuilderConfig;

  /**
   * @param {LinearFee} fee_algo
   * @returns {TransactionBuilderConfigBuilder}
   */
  fee_algo(fee_algo: LinearFee): TransactionBuilderConfigBuilder;
}
/**
 */
declare export class TransactionHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionHash}
   */
  static from_bytes(bytes: Uint8Array): TransactionHash;

  /**
   * @param {string} bech_str
   * @returns {TransactionHash}
   */
  static from_bech32(bech_str: string): TransactionHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {TransactionHash}
   */
  static from_hex(hex: string): TransactionHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class TransactionInput {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionInput}
   */
  static from_bytes(bytes: Uint8Array): TransactionInput;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {TransactionHash}
   */
  transaction_id(): TransactionHash;

  /**
   * @param {TransactionHash} transaction_id
   * @param {number} index
   * @returns {TransactionInput}
   */
  static new(transaction_id: TransactionHash, index: number): TransactionInput;

  /**
   * @returns {number}
   */
  index(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionInput}
   */
  static from_hex(hex_str: string): TransactionInput;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionInput}
   */
  static from_json(json: string): TransactionInput;
}
/**
 */
declare export class TransactionInputs {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionInputs}
   */
  static from_bytes(bytes: Uint8Array): TransactionInputs;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `TransactionInput` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {TransactionInput} input
   * @returns {boolean}
   */
  add(input: TransactionInput): boolean;

  /**
   * @param {number} index
   * @returns {TransactionInput}
   */
  get(index: number): TransactionInput;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TransactionInputs}
   */
  static new(): TransactionInputs;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionInputs}
   */
  static from_hex(hex_str: string): TransactionInputs;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionInputs}
   */
  static from_json(json: string): TransactionInputs;

  /**
   * @returns {TransactionInputs | void}
   */
  to_option(): TransactionInputs | void;
}
/**
 */
declare export class TransactionMetadatum {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionMetadatum}
   */
  static from_bytes(bytes: Uint8Array): TransactionMetadatum;

  /**
 * @returns {$Values<
                typeof 
                TransactionMetadatumKind>}
 */
  kind(): $Values<typeof TransactionMetadatumKind>;

  /**
   * @returns {Int}
   */
  as_int(): Int;

  /**
   * @returns {MetadataMap}
   */
  as_map(): MetadataMap;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {MetadataList}
   */
  as_list(): MetadataList;

  /**
   * @returns {string}
   */
  as_text(): string;

  /**
   * @param {Int} int
   * @returns {TransactionMetadatum}
   */
  static new_int(int: Int): TransactionMetadatum;

  /**
   * @param {MetadataMap} map
   * @returns {TransactionMetadatum}
   */
  static new_map(map: MetadataMap): TransactionMetadatum;

  /**
   * @returns {Uint8Array}
   */
  as_bytes(): Uint8Array;

  /**
   * @param {string} hex_str
   * @returns {TransactionMetadatum}
   */
  static from_hex(hex_str: string): TransactionMetadatum;

  /**
   * @param {MetadataList} list
   * @returns {TransactionMetadatum}
   */
  static new_list(list: MetadataList): TransactionMetadatum;

  /**
   * @param {string} text
   * @returns {TransactionMetadatum}
   */
  static new_text(text: string): TransactionMetadatum;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionMetadatum}
   */
  static new_bytes(bytes: Uint8Array): TransactionMetadatum;
}
/**
 */
declare export class TransactionMetadatumLabels {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionMetadatumLabels}
   */
  static from_bytes(bytes: Uint8Array): TransactionMetadatumLabels;

  /**
   * @param {BigNum} elem
   */
  add(elem: BigNum): void;

  /**
   * @param {number} index
   * @returns {BigNum}
   */
  get(index: number): BigNum;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TransactionMetadatumLabels}
   */
  static new(): TransactionMetadatumLabels;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionMetadatumLabels}
   */
  static from_hex(hex_str: string): TransactionMetadatumLabels;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;
}
/**
 */
declare export class TransactionOutput {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionOutput}
   */
  static from_bytes(bytes: Uint8Array): TransactionOutput;

  /**
   * @returns {ScriptRef | void}
   */
  script_ref(): ScriptRef | void;

  /**
   * @returns {PlutusData | void}
   */
  plutus_data(): PlutusData | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {boolean}
   */
  has_data_hash(): boolean;

  /**
   * @param {DataHash} data_hash
   */
  set_data_hash(data_hash: DataHash): void;

  /**
   * @returns {boolean}
   */
  has_script_ref(): boolean;

  /**
   * @param {ScriptRef} script_ref
   */
  set_script_ref(script_ref: ScriptRef): void;

  /**
   * @returns {boolean}
   */
  has_plutus_data(): boolean;

  /**
   * @param {PlutusData} data
   */
  set_plutus_data(data: PlutusData): void;

  /**
 * @returns {$Values<
                typeof 
                CborContainerType> | void}
 */
  serialization_format(): $Values<typeof CborContainerType> | void;

  /**
   * @param {Address} address
   * @param {Value} amount
   * @returns {TransactionOutput}
   */
  static new(address: Address, amount: Value): TransactionOutput;

  /**
   * @returns {Value}
   */
  amount(): Value;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {Address}
   */
  address(): Address;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionOutput}
   */
  static from_hex(hex_str: string): TransactionOutput;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @returns {DataHash | void}
   */
  data_hash(): DataHash | void;

  /**
   * @param {string} json
   * @returns {TransactionOutput}
   */
  static from_json(json: string): TransactionOutput;
}
/**
 */
declare export class TransactionOutputAmountBuilder {
  free(): void;

  /**
   * @param {Value} amount
   * @returns {TransactionOutputAmountBuilder}
   */
  with_value(amount: Value): TransactionOutputAmountBuilder;

  /**
   * @param {BigNum} coin
   * @param {MultiAsset} multiasset
   * @returns {TransactionOutputAmountBuilder}
   */
  with_coin_and_asset(
    coin: BigNum,
    multiasset: MultiAsset
  ): TransactionOutputAmountBuilder;

  /**
   * @param {MultiAsset} multiasset
   * @param {DataCost} data_cost
   * @returns {TransactionOutputAmountBuilder}
   */
  with_asset_and_min_required_coin_by_utxo_cost(
    multiasset: MultiAsset,
    data_cost: DataCost
  ): TransactionOutputAmountBuilder;

  /**
   * @returns {TransactionOutput}
   */
  build(): TransactionOutput;

  /**
   * @param {BigNum} coin
   * @returns {TransactionOutputAmountBuilder}
   */
  with_coin(coin: BigNum): TransactionOutputAmountBuilder;
}
/**
 * We introduce a builder-pattern format for creating transaction outputs
 * This is because:
 * 1. Some fields (i.e. data hash) are optional, and we can't easily expose Option<> in WASM
 * 2. Some fields like amounts have many ways it could be set (some depending on other field values being known)
 * 3. Easier to adapt as the output format gets more complicated in future Cardano releases
 */
declare export class TransactionOutputBuilder {
  free(): void;

  /**
   * @param {Address} address
   * @returns {TransactionOutputBuilder}
   */
  with_address(address: Address): TransactionOutputBuilder;

  /**
   * @param {DataHash} data_hash
   * @returns {TransactionOutputBuilder}
   */
  with_data_hash(data_hash: DataHash): TransactionOutputBuilder;

  /**
   * @param {ScriptRef} script_ref
   * @returns {TransactionOutputBuilder}
   */
  with_script_ref(script_ref: ScriptRef): TransactionOutputBuilder;

  /**
   * @param {PlutusData} data
   * @returns {TransactionOutputBuilder}
   */
  with_plutus_data(data: PlutusData): TransactionOutputBuilder;

  /**
   * @returns {TransactionOutputBuilder}
   */
  static new(): TransactionOutputBuilder;

  /**
   * @returns {TransactionOutputAmountBuilder}
   */
  next(): TransactionOutputAmountBuilder;
}
/**
 */
declare export class TransactionOutputs {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionOutputs}
   */
  static from_bytes(bytes: Uint8Array): TransactionOutputs;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {TransactionOutput} elem
   */
  add(elem: TransactionOutput): void;

  /**
   * @param {number} index
   * @returns {TransactionOutput}
   */
  get(index: number): TransactionOutput;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TransactionOutputs}
   */
  static new(): TransactionOutputs;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionOutputs}
   */
  static from_hex(hex_str: string): TransactionOutputs;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionOutputs}
   */
  static from_json(json: string): TransactionOutputs;
}
/**
 */
declare export class TransactionUnspentOutput {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionUnspentOutput}
   */
  static from_bytes(bytes: Uint8Array): TransactionUnspentOutput;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {TransactionInput} input
   * @param {TransactionOutput} output
   * @returns {TransactionUnspentOutput}
   */
  static new(
    input: TransactionInput,
    output: TransactionOutput
  ): TransactionUnspentOutput;

  /**
   * @returns {TransactionInput}
   */
  input(): TransactionInput;

  /**
   * @returns {TransactionOutput}
   */
  output(): TransactionOutput;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionUnspentOutput}
   */
  static from_hex(hex_str: string): TransactionUnspentOutput;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionUnspentOutput}
   */
  static from_json(json: string): TransactionUnspentOutput;
}
/**
 */
declare export class TransactionUnspentOutputs {
  free(): void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {TransactionUnspentOutput} elem
   */
  add(elem: TransactionUnspentOutput): void;

  /**
   * @param {number} index
   * @returns {TransactionUnspentOutput}
   */
  get(index: number): TransactionUnspentOutput;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TransactionUnspentOutputs}
   */
  static new(): TransactionUnspentOutputs;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} json
   * @returns {TransactionUnspentOutputs}
   */
  static from_json(json: string): TransactionUnspentOutputs;
}
/**
 */
declare export class TransactionWitnessSet {
  free(): void;

  /**
   * @returns {BootstrapWitnesses | void}
   */
  bootstraps(): BootstrapWitnesses | void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionWitnessSet}
   */
  static from_bytes(bytes: Uint8Array): TransactionWitnessSet;

  /**
   * @returns {PlutusList | void}
   */
  plutus_data(): PlutusList | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Redeemers} redeemers
   */
  set_redeemers(redeemers: Redeemers): void;

  /**
   * @returns {NativeScripts | void}
   */
  native_scripts(): NativeScripts | void;

  /**
   * @returns {PlutusScripts | void}
   */
  plutus_scripts(): PlutusScripts | void;

  /**
   * @param {BootstrapWitnesses} bootstraps
   */
  set_bootstraps(bootstraps: BootstrapWitnesses): void;

  /**
   * @param {PlutusList} plutus_data
   */
  set_plutus_data(plutus_data: PlutusList): void;

  /**
   * @param {NativeScripts} native_scripts
   */
  set_native_scripts(native_scripts: NativeScripts): void;

  /**
   * @param {PlutusScripts} plutus_scripts
   */
  set_plutus_scripts(plutus_scripts: PlutusScripts): void;

  /**
   * @returns {TransactionWitnessSet}
   */
  static new(): TransactionWitnessSet;

  /**
   * @returns {Vkeywitnesses | void}
   */
  vkeys(): Vkeywitnesses | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionWitnessSet}
   */
  static from_hex(hex_str: string): TransactionWitnessSet;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionWitnessSet}
   */
  static from_json(json: string): TransactionWitnessSet;

  /**
   * @returns {Redeemers | void}
   */
  redeemers(): Redeemers | void;

  /**
   * @param {Vkeywitnesses} vkeys
   */
  set_vkeys(vkeys: Vkeywitnesses): void;
}
/**
 */
declare export class TransactionWitnessSets {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TransactionWitnessSets}
   */
  static from_bytes(bytes: Uint8Array): TransactionWitnessSets;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {TransactionWitnessSet} elem
   */
  add(elem: TransactionWitnessSet): void;

  /**
   * @param {number} index
   * @returns {TransactionWitnessSet}
   */
  get(index: number): TransactionWitnessSet;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TransactionWitnessSets}
   */
  static new(): TransactionWitnessSets;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TransactionWitnessSets}
   */
  static from_hex(hex_str: string): TransactionWitnessSets;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TransactionWitnessSets}
   */
  static from_json(json: string): TransactionWitnessSets;
}
/**
 */
declare export class TreasuryWithdrawals {
  free(): void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {RewardAddress} key
   * @returns {BigNum | void}
   */
  get(key: RewardAddress): BigNum | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TreasuryWithdrawals}
   */
  static new(): TreasuryWithdrawals;

  /**
   * @returns {RewardAddresses}
   */
  keys(): RewardAddresses;

  /**
   * @param {RewardAddress} key
   * @param {BigNum} value
   */
  insert(key: RewardAddress, value: BigNum): void;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} json
   * @returns {TreasuryWithdrawals}
   */
  static from_json(json: string): TreasuryWithdrawals;
}
/**
 */
declare export class TreasuryWithdrawalsAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {TreasuryWithdrawalsAction}
   */
  static from_bytes(bytes: Uint8Array): TreasuryWithdrawalsAction;

  /**
   * @returns {ScriptHash | void}
   */
  policy_hash(): ScriptHash | void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {TreasuryWithdrawals}
   */
  withdrawals(): TreasuryWithdrawals;

  /**
   * @param {TreasuryWithdrawals} withdrawals
   * @param {ScriptHash} policy_hash
   * @returns {TreasuryWithdrawalsAction}
   */
  static new_with_policy_hash(
    withdrawals: TreasuryWithdrawals,
    policy_hash: ScriptHash
  ): TreasuryWithdrawalsAction;

  /**
   * @param {TreasuryWithdrawals} withdrawals
   * @returns {TreasuryWithdrawalsAction}
   */
  static new(withdrawals: TreasuryWithdrawals): TreasuryWithdrawalsAction;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {TreasuryWithdrawalsAction}
   */
  static from_hex(hex_str: string): TreasuryWithdrawalsAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {TreasuryWithdrawalsAction}
   */
  static from_json(json: string): TreasuryWithdrawalsAction;
}
/**
 */
declare export class TxInputsBuilder {
  free(): void;

  /**
   * @returns {Value}
   */
  total_value(): Value;

  /**
   * We have to know what kind of inputs these are to know what kind of mock witnesses to create since
   * 1) mock witnesses have different lengths depending on the type which changes the expecting fee
   * 2) Witnesses are a set so we need to get rid of duplicates to avoid over-estimating the fee
   * @param {Ed25519KeyHash} hash
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_key_input(
    hash: Ed25519KeyHash,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * @returns {TransactionInputs | void}
   */
  inputs_option(): TransactionInputs | void;

  /**
   * @returns {TransactionInputs}
   */
  get_ref_inputs(): TransactionInputs;

  /**
   * @param {TransactionUnspentOutput} utxo
   */
  add_regular_utxo(utxo: TransactionUnspentOutput): void;

  /**
   * Adds non script input, in case of script or reward address input it will return an error
   * @param {Address} address
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_regular_input(
    address: Address,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * @param {ByronAddress} address
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_bootstrap_input(
    address: ByronAddress,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * @param {Ed25519KeyHash} key
   */
  add_required_signer(key: Ed25519KeyHash): void;

  /**
   * @param {Ed25519KeyHashes} keys
   */
  add_required_signers(keys: Ed25519KeyHashes): void;

  /**
   * @param {TransactionUnspentOutput} utxo
   * @param {NativeScriptSource} witness
   */
  add_native_script_utxo(
    utxo: TransactionUnspentOutput,
    witness: NativeScriptSource
  ): void;

  /**
   * @param {TransactionUnspentOutput} utxo
   * @param {PlutusWitness} witness
   */
  add_plutus_script_utxo(
    utxo: TransactionUnspentOutput,
    witness: PlutusWitness
  ): void;

  /**
   * This method will add the input to the builder and also register the required native script witness
   * @param {NativeScriptSource} script
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_native_script_input(
    script: NativeScriptSource,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * This method will add the input to the builder and also register the required plutus witness
   * @param {PlutusWitness} witness
   * @param {TransactionInput} input
   * @param {Value} amount
   */
  add_plutus_script_input(
    witness: PlutusWitness,
    input: TransactionInput,
    amount: Value
  ): void;

  /**
   * Returns a copy of the current script input witness scripts in the builder
   * @returns {NativeScripts | void}
   */
  get_native_input_scripts(): NativeScripts | void;

  /**
   * Returns a copy of the current plutus input witness scripts in the builder.
   * NOTE: each plutus witness will be cloned with a specific corresponding input index
   * @returns {PlutusWitnesses | void}
   */
  get_plutus_input_scripts(): PlutusWitnesses | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {TxInputsBuilder}
   */
  static new(): TxInputsBuilder;

  /**
   * @returns {TransactionInputs}
   */
  inputs(): TransactionInputs;
}
/**
 */
declare export class URL {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {URL}
   */
  static from_bytes(bytes: Uint8Array): URL;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {string} url
   * @returns {URL}
   */
  static new(url: string): URL;

  /**
   * @returns {string}
   */
  url(): string;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {URL}
   */
  static from_hex(hex_str: string): URL;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {URL}
   */
  static from_json(json: string): URL;
}
/**
 */
declare export class UnitInterval {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {UnitInterval}
   */
  static from_bytes(bytes: Uint8Array): UnitInterval;

  /**
   * @returns {BigNum}
   */
  denominator(): BigNum;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {BigNum} numerator
   * @param {BigNum} denominator
   * @returns {UnitInterval}
   */
  static new(numerator: BigNum, denominator: BigNum): UnitInterval;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {UnitInterval}
   */
  static from_hex(hex_str: string): UnitInterval;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {UnitInterval}
   */
  static from_json(json: string): UnitInterval;

  /**
   * @returns {BigNum}
   */
  numerator(): BigNum;
}
/**
 */
declare export class Update {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Update}
   */
  static from_bytes(bytes: Uint8Array): Update;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {ProposedProtocolParameterUpdates}
   */
  proposed_protocol_parameter_updates(): ProposedProtocolParameterUpdates;

  /**
   * @param {ProposedProtocolParameterUpdates} proposed_protocol_parameter_updates
   * @param {number} epoch
   * @returns {Update}
   */
  static new(
    proposed_protocol_parameter_updates: ProposedProtocolParameterUpdates,
    epoch: number
  ): Update;

  /**
   * @returns {number}
   */
  epoch(): number;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Update}
   */
  static from_hex(hex_str: string): Update;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Update}
   */
  static from_json(json: string): Update;
}
/**
 */
declare export class UpdateCommitteeAction {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {UpdateCommitteeAction}
   */
  static from_bytes(bytes: Uint8Array): UpdateCommitteeAction;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {GovernanceActionId | void}
   */
  gov_action_id(): GovernanceActionId | void;

  /**
   * @returns {Credentials}
   */
  members_to_remove(): Credentials;

  /**
   * @param {GovernanceActionId} gov_action_id
   * @param {Committee} committee
   * @param {Credentials} members_to_remove
   * @returns {UpdateCommitteeAction}
   */
  static new_with_action_id(
    gov_action_id: GovernanceActionId,
    committee: Committee,
    members_to_remove: Credentials
  ): UpdateCommitteeAction;

  /**
   * @param {Committee} committee
   * @param {Credentials} members_to_remove
   * @returns {UpdateCommitteeAction}
   */
  static new(
    committee: Committee,
    members_to_remove: Credentials
  ): UpdateCommitteeAction;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {UpdateCommitteeAction}
   */
  static from_hex(hex_str: string): UpdateCommitteeAction;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @returns {Committee}
   */
  committee(): Committee;

  /**
   * @param {string} json
   * @returns {UpdateCommitteeAction}
   */
  static from_json(json: string): UpdateCommitteeAction;
}
/**
 */
declare export class VRFCert {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VRFCert}
   */
  static from_bytes(bytes: Uint8Array): VRFCert;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Uint8Array} output
   * @param {Uint8Array} proof
   * @returns {VRFCert}
   */
  static new(output: Uint8Array, proof: Uint8Array): VRFCert;

  /**
   * @returns {Uint8Array}
   */
  proof(): Uint8Array;

  /**
   * @returns {Uint8Array}
   */
  output(): Uint8Array;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VRFCert}
   */
  static from_hex(hex_str: string): VRFCert;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VRFCert}
   */
  static from_json(json: string): VRFCert;
}
/**
 */
declare export class VRFKeyHash {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VRFKeyHash}
   */
  static from_bytes(bytes: Uint8Array): VRFKeyHash;

  /**
   * @param {string} bech_str
   * @returns {VRFKeyHash}
   */
  static from_bech32(bech_str: string): VRFKeyHash;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {VRFKeyHash}
   */
  static from_hex(hex: string): VRFKeyHash;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class VRFVKey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VRFVKey}
   */
  static from_bytes(bytes: Uint8Array): VRFVKey;

  /**
   * @param {string} bech_str
   * @returns {VRFVKey}
   */
  static from_bech32(bech_str: string): VRFVKey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @param {string} hex
   * @returns {VRFVKey}
   */
  static from_hex(hex: string): VRFVKey;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} prefix
   * @returns {string}
   */
  to_bech32(prefix: string): string;
}
/**
 */
declare export class Value {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Value}
   */
  static from_bytes(bytes: Uint8Array): Value;

  /**
   * @returns {MultiAsset | void}
   */
  multiasset(): MultiAsset | void;

  /**
   * @param {Value} rhs
   * @returns {Value}
   */
  checked_add(rhs: Value): Value;

  /**
   * @param {Value} rhs_value
   * @returns {Value}
   */
  checked_sub(rhs_value: Value): Value;

  /**
   * @param {Value} rhs_value
   * @returns {Value}
   */
  clamped_sub(rhs_value: Value): Value;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {MultiAsset} multiasset
   */
  set_multiasset(multiasset: MultiAsset): void;

  /**
   * @param {MultiAsset} multiasset
   * @returns {Value}
   */
  static new_from_assets(multiasset: MultiAsset): Value;

  /**
   * @param {BigNum} coin
   * @param {MultiAsset} multiasset
   * @returns {Value}
   */
  static new_with_assets(coin: BigNum, multiasset: MultiAsset): Value;

  /**
   * @param {BigNum} coin
   * @returns {Value}
   */
  static new(coin: BigNum): Value;

  /**
   * @returns {BigNum}
   */
  coin(): BigNum;

  /**
   * @returns {Value}
   */
  static zero(): Value;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * note: values are only partially comparable
   * @param {Value} rhs_value
   * @returns {number | void}
   */
  compare(rhs_value: Value): number | void;

  /**
   * @returns {boolean}
   */
  is_zero(): boolean;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Value}
   */
  static from_hex(hex_str: string): Value;

  /**
   * @param {BigNum} coin
   */
  set_coin(coin: BigNum): void;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Value}
   */
  static from_json(json: string): Value;
}
/**
 */
declare export class VersionedBlock {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VersionedBlock}
   */
  static from_bytes(bytes: Uint8Array): VersionedBlock;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
 * @returns {$Values<
                typeof 
                BlockEra>}
 */
  era(): $Values<typeof BlockEra>;

  /**
   * @param {Block} block
   * @param {number} era_code
   * @returns {VersionedBlock}
   */
  static new(block: Block, era_code: number): VersionedBlock;

  /**
   * @returns {Block}
   */
  block(): Block;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VersionedBlock}
   */
  static from_hex(hex_str: string): VersionedBlock;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VersionedBlock}
   */
  static from_json(json: string): VersionedBlock;
}
/**
 */
declare export class Vkey {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Vkey}
   */
  static from_bytes(bytes: Uint8Array): Vkey;

  /**
   * @returns {PublicKey}
   */
  public_key(): PublicKey;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {PublicKey} pk
   * @returns {Vkey}
   */
  static new(pk: PublicKey): Vkey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Vkey}
   */
  static from_hex(hex_str: string): Vkey;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Vkey}
   */
  static from_json(json: string): Vkey;
}
/**
 */
declare export class Vkeys {
  free(): void;

  /**
   * @param {Vkey} elem
   */
  add(elem: Vkey): void;

  /**
   * @param {number} index
   * @returns {Vkey}
   */
  get(index: number): Vkey;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Vkeys}
   */
  static new(): Vkeys;
}
/**
 */
declare export class Vkeywitness {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Vkeywitness}
   */
  static from_bytes(bytes: Uint8Array): Vkeywitness;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Vkey} vkey
   * @param {Ed25519Signature} signature
   * @returns {Vkeywitness}
   */
  static new(vkey: Vkey, signature: Ed25519Signature): Vkeywitness;

  /**
   * @returns {Vkey}
   */
  vkey(): Vkey;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Vkeywitness}
   */
  static from_hex(hex_str: string): Vkeywitness;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Vkeywitness}
   */
  static from_json(json: string): Vkeywitness;

  /**
   * @returns {Ed25519Signature}
   */
  signature(): Ed25519Signature;
}
/**
 */
declare export class Vkeywitnesses {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Vkeywitnesses}
   */
  static from_bytes(bytes: Uint8Array): Vkeywitnesses;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `Vkeywitness` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {Vkeywitness} witness
   * @returns {boolean}
   */
  add(witness: Vkeywitness): boolean;

  /**
   * @param {number} index
   * @returns {Vkeywitness}
   */
  get(index: number): Vkeywitness;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Vkeywitnesses}
   */
  static new(): Vkeywitnesses;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Vkeywitnesses}
   */
  static from_hex(hex_str: string): Vkeywitnesses;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Vkeywitnesses}
   */
  static from_json(json: string): Vkeywitnesses;
}
/**
 */
declare export class VoteDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VoteDelegation}
   */
  static from_bytes(bytes: Uint8Array): VoteDelegation;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {DRep} drep
   * @returns {VoteDelegation}
   */
  static new(stake_credential: Credential, drep: DRep): VoteDelegation;

  /**
   * @returns {DRep}
   */
  drep(): DRep;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VoteDelegation}
   */
  static from_hex(hex_str: string): VoteDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VoteDelegation}
   */
  static from_json(json: string): VoteDelegation;
}
/**
 */
declare export class VoteRegistrationAndDelegation {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VoteRegistrationAndDelegation}
   */
  static from_bytes(bytes: Uint8Array): VoteRegistrationAndDelegation;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Credential}
   */
  stake_credential(): Credential;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @param {Credential} stake_credential
   * @param {DRep} drep
   * @param {BigNum} coin
   * @returns {VoteRegistrationAndDelegation}
   */
  static new(
    stake_credential: Credential,
    drep: DRep,
    coin: BigNum
  ): VoteRegistrationAndDelegation;

  /**
   * @returns {BigNum}
   */
  coin(): BigNum;

  /**
   * @returns {DRep}
   */
  drep(): DRep;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VoteRegistrationAndDelegation}
   */
  static from_hex(hex_str: string): VoteRegistrationAndDelegation;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VoteRegistrationAndDelegation}
   */
  static from_json(json: string): VoteRegistrationAndDelegation;
}
/**
 */
declare export class Voter {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Voter}
   */
  static from_bytes(bytes: Uint8Array): Voter;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {Ed25519KeyHash | void}
   */
  to_key_hash(): Ed25519KeyHash | void;

  /**
   * @returns {Credential | void}
   */
  to_drep_credential(): Credential | void;

  /**
   * @param {Credential} cred
   * @returns {Voter}
   */
  static new_drep_credential(cred: Credential): Voter;

  /**
   * @returns {boolean}
   */
  has_script_credentials(): boolean;

  /**
   * @returns {Ed25519KeyHash | void}
   */
  to_stake_pool_key_hash(): Ed25519KeyHash | void;

  /**
   * @param {Ed25519KeyHash} key_hash
   * @returns {Voter}
   */
  static new_stake_pool_key_hash(key_hash: Ed25519KeyHash): Voter;

  /**
   * @returns {Credential | void}
   */
  to_constitutional_committee_hot_credential(): Credential | void;

  /**
   * @param {Credential} cred
   * @returns {Voter}
   */
  static new_constitutional_committee_hot_credential(cred: Credential): Voter;

  /**
 * @returns {$Values<
                typeof 
                VoterKind>}
 */
  kind(): $Values<typeof VoterKind>;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Voter}
   */
  static from_hex(hex_str: string): Voter;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Voter}
   */
  static from_json(json: string): Voter;
}
/**
 */
declare export class Voters {
  free(): void;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Voter} voter
   */
  add(voter: Voter): void;

  /**
   * @param {number} index
   * @returns {Voter | void}
   */
  get(index: number): Voter | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Voters}
   */
  static new(): Voters;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} json
   * @returns {Voters}
   */
  static from_json(json: string): Voters;
}
/**
 */
declare export class VotingBuilder {
  free(): void;

  /**
   * @returns {TransactionInputs}
   */
  get_ref_inputs(): TransactionInputs;

  /**
   * @returns {NativeScripts}
   */
  get_native_scripts(): NativeScripts;

  /**
   * @returns {boolean}
   */
  has_plutus_scripts(): boolean;

  /**
   * @returns {PlutusWitnesses}
   */
  get_plutus_witnesses(): PlutusWitnesses;

  /**
   * @param {Voter} voter
   * @param {GovernanceActionId} gov_action_id
   * @param {VotingProcedure} voting_procedure
   * @param {NativeScriptSource} native_script_source
   */
  add_with_native_script(
    voter: Voter,
    gov_action_id: GovernanceActionId,
    voting_procedure: VotingProcedure,
    native_script_source: NativeScriptSource
  ): void;

  /**
   * @param {Voter} voter
   * @param {GovernanceActionId} gov_action_id
   * @param {VotingProcedure} voting_procedure
   * @param {PlutusWitness} witness
   */
  add_with_plutus_witness(
    voter: Voter,
    gov_action_id: GovernanceActionId,
    voting_procedure: VotingProcedure,
    witness: PlutusWitness
  ): void;

  /**
   * @param {Voter} voter
   * @param {GovernanceActionId} gov_action_id
   * @param {VotingProcedure} voting_procedure
   */
  add(
    voter: Voter,
    gov_action_id: GovernanceActionId,
    voting_procedure: VotingProcedure
  ): void;

  /**
   * @returns {VotingBuilder}
   */
  static new(): VotingBuilder;

  /**
   * @returns {VotingProcedures}
   */
  build(): VotingProcedures;
}
/**
 */
declare export class VotingProcedure {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VotingProcedure}
   */
  static from_bytes(bytes: Uint8Array): VotingProcedure;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
 * @param {$Values<
                typeof 
                VoteKind>} vote
 * @param {Anchor} anchor
 * @returns {VotingProcedure}
 */
  static new_with_anchor(
    vote: $Values<typeof VoteKind>,
    anchor: Anchor
  ): VotingProcedure;

  /**
 * @param {$Values<
                typeof 
                VoteKind>} vote
 * @returns {VotingProcedure}
 */
  static new(vote: $Values<typeof VoteKind>): VotingProcedure;

  /**
   * @returns {Anchor | void}
   */
  anchor(): Anchor | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VotingProcedure}
   */
  static from_hex(hex_str: string): VotingProcedure;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VotingProcedure}
   */
  static from_json(json: string): VotingProcedure;

  /**
 * @returns {$Values<
                typeof 
                VoteKind>}
 */
  vote_kind(): $Values<typeof VoteKind>;
}
/**
 */
declare export class VotingProcedures {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VotingProcedures}
   */
  static from_bytes(bytes: Uint8Array): VotingProcedures;

  /**
   * @returns {Voters}
   */
  get_voters(): Voters;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {Voter} voter
   * @returns {GovernanceActionIds}
   */
  get_governance_action_ids_by_voter(voter: Voter): GovernanceActionIds;

  /**
   * @param {Voter} voter
   * @param {GovernanceActionId} governance_action_id
   * @returns {VotingProcedure | void}
   */
  get(
    voter: Voter,
    governance_action_id: GovernanceActionId
  ): VotingProcedure | void;

  /**
   * @returns {VotingProcedures}
   */
  static new(): VotingProcedures;

  /**
   * @param {Voter} voter
   * @param {GovernanceActionId} governance_action_id
   * @param {VotingProcedure} voting_procedure
   */
  insert(
    voter: Voter,
    governance_action_id: GovernanceActionId,
    voting_procedure: VotingProcedure
  ): void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VotingProcedures}
   */
  static from_hex(hex_str: string): VotingProcedures;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VotingProcedures}
   */
  static from_json(json: string): VotingProcedures;
}
/**
 */
declare export class VotingProposal {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VotingProposal}
   */
  static from_bytes(bytes: Uint8Array): VotingProposal;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @returns {RewardAddress}
   */
  reward_account(): RewardAddress;

  /**
   * @returns {GovernanceAction}
   */
  governance_action(): GovernanceAction;

  /**
   * @param {GovernanceAction} governance_action
   * @param {Anchor} anchor
   * @param {RewardAddress} reward_account
   * @param {BigNum} deposit
   * @returns {VotingProposal}
   */
  static new(
    governance_action: GovernanceAction,
    anchor: Anchor,
    reward_account: RewardAddress,
    deposit: BigNum
  ): VotingProposal;

  /**
   * @returns {Anchor}
   */
  anchor(): Anchor;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {BigNum}
   */
  deposit(): BigNum;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {VotingProposal}
   */
  static from_hex(hex_str: string): VotingProposal;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VotingProposal}
   */
  static from_json(json: string): VotingProposal;
}
/**
 */
declare export class VotingProposalBuilder {
  free(): void;

  /**
   * @returns {TransactionInputs}
   */
  get_ref_inputs(): TransactionInputs;

  /**
   * @returns {boolean}
   */
  has_plutus_scripts(): boolean;

  /**
   * @returns {PlutusWitnesses}
   */
  get_plutus_witnesses(): PlutusWitnesses;

  /**
   * @param {VotingProposal} proposal
   * @param {PlutusWitness} witness
   */
  add_with_plutus_witness(
    proposal: VotingProposal,
    witness: PlutusWitness
  ): void;

  /**
   * @param {VotingProposal} proposal
   */
  add(proposal: VotingProposal): void;

  /**
   * @returns {VotingProposalBuilder}
   */
  static new(): VotingProposalBuilder;

  /**
   * @returns {VotingProposals}
   */
  build(): VotingProposals;
}
/**
 */
declare export class VotingProposals {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {VotingProposals}
   */
  static from_bytes(bytes: Uint8Array): VotingProposals;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * Add a new `VotingProposal` to the set.
   * Returns `true` if the element was not already present in the set.
   * @param {VotingProposal} proposal
   * @returns {boolean}
   */
  add(proposal: VotingProposal): boolean;

  /**
   * @param {number} index
   * @returns {VotingProposal}
   */
  get(index: number): VotingProposal;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {VotingProposals}
   */
  static new(): VotingProposals;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {VotingProposal} elem
   * @returns {boolean}
   */
  contains(elem: VotingProposal): boolean;

  /**
   * @param {string} hex_str
   * @returns {VotingProposals}
   */
  static from_hex(hex_str: string): VotingProposals;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {VotingProposals}
   */
  static from_json(json: string): VotingProposals;

  /**
   * @returns {VotingProposals | void}
   */
  to_option(): VotingProposals | void;
}
/**
 */
declare export class WasmDeserializedAddress {
  free(): void;

  /**
   * @returns {string}
   */
  get_script_hash(): string;

  /**
   * @returns {string}
   */
  get_pub_key_hash(): string;

  /**
   * @returns {string}
   */
  get_stake_key_hash(): string;

  /**
   * @returns {string}
   */
  get_stake_key_script_hash(): string;

  /**
   * @param {string} pub_key_hash
   * @param {string} script_hash
   * @param {string} stake_key_hash
   * @param {string} stake_key_script_hash
   * @returns {WasmDeserializedAddress}
   */
  static new(
    pub_key_hash: string,
    script_hash: string,
    stake_key_hash: string,
    stake_key_script_hash: string
  ): WasmDeserializedAddress;
}
/**
 */
declare export class WasmResult {
  free(): void;

  /**
   * @returns {string}
   */
  get_status(): string;

  /**
   * @param {string} status
   * @param {string} data
   * @returns {WasmResult}
   */
  static new(status: string, data: string): WasmResult;

  /**
   * @returns {string}
   */
  get_data(): string;

  /**
   * @returns {string}
   */
  get_error(): string;

  /**
   * @param {string} status
   * @param {string} error
   * @returns {WasmResult}
   */
  static new_error(status: string, error: string): WasmResult;
}
/**
 */
declare export class Withdrawals {
  free(): void;

  /**
   * @param {Uint8Array} bytes
   * @returns {Withdrawals}
   */
  static from_bytes(bytes: Uint8Array): Withdrawals;

  /**
   * @returns {any}
   */
  to_js_value(): any;

  /**
   * @param {RewardAddress} key
   * @returns {BigNum | void}
   */
  get(key: RewardAddress): BigNum | void;

  /**
   * @returns {number}
   */
  len(): number;

  /**
   * @returns {Withdrawals}
   */
  static new(): Withdrawals;

  /**
   * @returns {RewardAddresses}
   */
  keys(): RewardAddresses;

  /**
   * @param {RewardAddress} key
   * @param {BigNum} value
   * @returns {BigNum | void}
   */
  insert(key: RewardAddress, value: BigNum): BigNum | void;

  /**
   * @returns {string}
   */
  to_hex(): string;

  /**
   * @returns {string}
   */
  to_json(): string;

  /**
   * @param {string} hex_str
   * @returns {Withdrawals}
   */
  static from_hex(hex_str: string): Withdrawals;

  /**
   * @returns {Uint8Array}
   */
  to_bytes(): Uint8Array;

  /**
   * @param {string} json
   * @returns {Withdrawals}
   */
  static from_json(json: string): Withdrawals;
}
/**
 */
declare export class WithdrawalsBuilder {
  free(): void;

  /**
   * @returns {TransactionInputs}
   */
  get_ref_inputs(): TransactionInputs;

  /**
   * @returns {NativeScripts}
   */
  get_native_scripts(): NativeScripts;

  /**
   * @returns {boolean}
   */
  has_plutus_scripts(): boolean;

  /**
   * @returns {PlutusWitnesses}
   */
  get_plutus_witnesses(): PlutusWitnesses;

  /**
   * @returns {Value}
   */
  get_total_withdrawals(): Value;

  /**
   * @param {RewardAddress} address
   * @param {BigNum} coin
   * @param {NativeScriptSource} native_script_source
   */
  add_with_native_script(
    address: RewardAddress,
    coin: BigNum,
    native_script_source: NativeScriptSource
  ): void;

  /**
   * @param {RewardAddress} address
   * @param {BigNum} coin
   * @param {PlutusWitness} witness
   */
  add_with_plutus_witness(
    address: RewardAddress,
    coin: BigNum,
    witness: PlutusWitness
  ): void;

  /**
   * @param {RewardAddress} address
   * @param {BigNum} coin
   */
  add(address: RewardAddress, coin: BigNum): void;

  /**
   * @returns {WithdrawalsBuilder}
   */
  static new(): WithdrawalsBuilder;

  /**
   * @returns {Withdrawals}
   */
  build(): Withdrawals;
}
