import { ExtendedIntegrationPluginId, FormComponentType, FormItem, FormSection, InputDataType } from '../../../types/index.js';
type ApiKeyFormItem = {
    label: string;
    header: string;
    key: string;
    required?: boolean;
    valuePrefix?: string;
};
type BasicAuthConfig = {
    label?: string;
    placeholder?: string;
};
export declare enum ClientAuthMethod {
    POST = "POST",
    BASIC = "BASIC"
}
export type AuthMethods = {
    basic?: boolean | {
        username?: BasicAuthConfig;
        password?: BasicAuthConfig;
    };
    firebase?: boolean;
    oauth?: boolean;
    bearer?: boolean;
    apiKey?: boolean;
    apiKeyForm?: ApiKeyFormItem[];
    tokenPrefixed?: boolean | {
        prefix: string;
    };
    oauth2BringYourOwn?: OAuth2Config;
    oauth2SuperblocksClient?: OAuth2HostedClientConfig;
    oauth2TokenExchange?: boolean;
    passwordGrantFlow?: boolean;
    authorizationCodeFlow?: boolean;
    clientCredentialsFlow?: boolean;
};
export type AuthorizationStateConfig = 'datasource-auth-state';
export type AuthorizationExtraParams = {
    responseType?: string;
    accessType?: string;
    stateConfigExclude?: AuthorizationStateConfig[];
    owner?: string;
};
type OAuth2Config = {
    tokenUrl: string;
    authorizationUrl: string;
    revokeTokenUrl: string;
    clientAuthMethod?: ClientAuthMethod;
    userInfoUrl?: string;
    authorizationExtraParams?: AuthorizationExtraParams;
    iconUrl: string;
};
type OAuth2HostedClientConfig = OAuth2Config & {
    clientId: string;
};
export declare const authSections: ({ startVersion, endVersion, pluginId, pluginName, defaultMethod, enabledMethods, allowNone, fieldNamesToHide, isProto, prependItems }: {
    startVersion: string;
    endVersion?: string;
    pluginId: ExtendedIntegrationPluginId;
    pluginName: string;
    enabledMethods: AuthMethods;
    defaultMethod?: string;
    allowNone?: boolean;
    fieldNamesToHide?: string[];
    isProto?: boolean;
    prependItems?: FormItem[];
}) => FormSection[];
export declare const BASE_SUBJECT_TOKEN_SOURCE: {
    label: string;
    name: string;
    componentType: FormComponentType;
    tooltip: {
        markdownText: string;
    };
    options: {
        displayName: string;
        value: string;
        key: string;
    }[];
    initialValue: string;
    singleLine: boolean;
};
export declare const BASE_SUBJECT_TOKEN_TYPE: {
    label: string;
    name: string;
    componentType: FormComponentType;
    tooltip: {
        markdownText: string;
    };
    placeholder: string;
    singleLine: boolean;
};
export declare const BASE_SUBJECT_TOKEN_STATIC_TOKEN: {
    label: string;
    name: string;
    componentType: FormComponentType;
    dataType: InputDataType;
    tooltip: {
        markdownText: string;
    };
    singleLine: boolean;
};
export declare const BASE_TOKEN_URL: {
    label: string;
    name: string;
    componentType: FormComponentType;
    rules: {
        required: boolean;
        message: string;
    }[];
    tooltip: {
        markdownText: string;
    };
    singleLine: boolean;
    placeholder: string;
};
export declare const BASE_CLIENT_ID: {
    label: string;
    name: string;
    componentType: FormComponentType;
    placeholder: string;
    rules: {
        required: boolean;
        message: string;
    }[];
    tooltip: {
        markdownText: string;
    };
    singleLine: boolean;
};
export declare const BASE_CLIENT_SECRET: {
    label: string;
    name: string;
    componentType: FormComponentType;
    rules: {
        required: boolean;
        message: string;
    }[];
    placeholder: string;
    dataType: InputDataType;
    tooltip: {
        markdownText: string;
    };
    singleLine: boolean;
};
export declare const BASE_AUDIENCE: {
    label: string;
    name: string;
    componentType: FormComponentType;
    tooltip: {
        markdownText: string;
    };
    singleLine: boolean;
};
export declare const BASE_SCOPE: {
    label: string;
    name: string;
    componentType: FormComponentType;
    placeholder: string;
    tooltip: {
        markdownText: string;
    };
    singleLine: boolean;
};
export {};
//# sourceMappingURL=auth.d.ts.map