the-wireguard-effect
Version:
Cross platform wireguard api client for nodejs built on wireguard-go with effect-ts
429 lines • 19.2 kB
TypeScript
/**
* Internet schemas for wireguard configuration.
*
* @since 1.0.0
*/
import * as Schema from "effect/Schema";
/**
* Transforms a `number` of seconds into a `Duration`.
*
* @since 1.0.0
* @category Schemas
*/
export declare const DurationFromSeconds: Schema.decodeTo<Schema.Duration, Schema.Int, never, never>;
/**
* An IPv4 wireguard endpoint, which consists of an IPv4 address followed by a
* nat port then an optional local port. If only one port is provided, it is
* assumed that the nat port and listen port are the same.
*
* @since 1.0.0
* @category Schemas
* @example
* ```ts
*
* import * as assert from "node:assert";
*
* import * as Schema from "effect/Schema";
* import { IPv4Endpoint } from "the-wireguard-effect/InternetSchemas";
*
* const decodeEndpoint = Schema.decodeSync(IPv4Endpoint);
* const endpoint1 = decodeEndpoint("1.2.3.4:51820");
* const endpoint2 = decodeEndpoint("1.2.3.4:51820:41820");
*
* const endpoint3 = decodeEndpoint({
* ip: "1.2.3.4",
* port: 51820,
* family: "ipv4",
* });
*
* const endpoint4 = decodeEndpoint({
* ip: "1.2.3.4",
* natPort: 51820,
* listenPort: 41820,
* family: "ipv4",
* });
* ```;
*/
export declare const IPv4Endpoint: Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>;
/**
* An IPv6 wireguard endpoint, which consists of an IPv6 address in square
* brackets followed by a nat port then an optional local port. If only one port
* is provided, it is assumed that the nat port and listen port are the same.
*
* @since 1.0.0
* @category Schemas
* @example
* ```ts
*
* import * as assert from "node:assert";
*
* import * as Schema from "effect/Schema";
* import { IPv6Endpoint } from "the-wireguard-effect/InternetSchemas";
*
* const decodeEndpoint = Schema.decodeSync(IPv6Endpoint);
* const endpoint1 = decodeEndpoint(
* "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:51820"
* );
* const endpoint2 = decodeEndpoint(
* "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:51820:41820"
* );
*
* const endpoint3 = decodeEndpoint({
* ip: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
* port: 51820,
* family: "ipv6",
* });
*
* const endpoint4 = decodeEndpoint({
* ip: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
* natPort: 51820,
* listenPort: 41820,
* family: "ipv6",
* });
* ```;
*/
export declare const IPv6Endpoint: Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>;
/**
* A hostname wireguard endpoint, which consists of a hostname followed by a\
* Nat port then an optional local port. If only one port is provided, it is
* assumed that the nat port and listen port are the same.
*
* @since 1.0.0
* @category Schemas
*/
export declare const HostnameEndpoint: Schema.decodeTo<Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly host: Schema.String;
readonly port: Schema.Number;
}>, Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>;
/**
* A wireguard endpoint, which is either an IPv4 or IPv6 endpoint.
*
* @since 1.0.0
* @category Schemas
* @example
* import * as Schema from "effect/Schema";
*
* import { Endpoint } from "the-wireguard-effect/InternetSchemas";
*
* const decodeEndpoint = Schema.decodeSync(Endpoint);
* const endpoint1 = decodeEndpoint("1.2.3.4:51820");
* const endpoint2 = decodeEndpoint("1.2.3.4:51820:41820");
*
* const endpoint3 = decodeEndpoint({
* ip: "1.2.3.4",
* port: 51820,
* family: "ipv4",
* });
*
* const endpoint4: Endpoint = decodeEndpoint({
* ip: "1.2.3.4",
* natPort: 51820,
* listenPort: 41820,
* family: "ipv4",
* });
*
* const endpoint5 = decodeEndpoint(
* "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:51820"
* );
* const endpoint6 = decodeEndpoint(
* "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:51820:41820"
* );
*
* const endpoint7 = decodeEndpoint({
* ip: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
* port: 51820,
* family: "ipv6",
* });
*
* const endpoint8: Endpoint = decodeEndpoint({
* ip: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
* natPort: 51820,
* listenPort: 41820,
* family: "ipv6",
* });
* ```;
*/
export declare const Endpoint: Schema.Union<readonly [Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly host: Schema.String;
readonly port: Schema.Number;
}>, Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>]>;
/**
* A wireguard setup data, which consists of an endpoint followed by an address.
*
* @since 1.0.0
* @category Schemas
* @example
* import * as Schema from "effect/Schema";
* import { SetupData } from "the-wireguard-effect/InternetSchemas";
*
* const decodeSetupData = Schema.decodeSync(SetupData);
* const setupData = decodeSetupData(["1.1.1.1:51280", "10.0.0.1"]);
* ```;
*/
export declare const IPv4SetupData: Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>]>;
/**
* A wireguard setup data, which consists of an endpoint followed by an address.
*
* @since 1.0.0
* @category Schemas
* @example
* import * as Schema from "effect/Schema";
* import { SetupData } from "the-wireguard-effect/InternetSchemas";
*
* const decodeSetupData = Schema.decodeSync(SetupData);
* const setupData = decodeSetupData(["1.1.1.1:51280", "10.0.0.1"]);
* ```;
*/
export declare const IPv6SetupData: Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>]>;
/**
* A wireguard setup data, which consists of an endpoint followed by an address.
*
* @since 1.0.0
* @category Schemas
* @see {@link IPv4}
* @see {@link HostnameEndpoint}
*/
export declare const HostnameIPv4SetupData: Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly host: Schema.String;
readonly port: Schema.Number;
}>, Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>]>;
/**
* A wireguard setup data, which consists of an endpoint followed by an address.
*
* @since 1.0.0
* @category Schemas
* @see {@link IPv6}
* @see {@link HostnameEndpoint}
*/
export declare const HostnameIPv6SetupData: Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly host: Schema.String;
readonly port: Schema.Number;
}>, Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>]>;
/**
* A wireguard setup data, which consists of an endpoint followed by an address.
*
* @since 1.0.0
* @category Schemas
* @example
* ```ts
*
* import * as assert from "node:assert";
*
* import * as Schema from "effect/Schema";
* import { SetupData } from "the-wireguard-effect/InternetSchemas";
*
* const decodeSetupData = Schema.decodeSync(SetupData);
* const setupData = decodeSetupData(["1.1.1.1:51280", "10.0.0.1"]);
* ```;
*
* @see {@link Address}
* @see {@link Endpoint}
*/
export declare const SetupData: Schema.Union<readonly [Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv4">;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>]>, Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly address: Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly ip: Schema.String;
readonly port: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.Struct<{
readonly ip: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
readonly family: Schema.Literal<"ipv6">;
}>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.Literal<"[">, Schema.String, Schema.Literal<"]">, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>]>, Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly host: Schema.String;
readonly port: Schema.Number;
}>, Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv4">;
readonly ip: Schema.brand<Schema.String, "IPv4">;
}>, Schema.String, never, never>]>, Schema.Tuple<readonly [Schema.decodeTo<Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.brand<Schema.Int, "Port">;
readonly listenPort: Schema.brand<Schema.Int, "Port">;
}>, Schema.Union<readonly [Schema.Struct<{
readonly host: Schema.String;
readonly port: Schema.Number;
}>, Schema.Struct<{
readonly host: Schema.String;
readonly natPort: Schema.Number;
readonly listenPort: Schema.Number;
}>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number]>, Schema.TemplateLiteral<readonly [Schema.String, Schema.Literal<":">, Schema.Number, Schema.Literal<":">, Schema.Number]>]>, never, never>, Schema.decodeTo<Schema.Struct<{
readonly family: Schema.Literal<"ipv6">;
readonly ip: Schema.brand<Schema.String, "IPv6">;
}>, Schema.String, never, never>]>]>;
//# sourceMappingURL=InternetSchemas.d.ts.map