import { WrapperClient } from '../wrapper';
import type { ApiKeys, Organization, OrganizationInvite, OrganizationInviteCreateInput, OrganizationInviteResponseInput, OrganizationTeamRole, OrganizationTeamRoleCreateInput, OrganizationTeamRoleTemplate, OrganizationTeamRoleUpdateInput, OrganizationUserAccess, OrganizationDefaultSeriesUpdateInput, Series } from '../types/organization';
import type { BinaryInput } from '../types';
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: BinaryInput): 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: BinaryInput, keyFile: BinaryInput, 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>;
    /**
     * Sets default series for an organization
     * @param organization_id Organization Id
     * @param data Default series input
     * @returns Organization object
     */
    updateDefaultSeries(organization_id: string, data: OrganizationDefaultSeriesUpdateInput): Promise<Organization>;
    /**
     * 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>;
    /**
     * Updates the organization's self-invoice settings
     * @param id Organization Id
     * @param data Self-invoice settings
     * @returns Organization object
     */
    updateSelfInvoiceSettings(id: string, data: Record<string, any>): Promise<Organization>;
    /**
     * Lists users with access to an organization.
     * @param organizationId Organization Id
     * @returns Array of organization access objects
     */
    listTeamAccess(organizationId: string): Promise<OrganizationUserAccess[]>;
    /**
     * Retrieves a specific user access in an organization.
     * @param organizationId Organization Id
     * @param accessId Access Id
     * @returns Organization access object
     */
    retrieveTeamAccess(organizationId: string, accessId: string): Promise<OrganizationUserAccess>;
    /**
     * Reassigns role for a specific access in an organization.
     * @param organizationId Organization Id
     * @param accessId Access Id
     * @param role Role Id
     * @returns Updated organization access object
     */
    updateTeamAccessRole(organizationId: string, accessId: string, role: string): Promise<OrganizationUserAccess>;
    /**
     * Removes user access from an organization.
     * @param organizationId Organization Id
     * @param accessId Access Id
     * @returns Ok response
     */
    removeTeamAccess(organizationId: string, accessId: string): Promise<{
        ok: boolean;
    }>;
    /**
     * Lists invites sent from an organization.
     * @param organizationId Organization Id
     * @returns Array of organization invite objects
     */
    listSentTeamInvites(organizationId: string): Promise<OrganizationInvite[]>;
    /**
     * Creates or updates an invite for an organization.
     * @param organizationId Organization Id
     * @param data Invite payload
     * @returns Organization invite object
     */
    inviteUserToTeam(organizationId: string, data: OrganizationInviteCreateInput): Promise<OrganizationInvite>;
    /**
     * Cancels a sent invite.
     * @param organizationId Organization Id
     * @param inviteKey Invite Key
     * @returns Ok response
     */
    cancelTeamInvite(organizationId: string, inviteKey: string): Promise<{
        ok: boolean;
    }>;
    /**
     * Lists pending invites received by authenticated user.
     * @returns Array of organization invite objects
     */
    listReceivedTeamInvites(): Promise<OrganizationInvite[]>;
    /**
     * Accepts or rejects an invite.
     * @param inviteKey Invite Key
     * @param data Invite response payload
     * @returns Ok response
     */
    respondTeamInvite(inviteKey: string, data: OrganizationInviteResponseInput): Promise<{
        ok: boolean;
    }>;
    /**
     * Lists organization roles.
     * @param organizationId Organization Id
     * @returns Array of organization role objects
     */
    listTeamRoles(organizationId: string): Promise<OrganizationTeamRole[]>;
    /**
     * Lists role templates for organization scope.
     * @param organizationId Organization Id
     * @returns Array of organization role templates
     */
    listTeamRoleTemplates(organizationId: string): Promise<OrganizationTeamRoleTemplate[]>;
    /**
     * Lists available operation codes for organization roles.
     * @param organizationId Organization Id
     * @returns Array of operation codes
     */
    listTeamRoleOperations(organizationId: string): Promise<string[]>;
    /**
     * Retrieves an organization role.
     * @param organizationId Organization Id
     * @param roleId Role Id
     * @returns Organization role object
     */
    retrieveTeamRole(organizationId: string, roleId: string): Promise<OrganizationTeamRole>;
    /**
     * Creates an organization role.
     * @param organizationId Organization Id
     * @param data Role payload
     * @returns Organization role object
     */
    createTeamRole(organizationId: string, data: OrganizationTeamRoleCreateInput): Promise<OrganizationTeamRole>;
    /**
     * Updates an organization role.
     * @param organizationId Organization Id
     * @param roleId Role Id
     * @param data Role payload
     * @returns Organization role object
     */
    updateTeamRole(organizationId: string, roleId: string, data: OrganizationTeamRoleUpdateInput): Promise<OrganizationTeamRole>;
    /**
     * Deletes an organization role.
     * @param organizationId Organization Id
     * @param roleId Role Id
     * @returns Ok response
     */
    deleteTeamRole(organizationId: string, roleId: string): Promise<{
        ok: boolean;
    }>;
}
