import { AddSharedStep, DeleteSharedStep, SharedStep, SharedStepFilters } from '../models/shared-steps';
import { BaseService } from './base';
/**
 * Service for managing TestRail shared steps.
 * @since TestRail 7.0
 */
export declare class SharedStepService extends BaseService {
    /**
     * Returns a list of shared steps for a project.
     * @param projectId - The ID of the project
     * @param offset - Where to start counting the shared steps from (the offset)
     * @param limit - The number of shared steps the response should return (max 250)
     * @param filters - Optional filters to apply
     * @returns A list of shared steps
     * @throws {Error} 400 - Invalid or unknown set of shared steps
     * @throws {Error} 403 - Insufficient permissions
     * @throws {Error} 429 - Too many requests (TestRail Cloud only)
     */
    list(projectId: number, offset?: number, limit?: number, filters?: SharedStepFilters): Promise<SharedStep[]>;
    /**
     * Returns an existing set of shared steps.
     * @param sharedStepId - The ID of the set of shared steps
     * @returns The shared step
     * @throws {Error} 400 - Invalid or unknown shared step
     * @throws {Error} 403 - Insufficient permissions
     * @throws {Error} 429 - Too many requests (TestRail Cloud only)
     */
    get(sharedStepId: number): Promise<SharedStep>;
    /**
     * Creates a new set of shared steps.
     * @param projectId - The ID of the project
     * @param sharedStep - The shared step data to add
     * @returns The created shared step
     * @throws {Error} 400 - Invalid or unknown set of shared steps
     * @throws {Error} 403 - Insufficient permissions
     * @throws {Error} 429 - Too many requests (TestRail Cloud only)
     */
    add(projectId: number, sharedStep: AddSharedStep): Promise<SharedStep>;
    /**
     * Updates an existing set of shared steps (partial updates are supported).
     * @param sharedStepId - The ID of the set of shared steps
     * @param sharedStep - The shared step data to update
     * @returns The updated shared step
     * @throws {Error} 400 - Invalid or unknown test
     * @throws {Error} 403 - Insufficient permissions
     * @throws {Error} 429 - Too many requests (TestRail Cloud only)
     */
    update(sharedStepId: number, sharedStep: Partial<AddSharedStep>): Promise<SharedStep>;
    /**
     * Deletes an existing shared step entity.
     * Note: Deleting shared test steps cannot be undone. By default, deleting a shared step set will keep the steps in all test cases which used the set.
     * @param sharedStepId - The ID of the set of shared steps
     * @param options - Options for deletion
     * @throws {Error} 400 - Invalid or unknown shared step ID
     * @throws {Error} 403 - Insufficient permissions
     * @throws {Error} 429 - Too many requests (TestRail Cloud only)
     */
    delete(sharedStepId: number, options?: DeleteSharedStep): Promise<void>;
    /**
     * Returns a list of test cases that use a shared step.
     * @param sharedStepId - The ID of the set of shared steps
     * @returns An array of test case IDs
     * @throws {Error} 400 - Invalid or unknown shared step
     * @throws {Error} 403 - Insufficient permissions
     * @throws {Error} 429 - Too many requests (TestRail Cloud only)
     */
    getCases(sharedStepId: number): Promise<number[]>;
}
