import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
/**
 * Interface for StackScript
 */
export interface StackScript {
    id: number;
    label: string;
    script: string;
    description: string;
    images: string[];
    deployments_active: number;
    deployments_total: number;
    is_public: boolean;
    created: string;
    updated: string;
    username: string;
    user_gravatar_id: string;
    rev_note: string;
    user_defined_fields: {
        name: string;
        label: string;
        example: string;
        default?: string;
        oneOf?: string;
        manyOf?: string;
    }[];
    mine: boolean;
}
/**
 * Client for Linode StackScripts API
 */
export interface StackScriptsClient {
    /**
     * Get a list of StackScripts
     * @param params - Pagination and filtering parameters
     * @returns A paginated list of StackScripts
     */
    getStackScripts(params?: PaginationParams & {
        is_mine?: boolean;
        is_public?: boolean;
    }): Promise<PaginatedResponse<StackScript>>;
    /**
     * Get a specific StackScript by ID
     * @param id - The ID of the StackScript
     * @returns The StackScript object
     */
    getStackScript(id: number): Promise<StackScript>;
    /**
     * Create a new StackScript
     * @param data - The data for the new StackScript
     * @returns The newly created StackScript
     */
    createStackScript(data: {
        script: string;
        label: string;
        images: string[];
        description?: string;
        is_public?: boolean;
        rev_note?: string;
    }): Promise<StackScript>;
    /**
     * Update an existing StackScript
     * @param id - The ID of the StackScript to update
     * @param data - The data to update
     * @returns The updated StackScript object
     */
    updateStackScript(id: number, data: {
        script?: string;
        label?: string;
        images?: string[];
        description?: string;
        is_public?: boolean;
        rev_note?: string;
    }): Promise<StackScript>;
    /**
     * Delete a StackScript
     * @param id - The ID of the StackScript to delete
     * @returns Empty response on success
     */
    deleteStackScript(id: number): Promise<{}>;
}
/**
 * Create a new StackScripts client
 * @param axios - The Axios instance for API calls
 * @returns A new StackScripts client
 */
export declare function createStackScriptsClient(axios: AxiosInstance): StackScriptsClient;
