import * as _backstage_plugin_scaffolder_node from '@backstage/plugin-scaffolder-node';
import { ScmIntegrationRegistry } from '@backstage/integration';
import * as _backstage_types from '@backstage/types';
import { Config } from '@backstage/config';

/**
 * Creates an `gitlab:group:ensureExists` Scaffolder action.
 *
 * @public
 */
declare const createGitlabGroupEnsureExistsAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    path: string[];
    repoUrl: string;
    token?: string | undefined;
}, {
    groupId?: number | undefined;
}>;

/**
 * Creates a `gitlab:projectDeployToken:create` Scaffolder action.
 *
 * @param options - Templating configuration.
 * @public
 */
declare const createGitlabProjectDeployTokenAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    name: string;
    repoUrl: string;
    projectId: string | number;
    token?: string | undefined;
    username?: string | undefined;
    scopes?: string[] | undefined;
}, {
    user: string;
    deploy_token: string;
}>;

/**
 * Creates a `gitlab:projectAccessToken:create` Scaffolder action.
 *
 * @param options - Templating configuration.
 * @public
 */
declare const createGitlabProjectAccessTokenAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    repoUrl: string;
    projectId: string | number;
    token?: string | undefined;
    name?: string | undefined;
    accessLevel?: number | undefined;
    scopes?: string[] | undefined;
}, {
    access_token: string;
}>;

/**
 * Creates a `gitlab:projectVariable:create` Scaffolder action.
 *
 * @param options - Templating configuration.
 * @public
 */
declare const createGitlabProjectVariableAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    key: string;
    value: string;
    repoUrl: string;
    projectId: string | number;
    variableType: string;
    token?: string | undefined;
    variableProtected?: boolean | undefined;
    masked?: boolean | undefined;
    raw?: boolean | undefined;
    environmentScope?: string | undefined;
}, _backstage_types.JsonObject>;

/**
 * Gitlab issue types
 *
 * @public
 */
declare enum IssueType {
    ISSUE = "issue",
    INCIDENT = "incident",
    TEST = "test_case"
}
/**
 * Creates a `gitlab:issues:create` Scaffolder action.
 *
 * @param options - Templating configuration.
 * @public
 */
declare const createGitlabIssueAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    title: string;
    repoUrl: string;
    projectId: number;
    token?: string | undefined;
    assignees?: number[] | undefined;
    confidential?: boolean | undefined;
    description?: string | undefined;
    createdAt?: string | undefined;
    dueDate?: string | undefined;
    discussionToResolve?: string | undefined;
    epicId?: number | undefined;
    labels?: string | undefined;
    issueType?: IssueType | undefined;
    mergeRequestToResolveDiscussionsOf?: number | undefined;
    milestoneId?: number | undefined;
    weight?: number | undefined;
}, {
    issueUrl: string;
    issueId: number;
}>;

/**
 * Creates a new action that initializes a git repository of the content in the workspace
 * and publishes it to GitLab.
 *
 * @public
 */
declare function createPublishGitlabAction(options: {
    integrations: ScmIntegrationRegistry;
    config: Config;
}): _backstage_plugin_scaffolder_node.TemplateAction<{
    repoUrl: string;
    defaultBranch?: string | undefined;
    /** @deprecated in favour of settings.visibility field */
    repoVisibility?: "internal" | "private" | "public" | undefined;
    sourcePath?: string | undefined;
    token?: string | undefined;
    gitCommitMessage?: string | undefined;
    gitAuthorName?: string | undefined;
    gitAuthorEmail?: string | undefined;
    setUserAsOwner?: boolean | undefined;
    /** @deprecated in favour of settings.topics field */
    topics?: string[] | undefined;
    settings?: {
        path?: string | undefined;
        auto_devops_enabled?: boolean | undefined;
        ci_config_path?: string | undefined;
        description?: string | undefined;
        topics?: string[] | undefined;
        visibility?: "internal" | "private" | "public" | undefined;
    } | undefined;
    branches?: {
        name: string;
        protect?: boolean | undefined;
        create?: boolean | undefined;
        ref?: string | undefined;
    }[] | undefined;
    projectVariables?: {
        key: string;
        value: string;
        description?: string | undefined;
        variable_type?: string | undefined;
        protected?: boolean | undefined;
        masked?: boolean | undefined;
        raw?: boolean | undefined;
        environment_scope?: string | undefined;
    }[] | undefined;
}, _backstage_types.JsonObject>;

/**
 * Create a new action that creates a gitlab merge request.
 *
 * @public
 */
declare const createPublishGitlabMergeRequestAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    repoUrl: string;
    title: string;
    description: string;
    branchName: string;
    targetBranchName?: string | undefined;
    sourcePath?: string | undefined;
    targetPath?: string | undefined;
    token?: string | undefined;
    commitAction?: "update" | "delete" | "create" | undefined;
    /** @deprecated projectID passed as query parameters in the repoUrl */
    projectid?: string | undefined;
    removeSourceBranch?: boolean | undefined;
    assignee?: string | undefined;
}, _backstage_types.JsonObject>;

/**
 * Create a new action that commits into a gitlab repository.
 *
 * @public
 */
declare const createGitlabRepoPushAction: (options: {
    integrations: ScmIntegrationRegistry;
}) => _backstage_plugin_scaffolder_node.TemplateAction<{
    repoUrl: string;
    branchName: string;
    commitMessage: string;
    sourcePath?: string | undefined;
    targetPath?: string | undefined;
    token?: string | undefined;
    commitAction?: "update" | "delete" | "create" | undefined;
}, _backstage_types.JsonObject>;

export { IssueType, createGitlabGroupEnsureExistsAction, createGitlabIssueAction, createGitlabProjectAccessTokenAction, createGitlabProjectDeployTokenAction, createGitlabProjectVariableAction, createGitlabRepoPushAction, createPublishGitlabAction, createPublishGitlabMergeRequestAction };
