UNPKG

@hank.chat/types

Version:
65 lines (64 loc) 2.18 kB
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { AccessCheckOperator } from "./access_check_operator"; /** * An individual access check * * Individual access checks test a user for specific access, or can be a * nested chain. */ export interface AccessCheck { kind?: { $case: "chain"; value: AccessCheckChain; } | { $case: "user"; value: string; } | { $case: "role"; value: string; } | undefined; } /** * A chain of acess checks * * Access Checks are used to determine if a user has access to a piece of * functionality. A chain of checks and nested chains can be used to represent * access logic. */ export interface AccessCheckChain { /** * The operator to use for this chain, i.e. AND/OR * * All access checks in this chain will be combined using this operator. */ operator: AccessCheckOperator; /** A list of access checks to execute in this chain */ checks: AccessCheck[]; } export declare const AccessCheck: MessageFns<AccessCheck>; export declare const AccessCheckChain: MessageFns<AccessCheckChain>; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends { $case: string; value: unknown; } ? { $case: T["$case"]; value?: DeepPartial<T["value"]>; } : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]>; } : Partial<T>; type KeysOfUnion<T> = T extends T ? keyof T : never; type Exact<P, I extends P> = P extends Builtin ? P : P & { [K in keyof P]: Exact<P[K], I[K]>; } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never; }; interface MessageFns<T> { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; fromJSON(object: any): T; toJSON(message: T): unknown; create<I extends Exact<DeepPartial<T>, I>>(base?: I): T; fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T; } export {};