export declare const NATURE_ADDRESS = "1co2d2DkpSHd8eHCL8X1kcD2vKt5yAYwx";
import { CreateAccesstokenOptions, CreatedTransaction, CreateEventListenerOptions, CreateProjectOptions, CreateTransactionOptions, experimentalStreamProjectOptions, ListTransactionsOptions, ListTransactionsResult, MintblueConfig, MintblueOptions, Output, PigiAPIResponse, Project, UpdateProjectOptions, EventListener, GetProjectOptions, GetEventListenerOptions, TransactionWithRawTX, TransactionWithParsedOutputs, LoginOptions, Transaction, QueryTransactionOptions } from './types.js';
import * as utils from './utils.js';
/**
 * The main SDK class. Instantiate this class using the Mintblue.create() function
 *
 * ```ts
 *   const token = 'YOUR SDK TOKEN';
 *   const project_id = 'YOUR PROJECT ID*
 *   const client = await Mintblue.create({ token: token *
 *   const outputs = [
 *     {
 *       type: 'data',
 *       value: 'Hello world',
 *       sign: true,
 *       encrypt: true,
 *     },
 *   ];
 *
 *   const { txid, rawtx } = await client.createTransaction({ project_id, outputs });
 *   ```
 * @category SDK
 */
export declare class Mintblue {
    /**
     * @ignore
     */
    private config;
    /**
     * @ignore
     */
    private api;
    /**
     * @ignore
     */
    constructor(config: MintblueConfig);
    /**
     * Instantiate client with accesstoken (SDK-token)
     *
     * @param options needs to contain an SDK token
     * @returns MintBlue SDK instance
     */
    static create(options: MintblueOptions): Promise<Mintblue>;
    /**
     * Instantiate client with login (e-mail and password)
     *
     * @param options LoginOptions
     * @returns MintBlue SDK instance
     */
    static login(options: LoginOptions): Promise<Mintblue>;
    /**
     * Create access token
     *
     * @param options
     * @returns SDK token & API token
     */
    createAccesstoken(options: CreateAccesstokenOptions): Promise<{
        sdkToken: string;
        apiToken: string;
    }>;
    /**
     * @ignore
     */
    createPigi(fileContent: Uint8Array): Promise<PigiAPIResponse>;
    /**
     * @ignore
     */
    private createAPIOptions;
    /**
     * Create a blockchain transaction
     *
     * @param options
     * @returns Published transaction
     */
    createTransaction(options: CreateTransactionOptions): Promise<CreatedTransaction>;
    /**
     * Fetch a blockchain transaction
     *
     * @param txid Transaction ID of the blockchain transaction
     * @param parse When true, will automatically parse all outputs of the transaction and return it in the outputs field of the result
     * @param secret Optional secret to decrypt content (Unnecessary when encrypted with your keys, decryption will automatically run)
     * @returns A transaction
     */
    getTransaction(options: {
        txid: string;
        parse: true;
        secret?: string;
    }): Promise<TransactionWithParsedOutputs>;
    getTransaction(options: {
        txid: string;
        parse: false;
        secret?: string;
    }): Promise<TransactionWithRawTX>;
    /**
     * @ignore
     */
    parseTransaction(txid: string, rawtx: string, secret?: string): Promise<Output[]>;
    /**
     * List transactions
     *
     * @param options
     * @returns Array of transactions (without payload)
     */
    listTransactions(options: ListTransactionsOptions): Promise<ListTransactionsResult>;
    /**
     * Stream Project (experimental)
     *
     * This function allows you to stream experimental data from a project.
     *
     * @param {experimentalStreamProjectOptions} options - The options for streaming experimental data.
     * @returns {Promise<{ close: () => void }>} A promise that resolves with an object containing a `close` method.
     * The `close` method can be used to gracefully close the streaming connection.
     *
     * @experimental This function is experimental and subject to change. Use it with caution.
     */
    experimentalStreamProject(options: experimentalStreamProjectOptions): Promise<{
        close: () => void;
    }>;
    /**
     * Create a project
     *
     * @param options
     * @returns Array of transactions (without payload)
     */
    createProject(options: CreateProjectOptions): Promise<Project>;
    /**
     * Retrieves project data with the specified ID.
     * @param {Object} params - The parameters for retrieving the project.
     * @param {string} params.id - The ID of the project to retrieve.
     * @returns {Promise<Project>} A promise that resolves with the retrieved project data.
     */
    getProject(options: GetProjectOptions): Promise<Project>;
    /**
     * Updates a project with the specified ID using the provided data.
     * @param {Object} params - The parameters for updating the project.
     * @param {string} params.id - The ID of the project to update.
     * @param {UpdateProjectOptions} params.data - The data to update the project with.
     * @returns {Promise<Project>} A promise that resolves with the updated project data.
     */
    updateProject(options: UpdateProjectOptions): Promise<Project>;
    /**
     * Retrieves a list of projects.
     * @returns {Promise<Project[]>} A promise that resolves with an array of project data.
     */
    listProjects(): Promise<Project[]>;
    /**
     * Deletes a project with the specified ID.
     * @param {Object} params - The parameters for deleting the project.
     * @param {string} params.id - The ID of the project to delete.
     * @returns {Promise<void>} A promise that resolves when the project is deleted.
     */
    destroyProject(options: GetProjectOptions): Promise<void>;
    /**
     * Retrieves a list of event listeners.
     * @returns {Promise<EventListener[]>} A promise that resolves with an array of event listener data.
     */
    listEventListeners(): Promise<EventListener[]>;
    /**
     * Retrieves event listener data with the specified ID.
     * @param {string} id - The ID of the event listener to retrieve.
     * @returns {Promise<EventListener>} A promise that resolves with the retrieved event listener data.
     */
    getEventListener(options: GetEventListenerOptions): Promise<EventListener>;
    /**
     * Creates a new event listener.
     * @param {EventListener} data - The data for creating the event listener.
     * @returns {Promise<EventListener>} A promise that resolves with the created event listener data.
     */
    createEventListener(data: CreateEventListenerOptions): Promise<EventListener>;
    /**
     * @experimental
     * Get Peppol Key information
     * @returns Object containing uncompressed public key in hex format. \
     * Read more about compressed and decompressed keys [here](https://medium.com/asecuritysite-when-bob-met-alice/02-03-or-04-so-what-are-compressed-and-uncompressed-public-keys-6abcb57efeb6)
     */
    experimentalGetPeppolKeyInfo(): {
        uncompressedPublicKey: string;
        compressedPublicKey: string;
        jwk: utils.jose.JWK;
        kid: string;
        info: string;
    };
    /**
     * @experimental
     * Get Peppol Key information
     * @returns Object containing uncompressed public key in hex format. \
     * Read more about compressed and decompressed keys [here](https://medium.com/asecuritysite-when-bob-met-alice/02-03-or-04-so-what-are-compressed-and-uncompressed-public-keys-6abcb57efeb6)
     */
    experimentalGetKVKKeyInfo(): Promise<{
        uncompressedPublicKey: string;
        compressedPublicKey: string;
        jwk: utils.jose.JWK;
        kid: string;
        info: string;
        SHA1Fingerprint: string;
    }>;
    /**
     * @experimental
     * Get Signing Key information
     * @returns Object containing uncompressed public key in hex format. \
     * Read more about compressed and decompressed keys [here](https://medium.com/asecuritysite-when-bob-met-alice/02-03-or-04-so-what-are-compressed-and-uncompressed-public-keys-6abcb57efeb6)
     */
    experimentalGetSigningKeyInfo(): Promise<{
        uncompressedPublicKey: string;
        compressedPublicKey: string;
        jwk: utils.jose.JWK;
        kid: string;
        info: string;
        SHA1Fingerprint: string;
    }>;
    /**
     * @experimental
     * Get Derive Key information
     * @returns Object containing uncompressed public key in hex format. \
     * Read more about compressed and decompressed keys [here](https://medium.com/asecuritysite-when-bob-met-alice/02-03-or-04-so-what-are-compressed-and-uncompressed-public-keys-6abcb57efeb6)
     */
    experimentalGetDeriveKeyInfo(): Promise<{
        uncompressedPublicKey: string;
        compressedPublicKey: string;
        jwk: utils.jose.JWK;
        kid: string;
        info: string;
        SHA1Fingerprint: string;
    }>;
    /**
     * Queries transactions based on the provided options.
     *
     * @remarks
     * This method can return transactions with or without the raw transaction data based on the `rawtx` option.
     *
     * @param options - The options to query transactions. If `rawtx` is set to true, the result will include raw transaction data.
     * @returns A promise that resolves to an array of transactions. If `rawtx` is true, the transactions will include raw data.
     *
     * @example
     * ```typescript
     * const transactions = await queryTransactions({ where: { metadata: { myfield: { $like: 'prefix%' }}}});
     * const transactionsWithRaw = await queryTransactions({ where: { txid: '0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9' }, rawtx: true });
     * ```
     */
    queryTransactions(options: QueryTransactionOptions & {
        rawtx: true;
    }): Promise<TransactionWithRawTX[]>;
    queryTransactions(options: QueryTransactionOptions): Promise<Transaction[]>;
    /**
     * @ignore
     */
    private parseOutput;
}
