/**
 * Copyright (c) 2020 BlockDev AG
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import { MMNApiKeyResponse, MMNReportResponse } from './mmn/mmn';
import { IntercomIssue, Issue, IssueId, SupportIssueRequest, SupportIssueResponse } from './feedback/issue';
import { Config } from './config/config';
import { AccessPolicy } from './access-policy/access-policy';
import { ConnectionCancelRequest, ConnectionRequest } from './connection/request';
import { ConnectionInfo } from './connection/status';
import { IP } from './location/ip';
import { ConnectionStatistics } from './connection/statistics';
import { Location } from './location/location';
import { NodeHealthcheck } from './daemon/healthcheck';
import { Terms, TermsRequest } from './daemon/terms';
import { HttpInterface } from './http/interface';
import { IdentityBalanceResponse, Identity, IdentityRef } from './identity/identity';
import { IdentityRegisterRequest, IdentityRegistrationResponse } from './identity/registration';
import { IdentityBeneficiaryResponse } from './identity/beneficiary';
import { NatStatusResponse } from './nat/status';
import { NodeMonitoringStatusResponse } from './node/status';
import { Proposal, ProposalQuery } from './proposal/proposal';
import { ServiceInfo } from './provider/service-info';
import { ServiceListRequest, ServiceStartRequest } from './provider/service-request';
import { SessionListQuery, SessionListResponse, SessionQuery, SessionStatsAggregatedResponse, SessionStatsDailyResponse } from './session/session';
import { ChainSummary } from './transactor/chains';
import { Fees, FeesResponse } from './transactor/fees';
import { EligibilityResponse } from './transactor/registration';
import { SettleRequest, SettleWithBeneficiaryRequest, DecreaseStakeRequest, SettlementListQuery, SettlementListResponse, BeneficiaryTxStatus } from './transactor/settlement';
import { IdentityCurrentRequest } from './identity/selection';
import { AuthRequest, AuthResponse, ChangePasswordRequest } from './auth/auth';
import { Money, PaymentAPI } from './payment';
import { ReferralTokenResponse, ReferralTokenRewardsResponse } from './referral';
import { CurrentPricesResponse, CurrentPricesV2Response } from './prices';
import { Payout } from './identity/payout';
import { FilterPresetsResponse } from './proposal/filter-preset';
import { EntertainmentEstimateQuery, EntertainmentEstimateResponse } from './payment/entertainment';
import { NatTypeResponse } from './nat/type';
import { WithdrawRequest } from './transactor/withdraw';
import { ProviderAPI } from './provider';
export declare const TEQUILAPI_URL = "http://127.0.0.1:4050";
export declare const pathConfig = "config";
export declare const pathConfigUser = "config/user";
export declare const pathConfigDefault = "config/default";
export declare const pathInvoice = "/invoice";
export interface BaseTequilapiClient {
    healthCheck(timeout?: number): Promise<NodeHealthcheck>;
    natStatus(): Promise<NatStatusResponse>;
    nodeMonitoringStatus(): Promise<NodeMonitoringStatusResponse>;
    natType(): Promise<NatTypeResponse>;
    stop(): Promise<void>;
    location(timeout?: number): Promise<Location>;
    terms(): Promise<Terms>;
    termsUpdate(request: TermsRequest): Promise<void>;
    config(): Promise<Config>;
    defaultConfig(): Promise<Config>;
    userConfig(): Promise<Config>;
    updateUserConfig(config: Config): Promise<Config>;
    identityList(): Promise<IdentityRef[]>;
    identityCurrent(request: IdentityCurrentRequest): Promise<IdentityRef>;
    identityCreate(passphrase: string): Promise<IdentityRef>;
    identityUnlock(id: string, passphrase: string, timeout?: number): Promise<void>;
    identityRegister(id: string, request?: IdentityRegisterRequest): Promise<void>;
    identity(id: string): Promise<Identity>;
    identityRegistration(id: string): Promise<IdentityRegistrationResponse>;
    identityBeneficiary(id: string): Promise<IdentityBeneficiaryResponse>;
    identityBalanceRefresh(id: string): Promise<IdentityBalanceResponse>;
    payoutAddressSave(id: string, address: string): Promise<Payout>;
    payoutAddressGet(id: string): Promise<Payout>;
    authSetToken(token: string): void;
    authAuthenticate(request: AuthRequest, useToken: true): Promise<AuthResponse>;
    authLogin(request: AuthRequest): Promise<AuthResponse>;
    authLogout(): Promise<void>;
    authChangePassword(request: ChangePasswordRequest): Promise<void>;
    findProposals(options?: ProposalQuery): Promise<Proposal[]>;
    proposalFilterPresets(): Promise<FilterPresetsResponse>;
    pricesCurrent(): Promise<CurrentPricesResponse>;
    pricesCurrentV2(): Promise<CurrentPricesV2Response[]>;
    reportIssueGithub(issue: Issue, timeout?: number): Promise<IssueId>;
    reportIssueIntercom(issue: IntercomIssue, timeout?: number): Promise<void>;
    reportIssueSupport(issue: SupportIssueRequest, timeout?: number): Promise<SupportIssueResponse>;
    connectionCreate(request: ConnectionRequest, timeout?: number): Promise<ConnectionInfo>;
    connectionStatus(): Promise<ConnectionInfo>;
    connectionCancel(request?: ConnectionCancelRequest): Promise<void>;
    connectionIp(timeout?: number): Promise<IP>;
    connectionStatistics(): Promise<ConnectionStatistics>;
    connectionLocation(): Promise<Location>;
    serviceList(request?: ServiceListRequest): Promise<ServiceInfo[]>;
    serviceGet(serviceId: string): Promise<ServiceInfo>;
    serviceStart(request: ServiceStartRequest, timeout?: number): Promise<ServiceInfo>;
    serviceStop(serviceId: string): Promise<void>;
    /**
     * @deprecated use ProviderAPI
     */
    sessions(query?: SessionListQuery): Promise<SessionListResponse>;
    /**
     * @deprecated use ProviderAPI
     */
    sessionStatsAggregated(query?: SessionQuery): Promise<SessionStatsAggregatedResponse>;
    /**
     * @deprecated use ProviderAPI
     */
    sessionStatsDaily(query?: SessionQuery): Promise<SessionStatsDailyResponse>;
    accessPolicies(): Promise<AccessPolicy[]>;
    transactorFees(chainId?: number): Promise<Fees>;
    settleSync(request: SettleRequest): Promise<void>;
    settleAsync(request: SettleRequest): Promise<void>;
    settleWithBeneficiary(request: SettleWithBeneficiaryRequest): Promise<void>;
    settleIntoStakeSync(request: SettleRequest): Promise<void>;
    settleIntoStakeAsync(request: SettleRequest): Promise<void>;
    decreaseStake(request: DecreaseStakeRequest): Promise<void>;
    settlementHistory(query?: SettlementListQuery): Promise<SettlementListResponse>;
    beneficiaryTxStatus(id: string): Promise<BeneficiaryTxStatus>;
    withdraw(request: WithdrawRequest): Promise<void>;
    chainSummary(): Promise<ChainSummary>;
    freeRegistrationEligibility(id: string): Promise<EligibilityResponse>;
    freeProviderRegistrationEligibility(): Promise<EligibilityResponse>;
    getMMNNodeReport(): Promise<MMNReportResponse>;
    setMMNApiKey(apiKey: string): Promise<void>;
    getMMNApiKey(): Promise<MMNApiKeyResponse>;
    clearMMNApiKey(): Promise<void>;
    exchangeRate(quoteCurrency?: string): Promise<Money>;
    estimateEntertainment(query: EntertainmentEstimateQuery): Promise<EntertainmentEstimateResponse>;
    getReferralToken(identity: string): Promise<ReferralTokenResponse>;
    referralTokenRewards(token: string): Promise<ReferralTokenRewardsResponse>;
    validateEthRPCL2(rpcUrls: string[], timeout?: number): Promise<void>;
}
declare class BaseHttpTequilapiClient implements BaseTequilapiClient {
    http: HttpInterface;
    readonly payment: PaymentAPI;
    readonly provider: ProviderAPI;
    constructor(http: HttpInterface);
    healthCheck(timeout?: number): Promise<NodeHealthcheck>;
    terms(): Promise<Terms>;
    termsUpdate(request: TermsRequest): Promise<void>;
    natStatus(): Promise<NatStatusResponse>;
    nodeMonitoringStatus(): Promise<NodeMonitoringStatusResponse>;
    natType(): Promise<NatTypeResponse>;
    stop(): Promise<void>;
    location(timeout?: number): Promise<Location>;
    identityList(): Promise<IdentityRef[]>;
    identity(id: string): Promise<Identity>;
    identityCurrent(request: IdentityCurrentRequest): Promise<IdentityRef>;
    identityCreate(passphrase: string): Promise<IdentityRef>;
    identityUnlock(id: string, passphrase: string, timeout?: number): Promise<void>;
    identityRegister(id: string, request?: IdentityRegisterRequest): Promise<void>;
    identityRegistration(id: string): Promise<IdentityRegistrationResponse>;
    identityBeneficiary(id: string): Promise<IdentityBeneficiaryResponse>;
    identityBalanceRefresh(id: string): Promise<IdentityBalanceResponse>;
    payoutAddressSave(id: string, address: string): Promise<Payout>;
    payoutAddressGet(id: string): Promise<Payout>;
    authSetToken(token: string): void;
    authAuthenticate(request: AuthRequest, useToken?: boolean): Promise<AuthResponse>;
    authLogin(request: AuthRequest): Promise<AuthResponse>;
    authLogout(): Promise<void>;
    authChangePassword(request: ChangePasswordRequest): Promise<void>;
    findProposals(query?: ProposalQuery): Promise<Proposal[]>;
    proposalFilterPresets(): Promise<FilterPresetsResponse>;
    pricesCurrent(): Promise<CurrentPricesResponse>;
    pricesCurrentV2(): Promise<CurrentPricesV2Response[]>;
    connectionCreate(request: ConnectionRequest, timeout?: number | undefined): Promise<ConnectionInfo>;
    connectionStatus(): Promise<ConnectionInfo>;
    connectionCancel(request?: ConnectionCancelRequest): Promise<void>;
    connectionIp(timeout?: number): Promise<IP>;
    connectionLocation(): Promise<Location>;
    connectionStatistics(): Promise<ConnectionStatistics>;
    serviceList(request?: ServiceListRequest): Promise<ServiceInfo[]>;
    serviceGet(id: string): Promise<ServiceInfo>;
    serviceStart(request: ServiceStartRequest, timeout?: number | undefined): Promise<ServiceInfo>;
    serviceStop(serviceId: string): Promise<void>;
    sessions(query?: SessionListQuery): Promise<SessionListResponse>;
    /**
     * @deprecated use ProviderAPI
     */
    sessionStatsAggregated(query?: SessionQuery): Promise<SessionStatsAggregatedResponse>;
    /**
     * @deprecated use ProviderAPI
     */
    sessionStatsDaily(query?: SessionQuery): Promise<SessionStatsDailyResponse>;
    accessPolicies(): Promise<AccessPolicy[]>;
    config(): Promise<Config>;
    defaultConfig(): Promise<Config>;
    userConfig(): Promise<Config>;
    updateUserConfig(config: Config): Promise<Config>;
    reportIssueGithub(issue: Issue, timeout?: number): Promise<IssueId>;
    /**
     * @deprecated use reportIssueSupport
     */
    reportIssueIntercom(issue: IntercomIssue, timeout?: number): Promise<void>;
    reportIssueSupport(issue: SupportIssueRequest, timeout?: number): Promise<SupportIssueResponse>;
    transactorFees(chainId?: number): Promise<Fees>;
    transactorFeesV2(chainId?: number): Promise<FeesResponse>;
    settleSync(request: SettleRequest): Promise<void>;
    settleAsync(request: SettleRequest): Promise<void>;
    settleWithBeneficiary(request: SettleWithBeneficiaryRequest): Promise<void>;
    beneficiaryTxStatus(id: string): Promise<BeneficiaryTxStatus>;
    chainSummary(): Promise<ChainSummary>;
    freeRegistrationEligibility(id: string): Promise<EligibilityResponse>;
    freeProviderRegistrationEligibility(): Promise<EligibilityResponse>;
    withdraw(request: WithdrawRequest): Promise<void>;
    settleIntoStakeSync(request: SettleRequest): Promise<void>;
    settleIntoStakeAsync(request: SettleRequest): Promise<void>;
    decreaseStake(request: DecreaseStakeRequest): Promise<void>;
    settlementHistory(query?: SettlementListQuery): Promise<SettlementListResponse>;
    getMMNNodeReport(): Promise<MMNReportResponse>;
    setMMNApiKey(apiKey: string): Promise<void>;
    getMMNApiKey(): Promise<MMNApiKeyResponse>;
    clearMMNApiKey(): Promise<void>;
    getReferralToken(identity: string): Promise<ReferralTokenResponse>;
    exchangeRate(quoteCurrency?: string): Promise<Money>;
    validateEthRPCL2(rpcUrls: string[], timeout?: number): Promise<void>;
    estimateEntertainment(query: EntertainmentEstimateQuery): Promise<EntertainmentEstimateResponse>;
    referralTokenRewards(token: string): Promise<ReferralTokenRewardsResponse>;
}
export declare class TequilapiClient extends BaseHttpTequilapiClient {
}
export {};
