import { Address, HexEncodedString, Ed25519Signature, Transaction, SignedTransactionPayload, TransactionId, TokenSchemeType, Output, StorageScoreParameters, OutputId, u64, Block, ProtocolParameters, Bech32Address, InputSigningData, Unlock, DecayedMana, NumericString, Ed25519Address } from '../types';
import { AccountId, BlockId, DelegationId, FoundryId, NftId, TokenId } from '../types/block/id';
import { SlotCommitment, SlotCommitmentId, SlotIndex } from '../types/block/slot';
/** Utils class for utils. */
export declare class Utils {
    /**
     * Generate a new mnemonic.
     */
    static generateMnemonic(): string;
    /**
     * Convert a mnemonic to a hex encoded seed.
     *
     * @param mnemonic A mnemonic string.
     * @returns The seed as hex-encoded string.
     */
    static mnemonicToHexSeed(mnemonic: string): HexEncodedString;
    /**
     * Compute the account ID from a given account output ID.
     *
     * @param outputId The output ID as hex-encoded string.
     * @returns The account ID.
     */
    static computeAccountId(outputId: OutputId): AccountId;
    /**
     * Compute the delegation ID from a given delegation output ID.
     *
     * @param outputId The output ID as hex-encoded string.
     * @returns The delegation ID.
     */
    static computeDelegationId(outputId: OutputId): DelegationId;
    /**
     * Compute the Foundry ID.
     *
     * @param accountId The account ID associated with the Foundry.
     * @param serialNumber The serial number of the Foundry.
     * @param tokenSchemeType The Token scheme type. Currently only a simple scheme is supported.
     * @returns The Foundry ID.
     */
    static computeFoundryId(accountId: AccountId, serialNumber: number, tokenSchemeType: number): FoundryId;
    /**
     * Compute the NFT ID from the given NFT output ID.
     *
     * @param outputId The output ID as hex-encoded string.
     * @returns The NFT ID.
     */
    static computeNftId(outputId: OutputId): NftId;
    /**
     * Compute the output ID from transaction ID and output index.
     *
     * @param transactionId The ID of the transaction.
     * @param outputIndex The index of the output.
     * @returns The output ID.
     */
    static computeOutputId(id: TransactionId, index: number): OutputId;
    /**
     * Compute the transaction ID from an output ID.
     *
     * @param outputId The output ID.
     * @returns The transaction ID of the transaction which created the output.
     */
    static transactionIdFromOutputId(outputId: OutputId): TransactionId;
    /**
     * Compute the output index from an output ID.
     *
     * @param outputId The output ID.
     * @returns The output index.
     */
    static outputIndexFromOutputId(outputId: OutputId): number;
    /**
     * Compute the required storage deposit of an output.
     *
     * @param output The output.
     * @param storageScoreParameters Storage score of objects which take node resources.
     * @returns The required storage deposit.
     */
    static computeMinimumOutputAmount(output: Output, storageScoreParameters: StorageScoreParameters): u64;
    /**
     * Computes a tokenId from the account ID, serial number and token scheme type.
     * @param accountId The account that controls the foundry.
     * @param serialNumber The serial number of the foundry.
     * @param tokenSchemeType The tokenSchemeType of the foundry.
     * @returns The tokenId.
     */
    static computeTokenId(accountId: AccountId, serialNumber: number, tokenSchemeType: TokenSchemeType): TokenId;
    /**
     * Parse a Bech32 address from a string.
     *
     * @param address A Bech32 address as string.
     * @returns A Bech32 address.
     */
    static parseBech32Address(address: Bech32Address): Address;
    /**
     * Compute the block ID (Blake2b256 hash of the block bytes) of a block.
     *
     * @param block A block.
     * @param protocolParameters The network protocol parameters.
     * @returns The corresponding block ID.
     */
    static blockId(block: Block, protocolParameters: ProtocolParameters): BlockId;
    /**
     * Compute the transaction ID (Blake2b256 hash of the provided transaction payload) of a transaction payload.
     *
     * @param payload A transaction payload.
     * @returns The transaction ID.
     */
    static transactionId(payload: SignedTransactionPayload): TransactionId;
    /**
     * Converts an address to its bech32 representation.
     *
     * @param address An address.
     * @param bech32Hrp The Bech32 HRP (human readable part) to use.
     * @returns The Bech32-encoded address string.
     */
    static addressToBech32(address: Address, bech32Hrp: string): Bech32Address;
    /**
     * Hashes a hex encoded public key with Blake2b256.
     *
     * @param hex The hexadecimal string representation of a public key.
     * @returns The Ed25519 address with the hashed public key.
     */
    static publicKeyHash(hex: HexEncodedString): Ed25519Address;
    /**
     * Checks whether an address string is a valid Bech32-encoded address.
     *
     * @param address An address string.
     */
    static isAddressValid(address: string): boolean;
    /**
     * Compute the hash of an instance of ProtocolParameters.
     *
     * @param protocolParameters A ProtocolParameters instance.
     * @returns The hash of the protocol parameters as a hex-encoded string.
     */
    static protocolParametersHash(protocolParameters: ProtocolParameters): HexEncodedString;
    /**
     * Compute the signing hash of a transaction.
     *
     * @param transaction A transaction.
     * @returns The signing hash of the transaction as a hex-encoded string.
     */
    static transactionSigningHash(transaction: Transaction): HexEncodedString;
    /**
     * Verify an Ed25519 signature against a message.
     *
     * @param signature An Ed25519 signature.
     * @param message A hex-encoded message.
     */
    static verifyEd25519Signature(signature: Ed25519Signature, message: HexEncodedString): boolean;
    /**
     * Verify a Secp256k1Ecdsa signature against a message.
     * @param publicKey A hex-encoded public key.
     * @param signature A hex-encoded signature.
     * @param message A hex-encoded message.
     */
    static verifySecp256k1EcdsaSignature(publicKey: HexEncodedString, signature: HexEncodedString, message: HexEncodedString): boolean;
    /**
     * Verify if a mnemonic is a valid BIP39 mnemonic.
     *
     * @param mnemonic A mnemonic string.
     */
    static verifyMnemonic(mnemonic: string): void;
    /**
     * Computes a slotIndex from a block, transaction or slotCommitment Id.
     * @param id The block, transaction or slotCommitment Id.
     * @returns The slotIndex.
     */
    static computeSlotIndex(id: BlockId | SlotCommitmentId | TransactionId): SlotIndex;
    /**
     * Derives the `SlotCommitmentId` of the `SlotCommitment`.
     */
    static computeSlotCommitmentId(slotCommitment: SlotCommitment): SlotCommitmentId;
    /**
     * Returns the hex representation of the serialized output bytes.
     *
     * @param output The output.
     * @returns The hex representation of the serialized output bytes.
     */
    static outputHexBytes(output: Output): HexEncodedString;
    /**
     * Verifies the semantic of a transaction.
     *
     * @param transaction The transaction payload.
     * @param inputs The inputs data.
     * @param protocolParameters The protocol parameters.
     * @param unlocks The unlocks.
     * @param manaRewards The total mana rewards claimed in the transaction.
     *
     * @returns void.
     */
    static verifyTransactionSemantic(transaction: SignedTransactionPayload, inputs: InputSigningData[], protocolParameters: ProtocolParameters, unlocks?: Unlock[], manaRewards?: {
        [outputId: HexEncodedString]: NumericString;
    }): void;
    /**
     * Applies mana decay to the given mana.
     *
     * @param mana The mana to decay.
     * @param slotIndexCreated The slot index at which the provided mana starts to decay.
     * @param slotIndexTarget The slot index at which the provided mana stops to decay.
     * @param protocolParameters The ProtocolParameters.
     *
     * @returns The decayed mana.
     */
    static manaWithDecay(mana: u64, slotIndexCreated: number, slotIndexTarget: number, protocolParameters: ProtocolParameters): u64;
    /**
     * Calculates the potential mana that is generated by holding `amount` tokens from `slotIndexCreated` to
     * `slotIndexTarget` and applies the decay to the result.
     *
     * @param amount The amount that generates mana.
     * @param slotIndexCreated The slot index at which the provided amount starts to generate mana.
     * @param slotIndexTarget The slot index at which the provided mana stops to generate mana.
     * @param protocolParameters The ProtocolParameters.
     *
     * @returns The decayed potential mana.
     */
    static generateManaWithDecay(amount: u64, slotIndexCreated: number, slotIndexTarget: number, protocolParameters: ProtocolParameters): u64;
    /**
     * Applies mana decay to the output mana and calculates the potential mana that is generated.
     *
     * @param output The output.
     * @param slotIndexCreated The slot index at which the provided output was created.
     * @param slotIndexTarget The slot index for which to calculate the mana values.
     * @param protocolParameters The ProtocolParameters.
     *
     * @returns The decayed stored and potential mana.
     */
    static outputManaWithDecay(output: Output, slotIndexCreated: number, slotIndexTarget: number, protocolParameters: ProtocolParameters): DecayedMana;
    /**
     * Verifies the syntax of a transaction.
     *
     * @param transaction The transaction payload.
     * @param protocolParameters The protocol parameters used for the validation.
     * @returns void.
     */
    static verifyTransactionSyntax(transaction: SignedTransactionPayload, protocolParameters: ProtocolParameters): void;
    /**
     * Returns the serialized bytes of a block.
     *
     * @param block The block.
     * @returns The block bytes.
     */
    static blockBytes(block: Block): Uint8Array;
    static iotaMainnetProtocolParameters(): ProtocolParameters;
    static shimmerMainnetProtocolParameters(): ProtocolParameters;
}
