import StoryblokClient, { ISbResult } from "storyblok-js-client";
import { IComponent, IPendingComponent } from "../types/IComponent";
import { IStory, IPendingStory } from "../types/stories";
import { IDataSource, IDataSourceEntry, IPendingDataSource, IPendingDataSourceEntry } from "../types/IDataSource";
import { IComponentGroup, IPendingComponentGroup } from "../types/IComponentGroup";
/**
 * Sets the number of requests per second to limit API calls
 * @param requestsPerSecond Number of requests per second (default: 3)
 */
export declare function setRequestsPerSecond(requestsPerSecond: number): void;
/**
 * Creates a new instance of the Storyblok client using configuration from either
 * the config file (.storyblokrc.json) or environment variables.
 *
 * @throws {Error} If no OAuth token is found in either the config file or environment variables
 * @returns {Promise<StoryblokClient>} A configured Storyblok client instance
 *
 * @example
 * ```typescript
 * const client = await getStoryblokClient();
 * const { data } = await client.get('stories');
 * ```
 */
export declare function getStoryblokClient(): Promise<StoryblokClient>;
type IResult<T = any> = Omit<ISbResult, "data"> & {
    data: T;
};
/**
 * API methods for managing Storyblok stories
 */
export type CreateStoryPayload = {
    release_id?: number;
    publish?: "1";
};
export type UpdateStoryPayload = CreateStoryPayload & {
    group_id?: number;
    force_update?: "1";
    lang?: string;
};
export declare const stories: {
    getAll(params?: Record<string, any>): Promise<IResult<{
        stories: IStory[];
    }>>;
    get(id: number, params?: Record<string, any>): Promise<IResult<{
        story: IStory;
    }>>;
    getBySlug(slug: string): Promise<IStory>;
    create(story: IPendingStory, params?: CreateStoryPayload): Promise<IResult<{
        story: IStory;
    }>>;
    update(story: IStory, params?: UpdateStoryPayload): Promise<IResult<{
        story: IStory;
    }>>;
    delete(storyOrId: IStory | number): Promise<IResult<{
        story: IStory;
    }>>;
};
/**
 * API methods for managing Storyblok components
 */
export declare const componentGroups: {
    getAll(params?: Record<string, any>): Promise<IResult<{
        component_groups: IComponentGroup[];
    }>>;
    get(id: number | string, params?: Record<string, any>): Promise<IResult<{
        component_group: IComponentGroup;
    }>>;
    create(componentGroup: IPendingComponentGroup): Promise<IResult<{
        component_group: IComponentGroup;
    }>>;
    update(componentGroup: IComponentGroup): Promise<IResult<{
        component_group: IComponentGroup;
    }>>;
    delete(componentGroupOrId: IComponentGroup | number | string): Promise<IResult<{
        component_group: IComponentGroup;
    }>>;
};
export declare const components: {
    getAll(params?: Record<string, any>): Promise<IResult<{
        components: IComponent[];
    }>>;
    get(id: number | string, params?: Record<string, any>): Promise<IResult<{
        component: IComponent;
    }>>;
    create(component: IPendingComponent): Promise<IResult<{
        component: IComponent;
    }>>;
    update(component: IComponent): Promise<IResult<{
        component: IComponent;
    }>>;
    delete(componentOrId: IComponent | number | string): Promise<IResult<{
        component: IComponent;
    }>>;
};
/**
 * API methods for managing Storyblok spaces
 */
export declare const spaces: {
    getSpaceOptions(): Promise<{
        is_demo: boolean;
        force_v1: boolean;
        force_v2: boolean;
        component_groups: Array<{
            id: number;
            name: string;
            uuid: string;
        }>;
        languages: Array<{
            code: string;
            name: string;
        }>;
        hosted_backup: boolean;
        duplicated_from: number;
        track_statistics: boolean;
        required_assest_fields: string[];
        use_translated_stories: boolean;
        asset_custom_meta_data_schema: any[];
    }>;
    getSpaceLanguages(): Promise<{
        code: string;
        name: string;
    }[]>;
};
/**
 * API methods for managing Storyblok datasources
 */
