import { IApi, IApiPayload } from "@etsoo/restclient";
import { EntityApi, IApp, IdResultPayload, ResultPayload } from "@etsoo/appscript";
import { AppGetMyRQ } from "./rq/app/AppGetMyRQ";
import { AppQueryData } from "./dto/app/AppQueryData";
import { AppListRQ } from "./rq/app/AppListRQ";
import { AppListDto } from "./dto/app/AppListDto";
import { AppQueryRQ } from "./rq/app/AppQueryRQ";
import { AppPurchasedQueryRQ } from "./rq/app/AppPurchasedQueryRQ";
import { AppPurchasedQueryData } from "./dto/app/AppPurchasedQueryData";
import { AppBuyNewRQ } from "./rq/app/AppBuyNewRQ";
import { AppBuyRQ } from "./rq/app/AppBuyRQ";
import { AppRenewRQ } from "./rq/app/AppRenewRQ";
import { AppUpdateRQ } from "./rq/app/AppUpdateRQ";
import { AppUpdateReadDto } from "./dto/app/AppUpdateReadDto";
import { AppReadDto } from "./dto/app/AppReadDto";
import { CreateApiKeyData } from "./dto/app/CreateApiKeyData";
import { IActionResult } from "@etsoo/shared";
import { AppCreateApiKeyRQ } from "./rq/app/AppCreateApiKeyRQ";
import { AppData } from "./dto/app/AppData";
/**
 * Application API
 */
export declare class AppApi extends EntityApi {
    /**
     * Constructor
     * @param app Application
     * @param api API
     */
    constructor(app: IApp, api?: IApi);
    /**
     * Buy the application
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    buy(rq: AppBuyRQ, payload?: ResultPayload): Promise<IActionResult<{}> | undefined>;
    /**
     * Buy and create new organization
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    buyNew(rq: AppBuyNewRQ, payload?: IdResultPayload): Promise<import("@etsoo/shared").IdActionResult | undefined>;
    /**
     * Create API key
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    createApiKey(rq: AppCreateApiKeyRQ, payload?: IApiPayload<IActionResult<CreateApiKeyData>>): Promise<IActionResult<CreateApiKeyData> | undefined>;
    /**
     * Get user's latest accessed applications
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    getMy(rq: AppGetMyRQ, payload?: IApiPayload<AppData[]>): Promise<AppData[] | undefined>;
    /**
     * List
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    list(rq: AppListRQ, payload: IApiPayload<AppListDto[]>): Promise<AppListDto[] | undefined>;
    /**
     * Query
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    query(rq: AppQueryRQ, payload?: IApiPayload<AppQueryData[]>): Promise<AppQueryData[] | undefined>;
    /**
     * Query purchased applications JSON data
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    queryPurchased(rq: AppPurchasedQueryRQ, payload?: IApiPayload<AppPurchasedQueryData[]>): Promise<AppPurchasedQueryData[] | undefined>;
    /**
     * Read
     * @param id Id
     * @param payload Payload
     * @returns Result
     */
    read(id: number, payload?: IApiPayload<AppReadDto>): Promise<AppReadDto | undefined>;
    /**
     * Renew the application
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    renew(rq: AppRenewRQ, payload?: ResultPayload): Promise<IActionResult<{}> | undefined>;
    /**
     * Update the application
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    update(rq: AppUpdateRQ, payload?: ResultPayload): Promise<IActionResult<{}> | undefined>;
    /**
     * Update read
     * @param id Id
     * @param payload Payload
     * @returns Result
     */
    updateRead(id: number, payload?: IApiPayload<AppUpdateReadDto>): Promise<AppUpdateReadDto | undefined>;
}
