import { GuidAccepted, IGuidImmutable, IGuidMutable } from "@ef-carbon/primitive"; import { IBaseImmutable, IBaseMutable, IImmutable as ILinkImmutable, IMutable as ILinkMutable } from "../ILink"; import Omit from "../Omit"; import Type from "./Type"; export declare type ILinkConditionalNestedMutable = Exclude; export declare type ILinkConditionalNestedImmutable = Exclude; export interface ILinkConditionalImmutable extends IBaseImmutable { readonly type: Type.Conditional; readonly conditions: { readonly [conditional: string]: string | IGuidImmutable | ILinkConditionalNestedImmutable; }; readonly fallback: string | IGuidImmutable | ILinkConditionalNestedImmutable; } export interface ILinkConditionalMutable extends Omit, IBaseMutable { conditions: { [conditional: string]: string | IGuidMutable | ILinkConditionalNestedMutable; }; fallback: string | IGuidMutable | ILinkConditionalNestedMutable; } export interface ILinkConditionalOptions { readonly conditions: { [condition: string]: GuidAccepted | ILinkConditionalNestedImmutable; } | Iterable<[string, GuidAccepted | ILinkConditionalNestedImmutable]>; readonly fallback: GuidAccepted | ILinkConditionalNestedImmutable; readonly redirect?: GuidAccepted; } export interface ILinkConditionalStatic { new (init: ILinkConditionalOptions): ILinkConditionalMutable; } export { ILinkConditionalStatic as IStatic, ILinkConditionalOptions as IOptions, ILinkConditionalMutable as IMutable, ILinkConditionalImmutable as IImmutable, ILinkConditionalNestedMutable as INestedMutable, ILinkConditionalNestedImmutable as INestedImmutable, }; export default ILinkConditionalMutable;