UNPKG

@fuel-ts/abi-typegen

Version:

Generates Typescript definitions from Sway ABI Json files

95 lines 2.73 kB
/** * 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