import { DomainRatelimit, EditDomainRequest, EditMailboxRequest, MailboxRatelimit, MailcowResponse } from '../types';
import MailcowClient from '../index';
/**
 * Interface for all Rate Limit endpoints related to email handling in Mailcow.
 */
export interface RatelimitsEndpoints {
    /**
     * Edits the rate limits for specified domains.
     * @param payload - Object containing rate limit attributes and list of domain names.
     * @returns A promise that resolves to a response indicating success or failure.
     */
    editDomain(payload: EditDomainRequest): Promise<MailcowResponse>;
    /**
     * Edits the rate limits for specified mailboxes.
     * @param payload - Object containing rate limit attributes and list of mailbox names.
     * @returns A promise that resolves to a response indicating success or failure.
     */
    editMailbox(payload: EditMailboxRequest): Promise<MailcowResponse>;
    /**
     * Retrieves the rate limits for a specified domain or all domains.
     */
    getDomain(domain: string): Promise<DomainRatelimit[]>;
    getDomain(domain: 'all'): Promise<DomainRatelimit[]>;
    /**
     * Retrieves the rate limits for a specified mailbox or all mailboxes.
     */
    getMailbox(mailbox: string): Promise<MailboxRatelimit[]>;
    getMailbox(mailbox: 'all'): Promise<MailboxRatelimit[]>;
}
/**
 * Binder function between the MailcowClient class and the RatelimitsEndpoints.
 * @param bind - The MailcowClient instance to bind.
 * @internal
 */
export declare function ratelimitsEndpoints(bind: MailcowClient): RatelimitsEndpoints;
