import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models/Guid";
import { LinkType, LinkTypeConfig } from "./linktype";
/**
 * Provider interface ILinkHandlerProvider
 * @interface
 * @description This class used as an abstract prototype to create new provider with handler function to handle link redirection
 */
export interface ILinkHandlerProvider {
    /**
     * Provider's name
     */
    name: string;
    /**
     * Provider's GUID
     */
    id: GuidValue;
    /**
     * Provider's weight
     * @description The number determines which order will be placed and called first among other providers
     */
    weight: number;
    /**
     * Handler function
     * @description The implementations of link handler, how the redirection will be executed based on the passing parameters
     * return url of navigated destination or undefined if not able to handle input link
     */
    handler: (url: string, linkType: LinkType, config?: LinkTypeConfig) => string;
}
