import { SetupLink, SetupLinkCreatePayload, Storable, PaginationParams, SetupLinkService, JacksonOption } from '../typings';
interface FilterByParams extends PaginationParams {
    service?: SetupLinkService;
    tenant?: string;
    product?: string;
}
export type RemoveSetupLinkParams = {
    id: string;
} | {
    service: SetupLinkService;
    tenant: string;
    product: string;
};
export declare class SetupLinkController {
    setupLinkStore: Storable;
    opts: JacksonOption;
    constructor({ setupLinkStore, opts }: {
        setupLinkStore: any;
        opts: any;
    });
    /**
     * @openapi
     * components:
     *   schemas:
     *     SetupLink:
     *       type: object
     *       properties:
     *         setupID:
     *           type: string
     *           description: Setup link ID
     *         tenant:
     *           type: string
     *           description: Tenant
     *         product:
     *           type: string
     *           description: Product
     *         validTill:
     *           type: string
     *           description: Valid till timestamp
     *         url:
     *           type: string
     *           description: Setup link URL
     *       example:
     *         data:
     *           setupID: 0689f76f7b5aa22f00381a124cb4b153fc1a8c08
     *           tenant: acme
     *           product: my-app
     *           service: sso
     *           validTill: 1689849146690
     *           url: http://localhost:5225/setup/0b96a483ebfe0af0b561dda35a96647074d944631ff9e070
     *   parameters:
     *     setupLinkId:
     *       name: id
     *       in: query
     *       description: Setup link ID
     *       schema:
     *         type: string
     *     idParamGet:
     *       name: id
     *       in: query
     *       description: Setup Link ID
     *       schema:
     *         type: string
     *
     */
    /**
     * @openapi
     * /api/v1/sso/setuplinks:
     *   post:
     *     tags:
     *       - Setup Links | Single Sign On
     *     summary: Create a Setup Link
     *     operationId: create-sso-setup-link
     *     requestBody:
     *       content:
     *         application/json:
     *           schema:
     *             required:
     *               - defaultRedirectUrl
     *               - product
     *               - redirectUrl
     *               - tenant
     *             type: object
     *             properties:
     *               name:
     *                 type: string
     *                 description: Name of connection
     *               tenant:
     *                 type: string
     *                 description: Tenant
     *               product:
     *                 type: string
     *                 description: Product
     *               defaultRedirectUrl:
     *                 type: string
     *                 description: The redirect URL to use in the IdP login flow
     *               redirectUrl:
     *                 type: string
     *                 description: JSON encoded array containing a list of allowed redirect URLs
     *               expiryDays:
     *                 type: number
     *                 description: Days in number for the setup link to expire
     *                 default: 3
     *               regenerate:
     *                 type: boolean
     *                 description: If passed as true, it will remove the existing setup link and create a new one.
     *                 default: false
     *       required: true
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/SetupLink"
     * /api/v1/dsync/setuplinks:
     *   post:
     *     tags:
     *       - Setup Links | Directory Sync
     *     summary: Create a Setup Link
     *     operationId: create-dsync-setup-link
     *     requestBody:
     *       content:
     *         application/json:
     *           schema:
     *             required:
     *               - product
     *               - tenant
     *               - webhook_secret
     *               - webhook_url
     *             type: object
     *             properties:
     *               name:
     *                 type: string
     *                 description: Name of connection
     *               tenant:
     *                 type: string
     *                 description: Tenant
     *               product:
     *                 type: string
     *                 description: Product
     *               webhook_url:
     *                 type: string
     *                 description: The URL to send the directory sync events to
     *               webhook_secret:
     *                 type: string
     *                 description: The secret to sign the directory sync events
     *               expiryDays:
     *                 type: number
     *                 description: Days in number for the setup link to expire
     *                 default: 3
     *               regenerate:
     *                 type: boolean
     *                 description: If passed as true, it will remove the existing setup link and create a new one.
     *                 default: false
     *       required: true
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/SetupLink"
     */
    create(body: SetupLinkCreatePayload): Promise<SetupLink>;
    getByToken(token: string): Promise<SetupLink>;
    /**
     * @openapi
     * /api/v1/sso/setuplinks:
     *   delete:
     *     tags:
     *       - Setup Links | Single Sign On
     *     summary: Delete the Setup Link
     *     operationId: delete-sso-setup-link
     *     parameters:
     *       - name: tenant
     *         in: query
     *         description: Tenant
     *         required: true
     *         schema:
     *           type: string
     *       - name: product
     *         in: query
     *         description: Product
     *         required: true
     *         schema:
     *           type: string
     *       - name: id
     *         in: query
     *         description: Setup link ID
     *         schema:
     *           type: string
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               type: object
     *               example:
     *                 data: {}
     * /api/v1/dsync/setuplinks:
     *   delete:
     *     tags:
     *       - Setup Links | Directory Sync
     *     summary: Delete the Setup Link
     *     operationId: delete-dsync-setup-link
     *     parameters:
     *       - name: tenant
     *         in: query
     *         description: Tenant
     *         required: true
     *         schema:
     *           type: string
     *       - name: product
     *         in: query
     *         description: Product
     *         required: true
     *         schema:
     *           type: string
     *       - name: id
     *         in: query
     *         description: Setup link ID
     *         schema:
     *           type: string
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               type: object
     *               example:
     *                 data: {}
     */
    remove(params: RemoveSetupLinkParams): Promise<void>;
    isExpired(setupLink: SetupLink): boolean;
    /**
     * @openapi
     * /api/v1/sso/setuplinks/product:
     *   get:
     *     tags:
     *       - Setup Links | Single Sign On
     *     summary: Get the Setup Links by product
     *     operationId: get-sso-setup-link-by-product
     *     parameters:
     *       - $ref: '#/components/parameters/productParamGet'
     *       - $ref: '#/components/parameters/pageOffset'
     *       - $ref: '#/components/parameters/pageLimit'
     *       - $ref: '#/components/parameters/pageToken'
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               type: array
     *               items:
     *                 $ref: "#/components/schemas/SetupLink"
     * /api/v1/dsync/setuplinks/product:
     *   get:
     *     tags:
     *       - Setup Links | Directory Sync
     *     summary: Get the Setup Links by product
     *     operationId: get-dsync-setup-link-by-product
     *     parameters:
     *       - $ref: '#/components/parameters/productParamGet'
     *       - $ref: '#/components/parameters/pageOffset'
     *       - $ref: '#/components/parameters/pageLimit'
     *       - $ref: '#/components/parameters/pageToken'
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               type: array
     *               items:
     *                 $ref: "#/components/schemas/SetupLink"
     */
    filterBy(params: FilterByParams): Promise<{
        data: SetupLink[];
        pageToken?: string;
    }>;
    /**
     * @openapi
     * /api/v1/sso/setuplinks:
     *   get:
     *     tags:
     *       - Setup Links | Single Sign On
     *     summary: Get the Setup Link
     *     operationId: get-sso-setup-link
     *     parameters:
     *       - name: tenant
     *         in: query
     *         description: Tenant
     *         required: true
     *         schema:
     *           type: string
     *       - name: product
     *         in: query
     *         description: Product
     *         required: true
     *         schema:
     *           type: string
     *       - name: id
     *         in: query
     *         description: Setup Link ID
     *         schema:
     *           type: string
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/SetupLink"
     * /api/v1/dsync/setuplinks:
     *   get:
     *     tags:
     *       - Setup Links | Directory Sync
     *     summary: Get the Setup Link
     *     operationId: get-dsync-setup-link
     *     parameters:
     *       - name: tenant
     *         in: query
     *         description: Tenant
     *         required: true
     *         schema:
     *           type: string
     *       - name: product
     *         in: query
     *         description: Product
     *         required: true
     *         schema:
     *           type: string
     *       - name: id
     *         in: query
     *         description: Setup Link ID
     *         schema:
     *           type: string
     *     responses:
     *       200:
     *         description: Success
     *         content:
     *           application/json:
     *             schema:
     *               $ref: "#/components/schemas/SetupLink"
     */
    get(id: string): Promise<SetupLink>;
}
export {};
