import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as TokensAPI from 'cloudflare/resources/user/tokens/tokens';
import * as PermissionGroupsAPI from 'cloudflare/resources/user/tokens/permission-groups';
import * as ValueAPI from 'cloudflare/resources/user/tokens/value';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflare/pagination';
export declare class Tokens extends APIResource {
    permissionGroups: PermissionGroupsAPI.PermissionGroups;
    value: ValueAPI.ValueResource;
    /**
     * Create a new access token.
     */
    create(body: TokenCreateParams, options?: Core.RequestOptions): Core.APIPromise<TokenCreateResponse>;
    /**
     * Update an existing token.
     */
    update(tokenId: unknown, body: TokenUpdateParams, options?: Core.RequestOptions): Core.APIPromise<TokenUpdateResponse>;
    /**
     * List all access tokens you created.
     */
    list(query?: TokenListParams, options?: Core.RequestOptions): Core.PagePromise<TokenListResponsesV4PagePaginationArray, TokenListResponse>;
    list(options?: Core.RequestOptions): Core.PagePromise<TokenListResponsesV4PagePaginationArray, TokenListResponse>;
    /**
     * Destroy a token.
     */
    delete(tokenId: unknown, body: TokenDeleteParams, options?: Core.RequestOptions): Core.APIPromise<TokenDeleteResponse | null>;
    /**
     * Get information about a specific token.
     */
    get(tokenId: unknown, options?: Core.RequestOptions): Core.APIPromise<TokenGetResponse>;
    /**
     * Test whether a token works.
     */
    verify(options?: Core.RequestOptions): Core.APIPromise<TokenVerifyResponse>;
}
export declare class TokenListResponsesV4PagePaginationArray extends V4PagePaginationArray<TokenListResponse> {
}
/**
 * IPv4/IPv6 CIDR.
 */
