import { Either } from "fp-ts/lib/Either";
import { TaskEither } from "fp-ts/lib/TaskEither";
import { IDPEntityDescriptor } from "../types/IDPEntityDescriptor";
/**
 * Parse a string that represents an XML file containing
 * the ipd Metadata and converts it into an array of IDPEntityDescriptor
 *
 * Required namespace definitions into the XML are
 *  xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" and xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
 *
 * An example file is provided in /test_idps/spid-entities-idps.xml of this project.
 */
export declare const parseIdpMetadata: (idpMetadataPage: string) => Either<Error, ReadonlyArray<IDPEntityDescriptor>>;
/**
 * Map provided idpMetadata into an object with idp key whitelisted in ipdIds.
 * Mapping is based on entityID property
 */
export declare const mapIpdMetadata: (idpMetadata: ReadonlyArray<IDPEntityDescriptor>, idpIds: Record<string, string>) => Record<string, IDPEntityDescriptor>;
/**
 * Lazy version of mapIpdMetadata()
 */
export declare const mapIpdMetadataL: (idpIds: Record<string, string>) => (idpMetadata: ReadonlyArray<IDPEntityDescriptor>) => Record<string, IDPEntityDescriptor>;
/**
 * Fetch an XML from a remote URL
 */
export declare const fetchMetadataXML: (idpMetadataUrl: string) => TaskEither<Error, string>;
/**
 * Load idp Metadata from a remote url, parse infos and return a mapped and whitelisted idp options
 * for spidStrategy object.
 */
export declare const fetchIdpsMetadata: (idpMetadataUrl: string, idpIds: Record<string, string>) => TaskEither<Error, Record<string, IDPEntityDescriptor>>;
/**
 * This method expects in input a Record where key are idp identifier
 * and values are an XML string (idp metadata).
 * Provided metadata are parsed and converted into IDP Entity Descriptor objects.
 */
export declare const parseStartupIdpsMetadata: (idpsMetadata: Record<string, string>) => Record<string, IDPEntityDescriptor>;
