declare module "wix-fqdn-definitions-backend" {
  const __debug: {
      verboseLogging: {
          on: () => boolean;
          off: () => boolean;
      };
  };
  interface FqdnDefinition {
      /**
       * name of the fqdn.
       *
       * e.g. wix.stores.v1.catalog
       */
      fqdn?: string;
      entityTransformations?: EntityTransformations;
      /**
       * All EDMs that this FQDN is contained in and its custom transformations, if any.
       *
       * Example:
       *
       * [
       * { "edmName": "wix-dev-backend" },
       * {
       * "edmName": "wix-members-backend",
       * "methodOverrides": [
       * {
       * "originalMethodName": "GetProfile",
       * "edmMethodName": "GetMemberProfile"
       * "return": {
       * "transformations": {
       * simpleMapping: "$.foo.bar"
       * }
       * }
       * }
       * ]
       * }
       * ]
       */
      edmDefinitions?: EdmDefinitionOfFqdn[];
      /** Docs for this entity */
      documentation?: Documentation;
      /**
       * Custom transformation for events.
       *
       * Example:
       *
       * [
       * {
       * "functionName":"wixStores_onProductCreated",
       * "transformations": {
       * "simpleMapping": "$.foo.bar"
       * }
       * }
       * ]
       */
      eventDefinitions?: EventDefinition[];
      /**
       * DB driver definition of fqdn.
       *
       * Example:
       *
       * {
       * "dbDriverName": "Stores",
       * "collectionName": "Products"
       * }
       */
      dbDriverDefinition?: DbDriverDefinitionOfFqdn;
      /** Calculated MD5 hash of the FQDN definition. */
      fqdnDefinitionHash?: string;
  }
  interface EntityTransformations {
      /** From Velo entity to Proto one */
      fromVelo?: Transformation;
      /** From Proto entity to Velo one */
      toVelo?: Transformation;
      /** Paths of [nested] fields to ignore when renaming keys to and from velo style */
      ignorePathsForKeyRenames?: string[];
  }
  interface Transformation extends TransformationKindOneOf {
      /** E.g. { "secret": { "name": "$[0]", "value": "$[1]", "description": "$[2].options.description" } } */
      complexMapping?: Record<string, any> | null;
      /** E.g. "$.id" */
      simpleMapping?: string;
  }
  /** @oneof */
  interface TransformationKindOneOf {
      /** E.g. { "secret": { "name": "$[0]", "value": "$[1]", "description": "$[2].options.description" } } */
      complexMapping?: Record<string, any> | null;
      /** E.g. "$.id" */
      simpleMapping?: string;
  }
  interface EdmDefinitionOfFqdn {
      edmName?: string;
      methodOverrides?: MethodTransform[];
      /** Namespace which the FQDN will be exposed under in the EDM */
      namespace?: string;
      documentation?: Documentation;
      /**
       * By default, the namespace is linked to the FQDN.
       * If you want to link the namespace to a implementing service (the service fqn), you can explicitly specify the fqn.
       */
      service?: string | null;
  }
  interface MethodTransform {
      /** The original method name that should be overriden */
      originalMethodName?: string;
      /** The new method name to be used in the generated EDM, optional */
      edmMethodName?: string;
      /** Any transformations on input arguments */
      input?: Arguments;
      /** Any transformation on return values */
      return?: Arguments;
      /** Example files for the EDM Method */
      examples?: Example[];
      /** Any documentation we need to add / override at the method level */
      documentation?: Documentation;
      /** Any documentation we need to add / override at the method level for any sdk type */
      documentations?: Documentation[];
      /** should be annotated explicitly if the method can be called only with server identity */
      serverOnly?: boolean | null;
      /** should be annotated explicitly if the method should override exposure from proto */
      exposure?: ExposureOverride;
      /** should be annotated explicitly if the documentation of the method has been vetted */
      documentationMaturity?: DocumentationMaturity;
  }
  interface Arguments {
      /** The argument names in the method */
      names?: string[];
      /** Any transformations we need for method arguments */
      transformations?: Transformation;
      /** Any documentation needed for arguments */
      documentation?: Documentation;
  }
  interface Documentation {
      /** Path to a general description file above the entity / method */
      mdFilePath?: string | null;
      /** General descriptor for a complete entity / method */
      description?: string | null;
      /** Opened an issue regarding validations for strings in maps: https://github.com/wix-private/nile-tracker/issues/955 */
      paramOverrides?: Record<string, string>;
      /** Opened an issue regarding validations for strings in maps: https://github.com/wix-private/nile-tracker/issues/955 */
      typeOverrides?: Record<string, string>;
      /** Opened an issue regarding validations for strings in maps: https://github.com/wix-private/nile-tracker/issues/955 */
      eventsTypesOverrides?: Record<string, string>;
      sdkType?: SdkType;
  }
  enum SdkType {
      ALL = "ALL",
      VELO = "VELO",
      PUBLIC_SDK = "PUBLIC_SDK"
  }
  interface Example {
      /** The file path in the EDM definition repo */
      fileName?: string;
      /** The title of the file to be displayed in the DOCs */
      title?: string;
      /** example content */
      content?: string;
      exampleType?: ExampleType;
  }
  enum ExampleType {
      VELO = "VELO",
      PUBLIC_SDK = "PUBLIC_SDK"
  }
  enum ExposureOverride {
      UNKNOWN = "UNKNOWN",
      PRIVATE = "PRIVATE",
      PUBLIC = "PUBLIC"
  }
  enum DocumentationMaturity {
      UNDEFINED = "UNDEFINED",
      PREVIEW = "PREVIEW",
      READY = "READY"
  }
  interface EventDefinition {
      /** event function name E.g. wixStores_onProductCreated */
      functionName?: string;
      /** custom transformation for event */
      transformation?: Transformation;
      /** Any documentation we need to add / override */
      documentation?: EventDocumentation;
      /** examples for event function */
      examples?: Example[];
  }
  interface EventDocumentation {
      /** General descriptor of the event */
      description?: string | null;
      /** Opened an issue regarding validations for strings in maps: https://github.com/wix-private/nile-tracker/issues/955 */
      paramOverrides?: Record<string, string>;
      /** should be annotated explicitly if the documentation of the method has been vetted */
      documentationMaturity?: DocumentationMaturity;
  }
  interface DbDriverDefinitionOfFqdn {
      /** The name of the DB driver that this fqdn will be contained in. */
      dbDriverName?: string;
      /** The name of the collection that this fqdn appears as in the db driver. */
      collectionName?: string;
      /** Opened an issue regarding validations for strings in maps: https://github.com/wix-private/nile-tracker/issues/955 */
      queryOverrides?: Record<string, QueryOverridesFieldValue>;
  }
  interface QueryOverridesFieldValue {
      value?: any;
  }
  interface GetRequest {
      fqdnName?: string;
  }
  interface GetResponse {
      fqdnDefinition?: FqdnDefinition;
  }
  interface GetFqdnDefinitionRequest {
      fqdnName: string;
  }
  interface GetFqdnDefinitionResponse {
      fqdnDefinition?: FqdnDefinition;
  }
  interface DeleteFqdnDefinitionRequest {
      fqdnName?: string;
  }
  interface DeleteFqdnDefinitionResponse {
  }
  interface ResetFqdnDefinitionCacheRequest {
      fqdnName?: string;
  }
  interface ResetFqdnDefinitionCacheResponse {
  }
  interface TriggerFqdnChangeRequest {
      fqdnName?: string;
  }
  interface TriggerFqdnChangeResponse {
  }
  interface RegisterEdmDefinitionToFqdnRequest {
      fqdn?: string;
      edmDefinition?: EdmDefinitionOfFqdn;
  }
  interface RegisterEdmDefinitionToFqdnResponse {
  }
  /** @internal
   * @documentationMaturity preview
   * @requiredField fqdnName
   * @adminMethod
   */
  function getFqdnDefinition(fqdnName: string): Promise<GetFqdnDefinitionResponse>;
  
  export { Arguments, DbDriverDefinitionOfFqdn, DeleteFqdnDefinitionRequest, DeleteFqdnDefinitionResponse, Documentation, DocumentationMaturity, EdmDefinitionOfFqdn, EntityTransformations, EventDefinition, EventDocumentation, Example, ExampleType, ExposureOverride, FqdnDefinition, GetFqdnDefinitionRequest, GetFqdnDefinitionResponse, GetRequest, GetResponse, MethodTransform, QueryOverridesFieldValue, RegisterEdmDefinitionToFqdnRequest, RegisterEdmDefinitionToFqdnResponse, ResetFqdnDefinitionCacheRequest, ResetFqdnDefinitionCacheResponse, SdkType, Transformation, TransformationKindOneOf, TriggerFqdnChangeRequest, TriggerFqdnChangeResponse, __debug, getFqdnDefinition };
}
