import type { Children, Namekey, Refkey } from "@alloy-js/core";
import type { CallSignatureProps } from "./CallSignature.jsx";
import type { CommonDeclarationProps } from "./Declaration.jsx";
export interface ClassDeclarationProps extends CommonDeclarationProps {
extends?: Children;
implements?: Children[];
}
/**
* Create a TypeScript class declaration.
*
* @remarks
*
* @example
*
* ```tsx
* const myPetRefkey = refkey();
* const Animal = refkey();
* const staticMember = refkey();
* const instanceMember = refkey();
*
*
*
* "hello"
*
*
*
*
* this.name = name;
*
*
*
*
* new {Animal}();
*
*
* {staticMember}; // Animal.something
* // myPet.name
* {memberRefkey(myPetRefkey, instanceMember)}
* ```
*/
export declare function ClassDeclaration(props: ClassDeclarationProps): Children;
export interface ClassMemberProps {
name: string | Namekey;
refkey?: Refkey;
public?: boolean;
private?: boolean;
protected?: boolean;
jsPrivate?: boolean;
static?: boolean;
children?: Children;
doc?: Children;
nullish?: boolean;
}
export declare function ClassMember(props: ClassMemberProps): Children;
export interface ClassFieldProps extends ClassMemberProps {
type?: Children;
optional?: boolean;
children?: Children;
}
export declare function ClassField(props: ClassFieldProps): Children;
export interface ClassMethodProps extends ClassMemberProps, CallSignatureProps {
async?: boolean;
children?: Children;
}
export declare function ClassMethod(props: ClassMethodProps): Children;
//# sourceMappingURL=ClassDeclaration.d.ts.map