import type { DefaultElements, ISO8601Timestamp, Link, MakeRequest } from '../common-types';
import type { AsyncActionProcessingOptions } from '../methods/action';
type ReleaseActionStatuses = 'created' | 'inProgress' | 'failed' | 'succeeded';
export type ReleaseActionTypes = 'publish' | 'unpublish' | 'validate';
export type ReleaseActionSysProps = {
    id: string;
    type: 'ReleaseAction';
    space: Link<'Space'>;
    environment: Link<'Environment'>;
    release: Link<'Release'>;
    status: ReleaseActionStatuses;
    createdBy: Link<'User'>;
    createdAt: ISO8601Timestamp;
    updatedBy: Link<'User'>;
    updatedAt: ISO8601Timestamp;
};
/** The object returned by the Releases API */
export interface ReleaseActionProps<T extends ReleaseActionTypes = any> {
    action: T;
    sys: ReleaseActionSysProps;
}
export interface ReleaseActionQueryOptions {
    /** Find Release Actions by using a comma-separated list of Ids */
    'sys.id[in]'?: string;
    'sys.release.sys.id[in]'?: string;
    'sys.status[in]'?: string;
    'sys.status[nin]'?: string;
    action?: ReleaseActionTypes;
    /** Get unique results by this field. Currently supports `sys.release.sys.id` */
    uniqueBy?: string;
    /** @default -sys.updatedAt */
    order?: string;
    /**
     * Limit of how many records are returned in the query result
     * @default 100
     * */
    limit?: number;
}
export interface ReleaseActionApiMethods {
    /** Performs a new GET request and returns the wrapper Release */
    get(): ReleaseAction;
    /** Waits until the Release Action has either succeeded or failed */
    waitProcessing(options?: AsyncActionProcessingOptions): ReleaseAction;
}
export interface ReleaseAction<T extends ReleaseActionTypes = any> extends ReleaseActionProps<T>, ReleaseActionApiMethods, DefaultElements<ReleaseActionProps<T>> {
}
/**
 * @internal
 * @param makeRequest - function to make requests via an adapter
 * @param data - Raw Release data
 * @returns Wrapped Release data
 */
export declare function wrapReleaseAction(makeRequest: MakeRequest, data: ReleaseActionProps): ReleaseAction;
/**
 * @internal
 */
export declare const wrapReleaseActionCollection: (makeRequest: MakeRequest, data: import("..").CollectionProp<ReleaseActionProps<any>>) => import("..").Collection<ReleaseAction<any>, ReleaseActionProps<any>>;
export {};
