import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as PrefixesAPI from 'cloudflare/resources/addressing/prefixes/prefixes';
import * as DelegationsAPI from 'cloudflare/resources/addressing/prefixes/delegations';
import * as BGPAPI from 'cloudflare/resources/addressing/prefixes/bgp/bgp';
import { SinglePage } from 'cloudflare/pagination';
export declare class Prefixes extends APIResource {
    bgp: BGPAPI.BGP;
    delegations: DelegationsAPI.Delegations;
    /**
     * Add a new prefix under the account.
     */
    create(params: PrefixCreateParams, options?: Core.RequestOptions): Core.APIPromise<AddressingIpamPrefixes>;
    /**
     * List all prefixes owned by the account.
     */
    list(params: PrefixListParams, options?: Core.RequestOptions): Core.PagePromise<AddressingIpamPrefixesSinglePage, AddressingIpamPrefixes>;
    /**
     * Delete an unapproved prefix owned by the account.
     */
    delete(prefixId: string, params: PrefixDeleteParams, options?: Core.RequestOptions): Core.APIPromise<PrefixDeleteResponse | null>;
    /**
     * Modify the description for a prefix owned by the account.
     */
    edit(prefixId: string, params: PrefixEditParams, options?: Core.RequestOptions): Core.APIPromise<AddressingIpamPrefixes>;
    /**
     * List a particular prefix owned by the account.
     */
    get(prefixId: string, params: PrefixGetParams, options?: Core.RequestOptions): Core.APIPromise<AddressingIpamPrefixes>;
}
export declare class AddressingIpamPrefixesSinglePage extends SinglePage<AddressingIpamPrefixes> {
}
export interface AddressingIpamPrefixes {
    /**
     * Identifier
     */
    id?: string;
    /**
     * Identifier
     */
    account_id?: string;
    /**
     * Prefix advertisement status to the Internet. This field is only not 'null' if on
     * demand is enabled.
     */
    advertised?: boolean | null;
    /**
     * Last time the advertisement status was changed. This field is only not 'null' if
     * on demand is enabled.
     */
    advertised_modified_at?: string | null;
    /**
     * Approval state of the prefix (P = pending, V = active).
     */
    approved?: string;
    /**
     * Autonomous System Number (ASN) the prefix will be advertised under.
     */
    asn?: number | null;
    /**
     * IP Prefix in Classless Inter-Domain Routing format.
     */
    cidr?: string;
    created_at?: string;
    /**
     * Description of the prefix.
     */
    description?: string;
    /**
     * Identifier for the uploaded LOA document.
     */
    loa_document_id?: string | null;
    modified_at?: string;
    /**
     * Whether advertisement of the prefix to the Internet may be dynamically enabled
     * or disabled.
     */
    on_demand_enabled?: boolean;
    /**
     * Whether advertisement status of the prefix is locked, meaning it cannot be
     * changed.
     */
    on_demand_locked?: boolean;
}
export type PrefixDeleteResponse = unknown | Array<unknown> | string;
export interface PrefixCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param: Autonomous System Number (ASN) the prefix will be advertised under.
     */
    asn: number | null;
    /**
     * Body param: IP Prefix in Classless Inter-Domain Routing format.
     */
    cidr: string;
    /**
     * Body param: Identifier for the uploaded LOA document.
     */
    loa_document_id: string | null;
}
export interface PrefixListParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface PrefixDeleteParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface PrefixEditParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param: Description of the prefix.
     */
    description: string;
}
export interface PrefixGetParams {
    /**
     * Identifier
     */
    account_id: string;
}
export declare namespace Prefixes {
    export import AddressingIpamPrefixes = PrefixesAPI.AddressingIpamPrefixes;
    export import PrefixDeleteResponse = PrefixesAPI.PrefixDeleteResponse;
    export import AddressingIpamPrefixesSinglePage = PrefixesAPI.AddressingIpamPrefixesSinglePage;
    export import PrefixCreateParams = PrefixesAPI.PrefixCreateParams;
    export import PrefixListParams = PrefixesAPI.PrefixListParams;
    export import PrefixDeleteParams = PrefixesAPI.PrefixDeleteParams;
    export import PrefixEditParams = PrefixesAPI.PrefixEditParams;
    export import PrefixGetParams = PrefixesAPI.PrefixGetParams;
    export import BGP = BGPAPI.BGP;
    export import Delegations = DelegationsAPI.Delegations;
    export import AddressingIpamDelegations = DelegationsAPI.AddressingIpamDelegations;
    export import DelegationDeleteResponse = DelegationsAPI.DelegationDeleteResponse;
    export import AddressingIpamDelegationsSinglePage = DelegationsAPI.AddressingIpamDelegationsSinglePage;
    export import DelegationCreateParams = DelegationsAPI.DelegationCreateParams;
    export import DelegationListParams = DelegationsAPI.DelegationListParams;
    export import DelegationDeleteParams = DelegationsAPI.DelegationDeleteParams;
}
//# sourceMappingURL=prefixes.d.ts.map