import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as PhasesAPI from 'cloudflaredev/resources/rulesets/phases/phases';
import * as RulesAPI from 'cloudflaredev/resources/rulesets/rules';
import * as RulesetsAPI from 'cloudflaredev/resources/rulesets/rulesets';
import * as VersionsAPI from 'cloudflaredev/resources/rulesets/phases/versions';
export declare class Phases extends APIResource {
    versions: VersionsAPI.Versions;
    /**
     * Updates an account or zone entry point ruleset, creating a new version.
     */
    update(rulesetPhase: RulesetsAPI.PhaseParam, params: PhaseUpdateParams, options?: Core.RequestOptions): Core.APIPromise<PhaseUpdateResponse>;
    /**
     * Fetches the latest version of the account or zone entry point ruleset for a
     * given phase.
     */
    get(rulesetPhase: RulesetsAPI.PhaseParam, params?: PhaseGetParams, options?: Core.RequestOptions): Core.APIPromise<PhaseGetResponse>;
    get(rulesetPhase: RulesetsAPI.PhaseParam, options?: Core.RequestOptions): Core.APIPromise<PhaseGetResponse>;
}
/**
 * A ruleset object.
 */
export interface PhaseUpdateResponse {
    /**
     * 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;
}
/**
 * A ruleset object.
 */
export interface PhaseGetResponse {
    /**
     * 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 PhaseUpdateParams {
    /**
     * Body param: The list of rules in the ruleset.
     */
    rules: Array<RulesAPI.BlockRuleParam | RulesAPI.ChallengeRuleParam | RulesAPI.CompressResponseRuleParam | RulesAPI.ExecuteRuleParam | RulesAPI.JSChallengeRuleParam | RulesAPI.LogRuleParam | RulesAPI.ManagedChallengeRuleParam | RulesAPI.RedirectRuleParam | RulesAPI.RewriteRuleParam | RulesAPI.RouteRuleParam | RulesAPI.ScoreRuleParam | RulesAPI.ServeErrorRuleParam | RulesAPI.SetConfigRuleParam | RulesAPI.SkipRuleParam | RulesAPI.SetCacheSettingsRuleParam>;
    /**
     * Path param: The Account ID to use for this endpoint. Mutually exclusive with the
     * Zone ID.
     */
    account_id?: string;
    /**
     * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the
     * Account ID.
     */
    zone_id?: string;
    /**
     * Body param: An informative description of the ruleset.
     */
    description?: string;
    /**
     * Body param: The kind of the ruleset.
     */
    kind?: RulesetsAPI.KindParam;
    /**
     * Body param: The human-readable name of the ruleset.
     */
    name?: string;
    /**
     * Body param: The phase of the ruleset.
     */
    phase?: RulesetsAPI.PhaseParam;
}
export interface PhaseGetParams {
    /**
     * 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 Phases {
    export import PhaseUpdateResponse = PhasesAPI.PhaseUpdateResponse;
    export import PhaseGetResponse = PhasesAPI.PhaseGetResponse;
    export import PhaseUpdateParams = PhasesAPI.PhaseUpdateParams;
    export import PhaseGetParams = PhasesAPI.PhaseGetParams;
    export import Versions = VersionsAPI.Versions;
    export import VersionGetResponse = VersionsAPI.VersionGetResponse;
    export import VersionListParams = VersionsAPI.VersionListParams;
    export import VersionGetParams = VersionsAPI.VersionGetParams;
}
//# sourceMappingURL=phases.d.ts.map