import type { Storable, JacksonOption, IdentityFederationApp, Records, GetByProductParams, AppRequestParams, Index } from '../../typings';
type NewAppParams = Pick<IdentityFederationApp, 'name' | 'tenant' | 'product' | 'acsUrl' | 'entityId' | 'tenants' | 'mappings' | 'type' | 'redirectUrl' | 'samlAudienceOverride'> & {
    logoUrl?: string;
    faviconUrl?: string;
    primaryColor?: string;
};
export declare class App {
    protected store: Storable;
    private opts;
    constructor({ store, opts }: {
        store: Storable;
        opts: JacksonOption;
    });
    /**
     * @openapi
     * components:
     *   schemas:
     *     IdentityFederationAppCreate:
     *       type: object
     *       properties:
     *         tenant:
     *           type: string
     *           description: Tenant
     *         product:
     *           type: string
     *           description: Product
     *         name:
     *           type: string
     *           description: Name
     *         acsUrl:
     *           type: string
     *           description: ACS URL
     *         entityId:
     *           type: string
     *           description: Entity ID
     *         logoUrl:
     *           type: string
     *           description: Logo URL
     *         faviconUrl:
     *           type: string
     *           description: Favicon URL
     *         primaryColor:
     *           type: string
     *           description: Primary color
     *         tenants:
     *           type: array
     *           items:
     *             type: string
     *           description: Mapping of tenants whose connections will be grouped under this Identity Federation app
     *         mappings:
     *           type: array
     *           items:
     *             $ref: "#/components/schemas/AttributeMapping"
     *           description: Mapping of attributes from the IdP to SP
     *         type:
     *           type: array
     *           items:
     *             type: string
     *           description: If creating an OIDC app, this should be set to 'oidc' otherwise it defaults to 'saml'
     *         redirectUrl:
     *           type: array
     *           items:
     *             type: string
     *           description: If creating an OIDC app, provide the redirect URL
     *         samlAudienceOverride:
     *           type: string
     *           description: Override the SAML Audience on a per app basis
     *     IdentityFederationApp:
     *       allOf:
     *         - $ref: "#/components/schemas/IdentityFederationAppCreate"
     *         - type: object
     *           required:
     *             - id
     *           properties:
     *             id:
     *               type: string
     *               description: App ID
     *     AttributeMapping:
     *       type: object
     *       properties:
     *         key:
     *           type: string
     *           description: SP attribute
     *         value:
     *           type: string
     *           description: IdP attribute
     *     IdentityFederationResponse:
     *       type: object
     *       properties:
     *         data:
     *           $ref: "#/components/schemas/IdentityFederationApp"
     *         error:
     *           $ref: "#/components/schemas/IdentityFederationError"
     *     IdentityFederationError:
     *       type: object
     *       properties:
     *         message:
     *           type: string
     *
     */
    /**
     * @openapi
     * /api/v1/identity-federation:
     *   post:
     *     tags:
     *       - Identity Federation
     *     summary: Create an Identity Federation app
     *     requestBody:
     *       content:
     *         application/json:
     *           schema:
     *             $ref: "#/components/schemas/IdentityFederationAppCreate"
     *             required:
     *               - name
     *               - product
     *               - tenant
     *       required: true
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/IdentityFederationResponse"
     */
    create({ name, type, redirectUrl, tenant, product, acsUrl, entityId, logoUrl, faviconUrl, primaryColor, tenants, mappings, samlAudienceOverride, }: NewAppParams): Promise<IdentityFederationApp>;
    /**
     * @openapi
     * /api/v1/identity-federation:
     *   get:
     *     tags:
     *       - Identity Federation
     *     summary: Get an Identity Federation app
     *     parameters:
     *       - name: id
     *         in: query
     *         description: App ID
     *         required: true
     *         schema:
     *           type: string
     *       - name: tenant
     *         in: query
     *         description: Tenant
     *         schema:
     *           type: string
     *       - name: product
     *         in: query
     *         description: Product
     *         schema:
     *           type: string
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/IdentityFederationResponse"
     */
    get(params: AppRequestParams): Promise<IdentityFederationApp>;
    /**
     * @openapi
     * /api/v1/identity-federation/product:
     *   get:
     *     tags:
     *       - Identity Federation
     *     summary: Get Identity Federation apps by product
     *     parameters:
     *       - name: product
     *         in: query
     *         description: Product
     *         required: true
     *         schema:
     *           type: string
     *       - $ref: '#/components/parameters/pageOffset'
     *       - $ref: '#/components/parameters/pageLimit'
     *       - $ref: '#/components/parameters/pageToken'
     *     responses:
     *        200:
     *          description: Success
     *          content:
     *            application/json:
     *               schema:
     *                 type: object
     *                 properties:
     *                   data:
     *                     type: array
     *                     items:
     *                       $ref: '#/components/schemas/IdentityFederationApp'
     *                   error:
     *                     $ref: '#/components/schemas/IdentityFederationError'
     *                   pageToken:
     *                     type: string
     *                     description: token for pagination
     */
    getByProduct({ product, pageOffset, pageLimit, pageToken }: GetByProductParams): Promise<Records<any>>;
    getByEntityId(entityId: string): Promise<IdentityFederationApp>;
    /**
     * @openapi
     * /api/v1/identity-federation:
     *   patch:
     *     tags:
     *       - Identity Federation
     *     summary: Update an Identity Federation app
     *     requestBody:
     *       content:
     *         application/json:
     *           schema:
     *             $ref: "#/components/schemas/IdentityFederationApp"
     *             required:
     *               - id
     *       required: true
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/IdentityFederationResponse"
     */
    update(params: Partial<IdentityFederationApp>): Promise<{
        id: string;
        type?: string;
        clientID?: string;
        clientSecret?: string;
        redirectUrl?: string[] | string;
        name: string;
        tenant: string;
        product: string;
        acsUrl: string;
        entityId: string;
        logoUrl: string | null;
        faviconUrl: string | null;
        primaryColor: string | null;
        tenants?: string[];
        mappings?: import("./types").AttributeMapping[] | null;
        samlAudienceOverride?: string | null;
    }>;
    getAll({ pageOffset, pageLimit, pageToken, }: {
        pageOffset?: number;
        pageLimit?: number;
        pageToken?: string;
    }): Promise<Records<IdentityFederationApp>>;
    /**
     * @openapi
     * /api/v1/identity-federation:
     *   delete:
     *     tags:
     *       - Identity Federation
     *     summary: Delete an Identity Federation app
     *     parameters:
     *       - name: id
     *         in: query
     *         description: App ID
     *         required: true
     *         schema:
     *           type: string
     *       - name: tenant
     *         in: query
     *         description: Tenant
     *         schema:
     *           type: string
     *       - name: product
     *         in: query
     *         description: Product
     *         schema:
     *           type: string
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               type: object
     *               properties:
     *                 error:
     *                   $ref: "#/components/schemas/IdentityFederationError"
     */
    delete(params: AppRequestParams): Promise<void>;
    getMetadata(samlAudienceOverride?: string): Promise<{
        xml: string;
        entityId: string;
        ssoUrl: string;
        x509cert: string;
    }>;
    getCount(idx?: Index): Promise<number | undefined>;
}
export {};
