///
import type { ReactElement } from 'react';
import type { Data as EjsData } from 'ejs';
import type { ZombiContext } from './zombi';
import type { Maybe } from '../types';
export interface EffectComponent {
(props: Effect): ReactElement | null;
}
export interface Transformer {
(buffer: Buffer): Buffer | Promise;
}
export declare type EffectModifier = Maybe | {
filepath?: Maybe;
transformer?: Maybe;
};
export interface Effect {
from: string;
to: string;
options: ZombiContext & {
ejs: boolean;
symlink: boolean;
modifier: (filepath: string, data: T) => EffectModifier | Promise;
permission?: number;
};
}
/**
* A static representation of "side effects" that are executed by the
* scaffolding template. Each `Effect` maps to a template file being rendered.
*/
export declare const Effect: EffectComponent;