///
import { Attrs, BaseObject, ExecutionProps, Interpolation, IStyledComponent, IStyledComponentFactory, KnownTarget, NoInfer, Runtime, StyledOptions, StyledTarget, Styles, Substitute } from '../types';
type AttrsResult> = T extends (...args: any) => infer P ? P extends object ? P : never : T extends object ? T : never;
/**
* Based on Attrs being a simple object or function that returns
* a prop object, inspect the attrs result and attempt to extract
* any "as" prop usage to modify the runtime target.
*/
type AttrsTarget, FallbackTarget extends StyledTarget, Result extends ExecutionProps = AttrsResult> = Result extends {
as: infer RuntimeTarget;
} ? RuntimeTarget extends KnownTarget ? RuntimeTarget : FallbackTarget : FallbackTarget;
export interface Styled, OuterProps extends object, OuterStatics extends object = BaseObject> {
(initialStyles: Styles>>, ...interpolations: Interpolation>>[]): IStyledComponent> & OuterStatics & Statics & (Target extends string ? {} : Target);
attrs: , PrivateAttrsArg extends Attrs = Attrs, PrivateResolvedTarget extends StyledTarget = AttrsTarget>(attrs: PrivateAttrsArg) => Styled>, Props> : PrivateMergedProps, OuterStatics>;
withConfig: (config: StyledOptions) => Styled;
}
export default function constructWithOptions, OuterProps extends object = Target extends KnownTarget ? React.ComponentPropsWithRef : BaseObject, OuterStatics extends object = BaseObject>(componentConstructor: IStyledComponentFactory, object, any>, tag: StyledTarget, options?: StyledOptions): Styled;
export {};