export type CIDRList = string;
export interface Policy {
    /**
     * Policy identifier.
     */
    id: string;
    /**
     * Allow or deny operations against the resources.
     */
    effect: 'allow' | 'deny';
    /**
     * A set of permission groups that are specified to the policy.
     */
    permission_groups: Array<Policy.PermissionGroup>;
    /**
     * A list of resource names that the policy applies to.
     */
    resources: unknown;
}
export declare namespace Policy {
    /**
     * A named group of permissions that map to a group of operations against
     * resources.
     */
    interface PermissionGroup {
        /**
         * Identifier of the group.
         */
        id: string;
        /**
         * Name of the group.
         */
        name?: string;
    }
}
export interface Token {
    /**
     * Token identifier tag.
     */
    id: string;
    /**
     * Token name.
     */
    name: string;
    /**
     * List of access policies assigned to the token.
     */
    policies: Array<Policy>;
    /**
     * Status of the token.
     */
    status: 'active' | 'disabled' | 'expired';
    condition?: Token.Condition;
    /**
     * The expiration time on or after which the JWT MUST NOT be accepted for
     * processing.
     */
    expires_on?: string;
    /**
     * The time on which the token was created.
     */
    issued_on?: string;
    /**
     * Last time the token was modified.
     */
    modified_on?: string;
    /**
     * The time before which the token MUST NOT be accepted for processing.
     */
    not_before?: string;
}
export declare namespace Token {
    interface Condition {
        /**
         * Client IP restrictions.
         */
        request_ip?: Condition.RequestIP;
    }
    namespace Condition {
        /**
         * Client IP restrictions.
         */
        interface RequestIP {
            /**
             * List of IPv4/IPv6 CIDR addresses.
             */
            in?: Array<TokensAPI.CIDRList>;
            /**
             * List of IPv4/IPv6 CIDR addresses.
             */
            not_in?: Array<TokensAPI.CIDRList>;
        }
    }
}
export interface TokenCreateResponse {
    /**
     * The token value.
     */
    value?: ValueAPI.Value;
}
export type TokenUpdateResponse = unknown | string | null;
export type TokenListResponse = unknown;
export interface TokenDeleteResponse {
    /**
     * Identifier
     */
    id: string;
}
export type TokenGetResponse = unknown | string | null;
export interface TokenVerifyResponse {
    /**
     * Token identifier tag.
     */
    id: string;
    /**
     * Status of the token.
     */
    status: 'active' | 'disabled' | 'expired';
    /**
     * The expiration time on or after which the JWT MUST NOT be accepted for
     * processing.
     */
    expires_on?: string;
    /**
     * The time before which the token MUST NOT be accepted for processing.
     */
    not_before?: string;
}
export interface TokenCreateParams {
    /**
     * Token name.
     */
    name: string;
    /**
     * List of access policies assigned to the token.
     */
    policies: Array<Policy>;
    condition?: TokenCreateParams.Condition;
    /**
     * The expiration time on or after which the JWT MUST NOT be accepted for
     * processing.
     */
    expires_on?: string;
    /**
     * The time before which the token MUST NOT be accepted for processing.
     */
    not_before?: string;
}
export declare namespace TokenCreateParams {
    interface Condition {
        /**
         * Client IP restrictions.
         */
        request_ip?: Condition.RequestIP;
    }
    namespace Condition {
        /**
         * Client IP restrictions.
         */
        interface RequestIP {
            /**
             * List of IPv4/IPv6 CIDR addresses.
             */
            in?: Array<TokensAPI.CIDRList>;
            /**
             * List of IPv4/IPv6 CIDR addresses.
             */
            not_in?: Array<TokensAPI.CIDRList>;
        }
    }
}
export interface TokenUpdateParams {
    /**
     * Token name.
     */
    name: string;
    /**
     * List of access policies assigned to the token.
     */
    policies: Array<Policy>;
    /**
     * Status of the token.
     */
    status: 'active' | 'disabled' | 'expired';
    condition?: TokenUpdateParams.Condition;
    /**
     * The expiration time on or after which the JWT MUST NOT be accepted for
     * processing.
     */
    expires_on?: string;
    /**
     * The time before which the token MUST NOT be accepted for processing.
     */
    not_before?: string;
}
export declare namespace TokenUpdateParams {
    interface Condition {
        /**
         * Client IP restrictions.
         */
        request_ip?: Condition.RequestIP;
    }
    namespace Condition {
        /**
         * Client IP restrictions.
         */
        interface RequestIP {
            /**
             * List of IPv4/IPv6 CIDR addresses.
             */
            in?: Array<TokensAPI.CIDRList>;
            /**
             * List of IPv4/IPv6 CIDR addresses.
             */
            not_in?: Array<TokensAPI.CIDRList>;
        }
    }
}
export interface TokenListParams extends V4PagePaginationArrayParams {
    /**
     * Direction to order results.
     */
    direction?: 'asc' | 'desc';
}
export type TokenDeleteParams = unknown;
export declare namespace Tokens {
    export import CIDRList = TokensAPI.CIDRList;
    export import Policy = TokensAPI.Policy;
    export import Token = TokensAPI.Token;
    export import TokenCreateResponse = TokensAPI.TokenCreateResponse;
    export import TokenUpdateResponse = TokensAPI.TokenUpdateResponse;
    export import TokenListResponse = TokensAPI.TokenListResponse;
    export import TokenDeleteResponse = TokensAPI.TokenDeleteResponse;
    export import TokenGetResponse = TokensAPI.TokenGetResponse;
    export import TokenVerifyResponse = TokensAPI.TokenVerifyResponse;
    export import TokenListResponsesV4PagePaginationArray = TokensAPI.TokenListResponsesV4PagePaginationArray;
    export import TokenCreateParams = TokensAPI.TokenCreateParams;
    export import TokenUpdateParams = TokensAPI.TokenUpdateParams;
    export import TokenListParams = TokensAPI.TokenListParams;
    export import TokenDeleteParams = TokensAPI.TokenDeleteParams;
    export import PermissionGroups = PermissionGroupsAPI.PermissionGroups;
    export import PermissionGroupListResponse = PermissionGroupsAPI.PermissionGroupListResponse;
    export import PermissionGroupListResponsesSinglePage = PermissionGroupsAPI.PermissionGroupListResponsesSinglePage;
    export import ValueResource = ValueAPI.ValueResource;
    export import Value = ValueAPI.Value;
    export import ValueUpdateParams = ValueAPI.ValueUpdateParams;
}
//# sourceMappingURL=tokens.d.ts.map