import { IApi, IApiPayload } from "@etsoo/restclient";
import { ListType, ListType1 } from "@etsoo/shared";
import { PinyinRQ } from "./rq/public/PinyinRQ";
import { CreateBarcodeRQ } from "./rq/public/CreateBarcodeRQ";
import { CurrencyItem } from "./dto/public/CurrencyItem";
import { RegionData } from "./dto/public/RegionData";
import { PlaceQueryRQ } from "./rq/public/PlaceQueryRQ";
import { PlaceCommon } from "./dto/public/PlaceCommon";
import { BaseApi, CultureItem, Currency, CustomCulture, IApp, ProductUnit, ResultPayload } from "@etsoo/appscript";
import { MemberInvitationDto } from "./dto/public/MemberInvitationDto";
import { AcceptInvitationRQ } from "./rq/public/AcceptInvitationRQ";
import { ChinaPinData } from "./dto/public/ChinaPinData";
/**
 * Public API
 * 公共接口
 */
export declare class PublicApi extends BaseApi {
    /**
     * Constructor
     * @param app Application
     * @param api API
     */
    constructor(app: IApp, api?: IApi);
    /**
     * Accept invitation
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    acceptInvitation(rq: AcceptInvitationRQ, payload?: ResultPayload): Promise<import("@etsoo/shared").IActionResult<{}> | undefined>;
    /**
     * Create barcode
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    createBarcode(rq: CreateBarcodeRQ, payload?: IApiPayload<string>): Promise<string | undefined>;
    /**
     * Get currency label
     * @param currency Currency
     * @returns Label
     */
    getCurrencyLabel(currency: Currency | string): string;
    /**
     * Get cultures
     * @param ids Culture ids to include and order by
     * @param payload Payload
     * @returns Result
     */
    getCultures(ids: string[], payload?: IApiPayload<CultureItem[]>): Promise<CultureItem[] | undefined>;
    /**
     * Get currencies
     * @param ids Currency ids to include and order by
     * @param payload Payload
     * @returns Result
     */
    getCurrencies(ids?: string[], payload?: IApiPayload<CurrencyItem[]>): Promise<CurrencyItem[] | undefined>;
    /**
     * Get custom resources
     * @param culture Culture
     * @param payload Payload
     * @returns Result
     */
    getCustomResources(culture: string, payload?: IApiPayload<CustomCulture[]>): Promise<CustomCulture[] | undefined>;
    /**
     * Get Pinyin
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    getPinyin(rq: PinyinRQ, payload?: IApiPayload<string>): Promise<string | undefined>;
    /**
     * Get regions
     * @param ids Region ids to include and order by
     * @param payload Payload
     * @returns Result
     */
    getRegions(ids?: string[], payload?: IApiPayload<RegionData[]>): Promise<RegionData[] | undefined>;
    /**
     * Get product unit's label
     * Please define the label in culture with key 'unitPC' for ProductUnit.PC like that
     * @param unit Unit
     * @param isJoined Add the join label like 'per Kg' for Kg
     * @returns Label
     */
    getUnitLabel(unit: ProductUnit | number, isJoined?: boolean | string): string;
    private getUnitJoin;
    /**
     * Get mobile base64 QRCode
     * @param id User id
     * @param host Host URL
     * @param payload Payload
     */
    mobileQRCode(id?: string, host?: string, payload?: IApiPayload<string>): Promise<string | undefined>;
    /**
     * Parse China PIN
     * @param pin Pin code
     * @param payload Payload
     * @returns Result
     */
    parseChinaPin(pin: string, payload?: IApiPayload<ChinaPinData>): Promise<ChinaPinData | undefined>;
    /**
     * Query place
     * @param rq Request data
     * @param payload Payload
     * @returns Result
     */
    queryPlace(rq: PlaceQueryRQ, payload?: IApiPayload<PlaceCommon[]>): Promise<PlaceCommon[] | undefined>;
    /**
     * Read member invitation
     * @param id Id
     * @param payload Payload
     * @returns Result
     */
    readInvitation(id: string, payload?: IApiPayload<MemberInvitationDto>): Promise<MemberInvitationDto | undefined>;
    /**
     *
     * Get all repeat options
     * @param options Define the order and limit the items
     * @param isJoined Add the join label
     * @returns Result
     */
    repeatOptions(options?: string[], isJoined?: boolean): ListType[];
    /**
     * Get all supported cultures
     * @param payload Payload
     * @returns Result
     */
    supportedCultures(payload?: IApiPayload<ListType1[]>): Promise<ListType1[] | undefined>;
    /**
     * Get all product units
     * @returns Units
     */
    units(): ListType[];
    /**
     *
     * Get all product units
     * @param options Define the order and limit the items
     * @param isJoined Add the join label like 'per Kg' for Kg
     * @returns Units
     */
    units(options?: string[], isJoined?: boolean): ListType[];
}
