import { MigrationInfo } from "./ManagementAPIClient";
import type { BatchMigrationAppInstallationInput as CreateAppInstallationParams, BatchMigrationAppUninstallationInput as DeleteAppInstallationParams, BatchMigrationCreateComponentFieldInput as CreateComponentFieldParams, BatchMigrationCreateComponentInput as CreateComponentParams, BatchMigrationCreateComponentUnionFieldInput as CreateComponentUnionFieldParams, BatchMigrationCreateCustomSidebarElementInput as CreateCustomSidebarElementParams, BatchMigrationCreateEnumerableFieldInput as CreateEnumerableFieldParams, BatchMigrationCreateEnumerationInput as CreateEnumerationParams, BatchMigrationCreateGraphQlRemoteSourceInput as CreateGraphQLRemoteSourceParams, BatchMigrationCreateLocaleInput as CreateLocaleParams, BatchMigrationCreateModelInput as CreateModelParams, BatchMigrationCreateRelationalFieldInput as CreateRelationalFieldParams, BatchMigrationCreateRemoteFieldInput as CreateRemoteFieldParams, BatchMigrationCreateRestRemoteSourceInput as CreateRESTRemoteSourceParams, BatchMigrationCreateSimpleFieldInput as CreateSimpleFieldParams, BatchMigrationCreateStageInput as CreateStageParams, BatchMigrationCreateTaxonomyFieldInput as CreateTaxonomyFieldParams, BatchMigrationCreateTaxonomyInput as CreateTaxonomyParams, BatchMigrationCreateTaxonomyNodeInput as CreateTaxonomyNodeParams, BatchMigrationCreateUnionFieldInput as CreateUnionFieldParams, BatchMigrationCreateWebhookInput as CreateWebhookParams, BatchMigrationCreateWorkflowInput as CreateWorkflowParams, BatchMigrationDeleteComponentInput as DeleteComponentParams, BatchMigrationDeleteCustomSidebarElementInput as DeleteCustomSidebarElementParams, BatchMigrationDeleteEnumerationInput as DeleteEnumerationParams, BatchMigrationDeleteFieldInput as DeleteFieldParams, BatchMigrationDeleteLocaleInput as DeleteLocaleParams, BatchMigrationDeleteModelInput as DeleteModelParams, BatchMigrationDeleteRemoteSourceInput as DeleteRemoteSourceParams, BatchMigrationDeleteStageInput as DeleteStageParams, BatchMigrationDeleteTaxonomyInput as DeleteTaxonomyParams, BatchMigrationDeleteTaxonomyNodeInput as DeleteTaxonomyNodeParams, BatchMigrationDeleteWebhookInput as DeleteWebhookParams, BatchMigrationDeleteWorkflowInput as DeleteWorkflowParams, BatchMigrationRefreshGraphQlRemoteSourceSchemaInput as RefreshGraphQLRemoteSourceSchemaParams, BatchMigrationUpdateAppInstallationInput as UpdateAppInstallationParams, BatchMigrationUpdateComponentFieldInput as UpdateComponentFieldParams, BatchMigrationUpdateComponentInput as UpdateComponentParams, BatchMigrationUpdateComponentUnionFieldInput as UpdateComponentUnionFieldParams, BatchMigrationUpdateEnumerableFieldInput as UpdateEnumerableFieldParams, BatchMigrationUpdateEnumerationInput as UpdateEnumerationParams, BatchMigrationUpdateGraphQlRemoteSourceInput as UpdateGraphQLRemoteSourceParams, BatchMigrationUpdateLocaleInput as UpdateLocaleParams, BatchMigrationUpdateModelInput as UpdateModelParams, BatchMigrationUpdateRelationalFieldInput as UpdateRelationalFieldParams, BatchMigrationUpdateRemoteFieldInput as UpdateRemoteFieldParams, BatchMigrationUpdateRestRemoteSourceInput as UpdateRESTRemoteSourceParams, BatchMigrationUpdateSimpleFieldInput as UpdateSimpleFieldParams, BatchMigrationUpdateStageInput as UpdateStageParams, BatchMigrationUpdateTaxonomyFieldInput as UpdateTaxonomyFieldParams, BatchMigrationUpdateTaxonomyInput as UpdateTaxonomyParams, BatchMigrationUpdateTaxonomyNodeInput as UpdateTaxonomyNodeParams, BatchMigrationUpdateUnionFieldInput as UpdateUnionFieldParams, BatchMigrationUpdateWebhookInput as UpdateWebhookParams, BatchMigrationUpdateWorkflowInput as UpdateWorkflowParams } from "./mgmtServerTypes";
export declare class Client {
    private scheduledMigrations;
    private endpoint;
    private authToken;
    private name?;
    private wasExecuted;
    constructor(params: MigrationParams);
    /**
     * creates a new model
     * @param data.apiId -  The model apiId
     * @param data.apiIdPlural -  The models plural apiId. This is used for lists
     * @param data.displayName -  Display name that is used to render the model in the webapp
     * @param data.description -  Optional description of the model
     * @param data.isSystem -  Only AppTokens should provide this flag
     * @param data.sidebarElements -  Sidebar elements to create
     */
    createModel(data: CreateModelParams): void;
    /** */
    updateModel(data: UpdateModelParams): void;
    /** */
    deleteModel(data: DeleteModelParams): void;
    /** */
    createComponent(data: CreateComponentParams): void;
    /** */
    updateComponent(data: UpdateComponentParams): void;
    /** */
    deleteComponent(data: DeleteComponentParams): void;
    /** */
    createSimpleField(data: CreateSimpleFieldParams): void;
    /** */
    updateSimpleField(data: UpdateSimpleFieldParams): void;
    /** */
    createRemoteField(data: CreateRemoteFieldParams): void;
    /** */
    updateRemoteField(data: UpdateRemoteFieldParams): void;
    /**
     * @param data.isRequired -
     *    * Marks the field as required.
     *    * Note: This is only supported for RelationFieldType ASSET!
     *
     */
    createRelationalField(data: CreateRelationalFieldParams): void;
    /**
     * @param data.isRequired -
     *    * Marks the field as required.
     *    * Note: This is only supported for RelationFieldType ASSET!
     *
     */
    updateRelationalField(data: UpdateRelationalFieldParams): void;
    /** */
    createUnionField(data: CreateUnionFieldParams): void;
    /** */
    updateUnionField(data: UpdateUnionFieldParams): void;
    /** */
    createComponentField(data: CreateComponentFieldParams): void;
    /** */
    updateComponentField(data: UpdateComponentFieldParams): void;
    /** */
    createComponentUnionField(data: CreateComponentUnionFieldParams): void;
    /** */
    updateComponentUnionField(data: UpdateComponentUnionFieldParams): void;
    /** */
    createEnumerableField(data: CreateEnumerableFieldParams): void;
    /** */
    updateEnumerableField(data: UpdateEnumerableFieldParams): void;
    /** */
    deleteField(data: DeleteFieldParams): void;
    /**
     * @param data.migrationValue -  The JSON stringified apiId of the taxonomy node to use as the initial value.
     * @param data.initialValue -
     *    * JSON stringified version of the initial value.
     *    * If isList is true, this should be a JSON stringified array of apiIds.
     *    * If isList is false, this should be a JSON stringified apiId.
     *
     */
    createTaxonomyField(data: CreateTaxonomyFieldParams): void;
    /**
     * @param data.initialValue -
     *    * JSON stringified version of the initial value.
     *    * If isList is true, this should be a JSON stringified array of apiIds.
     *    * If isList is false, this should be a JSON stringified apiId.
     *
     * @param data.migrationValue -  The JSON stringified apiId of the taxonomy node to use as the initial value.
     */
    updateTaxonomyField(data: UpdateTaxonomyFieldParams): void;
    /**
     * @param data.modelApiId -  Api Id of the model associated with the custom sidebar element
     * @param data.displayName -  Display name for the sidebar element
     * @param data.description -  Description name for the sidebar element
     * @param data.config -  Json metadata associated with the sidebar element
     * @param data.appElementApiId -  Api Id of the App element to create custom sidebar element with
     * @param data.appApiId -  Api Id of the App
     */
    createCustomSidebarElement(data: CreateCustomSidebarElementParams): void;
    /**
     * @param data.appApiId -  Api Id of the App
     * @param data.appElementApiId -  Api Id of the App element associated with the custom sidebar element
     * @param data.modelApiId -  Api Id of the model associated with the custom sidebar element
     */
    deleteCustomSidebarElement(data: DeleteCustomSidebarElementParams): void;
    /** */
    createEnumeration(data: CreateEnumerationParams): void;
    /** */
    updateEnumeration(data: UpdateEnumerationParams): void;
    /** */
    deleteEnumeration(data: DeleteEnumerationParams): void;
    /** */
    createStage(data: CreateStageParams): void;
    /** */
    deleteStage(data: DeleteStageParams): void;
    /** */
    updateStage(data: UpdateStageParams): void;
    /** */
    createLocale(data: CreateLocaleParams): void;
    /** */
    deleteLocale(data: DeleteLocaleParams): void;
    /** */
    updateLocale(data: UpdateLocaleParams): void;
    /**
     * @param data.prefix -  Unique prefix that will be prepended to all of the remote types. This value cannot be changed!
     * @param data.introspectionUrl -
     *    * Specific URL that will be used for introspection if the introspection is available on another url than the regular url.
     *    * Can be ignored if the introspection url is the same as the url of the remote source.
     *
     * @param data.introspectionMethod -  HTTP method that will be used for introspection
     * @param data.introspectionHeaders -  HTTP headers that will be used for introspection
     * @param data.remoteTypeDefinitions -  Custom GraphQL input types that can be used as arguments in remote fields that belong to this remoteSource
     * @param data.oAuth -  Oauth input that can be used to get access token for the remote source
     */
    createGraphQLRemoteSource(data: CreateGraphQLRemoteSourceParams): void;
    /** @param data.oAuth -  Oauth input that can be used to get access token for the remote source */
    updateGraphQLRemoteSource(data: UpdateGraphQLRemoteSourceParams): void;
    /** */
    refreshGraphQLRemoteSourceSchema(data: RefreshGraphQLRemoteSourceSchemaParams): void;
    /**
     * @param data.prefix -  Unique prefix that will be prepended to all of the remote types. This value cannot be changed!
     * @param data.remoteTypeDefinitions -  Remote type definitions that the remote source supports or input types that can be used by any remote field of this remote source
     * @param data.oAuth -  Oauth input that can be used to get access token for the remote source
     */
    createRESTRemoteSource(data: CreateRESTRemoteSourceParams): void;
    /** @param data.oAuth -  Oauth input that can be used to get access token for the remote source */
    updateRESTRemoteSource(data: UpdateRESTRemoteSourceParams): void;
    /** */
    deleteRemoteSource(data: DeleteRemoteSourceParams): void;
    /**
     * updates config and status for an AppInstallation, only valid for App Token bearer
     * @param data.config -  App Installation config, the object passed will be merged with the existing config
     * @param data.status -  App Installation status
     */
    updateAppInstallation(data: UpdateAppInstallationParams): void;
    /**
     * creates a webhook
     * @param data.models -
     *    * Pass an empty array for all existing models.
     *    * This will also setup the webhook for models
     *    * created in the future
     *
     * @param data.stages -
     *    * Pass an empty array for all existing stages.
     *    * This will also setup the webhook for stages
     *    * created in the future
     *
     */
    createWebhook(data: CreateWebhookParams): void;
    /** updates a webhook */
    updateWebhook(data: UpdateWebhookParams): void;
    /** deletes a webhook */
    deleteWebhook(data: DeleteWebhookParams): void;
    /** */
    createAppInstallation(data: CreateAppInstallationParams): void;
    /** */
    deleteAppInstallation(data: DeleteAppInstallationParams): void;
    /**
     * @param data.steps -
     *    * Workflow steps will be created in the order in which they're provided
     *    * (unless a position is specified for each step)
     *
     */
    createWorkflow(data: CreateWorkflowParams): void;
    /**
     * @param data.apiId -  Current apiId of the workflow
     * @param data.newApiId -  If provided, will update the workflow apiId
     */
    updateWorkflow(data: UpdateWorkflowParams): void;
    /** */
    deleteWorkflow(data: DeleteWorkflowParams): void;
    /**
     * @param data.rootNode -
     *    * Only one of rootNode or taxonomyNodes is allowed.
     *    * If rootNode is provided, it will be used as the root node of the taxonomy and the children will be the nodes of the taxonomy.
     *    * If taxonomyNodes is provided, it will be used as the nodes of the taxonomy.
     *    * The root node will be the only node in the taxonomyNodes list with a parent of null.
     *
     */
    createTaxonomy(data: CreateTaxonomyParams): void;
    /** */
    updateTaxonomy(data: UpdateTaxonomyParams): void;
    /** */
    deleteTaxonomy(data: DeleteTaxonomyParams): void;
    /** */
    createTaxonomyNode(data: CreateTaxonomyNodeParams): void;
    /** @param data.parent -  apiId of the parent node (or null for root node) */
    updateTaxonomyNode(data: UpdateTaxonomyNodeParams): void;
    /** */
    deleteTaxonomyNode(data: DeleteTaxonomyNodeParams): void;
    /** Returns all migrations that would have been sent on submit */
    dryRun(): Migrations[];
    /** Apply custom schema changes, eg. output from `getEnvironmentDiff` method */
    applySchemaChanges(data: Migrations[]): void;
    /** Returns the schema difference between the current environment and target environment as migrations */
    getEnvironmentDiff(targetEnvironment: string): Promise<Migrations[]>;
    /**
     * Submits all scheduled migrations to the management server
     * @foreground Wait until the migrations are scheduled and executed. If false the migrations will be submitted, but the result won't be awaited.
     */
    run(foreground?: boolean): Promise<MigrationInfo>;
}
interface MigrationParams {
    name?: string;
    endpoint: string;
    authToken: string;
}
declare type Migrations = {
    operationName: string;
    params: CreateModelParams | UpdateModelParams | DeleteModelParams | CreateComponentParams | UpdateComponentParams | DeleteComponentParams | CreateSimpleFieldParams | UpdateSimpleFieldParams | CreateRemoteFieldParams | UpdateRemoteFieldParams | CreateRelationalFieldParams | UpdateRelationalFieldParams | CreateUnionFieldParams | UpdateUnionFieldParams | CreateComponentFieldParams | UpdateComponentFieldParams | CreateComponentUnionFieldParams | UpdateComponentUnionFieldParams | CreateEnumerableFieldParams | UpdateEnumerableFieldParams | DeleteFieldParams | CreateTaxonomyFieldParams | UpdateTaxonomyFieldParams | CreateCustomSidebarElementParams | DeleteCustomSidebarElementParams | CreateEnumerationParams | UpdateEnumerationParams | DeleteEnumerationParams | CreateStageParams | DeleteStageParams | UpdateStageParams | CreateLocaleParams | DeleteLocaleParams | UpdateLocaleParams | CreateGraphQLRemoteSourceParams | UpdateGraphQLRemoteSourceParams | RefreshGraphQLRemoteSourceSchemaParams | CreateRESTRemoteSourceParams | UpdateRESTRemoteSourceParams | DeleteRemoteSourceParams | UpdateAppInstallationParams | CreateWebhookParams | UpdateWebhookParams | DeleteWebhookParams | CreateAppInstallationParams | DeleteAppInstallationParams | CreateWorkflowParams | UpdateWorkflowParams | DeleteWorkflowParams | CreateTaxonomyParams | UpdateTaxonomyParams | DeleteTaxonomyParams | CreateTaxonomyNodeParams | UpdateTaxonomyNodeParams | DeleteTaxonomyNodeParams;
};
export {};
