/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow strict
 */

import type { NodePath } from '@babel/traverse';
import type { StyleObject } from '../utils/stylex-merge-utils';

import * as t from '@babel/types';
import StateManager from '../utils/state-manager';
type StylexPropsLikeConfig = {
  importSet: $ReadOnlySet<string>,
  memberName: string,
  buildResult: (values: $ReadOnlyArray<?StyleObject>) => t.Expression,
};

type StylexPropsLikeCalleeConfig = $ReadOnly<{
  importSet: $ReadOnlySet<string>,
  memberName: string,
  ...
}>;

declare export function skipStylexPropsLikeChildren(
  path: NodePath<t.CallExpression>,
  state: StateManager,
  config: StylexPropsLikeCalleeConfig,
): void;

declare export function transformStylexPropsLike(
  path: NodePath<t.CallExpression>,
  state: StateManager,
  config: StylexPropsLikeConfig,
): void;
