export interface OfferResponse {
    id?: number;
    title?: string;
    description?: string;
    section?: 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 12 | 13;
    catalog_path?: number[];
    price?: number;
    discount_price?: number;
    gallery?: string[];
    meta?: string;
    tags?: Tag[] | null;
    thumbnail?: string[];
    content?: OfferContent[];
    created?: string;
    updated?: string;
    deleted?: string;
    status: 0 | 1;
    view_count?: number;
    purchase_count?: number;
    adult: boolean;
    age_rating?: "0+" | "6+" | "12+" | "14+" | "16+" | "18+";
    rating?: number;
}
export interface OfferCreateRequest {
    title: string;
    description: string;
    tags: string[];
    section: 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 12 | 13;
    catalog_path: number[];
    age_rating: "0+" | "6+" | "12+" | "14+" | "16+" | "18+";
    price: number;
    discount_price?: number;
    gallery?: string[];
    keys?: string[];
    status?: 0 | 1;
    content?: OfferCreateContent[];
    meta?: OfferMetaRequest;
}
export interface OfferUpdateRequest {
    title?: string;
    description?: string;
    price?: number;
    discount_price?: number | null;
    gallery?: string[] | null;
    age_rating?: "0+" | "6+" | "12+" | "14+" | "16+" | "18+";
    tags?: string[];
    status?: 0 | 1 | 2 | 3;
    catalog_path?: number[];
    meta?: OfferMetaRequest;
    section?: 1 | 2 | 4 | 5 | 6;
}
export interface OfferPriceUpdateRequest {
    regular_price?: number;
    discount_price?: number;
}
export interface KeysCountResponse {
    total: number;
    available: number;
    reserved: number;
}
export interface OfferStatusUpdateRequest {
    status: 0 | 1 | 2 | 3;
}
export interface OfferMetaRequest {
    addresses?: string | null;
    key_instruction?: string | null;
}
export interface OfferResponseList {
    items: OfferResponse[];
    total: Total;
}
export interface KeyResponse {
    id: number;
    value: string;
    created_at: string;
    buyed_at: string | null;
}
export interface OfferContent {
    content: number;
    title?: string;
    description?: string;
    files?: {
        contentType?: string;
        size?: number;
        uri?: string;
    }[];
    meta?: string;
    playlist?: string;
    category_id?: 1 | 2 | 4;
}
export interface GetFullCatalogResponse {
    items: CatalogNode[];
    total: number;
}
export interface CatalogNode {
    children?: CatalogNode[];
    img: string;
    name: string;
    parent_id: number;
    path?: number[] | null;
    id: number;
    is_section: boolean;
    node_order: number;
    section_id: number;
    total: number;
}
export interface Tag {
    id?: number;
    value?: string;
    value_translit?: string;
    weight?: number;
}
export interface OfferCreateContent {
    category_id: number;
    content: number;
}
export interface KeysLoadRequest {
    keys: string[];
    offer_id: number;
}
export interface KeysResponseList {
    items: KeyResponse[];
    total: number;
}
export interface IllustrationResponse {
    uris: string[];
    userId: number;
}
export interface UploadInitRequest {
    title: string;
    description: string;
    catalog_id: 1 | 2 | 4;
    content_type: "video/mp4" | "audio/mpeg" | "text/plain" | "application/pdf" | "application/epub+zip";
    parts: ChunkPart[];
    meta: ContentMeta;
}
export interface UploadInitResponse {
    content_id?: number;
    uuid?: string;
}
export interface UploadChunkResponse {
    chunk?: number;
    uri?: string;
}
export interface ContentMeta {
    thumbnail: string[];
    source_file_name?: string;
    rating?: "0+" | "6+" | "12+" | "14+" | "16+" | "18+";
    original_name?: string;
    voice?: string;
    bisac?: string;
    pages?: number;
    author?: string;
    translator?: string;
    duration?: string;
}
export interface ProblemDetails400 {
    status?: number;
    title: string;
    detail?: string;
    code?: string;
    errors?: ProblemDetails400[];
    requestId: string;
    origin?: string;
}
export interface ProblemDetails401 {
    status?: number;
    title: string;
    detail?: string;
    code?: string;
    requestId: string;
    origin?: string;
}
export interface ProblemDetails403 {
    status?: number;
    title: string;
    code?: string;
    requestId: string;
    origin?: string;
}
export interface ProblemDetails404 {
    status?: number;
    title: string;
    detail?: string;
    code?: string;
    requestId: string;
    origin?: string;
}
export interface ProblemDetails500 {
    status?: number;
    title: string;
    code?: string;
    errors?: ProblemDetails500[];
    requestId: string;
    origin?: string;
}
export interface ProblemDetails502 {
    status?: number;
    title: string;
    code?: string;
    errors?: ProblemDetails502[];
    requestId: string;
    origin?: string;
}
export interface KeyRedeemedResponse {
    id: number;
    value: string;
    created_at: string;
    buyed_at: string;
    offer_id: number;
    offer_title: string;
    offer_price: number;
}
export interface UpdateContentRequest {
    title?: string | null;
    description?: string | null;
}
export interface ChunkPart {
    index: number;
    size: number;
}
export interface Content {
    id: number;
    author_id: number;
    title: string;
    description: string;
    content_type: "video/mp4" | "audio/mpeg" | "text/plain" | "application/pdf" | "application/epub+zip";
    uri: string;
    files: {
        contentType?: string;
        size?: number;
        uri?: string;
    }[];
    playlist: string;
    meta?: any;
    category_id: 1 | 2 | 4;
    status: number;
    created: string;
    updated: string;
}
export interface ContentList {
    items: Content[];
    total: Total;
}
export interface UploadGalleryResponse {
    uris?: string[];
}
export interface KeysRedeemedResponseList {
    items: KeyRedeemedResponse[];
    total: Total;
}
export type Total = number;
export type QueryParamsType = Record<string | number, any>;
export type ResponseFormat = keyof Omit<Body, "body" | "bodyUsed">;
export interface FullRequestParams extends Omit<RequestInit, "body"> {
    secure?: boolean;
    path: string;
    type?: ContentType;
    query?: QueryParamsType;
    format?: ResponseFormat;
    body?: unknown;
    baseUrl?: string;
    cancelToken?: CancelToken;
}
export type RequestParams = Omit<FullRequestParams, "body" | "method" | "query" | "path">;
export interface ApiConfig<SecurityDataType = unknown> {
    baseUrl?: string;
    baseApiParams?: Omit<RequestParams, "baseUrl" | "cancelToken" | "signal">;
    securityWorker?: (securityData: SecurityDataType | null) => Promise<RequestParams | void> | RequestParams | void;
    customFetch?: typeof fetch;
}
export interface HttpResponse<D extends unknown, E extends unknown = unknown> extends Response {
    data: D;
    error: E;
}
type CancelToken = Symbol | string | number;
export declare enum ContentType {
    Json = "application/json",
    FormData = "multipart/form-data",
    UrlEncoded = "application/x-www-form-urlencoded",
    Text = "text/plain"
}
export declare class HttpClient<SecurityDataType = unknown> {
    baseUrl: string;
    private securityData;
    private securityWorker?;
    private abortControllers;
    private customFetch;
    private baseApiParams;
    constructor(apiConfig?: ApiConfig<SecurityDataType>);
    setSecurityData: (data: SecurityDataType | null) => void;
    protected encodeQueryParam(key: string, value: any): string;
    protected addQueryParam(query: QueryParamsType, key: string): string;
    protected addArrayQueryParam(query: QueryParamsType, key: string): any;
    protected toQueryString(rawQuery?: QueryParamsType): string;
    protected addQueryParams(rawQuery?: QueryParamsType): string;
    private contentFormatters;
    protected mergeRequestParams(params1: RequestParams, params2?: RequestParams): RequestParams;
    protected createAbortSignal: (cancelToken: CancelToken) => AbortSignal | undefined;
    abortRequest: (cancelToken: CancelToken) => void;
    request: <T = any, E = any>({ body, secure, path, type, query, format, baseUrl, cancelToken, ...params }: FullRequestParams) => Promise<HttpResponse<T, E>>;
}
export declare class Api<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> {
    api: {
        loadKeys: (data: KeysLoadRequest, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails401 | ProblemDetails403 | ProblemDetails404 | ProblemDetails500>>;
        getRedeemedKeys: (query?: {
            offer_id?: number;
            skip?: number;
            take?: number;
            date_from?: string;
            date_to?: string;
        }, params?: RequestParams) => Promise<HttpResponse<KeysRedeemedResponseList, ProblemDetails401 | ProblemDetails500>>;
        offerKeysCountGet: (offerId: number, params?: RequestParams) => Promise<HttpResponse<KeysCountResponse, ProblemDetails401 | ProblemDetails404 | ProblemDetails500>>;
        offerKeysGet: (offerId: number, params?: RequestParams) => Promise<HttpResponse<KeysResponseList, ProblemDetails400 | ProblemDetails401 | ProblemDetails403 | ProblemDetails404 | ProblemDetails500>>;
        offerCreate: (data: OfferCreateRequest, params?: RequestParams) => Promise<HttpResponse<OfferResponse, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        offersUploadThumbnail: (data: File, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        offerUpdate: (offerId: number, data: OfferUpdateRequest, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails400 | ProblemDetails401 | ProblemDetails403 | ProblemDetails404 | ProblemDetails500>>;
        offerGet: (offerId: number, params?: RequestParams) => Promise<HttpResponse<OfferResponse, ProblemDetails400 | ProblemDetails401 | ProblemDetails404 | ProblemDetails500>>;
        offersAuthorGet: (query?: {
            search?: string;
            category?: 1 | 2 | 4;
            status?: 0 | 1 | 2;
            sort?: "created" | "updated";
            sort_dir?: "asc" | "desc";
            skip?: number;
            take?: number;
        }, params?: RequestParams) => Promise<HttpResponse<OfferResponseList, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        offerUpdatePrice: (offerId: number, data: OfferPriceUpdateRequest, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        offerUpdateStatus: (offerId: number, data: OfferStatusUpdateRequest, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        getCatalog: (params?: RequestParams) => Promise<HttpResponse<GetFullCatalogResponse, ProblemDetails401 | ProblemDetails500>>;
        contentUploadIllustration: (data: File, params?: RequestParams) => Promise<HttpResponse<IllustrationResponse, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        contentUploadInit: (data: UploadInitRequest, params?: RequestParams) => Promise<HttpResponse<UploadInitResponse, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        contentUploadChunk: (data: File, params?: RequestParams) => Promise<HttpResponse<UploadChunkResponse, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        contentUpdate: (contentId: number, data: UpdateContentRequest, params?: RequestParams) => Promise<HttpResponse<Content, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
        contentIdGet: (contentId: number, params?: RequestParams) => Promise<HttpResponse<Content, ProblemDetails400 | ProblemDetails401 | ProblemDetails404 | ProblemDetails500>>;
        contentAuthorGet: (query?: {
            search?: string;
            category?: 1 | 2 | 4;
            status?: 0 | 1 | 2 | 3 | 4 | 5;
            sort?: "created" | "updated";
            sort_dir?: "asc" | "desc";
            skip?: number;
            take?: number;
        }, params?: RequestParams) => Promise<HttpResponse<ContentList, ProblemDetails401 | ProblemDetails500>>;
        contentDownloadGet: (uri: string, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails401 | ProblemDetails404 | ProblemDetails500 | ProblemDetails502>>;
        contentDelete: (data: {
            content_id?: number;
        }, params?: RequestParams) => Promise<HttpResponse<void, ProblemDetails401 | ProblemDetails404 | ProblemDetails500>>;
        contentGallery: (data: {
            files: File[];
        }, params?: RequestParams) => Promise<HttpResponse<UploadGalleryResponse, ProblemDetails400 | ProblemDetails401 | ProblemDetails500>>;
    };
}
export {};
//# sourceMappingURL=wbd.d.ts.map