export declare const datasources: {
    getAll(params?: Record<string, any>): Promise<IResult<{
        datasources: IDataSource[];
    }>>;
    get(id: number | string, params?: Record<string, any>): Promise<IResult<{
        datasource: IDataSource;
    }>>;
    create(entry: IPendingDataSource): Promise<IResult<{
        datasource: IDataSource;
    }>>;
    update(entry: IDataSource): Promise<IResult<{
        datasource: IDataSource;
    }>>;
    delete(entryOrId: IDataSource | number | string): Promise<IResult<{
        datasource: IStory;
    }>>;
    has(id: number | string): Promise<boolean>;
};
export declare const datasourceEntries: {
    getAll(datasource: IDataSource | number | string, params?: Record<string, any>): Promise<IResult<{
        datasource_entries: IDataSourceEntry[];
    }>>;
    get(id: number | string, params?: Record<string, any>): Promise<IResult<{
        datasource: IDataSourceEntry;
    }>>;
    create(entry: IPendingDataSourceEntry): Promise<IResult<{
        datasource: IDataSourceEntry;
    }>>;
    update(entry: IDataSourceEntry): Promise<IResult<{
        datasource: IDataSourceEntry;
    }>>;
    delete(entryOrId: IDataSourceEntry | number | string): Promise<IResult<{
        datasource: IStory;
    }>>;
};
export declare const api: {
    spaces: {
        getSpaceOptions(): Promise<{
            is_demo: boolean;
            force_v1: boolean;
            force_v2: boolean;
            component_groups: Array<{
                id: number;
                name: string;
                uuid: string;
            }>;
            languages: Array<{
                code: string;
                name: string;
            }>;
            hosted_backup: boolean;
            duplicated_from: number;
            track_statistics: boolean;
            required_assest_fields: string[];
            use_translated_stories: boolean;
            asset_custom_meta_data_schema: any[];
        }>;
        getSpaceLanguages(): Promise<{
            code: string;
            name: string;
        }[]>;
    };
    stories: {
        getAll(params?: Record<string, any>): Promise<IResult<{
            stories: IStory[];
        }>>;
        get(id: number, params?: Record<string, any>): Promise<IResult<{
            story: IStory;
        }>>;
        getBySlug(slug: string): Promise<IStory>;
        create(story: IPendingStory, params?: CreateStoryPayload): Promise<IResult<{
            story: IStory;
        }>>;
        update(story: IStory, params?: UpdateStoryPayload): Promise<IResult<{
            story: IStory;
        }>>;
        delete(storyOrId: IStory | number): Promise<IResult<{
            story: IStory;
        }>>;
    };
    componentGroups: {
        getAll(params?: Record<string, any>): Promise<IResult<{
            component_groups: IComponentGroup[];
        }>>;
        get(id: number | string, params?: Record<string, any>): Promise<IResult<{
            component_group: IComponentGroup;
        }>>;
        create(componentGroup: IPendingComponentGroup): Promise<IResult<{
            component_group: IComponentGroup;
        }>>;
        update(componentGroup: IComponentGroup): Promise<IResult<{
            component_group: IComponentGroup;
        }>>;
        delete(componentGroupOrId: IComponentGroup | number | string): Promise<IResult<{
            component_group: IComponentGroup;
        }>>;
    };
    components: {
        getAll(params?: Record<string, any>): Promise<IResult<{
            components: IComponent[];
        }>>;
        get(id: number | string, params?: Record<string, any>): Promise<IResult<{
            component: IComponent;
        }>>;
        create(component: IPendingComponent): Promise<IResult<{
            component: IComponent;
        }>>;
        update(component: IComponent): Promise<IResult<{
            component: IComponent;
        }>>;
        delete(componentOrId: IComponent | number | string): Promise<IResult<{
            component: IComponent;
        }>>;
    };
    datasources: {
        getAll(params?: Record<string, any>): Promise<IResult<{
            datasources: IDataSource[];
        }>>;
        get(id: number | string, params?: Record<string, any>): Promise<IResult<{
            datasource: IDataSource;
        }>>;
        create(entry: IPendingDataSource): Promise<IResult<{
            datasource: IDataSource;
        }>>;
        update(entry: IDataSource): Promise<IResult<{
            datasource: IDataSource;
        }>>;
        delete(entryOrId: IDataSource | number | string): Promise<IResult<{
            datasource: IStory;
        }>>;
        has(id: number | string): Promise<boolean>;
    };
    datasourceEntries: {
        getAll(datasource: IDataSource | number | string, params?: Record<string, any>): Promise<IResult<{
            datasource_entries: IDataSourceEntry[];
        }>>;
        get(id: number | string, params?: Record<string, any>): Promise<IResult<{
            datasource: IDataSourceEntry;
        }>>;
        create(entry: IPendingDataSourceEntry): Promise<IResult<{
            datasource: IDataSourceEntry;
        }>>;
        update(entry: IDataSourceEntry): Promise<IResult<{
            datasource: IDataSourceEntry;
        }>>;
        delete(entryOrId: IDataSourceEntry | number | string): Promise<IResult<{
            datasource: IStory;
        }>>;
    };
};
export {};
