epic-p2p-shipping
Version:
A Point to Point Shipping calculation library.
18 lines (17 loc) • 835 B
TypeScript
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];
}