import { MigrationInfo } from "./ManagementAPIClient";
import type { 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, BatchMigrationCreateUnionFieldInput as CreateUnionFieldParams, BatchMigrationCreateWebhookInput as CreateWebhookParams, BatchMigrationDeleteComponentInput as DeleteComponentParams, BatchMigrationDeleteCustomSidebarElementInput as DeleteCustomSidebarElementParams, BatchMigrationDeleteEnumerationInput as DeleteEnumerationParams, BatchMigrationDeleteFieldInput as DeleteFieldParams, BatchMigrationDeleteLocaleInput as DeleteLocaleParams, BatchMigrationDeleteModelInput as DeleteModelParams, BatchMigrationDeleteRemoteSourceInput as DeleteRemoteSourceParams, BatchMigrationDeleteStageInput as DeleteStageParams, BatchMigrationDeleteWebhookInput as DeleteWebhookParams, 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, BatchMigrationUpdateUnionFieldInput as UpdateUnionFieldParams, BatchMigrationUpdateWebhookInput as UpdateWebhookParams } 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
     */
    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.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;
    /** 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;
}
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 | CreateCustomSidebarElementParams | DeleteCustomSidebarElementParams | CreateEnumerationParams | UpdateEnumerationParams | DeleteEnumerationParams | CreateStageParams | DeleteStageParams | UpdateStageParams | CreateLocaleParams | DeleteLocaleParams | UpdateLocaleParams | CreateGraphQLRemoteSourceParams | UpdateGraphQLRemoteSourceParams | RefreshGraphQLRemoteSourceSchemaParams | CreateRESTRemoteSourceParams | UpdateRESTRemoteSourceParams | DeleteRemoteSourceParams | UpdateAppInstallationParams | CreateWebhookParams | UpdateWebhookParams | DeleteWebhookParams;
};
export {};
