import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as VersionsAPI from 'cloudflaredev/resources/rulesets/versions/versions';
import * as RulesAPI from 'cloudflaredev/resources/rulesets/rules';
import * as RulesetsAPI from 'cloudflaredev/resources/rulesets/rulesets';
import { RulesetsSinglePage } from 'cloudflaredev/resources/rulesets/rulesets';
import * as ByTagAPI from 'cloudflaredev/resources/rulesets/versions/by-tag';
export declare class Versions extends APIResource {
    byTag: ByTagAPI.ByTag;
    /**
     * Fetches the versions of an account or zone ruleset.
     */
    list(rulesetId: string, params?: VersionListParams, options?: Core.RequestOptions): Core.PagePromise<RulesetsSinglePage, RulesetsAPI.Ruleset>;
    list(rulesetId: string, options?: Core.RequestOptions): Core.PagePromise<RulesetsSinglePage, RulesetsAPI.Ruleset>;
    /**
     * Deletes an existing version of an account or zone ruleset.
     */
    delete(rulesetId: string, rulesetVersion: string, params?: VersionDeleteParams, options?: Core.RequestOptions): Core.APIPromise<void>;
    delete(rulesetId: string, rulesetVersion: string, options?: Core.RequestOptions): Core.APIPromise<void>;
    /**
     * Fetches a specific version of an account or zone ruleset.
     */
    get(rulesetId: string, rulesetVersion: string, params?: VersionGetParams, options?: Core.RequestOptions): Core.APIPromise<VersionGetResponse>;
    get(rulesetId: string, rulesetVersion: string, options?: Core.RequestOptions): Core.APIPromise<VersionGetResponse>;
}
/**
 * A ruleset object.
 */
export interface VersionGetResponse {
    /**
     * The unique ID of the ruleset.
     */
    id: string;
    /**
     * The kind of the ruleset.
     */
    kind: RulesetsAPI.Kind;
    /**
     * The timestamp of when the ruleset was last modified.
     */
    last_updated: string;
    /**
     * The human-readable name of the ruleset.
     */
    name: string;
    /**
     * The phase of the ruleset.
     */
    phase: RulesetsAPI.Phase;
    /**
     * The list of rules in the ruleset.
     */
    rules: Array<RulesAPI.BlockRule | RulesAPI.ChallengeRule | RulesAPI.CompressResponseRule | RulesAPI.ExecuteRule | RulesAPI.JSChallengeRule | RulesAPI.LogRule | RulesAPI.ManagedChallengeRule | RulesAPI.RedirectRule | RulesAPI.RewriteRule | RulesAPI.RouteRule | RulesAPI.ScoreRule | RulesAPI.ServeErrorRule | RulesAPI.SetConfigRule | RulesAPI.SkipRule | RulesAPI.SetCacheSettingsRule>;
    /**
     * The version of the ruleset.
     */
    version: string;
    /**
     * An informative description of the ruleset.
     */
    description?: string;
}
export interface VersionListParams {
    /**
     * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
     */
    account_id?: string;
    /**
     * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
     */
    zone_id?: string;
}
export interface VersionDeleteParams {
    /**
     * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
     */
    account_id?: string;
    /**
     * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
     */
    zone_id?: string;
}
export interface VersionGetParams {
    /**
     * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
     */
    account_id?: string;
    /**
     * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
     */
    zone_id?: string;
}
export declare namespace Versions {
    export import VersionGetResponse = VersionsAPI.VersionGetResponse;
    export import VersionListParams = VersionsAPI.VersionListParams;
    export import VersionDeleteParams = VersionsAPI.VersionDeleteParams;
    export import VersionGetParams = VersionsAPI.VersionGetParams;
    export import ByTag = ByTagAPI.ByTag;
    export import ByTagGetResponse = ByTagAPI.ByTagGetResponse;
    export import ByTagGetParams = ByTagAPI.ByTagGetParams;
}
export { RulesetsSinglePage };
//# sourceMappingURL=versions.d.ts.map