@fuel-ts/abi-typegen
Version:
Generates Typescript definitions from Sway ABI Json files
95 lines • 2.73 kB
TypeScript
/**
* Types for Fuel JSON ABI Format as defined on:
* https://github.com/FuelLabs/fuel-specs/blob/master/src/abi/json-abi-format.md
*/
export interface JsonAbi {
readonly specVersion: string;
readonly encodingVersion: string;
readonly programType: string;
readonly concreteTypes: readonly ConcreteType[];
readonly metadataTypes: readonly MetadataType[];
readonly functions: readonly AbiFunction[];
readonly loggedTypes: readonly LoggedType[];
readonly messagesTypes: readonly MessageType[];
readonly configurables: readonly Configurable[];
readonly errorCodes?: Record<string, ErrorCode>;
}
export interface ConcreteType {
readonly type: string;
readonly concreteTypeId: string;
readonly metadataTypeId?: number;
readonly typeArguments?: readonly string[];
}
export interface MetadataType {
readonly type: string;
readonly metadataTypeId: number;
readonly components?: readonly Component[];
readonly typeParameters?: readonly number[];
}
export interface Component extends TypeArgument {
readonly name: string;
}
export interface TypeArgument {
readonly typeId: number | string;
readonly typeArguments?: readonly TypeArgument[];
}
export interface AbiFunction {
readonly name: string;
readonly inputs: readonly AbiFunctionInput[];
readonly output: string;
readonly attributes: readonly AbiFunctionAttribute[] | null;
}
export interface AbiFunctionInput {
readonly name: string;
readonly concreteTypeId: string;
}
export type AbiFunctionAttribute = {
readonly name: string;
readonly arguments?: string[];
};
export interface PayableAttr {
readonly name: 'payable';
}
export interface StorageAttr {
readonly name: 'storage';
readonly arguments: readonly ('read' | 'write')[];
}
export interface TestAttr {
readonly name: 'test';
}
export interface InlineAttr {
readonly name: 'inline';
readonly arguments: 'never' | 'always';
}
export interface DocCommentAttr {
readonly name: 'doc-comment';
readonly arguments: string[];
}
export interface DocAttr {
readonly name: 'doc';
}
export interface LoggedType {
readonly logId: string;
readonly concreteTypeId: string;
}
export interface MessageType {
readonly messageId: string;
readonly concreteTypeId: string;
}
export interface Configurable {
readonly name: string;
readonly concreteTypeId: string;
readonly offset: number;
}
export interface ErrorPosition {
pkg: string;
file: string;
line: number;
column: number;
}
export interface ErrorCode {
readonly pos: ErrorPosition;
readonly logId: string | null;
readonly msg: string | null;
}
//# sourceMappingURL=JsonAbiNew.d.ts.map