import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { OpenPoolNotificationSubscriptionRequest } from '../model/openPoolNotificationSubscriptionRequest';
import { PartialUnstakeTicket } from '../model/partialUnstakeTicket';
import { StakeRequest } from '../model/stakeRequest';
import { StakingAccountInfo } from '../model/stakingAccountInfo';
import { StakingChartIntervalType } from '../model/stakingChartIntervalType';
import { StakingDeposit } from '../model/stakingDeposit';
import { StakingDepositAutomationRequest } from '../model/stakingDepositAutomationRequest';
import { StakingDepositFundsRequest } from '../model/stakingDepositFundsRequest';
import { StakingGetPerformance200ResponseInnerInner } from '../model/stakingGetPerformance200ResponseInnerInner';
import { StakingGetTransactions200ResponseInnerInner } from '../model/stakingGetTransactions200ResponseInnerInner';
import { StakingPartialUnstakeRequest } from '../model/stakingPartialUnstakeRequest';
import { StakingPlan } from '../model/stakingPlan';
import { StakingRedeemRequest } from '../model/stakingRedeemRequest';
import { StakingRedemptionPolicyInfo } from '../model/stakingRedemptionPolicyInfo';
import { StakingRedemptionPolicyType } from '../model/stakingRedemptionPolicyType';
import { StakingReward } from '../model/stakingReward';
import { StakingStatisticsElement } from '../model/stakingStatisticsElement';
import { StakingSubscription } from '../model/stakingSubscription';
import { StakingSubscriptionQueueStateResponse } from '../model/stakingSubscriptionQueueStateResponse';
import { StakingTransactionType } from '../model/stakingTransactionType';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export declare class StakingService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string, configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * @param id
     * @param accountId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingCancelSubscription(id: number, accountId: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<any>;
    stakingCancelSubscription(id: number, accountId: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpResponse<any>>;
    stakingCancelSubscription(id: number, accountId: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpEvent<any>>;
    /**
     * @param id
     * @param accountId
     * @param stakingDepositFundsRequest
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingDepositFunds(id: number, accountId: number, stakingDepositFundsRequest?: StakingDepositFundsRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<any>;
    stakingDepositFunds(id: number, accountId: number, stakingDepositFundsRequest?: StakingDepositFundsRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpResponse<any>>;
    stakingDepositFunds(id: number, accountId: number, stakingDepositFundsRequest?: StakingDepositFundsRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpEvent<any>>;
    /**
     * @param accountId
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetAccountInfo(accountId: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<StakingAccountInfo>;
    stakingGetAccountInfo(accountId: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<StakingAccountInfo>>;
    stakingGetAccountInfo(accountId: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<StakingAccountInfo>>;
    /**
     * @param page
     * @param size
     * @param accountId
     * @param productId
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetAllRewards(page: number, size: number, accountId: number, productId: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingReward>>;
    stakingGetAllRewards(page: number, size: number, accountId: number, productId: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingReward>>>;
    stakingGetAllRewards(page: number, size: number, accountId: number, productId: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingReward>>>;
    /**
     * @param accountId
     * @param interval
     * @param baseFiatId
     * @param productIds
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetPerformance(accountId: number, interval: StakingChartIntervalType, baseFiatId: number, productIds?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<Array<StakingGetPerformance200ResponseInnerInner>>>;
    stakingGetPerformance(accountId: number, interval: StakingChartIntervalType, baseFiatId: number, productIds?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<Array<StakingGetPerformance200ResponseInnerInner>>>>;
    stakingGetPerformance(accountId: number, interval: StakingChartIntervalType, baseFiatId: number, productIds?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<Array<StakingGetPerformance200ResponseInnerInner>>>>;
    /**
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetPlans(observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingPlan>>;
    stakingGetPlans(observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingPlan>>>;
    stakingGetPlans(observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingPlan>>>;
    /**
     * @param id
     * @param policyType
     * @param accountId
     * @param unstakeAmount
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetRedemptionPolicyInfo(id: number, policyType: StakingRedemptionPolicyType, accountId: number, unstakeAmount?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<StakingRedemptionPolicyInfo>;
    stakingGetRedemptionPolicyInfo(id: number, policyType: StakingRedemptionPolicyType, accountId: number, unstakeAmount?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<StakingRedemptionPolicyInfo>>;
    stakingGetRedemptionPolicyInfo(id: number, policyType: StakingRedemptionPolicyType, accountId: number, unstakeAmount?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<StakingRedemptionPolicyInfo>>;
    /**
     * @param accountId
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetStatistics(accountId: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingStatisticsElement>>;
    stakingGetStatistics(accountId: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingStatisticsElement>>>;
    stakingGetStatistics(accountId: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingStatisticsElement>>>;
    /**
     * @param id
     * @param page
     * @param size
     * @param accountId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetSubscriptionDeposits(id: number, page: number, size: number, accountId: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingDeposit>>;
    stakingGetSubscriptionDeposits(id: number, page: number, size: number, accountId: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingDeposit>>>;
    stakingGetSubscriptionDeposits(id: number, page: number, size: number, accountId: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingDeposit>>>;
    /**
     * @param id
     * @param page
     * @param size
     * @param accountId
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetSubscriptionPartialUnstakeTickets(id: number, page: number, size: number, accountId: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<PartialUnstakeTicket>>;
    stakingGetSubscriptionPartialUnstakeTickets(id: number, page: number, size: number, accountId: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<PartialUnstakeTicket>>>;
    stakingGetSubscriptionPartialUnstakeTickets(id: number, page: number, size: number, accountId: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<PartialUnstakeTicket>>>;
    /**
     * @param id
     * @param page
     * @param size
     * @param accountId
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetSubscriptionRewards(id: number, page: number, size: number, accountId: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingReward>>;
    stakingGetSubscriptionRewards(id: number, page: number, size: number, accountId: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingReward>>>;
    stakingGetSubscriptionRewards(id: number, page: number, size: number, accountId: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingReward>>>;
    /**
     * @param accountId
     * @param page
     * @param size
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetSubscriptions(accountId: number, page?: number, size?: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingSubscription>>;
    stakingGetSubscriptions(accountId: number, page?: number, size?: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingSubscription>>>;
    stakingGetSubscriptions(accountId: number, page?: number, size?: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingSubscription>>>;
    /**
     * @param accountId
     * @param ids
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetSubscriptionsQueueState(accountId: number, ids?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<StakingSubscriptionQueueStateResponse>>;
    stakingGetSubscriptionsQueueState(accountId: number, ids?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<StakingSubscriptionQueueStateResponse>>>;
    stakingGetSubscriptionsQueueState(accountId: number, ids?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<StakingSubscriptionQueueStateResponse>>>;
    /**
     * @param page
     * @param size
     * @param accountId
     * @param type
     * @param currency
     * @param from
     * @param to
     * @param timezoneOffset
     * @param baseFiatId
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingGetTransactions(page: number, size: number, accountId: number, type?: StakingTransactionType, currency?: number, from?: string, to?: string, timezoneOffset?: number, baseFiatId?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<Array<Array<StakingGetTransactions200ResponseInnerInner>>>;
    stakingGetTransactions(page: number, size: number, accountId: number, type?: StakingTransactionType, currency?: number, from?: string, to?: string, timezoneOffset?: number, baseFiatId?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<Array<Array<StakingGetTransactions200ResponseInnerInner>>>>;
    stakingGetTransactions(page: number, size: number, accountId: number, type?: StakingTransactionType, currency?: number, from?: string, to?: string, timezoneOffset?: number, baseFiatId?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<Array<Array<StakingGetTransactions200ResponseInnerInner>>>>;
    /**
     * @param accountId
     * @param id
     * @param stakingPartialUnstakeRequest
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingPartialUnstake(accountId: number, id: number, stakingPartialUnstakeRequest?: StakingPartialUnstakeRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<any>;
    stakingPartialUnstake(accountId: number, id: number, stakingPartialUnstakeRequest?: StakingPartialUnstakeRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpResponse<any>>;
    stakingPartialUnstake(accountId: number, id: number, stakingPartialUnstakeRequest?: StakingPartialUnstakeRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpEvent<any>>;
    /**
     * @param id
     * @param accountId
     * @param stakingRedeemRequest
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingRedeem(id: number, accountId: number, stakingRedeemRequest?: StakingRedeemRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<any>;
    stakingRedeem(id: number, accountId: number, stakingRedeemRequest?: StakingRedeemRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpResponse<any>>;
    stakingRedeem(id: number, accountId: number, stakingRedeemRequest?: StakingRedeemRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpEvent<any>>;
    /**
     * @param id
     * @param accountId
     * @param baseFiatId
     * @param stakingDepositAutomationRequest
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingSetDepositAutomation(id: number, accountId: number, baseFiatId?: number, stakingDepositAutomationRequest?: StakingDepositAutomationRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<StakingSubscription>;
    stakingSetDepositAutomation(id: number, accountId: number, baseFiatId?: number, stakingDepositAutomationRequest?: StakingDepositAutomationRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<StakingSubscription>>;
    stakingSetDepositAutomation(id: number, accountId: number, baseFiatId?: number, stakingDepositAutomationRequest?: StakingDepositAutomationRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<StakingSubscription>>;
    /**
     * @param accountId
     * @param baseFiatId
     * @param stakeRequest
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingStake(accountId: number, baseFiatId?: number, stakeRequest?: StakeRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<StakingSubscription>;
    stakingStake(accountId: number, baseFiatId?: number, stakeRequest?: StakeRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpResponse<StakingSubscription>>;
    stakingStake(accountId: number, baseFiatId?: number, stakeRequest?: StakeRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
    }): Observable<HttpEvent<StakingSubscription>>;
    /**
     * @param openPoolNotificationSubscriptionRequest
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    stakingSubscribeOnOpenPoolNotification(openPoolNotificationSubscriptionRequest?: OpenPoolNotificationSubscriptionRequest, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<any>;
    stakingSubscribeOnOpenPoolNotification(openPoolNotificationSubscriptionRequest?: OpenPoolNotificationSubscriptionRequest, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpResponse<any>>;
    stakingSubscribeOnOpenPoolNotification(openPoolNotificationSubscriptionRequest?: OpenPoolNotificationSubscriptionRequest, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: undefined;
        context?: HttpContext;
    }): Observable<HttpEvent<any>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<StakingService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StakingService>;
}
