interface ICIDRBlockArgs {
    addr: number;
    prefix: number;
}
export declare class CIDRBlock {
    /**
     * Construct a [[CIDRBlock]] object from four IP component numbers (eg: a.b.c.d) and a prefix. The network
     * address is sanitized by zeroing all the bits after the prefix.
     * @throws If any IP component number is invalid or if the prefix is invalid.
     */
    static fromNumbers(a: number, b: number, c: number, d: number, prefix: number): CIDRBlock;
    /**
     * Parse a string into a CIDR block.
     * @throws If the stirng is not a valid CIDR block
     */
    static fromString(cidr: string): CIDRBlock;
    protected static fromNumbersInner(a: number, b: number, c: number, d: number, prefix: number): ICIDRBlockArgs;
    protected static fromStringInner(cidr: string): ICIDRBlockArgs;
    private static checkIPBoundaries;
    private static checkPrefix;
    private static networkAddressToString;
    readonly networkPrefix: number;
    private innerNetworkAddr;
    protected constructor(networkAddr: number, prefix: number);
    get networkAddress(): string;
    /**
     * Return the broadcast address of this CIDR block.
     */
    get broadcastAddress(): string;
    /**
     * Return a generator yielding all the IP address this block can contain. It doesn't yield the network address and
     * the broadcast address.
     */
    ipAddress(): IterableIterator<string>;
    /**
     * Return the CIDR notation of this block
     */
    toString(): string;
    /**
     * Split the CIDR block into at least `requiredSubnetAmount`.
     * @returns The new CIDR blocks generated from the split
     * @throws If the block can't be divided by at least `requiredSubnetAmount` or if `requiredSubnetAmount` is negative
     */
    split(requiredSubnetAmount: number): CIDRBlock[];
    /**
     * Return the maximum address index usable with {@link CIDRBlock.getAddress}
     */
    get maxAddressIndex(): number;
    /**
     * Return the i-th address inside this CIDR Block.
     *
     * Note that `getAddress(0)` is equivalent [[CIDRBlock.networkAddress]],
     * `this.getAddress(this.maxAddressIndex)` is equivaent to [[CIDRBlock.broadcastAddress]]
     *
     * @throws if `i` is not an integer between 0 and [[CIDRBlock.maxAddressIndex]]
     */
    getAddress(i: number): string;
}
export {};
