UNPKG

the-moby-effect

Version:
216 lines 7.2 kB
/** * IPv4 or IPv6 cidr block schemas. * * @since 1.0.0 */ import type * as Family from "./family.js"; import * as Array from "effect/Array"; import * as Effect from "effect/Effect"; import * as ParseResult from "effect/ParseResult"; import * as Schema from "effect/Schema"; import * as Stream from "effect/Stream"; import * as Address from "./address.js"; import * as CidrBlockMask from "./cidrBlockMask.js"; import * as IPv4 from "./ipv4.js"; import * as IPv6 from "./ipv6.js"; declare const CidrBlockBase_base: Schema.Class<CidrBlockBase<"ipv4" | "ipv6">, { address: Address.$Address; mask: Schema.Union<[CidrBlockMask.$IPv4CidrMask, CidrBlockMask.$IPv6CidrMask]>; }, Schema.Struct.Encoded<{ address: Address.$Address; mask: Schema.Union<[CidrBlockMask.$IPv4CidrMask, CidrBlockMask.$IPv6CidrMask]>; }>, never, { readonly address: { readonly family: "ipv4"; readonly ip: IPv4.IPv4Brand; } | { readonly family: "ipv6"; readonly ip: IPv6.IPv6Brand; }; } & { readonly mask: CidrBlockMask.IPv4CidrMaskBrand | CidrBlockMask.IPv6CidrMaskBrand; }, {}, {}>; /** * @since 1.0.0 * @category Api interface */ export declare class CidrBlockBase<_Family extends Family.Family> extends CidrBlockBase_base { /** @since 1.0.0 */ readonly family: Family.Family; /** * The first address in the range given by this address' subnet, often * referred to as the Network Address. * * @since 1.0.0 */ protected get networkAddressAsBigint(): Effect.Effect<_Family extends IPv4.IPv4Family ? IPv4.IPv4BigintBrand : _Family extends IPv6.IPv6Family ? IPv6.IPv6BigintBrand : never, ParseResult.ParseError, never>; /** * The first address in the range given by this address' subnet, often * referred to as the Network Address. * * @since 1.0.0 */ networkAddress(): _Family extends IPv4.IPv4Family ? Effect.Effect<IPv4.IPv4, ParseResult.ParseError, never> : _Family extends IPv6.IPv6Family ? Effect.Effect<IPv6.IPv6, ParseResult.ParseError, never> : never; /** * The last address in the range given by this address' subnet, often * referred to as the Broadcast Address. * * @since 1.0.0 */ protected get broadcastAddressAsBigint(): Effect.Effect<_Family extends IPv4.IPv4Family ? IPv4.IPv4BigintBrand : _Family extends IPv6.IPv6Family ? IPv6.IPv6BigintBrand : never, ParseResult.ParseError, never>; /** * The last address in the range given by this address' subnet, often * referred to as the Broadcast Address. * * @since 1.0.0 */ broadcastAddress(): _Family extends IPv4.IPv4Family ? Effect.Effect<IPv4.IPv4, ParseResult.ParseError, never> : _Family extends IPv6.IPv6Family ? Effect.Effect<IPv6.IPv6, ParseResult.ParseError, never> : never; /** * A stream of all addresses in the range given by this address' subnet. * * @since 1.0.0 */ get range(): _Family extends IPv4.IPv4Family ? Stream.Stream<IPv4.IPv4, ParseResult.ParseError, never> : _Family extends IPv6.IPv6Family ? Stream.Stream<IPv6.IPv6, ParseResult.ParseError, never> : never; /** * The total number of addresses in the range given by this address' subnet. * * @since 1.0.0 */ get total(): Effect.Effect<bigint, ParseResult.ParseError, never>; /** * Finds the smallest CIDR block that contains all the given IP addresses. * * @since 1.0.0 */ static readonly cidrBlockForRange: <_Family_1 extends Family.Family>(inputs: _Family_1 extends IPv4.IPv4Family ? Array.NonEmptyReadonlyArray<IPv4.IPv4> : Array.NonEmptyReadonlyArray<IPv6.IPv6>) => _Family_1 extends IPv4.IPv4Family ? Effect.Effect<CidrBlockBase<"ipv4">, ParseResult.ParseError, never> : Effect.Effect<CidrBlockBase<"ipv6">, ParseResult.ParseError, never>; } /** * @since 1.0.0 * @category Api interface */ export interface $IPv4CidrBlock extends Schema.Annotable<$IPv4CidrBlock, CidrBlockBase<"ipv4">, { readonly address: string; readonly mask: number; }, never> { } /** * @since 1.0.0 * @category Decoded types */ export type IPv4CidrBlock = CidrBlockBase<"ipv4">; /** * @since 1.0.0 * @category Encoded types */ export type IPv4CidrBlockEncoded = Schema.Schema.Encoded<$IPv4CidrBlock>; /** * @since 1.0.0 * @category Schemas */ export declare const IPv4CidrBlock: $IPv4CidrBlock; /** * @since 1.0.0 * @category Api interface */ export interface $IPv4CidrBlockFromString extends Schema.Annotable<$IPv4CidrBlockFromString, CidrBlockBase<"ipv4">, `${string}/${number}`, never> { } /** * @since 1.0.0 * @category Decoded types */ export type IPv4CidrBlockFromString = Schema.Schema.Type<$IPv4CidrBlockFromString>; /** * @since 1.0.0 * @category Encoded types */ export type IPv4CidrBlockFromStringEncoded = Schema.Schema.Encoded<$IPv4CidrBlockFromString>; /** * A schema that transforms a `string` into a `CidrBlock`. * * @since 1.0.0 * @category Schemas */ export declare const IPv4CidrBlockFromString: $IPv4CidrBlockFromString; /** * @since 1.0.0 * @category Api interface */ export interface $IPv6CidrBlock extends Schema.transformOrFail<Schema.Struct<{ address: IPv6.$IPv6; mask: CidrBlockMask.$IPv6CidrMask; }>, typeof CidrBlockBase<"ipv6">, never> { } /** * @since 1.0.0 * @category Decoded types */ export type IPv6CidrBlock = CidrBlockBase<"ipv6">; /** * @since 1.0.0 * @category Encoded types */ export type IPv6CidrBlockEncoded = Schema.Schema.Encoded<$IPv6CidrBlock>; /** * @since 1.0.0 * @category Schemas */ export declare const IPv6CidrBlock: $IPv6CidrBlock; /** * @since 1.0.0 * @category Api interface */ export interface $IPv6CidrBlockFromString extends Schema.Annotable<$IPv6CidrBlockFromString, CidrBlockBase<"ipv6">, `${string}/${number}`, never> { } /** * @since 1.0.0 * @category Decoded types */ export type IPv6CidrBlockFromString = Schema.Schema.Type<$IPv6CidrBlockFromString>; /** * @since 1.0.0 * @category Encoded types */ export type IPv6CidrBlockFromStringEncoded = Schema.Schema.Encoded<$IPv6CidrBlockFromString>; /** * A schema that transforms a `string` into a `CidrBlock`. * * @since 1.0.0 * @category Schemas */ export declare const IPv6CidrBlockFromString: $IPv6CidrBlockFromString; /** * @since 1.0.0 * @category Api interface */ export interface $CidrBlock extends Schema.Union<[$IPv4CidrBlock, $IPv6CidrBlock]> { } /** * @since 1.0.0 * @category Schemas */ export declare const CidrBlock: $CidrBlock; /** * @since 1.0.0 * @category Api interface */ export interface $CidrBlockFromString extends Schema.Annotable<$CidrBlockFromString, CidrBlockBase<"ipv4"> | CidrBlockBase<"ipv6">, `${string}/${number}`, never> { } /** * @since 1.0.0 * @category Decoded types */ export type CidrBlockFromString = Schema.Schema.Type<$CidrBlockFromString>; /** * @since 1.0.0 * @category Encoded types */ export type CidrBlockFromStringEncoded = Schema.Schema.Encoded<$CidrBlockFromString>; /** * A schema that transforms a `string` into a `CidrBlock`. * * @since 1.0.0 * @category Schemas */ export declare const CidrBlockFromString: $CidrBlockFromString; export {}; //# sourceMappingURL=cidrBlock.d.ts.map