import { AxiosInstance } from 'axios';
import { User, Wallet, NewUser, Organizer, UserInvite, UserUpdate, OrganizerId, NewOrganizer, EnrollmentId, SeatsWorkspace, PublicUserData, UserPermissions, UserPermissionChange, Email, MarketRuleset, Fee, FeeUpdate, FeeCreate, MarketRulesetCreate, MarketRulesetUpdate, MarketRulesetListQuery, GetOrganizerRequest, UserQuery, KYCLevel, ListQuery, Currency, ListUserQuery, OnboardStripePayload, OnboardStripeResponse, OnboardStripeStatus, OrganizerDomain, OrganizerDomainCreate, OrganizerDomainUpdate, OrganizerDomainQuery, NewsletterUpdate, Newsletter, NewsletterCreate } from './types';
import { HealthStatus, IdParam, QRCodePayload, StatusResponse, StringIdParam } from '../common/types';
/**
 * Service class for account API calls.
 */
export declare class AccountService {
    readonly client: AxiosInstance;
    readonly version: string;
    constructor(client: AxiosInstance, version: string);
    /**
     * Returns true if the service is reachable
     *
     * @returns Services' online status
     */
    health(): Promise<HealthStatus>;
    /**
     * Returns the organizer with the given name or id.
     * Currently an organizer only has one workspace.
     *
     * @param req name of the organizer
     * @returns Seats workspaces for the organizer
     * @throws `NotFoundError`
     */
    getSeatsWorkspacesForOrganizer(req: OrganizerId): Promise<SeatsWorkspace[]>;
    /**
     * List all organizers
     *
     * @returns array of Organizer objects
     */
    listOrganizers(query?: ListQuery): Promise<Organizer[]>;
    /**
     * Returns the organizer with the given name or id.
     *
     * @param req id or name of the organizer
     * @returns Organizer object
     * @throws `NotFoundError`
     */
    getOrganizer(req: GetOrganizerRequest): Promise<Organizer>;
    /**
     * Create an organizer
     *
     * @param org New organizer data
     * @returns Organizer object
     * @throws `BadRequestError`
     */
    createOrganizer(org: NewOrganizer): Promise<Organizer>;
    /**
     * Updates an organizer
     *
     * @param id.id name or id of the organizer
     * @param org updated organizer data
     * @returns Organizer object
     */
    updateOrganizer(id: OrganizerId, org: Partial<Organizer>): Promise<Organizer>;
    /**
     * Returns the user with the given id.
     *
     * @param req id of the user
     * @returns User object
     * @throws `NotFoundError`
     */
    getUser(req: IdParam): Promise<User>;
    /**
     * Returns the user with the given email.
     *
     * @param email email of the user
     * @returns User object
     * @throws `NotFoundError`
     */
    getUserByEmail(email: Email): Promise<PublicUserData>;
    /**
     * Creates a new user
     *
     * @param user  User data
     * @returns User object
     * @throws `BadRequestError`
     */
    createUser(user: NewUser): Promise<User>;
    /**
     * Creates and adds an user to an organizer
     *
     * @param user  User data and permissions
     * @returns User object
     * @throws `BadRequestError`
     */
    inviteUser(user: UserInvite): Promise<User>;
    /**
     * Update a user
     * If a new email is sent, it needs to be confirmed
     *
     * @param user User data
     * @returns User object
     * @throws `BadRequestError`, `NotFoundError`
     */
    updateUser(id: IdParam, user: UserUpdate): Promise<User>;
    /**
     * Initiate password reset process for a given email (i.e. user)
     *
     * @param email E-Mail of user which wants to reset the password
     */
    resetUserPassword(email: Email): Promise<StatusResponse>;
    /**
     * Resend the verification link to an unverified user.
     *
     * @param email Email of the user for which the verification link should be resent.
     * @throws BadRequestError if the user is already verified.
     */
    resendUserVerification(email: Email): Promise<void>;
    /**
     * Deletes a user
     *
     * @param id ID of the user to delete
     * @throws `NotFoundError`
     */
    deleteUser(id: IdParam): Promise<void>;
    /**
     * List users belonging to a specific organizer.
     *
     * @param id.id Id or name of the organizer
     * @param query Additional fields that should be fetched with the users.
     */
    listUsersInOrganization(id: OrganizerId, query?: UserQuery): Promise<User[]>;
    /**
     * Use this method to list the users.
     * @param query.email Query the users by the email
     */
    listUsers(query?: ListUserQuery): Promise<User[]>;
    /**
     * Gets public info for a user with the enrollment id
     *
     * @param id enrollment ID of the user
     * @throws `NotFoundError`
     */
    checkEnrollment(id: EnrollmentId): Promise<PublicUserData>;
    /**
     * Set a user's permissions.
     * The caller need to have the `*.change_permission` permission for each class of permissions which are granted.
     *
     * @param id Id of the user
     * @param perms Set of new permissions for the user
     * @returns User object
     * @throws `BadRequestError`, `NotFoundError`, `ForbiddenError`
     */
    setPermissions(id: IdParam, perms: UserPermissions): Promise<UserPermissionChange>;
    /**
     * Creates a new certificate and private key for a user.
     * If there is no authorization, a new user and their wallet will be created.
     *
     * @returns User IDs, certificate and private key
     */
    createWallet(): Promise<Wallet>;
    /**
     * Renews the certificate and private key for a user.
     *
     * @returns User IDs, certificate and private key
     */
    renewWallet(): Promise<Wallet>;
    /**
     * Return the market rules for the given ruleset
     * @param marketRulesetId
     * @returns
     */
    getMarketControlSettings(marketRulesetId: StringIdParam): Promise<MarketRuleset>;
    /**
     * Create a secondary market ruleset for an organizer
     * @param marketRuleset Ruleset data
     */
    createMarketControlSettings(marketRuleset: MarketRulesetCreate): Promise<MarketRuleset>;
    /**
     * Update a secondary market ruleset
     * @param id Id of the ruleset
     * @param marketRuleset Updated ruleset data
     */
    updateMarketControlSettings(id: StringIdParam, marketRuleset: MarketRulesetUpdate): Promise<MarketRuleset>;
    /**
     * Delete a secondary market ruleset
     * @param id Id of the ruleset
     */
    deleteMarketControlSettings(id: StringIdParam): Promise<void>;
    /**
     * Fetch QR code data for publishing the ruleset on the chain
     * @param id Id of the ruleset
     */
    getMarketControlSettingsQRCodePayload(id: StringIdParam): Promise<QRCodePayload>;
    /**
     * List the secondary market rulesets
     */
    listMarketControlSettings(query?: MarketRulesetListQuery): Promise<MarketRuleset[]>;
    /**
     * Get fee by id
     * @param id Id of the fee
     */
    getFee(id: IdParam): Promise<Fee>;
    /**
     * Create a fee for the organizer. Requires administrative rights.
     * @param fee Fee data
     */
    createFee(fee: FeeCreate): Promise<Fee>;
    /**
     * Update fee data. Requires administrative rights.
     * @param id Id of the fee
     * @param fee Updated fee data
     */
    updateFee(id: IdParam, fee: FeeUpdate): Promise<Fee>;
    /**
     * List all registered KYC levels
     */
    listKycLevels(query?: ListQuery): Promise<KYCLevel[]>;
    /**
     * List all registered currencies
     */
    listCurrencies(query?: ListQuery): Promise<Currency[]>;
    /**
     * Starts the onboarding process for the payment provider
     *
     * @param id.id name or id of the organizer
     * @param onboardPayload return and refresh urls
     * @returns redirect url
     */
    onboardStripeConnect(id: OrganizerId, onboardPayload: OnboardStripePayload): Promise<OnboardStripeResponse>;
    /**
     * Gets the onboarding status for the payment provider
     *
     * @param id.id name or id of the organizer
     * @returns data about the completeness of the onboarding process
     */
    getStripeConnectStatus(id: OrganizerId): Promise<OnboardStripeStatus>;
    /**
     * Get a domain by its ID
     * @param id Id of the domain
     */
    getDomain(id: IdParam): Promise<OrganizerDomain>;
    /**
     * Lists or searches for domains. Returns associated organizers for each domain.
     */
    listDomains(queryReq: OrganizerDomainQuery): Promise<OrganizerDomain[]>;
    /**
     * Create a domain for the organizer. Requires permissions for that organizer.
     * @param domain Domain name and either the organizer ID or the organizer name
     */
    createDomain(domain: OrganizerDomainCreate): Promise<OrganizerDomain>;
    /**
     * Update domain data. Requires permissions for that organizer.
     * @param id Id of the domain
     * @param domain Updated domain name
     */
    updateDomain(id: IdParam, domain: OrganizerDomainUpdate): Promise<OrganizerDomain>;
    /**
     * Delete a domain. Requires permissions for that organizer.
     * @param id Id of the domain
     */
    deleteDomain(id: IdParam): Promise<void>;
    /**
     * Get a newsletter by its ID
     */
    getNewsletter(id: IdParam): Promise<Newsletter>;
    /**
     * Lists all newsletters
     */
    listNewsletters(queryReq: OrganizerDomainQuery): Promise<Newsletter[]>;
    /**
     * Create a newsletter. Requires permissions for the main organizer.
     * @param newsletter Subject and content. It will be put in the `info` email template.
     */
    createNewsletter(newsletter: NewsletterCreate): Promise<Newsletter>;
    /**
     * Update newsletter content. Requires permissions for the main organizer.
     * @param id ID of the newsletter
     * @param newsletter Updated content
     */
    updateNewsletter(id: IdParam, newsletter: NewsletterUpdate): Promise<Newsletter>;
    /**
     * Delete a newsletter. Requires permissions for the main organizer.
     */
    deleteNewsletter(id: IdParam): Promise<void>;
    /**
     * Sends out the emails containing the newsletter content.
     * Requires permissions for the main organizer.
     * The newsletter will be marked as sent, but it can still be updated and resent.
     *
     * @param id ID of the newsletter to send
     */
    sendNewsletter(id: IdParam): Promise<Newsletter>;
}
//# sourceMappingURL=service.d.ts.map