@ts-for-gir/lib
Version:
Typescript .d.ts generator from GIR for gjs
63 lines (62 loc) • 2.72 kB
TypeScript
import { FormatGenerator } from "../generators/index.js";
import { GirVisitor } from "../visitor.js";
import { IntrospectedNamespace } from "./namespace.js";
import type { IntrospectedBaseClass } from "./nodes.js";
import type { OptionsLoad } from "../types/index.js";
export interface Metadata {
deprecated?: boolean;
deprecatedVersion?: string;
deprecatedDoc?: string;
introducedVersion?: string;
}
export interface BaseOptions {
isPrivate?: boolean;
isIntrospectable?: boolean;
doc?: string | null;
}
export type Options<T> = BaseOptions & T;
export type AnyIntrospectedType = IntrospectedBase<any>;
export declare abstract class IntrospectedBase<Parent extends IntrospectedNamespace | AnyIntrospectedType | null> {
name: string;
doc?: string | null;
metadata?: Metadata;
deprecated?: boolean;
resolve_names: string[];
private _emit;
private _commentWarning?;
private _isPrivate;
private _isIntrospectable;
private _parent;
constructor(name: string, parent: Parent, options?: BaseOptions);
get parent(): Parent;
/**
* Set a warning to be emitted with this node. Often used to note type
* conflicts or potential differences from GJS code.
*
* @param warning
*/
setWarning(warning: string): void;
getWarning(): string | undefined;
abstract get namespace(): IntrospectedNamespace;
get isIntrospectable(): boolean;
get isPrivate(): boolean;
setPrivate(priv: boolean): void;
noEmit(): void;
get emit(): boolean;
protected _copyBaseProperties(from: this): this;
abstract copy(options?: {
parent?: Parent;
}): IntrospectedBase<Parent>;
abstract accept(visitor: GirVisitor): IntrospectedBase<Parent>;
static fromXML(element: Record<string, any>, parent: IntrospectedNamespace | AnyIntrospectedType, options: OptionsLoad): AnyIntrospectedType | null;
abstract asString<T extends FormatGenerator<unknown>>(generator: T): (T extends FormatGenerator<infer R> ? R : never) | null;
abstract asString<T extends FormatGenerator<unknown>>(generator: T): unknown;
}
export declare abstract class IntrospectedNamespaceMember extends IntrospectedBase<IntrospectedNamespace> {
constructor(name: string, namespace: IntrospectedNamespace, options?: BaseOptions);
get namespace(): IntrospectedNamespace;
static fromXML(element: Record<string, any>, parent: IntrospectedNamespace, options: OptionsLoad): IntrospectedNamespaceMember | null;
}
export declare abstract class IntrospectedClassMember<Parent extends IntrospectedBaseClass | null = IntrospectedBaseClass | null> extends IntrospectedBase<Parent> {
get namespace(): IntrospectedNamespace;
}