import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * ## # LinkedIn Identity Provider Resource
 *
 * The LinkedIn identity provider type will use OAuth 2.0 to authenticate a user with LinkedIn. It will also provide a
 * `Login with LinkedIn` button on FusionAuth’s login page that will direct a user to the LinkedIn login page.
 * Additionally, after successful user authentication, this identity provider will call LinkedIn’s `/v2/me` and
 * `/v2/emailAddress` APIs to load additional details about the user and store them in FusionAuth.
 *
 * The email address returned by the LinkedIn `/v2/emailAddress` API will be used to create or look up the existing user.
 * Additional claims returned by LinkedIn can be used to reconcile the User to FusionAuth by using a LinkedIn Reconcile
 * lambda. Unless you assign a reconcile lambda to this provider, only the email address will be used from the available
 * claims returned by LinkedIn.
 *
 * FusionAuth will also store the LinkedIn `accessToken` returned from the login endpoint in the `identityProviderLink`
 * object. This object is accessible using the Link API.
 *
 * The `identityProviderLink` object stores the token so that you can use it in your application to call LinkedIn APIs on
 * behalf of the user if desired.
 *
 * [LinkedIn Identity Providers API](https://fusionauth.io/docs/v1/tech/apis/identity-providers/linkedin)
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as fusionauth from "pulumi-fusionauth";
 *
 * const linkedin = new fusionauth.FusionAuthIdpLinkedIn("linkedin", {
 *     applicationConfigurations: [{
 *         applicationId: fusionauth_application.myapp.id,
 *         createRegistration: true,
 *         enabled: true,
 *     }],
 *     buttonText: "Login with LinkedIn",
 *     debug: false,
 *     enabled: true,
 *     clientId: "9876543210",
 *     clientSecret: "716a572f917640698cdb99e9d7e64115",
 *     scope: "r_emailaddress r_liteprofile",
 * });
 * ```
 */
export declare class FusionAuthIdpLinkedIn extends pulumi.CustomResource {
    /**
     * Get an existing FusionAuthIdpLinkedIn resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: FusionAuthIdpLinkedInState, opts?: pulumi.CustomResourceOptions): FusionAuthIdpLinkedIn;
    /**
     * Returns true if the given object is an instance of FusionAuthIdpLinkedIn.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is FusionAuthIdpLinkedIn;
    /**
     * The configuration for each Application that the identity provider is enabled for.
     */
    readonly applicationConfigurations: pulumi.Output<outputs.FusionAuthIdpLinkedInApplicationConfiguration[] | undefined>;
    /**
     * The top-level button text to use on the FusionAuth login page for this Identity Provider.
     */
    readonly buttonText: pulumi.Output<string>;
    /**
     * The top-level LinkedIn client id for your Application. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
     */
    readonly clientId: pulumi.Output<string>;
    /**
     * The top-level client secret to use with the LinkedIn Identity Provider when retrieving the long-lived token. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
     */
    readonly clientSecret: pulumi.Output<string>;
    /**
     * Determines if debug is enabled for this provider. When enabled, an Event Log is created each time this provider is invoked to reconcile a login.
     */
    readonly debug: pulumi.Output<boolean | undefined>;
    /**
     * Determines if this provider is enabled. If it is false then it will be disabled globally.
     */
    readonly enabled: pulumi.Output<boolean | undefined>;
    /**
     * The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.
     */
    readonly lambdaReconcileId: pulumi.Output<string>;
    /**
     * The linking strategy to use when creating the link between the Facebook Identity Provider and the user.
     * The valid values are:
     * * `CreatePendingLink` - Do not automatically link, instead return a pending link identifier that can be used to link to an existing user.
     * * `LinkAnonymously` - Always create a link based upon the unique Id returned by the identity provider. A username or email is not required and will not be used to link the user. A reconcile lambda will not be used in this configuration.
     * * `LinkByEmail` - Link to an existing user based upon email. A user will be created with the email returned by the identity provider if one does not already exist.
     * * `LinkByEmailForExistingUser` - Only link to an existing user based upon email. A user will not be created if one does not already exist with email returned by the identity provider.
     * * `LinkByUsername` - Link to an existing user based upon username. A user will be created with the username returned by the identity provider if one does not already exist.
     * * `LinkByUsernameForExistingUser` - Only link to an existing user based upon username. A user will not be created if one does not already exist with username returned by the identity provider.
     */
    readonly linkingStrategy: pulumi.Output<string>;
    /**
     * The top-level scope that you are requesting from LinkedIn.
     */
    readonly scope: pulumi.Output<string | undefined>;
    /**
     * The configuration for each Tenant that limits the number of links a user may have for a particular identity provider.
     */
    readonly tenantConfigurations: pulumi.Output<outputs.FusionAuthIdpLinkedInTenantConfiguration[] | undefined>;
    /**
     * Create a FusionAuthIdpLinkedIn resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: FusionAuthIdpLinkedInArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering FusionAuthIdpLinkedIn resources.
 */
export interface FusionAuthIdpLinkedInState {
    /**
     * The configuration for each Application that the identity provider is enabled for.
     */
    applicationConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInApplicationConfiguration>[]>;
    /**
     * The top-level button text to use on the FusionAuth login page for this Identity Provider.
     */
    buttonText?: pulumi.Input<string>;
    /**
     * The top-level LinkedIn client id for your Application. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
     */
    clientId?: pulumi.Input<string>;
    /**
     * The top-level client secret to use with the LinkedIn Identity Provider when retrieving the long-lived token. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
     */
    clientSecret?: pulumi.Input<string>;
    /**
     * Determines if debug is enabled for this provider. When enabled, an Event Log is created each time this provider is invoked to reconcile a login.
     */
    debug?: pulumi.Input<boolean>;
    /**
     * Determines if this provider is enabled. If it is false then it will be disabled globally.
     */
    enabled?: pulumi.Input<boolean>;
    /**
     * The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.
     */
    lambdaReconcileId?: pulumi.Input<string>;
    /**
     * The linking strategy to use when creating the link between the Facebook Identity Provider and the user.
     * The valid values are:
     * * `CreatePendingLink` - Do not automatically link, instead return a pending link identifier that can be used to link to an existing user.
     * * `LinkAnonymously` - Always create a link based upon the unique Id returned by the identity provider. A username or email is not required and will not be used to link the user. A reconcile lambda will not be used in this configuration.
     * * `LinkByEmail` - Link to an existing user based upon email. A user will be created with the email returned by the identity provider if one does not already exist.
     * * `LinkByEmailForExistingUser` - Only link to an existing user based upon email. A user will not be created if one does not already exist with email returned by the identity provider.
     * * `LinkByUsername` - Link to an existing user based upon username. A user will be created with the username returned by the identity provider if one does not already exist.
     * * `LinkByUsernameForExistingUser` - Only link to an existing user based upon username. A user will not be created if one does not already exist with username returned by the identity provider.
     */
    linkingStrategy?: pulumi.Input<string>;
    /**
     * The top-level scope that you are requesting from LinkedIn.
     */
    scope?: pulumi.Input<string>;
    /**
     * The configuration for each Tenant that limits the number of links a user may have for a particular identity provider.
     */
    tenantConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInTenantConfiguration>[]>;
}
/**
 * The set of arguments for constructing a FusionAuthIdpLinkedIn resource.
 */
export interface FusionAuthIdpLinkedInArgs {
    /**
     * The configuration for each Application that the identity provider is enabled for.
     */
    applicationConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInApplicationConfiguration>[]>;
    /**
     * The top-level button text to use on the FusionAuth login page for this Identity Provider.
     */
    buttonText: pulumi.Input<string>;
    /**
     * The top-level LinkedIn client id for your Application. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
     */
    clientId: pulumi.Input<string>;
    /**
     * The top-level client secret to use with the LinkedIn Identity Provider when retrieving the long-lived token. This value is retrieved from the LinkedIn developer website when you set up your LinkedIn app.
     */
    clientSecret: pulumi.Input<string>;
    /**
     * Determines if debug is enabled for this provider. When enabled, an Event Log is created each time this provider is invoked to reconcile a login.
     */
    debug?: pulumi.Input<boolean>;
    /**
     * Determines if this provider is enabled. If it is false then it will be disabled globally.
     */
    enabled?: pulumi.Input<boolean>;
    /**
     * The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.
     */
    lambdaReconcileId?: pulumi.Input<string>;
    /**
     * The linking strategy to use when creating the link between the Facebook Identity Provider and the user.
     * The valid values are:
     * * `CreatePendingLink` - Do not automatically link, instead return a pending link identifier that can be used to link to an existing user.
     * * `LinkAnonymously` - Always create a link based upon the unique Id returned by the identity provider. A username or email is not required and will not be used to link the user. A reconcile lambda will not be used in this configuration.
     * * `LinkByEmail` - Link to an existing user based upon email. A user will be created with the email returned by the identity provider if one does not already exist.
     * * `LinkByEmailForExistingUser` - Only link to an existing user based upon email. A user will not be created if one does not already exist with email returned by the identity provider.
     * * `LinkByUsername` - Link to an existing user based upon username. A user will be created with the username returned by the identity provider if one does not already exist.
     * * `LinkByUsernameForExistingUser` - Only link to an existing user based upon username. A user will not be created if one does not already exist with username returned by the identity provider.
     */
    linkingStrategy?: pulumi.Input<string>;
    /**
     * The top-level scope that you are requesting from LinkedIn.
     */
    scope?: pulumi.Input<string>;
    /**
     * The configuration for each Tenant that limits the number of links a user may have for a particular identity provider.
     */
    tenantConfigurations?: pulumi.Input<pulumi.Input<inputs.FusionAuthIdpLinkedInTenantConfiguration>[]>;
}
