import { State } from '../shared/State';
import { IdObjectSkeletonInterface, PagedResult } from './ApiTypes';
export type Saml2ProiderLocation = 'hosted' | 'remote';
export type Saml2ProviderStub = IdObjectSkeletonInterface & {
    entityId: string;
    location: Saml2ProiderLocation;
    roles: string[];
};
export type Saml2ProviderSkeleton = IdObjectSkeletonInterface & {
    entityId: string;
    entityLocation: Saml2ProiderLocation;
    serviceProvider: unknown;
    identityProvider: {
        assertionProcessing?: {
            attributeMapper?: {
                attributeMapperScript?: string;
            };
        };
        advanced?: {
            idpAdapter?: {
                idpAdapterScript?: string;
            };
        };
    };
    attributeQueryProvider: unknown;
    xacmlPolicyEnforcementPoint: unknown;
};
/**
 * Get all SAML2 entity providers
 * @returns {Promise<PagedResult<Saml2ProviderStub>>} a promise that resolves to an array of saml2 entity stubs
 */
export declare function getProviderStubs({ state, }: {
    state: State;
}): Promise<PagedResult<Saml2ProviderStub>>;
/**
 * Query providers matching the filter and return the requested fields
 * @param {string} filter CREST filter string, eg "entityId+eq+'${entityId}'" or "true" for all providers
 * @param {string[]} fields array of field names to include in the response
 * @returns {Promise<PagedResult<Saml2ProviderStub>>} a promise that resolves to an object containing an array of saml2 entities
 */
export declare function queryProviderStubs({ filter, fields, state, }: {
    filter?: string;
    fields?: string[];
    state: State;
}): Promise<PagedResult<Saml2ProviderStub>>;
/**
 * Geta SAML2 entity provider by location and id
 * @param {Saml2ProiderLocation} location Entity provider location
 * @param {string} entityId64 Base64-encoded, unpadded provider entity id
 * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
 */
export declare function getProvider({ location, entityId64, state, }: {
    location: Saml2ProiderLocation;
    entityId64: string;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Geta SAML2 entity provider by location and id
 * @param {Saml2ProiderLocation} location Entity provider location (hosted or remote)
 * @param {string} entityId64 Base64-encoded provider entity id
 * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
 */
export declare function deleteProvider({ location, entityId64, state, }: {
    location: Saml2ProiderLocation;
    entityId64: string;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Get a SAML2 entity provider's metadata URL by entity id
 * @param {string} entityId SAML2 entity id
 * @returns {string} the URL to get the metadata from
 */
export declare function getProviderMetadataUrl({ entityId, state, }: {
    entityId: string;
    state: State;
}): string;
/**
 * Get a SAML2 entity provider's metadata by entity id
 * @param {string} entityId SAML2 entity id
 * @returns {Promise<string>} a promise that resolves to an object containing a SAML2 metadata
 */
export declare function getProviderMetadata({ entityId, state, }: {
    entityId: string;
    state: State;
}): Promise<string>;
/**
 * Create a SAML2 entity provider
 * @param {Saml2ProiderLocation} location 'hosted' or 'remote'
 * @param {Saml2ProviderSkeleton} providerData Object representing a SAML entity provider
 * @param {string} metaData Base64-encoded metadata XML. Only required for remote providers
 * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
 */
export declare function createProvider({ location, providerData, metaData, state, }: {
    location: Saml2ProiderLocation;
    providerData: Saml2ProviderSkeleton;
    metaData?: string;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
/**
 * Update SAML2 entity provider
 * @param {Saml2ProiderLocation} location Entity provider location (hosted or remote)
 * @param {string} entityId SAML2 entity id
 * @param {Saml2ProviderSkeleton} providerData Object representing a SAML entity provider
 * @returns {Promise<Saml2ProviderSkeleton>} a promise that resolves to a saml2 entity provider object
 */
export declare function updateProvider({ location, entityId, providerData, state, }: {
    location: Saml2ProiderLocation;
    entityId?: string;
    providerData: Saml2ProviderSkeleton;
    state: State;
}): Promise<Saml2ProviderSkeleton>;
//# sourceMappingURL=Saml2Api.d.ts.map