UNPKG

epic-p2p-shipping

Version:
18 lines (17 loc) 835 B
export declare type BranchName<T extends ShippingBranch<any, any>> = T extends ShippingBranch<infer R, any> ? R : never; export declare type BranchNodes<T extends ShippingBranch<any, any>> = T extends ShippingBranch<infer B, infer R> ? MergeUnion<B, keyof R> : never; export declare type MergeUnion<X, Y> = [...[X], ...[Y]][number]; export declare type NodeAmount = { to: number; from: number; }; export declare class ShippingBranch<T extends string, N extends Record<string, NodeAmount>> { protected name: T; protected Amounts: N; constructor(name: T, Amounts: N); has: (node: string) => boolean; getName: () => T; getNodes: () => Array<keyof N>; setAmount: (to: MergeUnion<T, keyof N>, amount: NodeAmount) => this; getAmount: (to: MergeUnion<T, keyof N>) => N[T | keyof N]; }