import { File, Blob } from 'formdata-node';
import { WrapperClient } from '../wrapper';
import type { ApiKeys, Organization, Series } from '../types/organization';
import { SearchResult } from '../types/common';
export default class Organizations {
    client: WrapperClient;
    constructor(client: WrapperClient);
    /**
     * Creates a new organization for your account
     * @param data - Organization data
     * @returns Organization object
     */
    create(data: Record<string, any>): Promise<Organization>;
    /**
     * Gets a paginated list of organizations that belong to your account
     * @param params - Search parameters
     * @returns Search results object. The object contains a `data` property with the list of organizations.
     */
    list(params?: Record<string, any> | null): Promise<SearchResult<Organization>>;
    /**
     * Gets a single organization object
     * @param id
     * @returns
     */
    retrieve(id: string): Promise<Organization>;
    /**
     * Updates the organization's legal information
     * @param id Organization Id
     * @param data
     * @returns
     */
    updateLegal(id: string, data: Record<string, any>): Promise<Organization>;
    /**
     * Updates the organization's customization information
     * @param id Organization Id
     * @param data Customization settings
     * @returns Organization object
     */
    updateCustomization(id: string, data: Record<string, any>): Promise<Organization>;
    /**
     * Updates the organization's customization information
     * @param id Organization Id
     * @param data Receipt settings
     * @returns Organization object
     */
    updateReceiptSettings(id: string, data: Record<string, any>): Promise<Organization>;
    /**
     * Updates the organization's customization information
     * @param id Organization Id
     * @param data Domain data
     * @returns Organization object
     */
    updateDomain(id: string, data: Record<string, any>): Promise<Organization>;
    /**
     * Checks if a domain is available for self invoices
     * @param data Domain data
     * @returns Domain availability
     */
    checkDomainIsAvailable(data: Record<string, any>): Promise<{
        available: boolean;
    }>;
    /**
     * Uploads the organization's logo
     * @param id Organization Id
     * @param file Logo file
     * @returns Organization object
     */
    uploadLogo(id: string, file: NodeJS.ReadableStream | Buffer | File | Blob): Promise<Organization>;
    /**
     * Uploads the organization's certificate (CSD)
     * @param id Organization Id
     * @param cerFile Certificate file
     * @param keyFile Key file
     * @param password Certificate password
     * @returns Organization object
     */
    uploadCertificate(id: string, cerFile: NodeJS.ReadableStream | Buffer | File | Blob, keyFile: NodeJS.ReadableStream | Buffer | File | Blob, password: string): Promise<Organization>;
    /**
     * Deletes the organization's certificate (CSD)
     * @param id Organization Id
     * @returns Organization object
     */
    deleteCertificate(id: string): Promise<Organization>;
    /**
     * Permanently removes a organization from your account.
     * @param id Organization Id
     * @returns Deleted organization object
     */
    del(id: string): Promise<Organization>;
    /**
     * Gets the test api key for an organization
     * @param id Organization Id
     * @returns Test api key
     */
    getTestApiKey(id: string): Promise<string>;
    /**
     * Renews the test api key and makes the previous one unusable
     * @param id Organization Id
     * @returns New test api key
     */
    renewTestApiKey(id: string): Promise<string>;
    /**
     * List live api keys
     * @param id Organization Id
     * @returns List of live api keys
     */
    listLiveApiKeys(id: string): Promise<ApiKeys[]>;
    /**
     * Renews the live api key and makes the previous one unusable
     * @param id Organization Id
     * @returns New live api key
     */
    renewLiveApiKey(id: string): Promise<string>;
    /**
     * Delete a live api key
     * @param organizationId Organization Id
     * @param apiKeyId Api Key Id
     * @returns List of live api keys
     */
    deleteLiveApiKey(organizationId: string, apiKeyId: string): Promise<ApiKeys[]>;
    /**
     * Get list of Series Organization
     * @param organization_id Organization Id
     * @returns Series object
     */
    listSeriesGroup(organization_id: string): Promise<Series[]>;
    /**
     * Creates a Series Organization
     * @param organization_id Organization Id
     * @param seriesData - Series data
     * @returns Series object
     */
    createSeriesGroup(organization_id: string, seriesData: Series): Promise<Series>;
    /**
     * Update a Series Organization
     * @param organization_id Organization Id
     * @param seriesName Series seriesName
     * @param data - Series data
     * @returns Series object
     */
    updateSeriesGroup(organization_id: string, seriesName: string, data: Pick<Series, 'next_folio' | 'next_folio_test'>): Promise<Series>;
    /**
     * Update a Series Organization
     * @param organization_id Organization Id
     * @param seriesName Series seriesName
     * @returns Series object
     */
    deleteSeriesGroup(organization_id: string, seriesName: string): Promise<Series>;
    /**
     * Get the organization that belongs to the authenticated API key
     * @returns Organization object
     */
    me(): Promise<Organization>;
}
