/** * The `ShardId` module models the address of a shard inside an Effect Cluster * shard group. A shard id is made from a string `group` and numeric `id`, and * the module gives that pair stable equality, hashing, primary-key behavior, * schema support, and conversion to and from the `group:id` string form used by * routing and storage boundaries. * * @stability unstable * @since 4.0.0 */ import * as Equal from "../Equal.ts"; import * as Hash from "../Hash.ts"; import * as PrimaryKey from "../PrimaryKey.ts"; import * as S from "../Schema.ts"; declare const TypeId = "~effect/cluster/ShardId"; /** * Identifier for a shard within a shard group, with equality, hashing, and primary * key behavior based on the `group:id` string form. * * @stability unstable * @category models * @since 4.0.0 */ export interface ShardId extends Equal.Equal, Hash.Hash, PrimaryKey.PrimaryKey { readonly [TypeId]: typeof TypeId; readonly group: string; readonly id: number; } /** * Returns `true` when the value carries the `ShardId` runtime marker. * * @stability unstable * @category guards * @since 4.0.0 */ export declare const isShardId: (u: unknown) => u is ShardId; /** * Schema for shard identifiers encoded as `{ group, id }` objects and decoded * via `make`. * * @stability unstable * @category schemas * @since 4.0.0 */ export declare const ShardId: S.declare; /** * Creates or reuses the cached `ShardId` for the specified shard group and numeric * id. * * **When to use** * * Use to create a `ShardId` when the shard group and numeric id are already * known, such as after a routing decision or after decoding stored shard-id * parts. * * **Details** * * Repeated calls with the same `group` and `id` return the same cached * `ShardId` instance. The returned value stores those fields, compares by * `group` and `id`, formats as `group:id`, and uses that string form for * hashing and primary keys. * * **Gotchas** * * `make` does not compute a shard from an entity id or check whether the shard * belongs to the current sharding configuration. Pass the shard group and * numeric id produced by the routing or storage layer. * * @see {@link toString} for formatting an existing shard id as `group:id` * @see {@link fromString} for constructing a cached shard id from the `group:id` string form * * @stability unstable * @category constructors * @since 4.0.0 */ export declare const make: (group: string, id: number) => ShardId; /** * Formats a shard identifier as `group:id`. * * @stability unstable * @category converting * @since 4.0.0 */ export declare const toString: (shardId: { readonly group: string; readonly id: number; }) => string; /** * Parses a `group:id` string into plain shard id parts. * * **Details** * * Throws an `Error` when the string has no colon separator or the id segment is * not numeric. * * @stability unstable * @category decoding * @since 4.0.0 */ export declare function fromStringEncoded(s: string): { readonly group: string; readonly id: number; }; /** * Parses a `group:id` string into a cached `ShardId`. * * **Details** * * Throws an `Error` when the string has no colon separator or the id segment is * not numeric. * * @stability unstable * @category decoding * @since 4.0.0 */ export declare function fromString(s: string): ShardId; export {}; //# sourceMappingURL=ShardId.d.ts.map