import type { GithubOctokitRepo } from '@broadshield/github-actions-core-typed-inputs';
import type { KnownKeysMatching, OctokitInstance } from '@broadshield/github-actions-octokit-hydrated';
import { PaginatingEndpoints } from '@broadshield/github-actions-octokit-hydrated';
export declare function basename(path: string): string;
declare type releasesRouteType = 'GET /repos/{owner}/{repo}/releases';
declare type tagsRouteType = 'GET /repos/{owner}/{repo}/tags';
declare type workflowsRouteType = 'GET /repos/{owner}/{repo}/actions/workflows';
declare type workflowRunsRouteType = 'GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs';
declare type UsablePaginatingEndpoints = Pick<PaginatingEndpoints, releasesRouteType | tagsRouteType | workflowsRouteType | workflowRunsRouteType>;
declare type DataType<T> = 'data' extends keyof T ? T['data'] : never;
declare type UsablePaginatingEndpointType<T> = T extends keyof UsablePaginatingEndpoints ? UsablePaginatingEndpoints[T] : never;
declare type UsableEndpointResponseDataType<T extends keyof UsablePaginatingEndpoints> = DataType<UsablePaginatingEndpoints[T]['response']>;
declare type ReturnListType<T extends keyof UsablePaginatingEndpoints> = T extends tagsRouteType ? string : number;
declare type FilterableParameters<T extends keyof UsablePaginatingEndpoints> = T extends UsableEndpointResponseDataType<T> ? KnownKeysMatching<UsableEndpointResponseDataType<T>, string | number> : never;
declare type FilterableParameterValueTypes = RegExp | Date | number | string;
declare type FilterInterface<R extends keyof UsablePaginatingEndpoints> = {
    [key in keyof FilterableParameters<R>]: FilterableParameterValueTypes;
};
export interface KondoOptions {
    octokit?: OctokitInstance;
    repo: GithubOctokitRepo;
    github_token?: string;
}
export declare class Kondo {
    octokit?: OctokitInstance;
    repo: GithubOctokitRepo;
    constructor(options: KondoOptions);
    setOctokit(octokit: OctokitInstance): void;
    getOctokit(): OctokitInstance | undefined;
    getMatchingItemsFromEndpointRest<T extends keyof UsablePaginatingEndpoints>(endpoint: T, parameters?: UsablePaginatingEndpointType<T>['parameters'], filter?: FilterInterface<T>, octokit?: OctokitInstance | undefined): Promise<ReturnListType<T>[]>;
    getFilteredReleaseIdsFromRepo(parameters?: UsablePaginatingEndpoints[releasesRouteType]['parameters'], filter?: FilterInterface<releasesRouteType>, repo?: GithubOctokitRepo): Promise<ReturnListType<releasesRouteType>[]>;
    getFilteredTagRefsFromRepo(parameters?: UsablePaginatingEndpoints[tagsRouteType]['parameters'], filter?: FilterInterface<tagsRouteType>, repo?: GithubOctokitRepo): Promise<ReturnListType<tagsRouteType>[]>;
    getFilteredWorkflowIdsFromRepo(parameters?: UsablePaginatingEndpoints[workflowsRouteType]['parameters'], filter?: FilterInterface<workflowsRouteType>, repo?: GithubOctokitRepo): Promise<ReturnListType<workflowsRouteType>[]>;
    getFilteredWorkflowRunIdsFromRepo(parameters?: UsablePaginatingEndpoints[workflowRunsRouteType]['parameters'], filter?: FilterInterface<workflowRunsRouteType>, repo?: GithubOctokitRepo): Promise<ReturnListType<workflowRunsRouteType>[]>;
    deleteReleasesByIds(release_ids: number[], repo?: GithubOctokitRepo, octokit?: OctokitInstance | undefined): Promise<void[]>;
    deleteTagsByRefs(refs: string[], repo?: GithubOctokitRepo, octokit?: OctokitInstance | undefined): Promise<void[]>;
    /**
     *
     * @param {number[]} run_ids List of workflow run ids to cancel
     * @param {GithubOctokitRepo} repo Object containing repository's owner and repo keys, defaults to this.repo
     * @param {OctokitInstance} octokit Octokit instance to use, defaults to this.octokit
     * @returns {Promise<void[]>} Array of promises that resolve to void
     */
    deleteWorkflowRunsByIds(run_ids: number[], repo?: GithubOctokitRepo, octokit?: OctokitInstance | undefined): Promise<void[]>;
}
export {};
