import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as ACLsAPI from 'cloudflare/resources/magic-transit/sites/acls';
export declare class ACLs extends APIResource {
    /**
     * Creates a new Site ACL.
     */
    create(siteId: string, params: ACLCreateParams, options?: Core.RequestOptions): Core.APIPromise<ACLCreateResponse>;
    /**
     * Update a specific Site ACL.
     */
    update(siteId: string, aclIdentifier: string, params: ACLUpdateParams, options?: Core.RequestOptions): Core.APIPromise<ACLUpdateResponse>;
    /**
     * Lists Site ACLs associated with an account.
     */
    list(siteId: string, params: ACLListParams, options?: Core.RequestOptions): Core.APIPromise<ACLListResponse>;
    /**
     * Remove a specific Site ACL.
     */
    delete(siteId: string, aclIdentifier: string, params: ACLDeleteParams, options?: Core.RequestOptions): Core.APIPromise<ACLDeleteResponse>;
    /**
     * Get a specific Site ACL.
     */
    get(siteId: string, aclIdentifier: string, params: ACLGetParams, options?: Core.RequestOptions): Core.APIPromise<ACLGetResponse>;
}
export interface ACLCreateResponse {
    acls?: Array<ACLCreateResponse.ACL>;
}
export declare namespace ACLCreateResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    interface ACL {
        /**
         * Identifier
         */
        id?: string;
        /**
         * Description for the ACL.
         */
        description?: string;
        lan_1?: ACL.LAN1;
        lan_2?: ACL.LAN2;
        /**
         * The name of the ACL.
         */
        name?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace ACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLUpdateResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    acl?: ACLUpdateResponse.ACL;
}
export declare namespace ACLUpdateResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    interface ACL {
        /**
         * Identifier
         */
        id?: string;
        /**
         * Description for the ACL.
         */
        description?: string;
        lan_1?: ACL.LAN1;
        lan_2?: ACL.LAN2;
        /**
         * The name of the ACL.
         */
        name?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace ACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLListResponse {
    acls?: Array<ACLListResponse.ACL>;
}
export declare namespace ACLListResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    interface ACL {
        /**
         * Identifier
         */
        id?: string;
        /**
         * Description for the ACL.
         */
        description?: string;
        lan_1?: ACL.LAN1;
        lan_2?: ACL.LAN2;
        /**
         * The name of the ACL.
         */
        name?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace ACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLDeleteResponse {
    deleted?: boolean;
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    deleted_acl?: ACLDeleteResponse.DeletedACL;
}
export declare namespace ACLDeleteResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    interface DeletedACL {
        /**
         * Identifier
         */
        id?: string;
        /**
         * Description for the ACL.
         */
        description?: string;
        lan_1?: DeletedACL.LAN1;
        lan_2?: DeletedACL.LAN2;
        /**
         * The name of the ACL.
         */
        name?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace DeletedACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLGetResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    acl?: ACLGetResponse.ACL;
}
export declare namespace ACLGetResponse {
    /**
     * Bidirectional ACL policy for local network traffic within a site.
     */
    interface ACL {
        /**
         * Identifier
         */
        id?: string;
        /**
         * Description for the ACL.
         */
        description?: string;
        lan_1?: ACL.LAN1;
        lan_2?: ACL.LAN2;
        /**
         * The name of the ACL.
         */
        name?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace ACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    acl?: ACLCreateParams.ACL;
}
export declare namespace ACLCreateParams {
    interface ACL {
        lan_1: ACL.LAN1;
        lan_2: ACL.LAN2;
        /**
         * The name of the ACL.
         */
        name: string;
        /**
         * Description for the ACL.
         */
        description?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace ACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLUpdateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    acl?: ACLUpdateParams.ACL;
}
export declare namespace ACLUpdateParams {
    interface ACL {
        /**
         * Description for the ACL.
         */
        description?: string;
        lan_1?: ACL.LAN1;
        lan_2?: ACL.LAN2;
        /**
         * The name of the ACL.
         */
        name?: string;
        protocols?: Array<'tcp' | 'udp' | 'icmp'>;
    }
    namespace ACL {
        interface LAN1 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
        interface LAN2 {
            /**
             * The identifier for the LAN you want to create an ACL policy with.
             */
            lan_id: string;
            /**
             * The name of the LAN based on the provided lan_id.
             */
            lan_name?: string;
            /**
             * Array of ports on the provided LAN that will be included in the ACL. If no ports
             * are provided, communication on any port on this LAN is allowed.
             */
            ports?: Array<number>;
            /**
             * Array of subnet IPs within the LAN that will be included in the ACL. If no
             * subnets are provided, communication on any subnets on this LAN are allowed.
             */
            subnets?: Array<string | string>;
        }
    }
}
export interface ACLListParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface ACLDeleteParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface ACLGetParams {
    /**
     * Identifier
     */
    account_id: string;
}
export declare namespace ACLs {
    export import ACLCreateResponse = ACLsAPI.ACLCreateResponse;
    export import ACLUpdateResponse = ACLsAPI.ACLUpdateResponse;
    export import ACLListResponse = ACLsAPI.ACLListResponse;
    export import ACLDeleteResponse = ACLsAPI.ACLDeleteResponse;
    export import ACLGetResponse = ACLsAPI.ACLGetResponse;
    export import ACLCreateParams = ACLsAPI.ACLCreateParams;
    export import ACLUpdateParams = ACLsAPI.ACLUpdateParams;
    export import ACLListParams = ACLsAPI.ACLListParams;
    export import ACLDeleteParams = ACLsAPI.ACLDeleteParams;
    export import ACLGetParams = ACLsAPI.ACLGetParams;
}
//# sourceMappingURL=acls.d.ts.map