import { AccessKey, AdminStats, AdminTx, Contact, NewContact, PaymailAddress, SharedConfig, Utxo, XPub, PageModel, Webhook, Metadata, QueryPageParams, AdminClientOptions } from './types';
import { AdminAccessKeyFilter, AdminContactFilter, AdminPaymailFilter, AdminUtxoFilter, TransactionFilter, XpubFilter } from './filters';
import { Logger, LoggerConfig } from './logger';
import { HttpClient } from './httpclient';
/**
 * SPVWalletAdminAPI class for handling administrative operations
 *
 * @class SPVWalletAdminAPI
 */
export declare class SPVWalletAdminAPI {
    logger: Logger;
    http: HttpClient;
    /**
     * Creates a new instance of SPVWalletAdminAPI
     *
     * @param {string} serverUrl - The base URL of the SPV Wallet server
     * @param {AdminClientOptions} options - Configuration options including adminKey
     * @param {LoggerConfig} loggerConfig - Logger configuration (optional)
     */
    constructor(serverUrl: string, options: AdminClientOptions, loggerConfig?: LoggerConfig);
    private ensureSuffix;
    private makeRequester;
    /**
     * Check if the admin key is valid
     *
     * @returns {Promise<boolean>} True if admin key is valid
     */
    status(): Promise<boolean>;
    /**
     * Get server statistics
     *
     * @returns {Promise<AdminStats>} Server statistics
     */
    stats(): Promise<AdminStats>;
    /**
     * Get a list of all access keys in the system
     *
     * @param {AdminAccessKeyFilter} conditions - Filter conditions for access keys
     * @param {Metadata} metadata - Metadata filter
     * @param {QueryPageParams} params - Pagination parameters
     * @returns {Promise<PageModel<AccessKey>>} List of access keys
     */
    accessKeys(conditions: AdminAccessKeyFilter, metadata: Metadata, params: QueryPageParams): Promise<PageModel<AccessKey>>;
    /**
     * Get a list of all contacts in the system
     *
     * @param {AdminContactFilter} conditions - Filter conditions for contacts
     * @param {Metadata} metadata - Metadata filter
     * @param {QueryPageParams} params - Pagination parameters
     * @returns {Promise<PageModel<Contact>>} List of contacts
     */
    contacts(conditions: AdminContactFilter, metadata: Metadata, params: QueryPageParams): Promise<PageModel<Contact>>;
    /**
     * Update contact information
     *
     * @param {string} id - Contact ID
     * @param {string} fullName - New full name for the contact
     * @param {Metadata} metadata - Updated metadata
     * @returns {Promise<Contact>} Updated contact information
     */
    contactUpdate(id: string, fullName: string, metadata: Metadata): Promise<Contact>;
    /**
     * Delete a contact
     *
     * @param {string} id - ID of the contact to delete
     * @returns {Promise<void>}
     */
    deleteContact(id: string): Promise<void>;
    /**
     * Accept a contact invitation
     *
     * @param {string} id - ID of the invitation to accept
     * @returns {Promise<Contact>} The accepted contact
     */
    acceptInvitation(id: string): Promise<Contact>;
    /**
     * Reject a contact invitation
     *
     * @param {string} id - ID of the invitation to reject
     * @returns {Promise<void>}
     */
    rejectInvitation(id: string): Promise<void>;
    /**
     * Get a transaction by ID
     *
     * @param {string} id - Transaction ID
     * @returns {Promise<AdminTx>} Transaction details
     */
    transaction(id: string): Promise<AdminTx>;
    /**
     * Get a list of all transactions
     *
     * @param {TransactionFilter} conditions - Filter conditions for transactions
     * @param {Metadata} metadata - Metadata filter
     * @param {QueryPageParams} params - Pagination parameters
     * @returns {Promise<PageModel<AdminTx>>} List of transactions
     */
    transactions(conditions: TransactionFilter, metadata: Metadata, params: QueryPageParams): Promise<PageModel<AdminTx>>;
    /**
     * Get a list of all UTXOs
     *
     * @param {AdminUtxoFilter} conditions - Filter conditions for UTXOs
     * @param {Metadata} metadata - Metadata filter
     * @param {QueryPageParams} params - Pagination parameters
     * @returns {Promise<PageModel<Utxo>>} List of UTXOs
     */
    utxos(conditions: AdminUtxoFilter, metadata: Metadata, params: QueryPageParams): Promise<PageModel<Utxo>>;
    /**
     * Get a list of all xPubs
     *
     * @param {XpubFilter} conditions - Filter conditions for xPubs
     * @param {Metadata} metadata - Metadata filter
     * @param {QueryPageParams} params - Pagination parameters
     * @returns {Promise<PageModel<XPub>>} List of xPubs
     */
    xPubs(conditions: XpubFilter, metadata: Metadata, params: QueryPageParams): Promise<PageModel<XPub>>;
    /**
     * Register a new xPub
     *
     * @param {string} rawXPub - Raw xPub key to register
     * @param {Metadata} metadata - Metadata for the xPub
     * @returns {Promise<XPub>} Registered xPub information
     */
    createXPub(rawXPub: string, metadata: Metadata): Promise<XPub>;
    /**
     * Get a paymail by address
     *
     * @param {string} id - Paymail ID or address
     * @returns {Promise<PaymailAddress>} Paymail information
     */
    paymail(id: string): Promise<PaymailAddress>;
    /**
     * Get a list of all paymails
     *
     * @param {AdminPaymailFilter} conditions - Filter conditions for paymails
     * @param {Metadata} metadata - Metadata filter
     * @param {QueryPageParams} params - Pagination parameters
     * @returns {Promise<PageModel<PaymailAddress>>} List of paymail addresses
     */
    paymails(conditions: AdminPaymailFilter, metadata: Metadata, params: QueryPageParams): Promise<PageModel<PaymailAddress>>;
    /**
     * Create a new paymail
     *
     * @param {string} rawXPub - Raw xpub to register the paymail to
     * @param {string} address - Paymail address (e.g., alias@domain.com)
     * @param {string} publicName - Public name for the paymail
     * @param {string} avatar - Avatar URL
     * @param {Metadata} metadata - Additional metadata
     * @returns {Promise<PaymailAddress>} Created paymail address
     */
    createPaymail(rawXPub: string, address: string, publicName: string, avatar: string, metadata: Metadata): Promise<PaymailAddress>;
    /**
     * Delete a paymail
     * @param {string} id - Paymail Id of user to be deleted
     */
    deletePaymail(id: string): Promise<void>;
    /**
     * Get webhook subscriptions
     *
     * @returns {Promise<Webhook[]>} List of webhook subscriptions
     */
    webhooks(): Promise<Webhook[]>;
    /**
     * Subscribe to webhook
     *
     * @param {string} url - Webhook URL
     * @param {string} tokenHeader - Header name for the authentication token
     * @param {string} tokenValue - Value of the authentication token
     * @returns {Promise<void>}
     */
    subscribeWebhook(url: string, tokenHeader: string, tokenValue: string): Promise<void>;
    /**
     * Unsubscribe from webhook
     *
     * @param {string} url - URL of the webhook to unsubscribe
     * @returns {Promise<void>}
     */
    unsubscribeWebhook(url: string): Promise<void>;
    /**
     * Create new contact
     *
     * @param {string} contactPaymail - Paymail address for the new contact
     * @param {NewContact} newContact - Contact information
     * @returns {Promise<Contact>} Created contact
     */
    createContact(contactPaymail: string, newContact: NewContact): Promise<Contact>;
    /**
     * Confirm contacts
     *
     * @param {string} paymailA - First contact's paymail
     * @param {string} paymailB - Second contact's paymail
     * @returns {Promise<void>}
     */
    confirmContacts(paymailA: string, paymailB: string): Promise<void>;
    /**
     * Get shared configuration
     *
     * @returns {Promise<SharedConfig>} Shared configuration settings
     */
    sharedConfig(): Promise<SharedConfig>;
}
