UNPKG

@solana-developers/helpers

Version:
128 lines 3.07 kB
/** * This is a port of the anchor command `anchor idl convert` to TypeScript. */ import { Idl } from "@coral-xyz/anchor"; export interface LegacyIdl { version: string; name: string; docs?: string[]; constants: LegacyIdlConst[]; instructions: LegacyIdlInstruction[]; accounts: LegacyIdlTypeDefinition[]; types: LegacyIdlTypeDefinition[]; events?: LegacyIdlEvent[]; errors?: LegacyIdlErrorCode[]; metadata?: any; } interface LegacyIdlConst { name: string; type: LegacyIdlType; value: string; } interface LegacyIdlInstruction { name: string; docs?: string[]; accounts: LegacyIdlAccountItem[]; args: LegacyIdlField[]; returns?: LegacyIdlType; } interface LegacyIdlTypeDefinition { name: string; docs?: string[]; type: LegacyIdlTypeDefinitionTy; } type LegacyIdlTypeDefinitionTy = { kind: "struct"; fields: LegacyIdlField[]; } | { kind: "enum"; variants: LegacyIdlEnumVariant[]; } | { kind: "alias"; value: LegacyIdlType; }; interface LegacyIdlField { name: string; docs?: string[]; type: LegacyIdlType; } interface LegacyIdlEnumVariant { name: string; fields?: LegacyEnumFields; } type LegacyEnumFields = LegacyIdlField[] | LegacyIdlType[]; interface LegacyIdlEvent { name: string; fields: LegacyIdlEventField[]; } interface LegacyIdlEventField { name: string; type: LegacyIdlType; index: boolean; } interface LegacyIdlErrorCode { code: number; name: string; msg?: string; } type LegacyIdlAccountItem = LegacyIdlAccount | LegacyIdlAccounts; interface LegacyIdlAccount { name: string; isMut: boolean; isSigner: boolean; isOptional?: boolean; docs?: string[]; pda?: LegacyIdlPda; relations: string[]; } interface LegacyIdlAccounts { name: string; accounts: LegacyIdlAccountItem[]; } interface LegacyIdlPda { seeds: LegacyIdlSeed[]; programId?: LegacyIdlSeed; } type LegacyIdlSeed = { kind: "const"; type: LegacyIdlType; value: any; } | { kind: "arg"; type: LegacyIdlType; path: string; } | { kind: "account"; type: LegacyIdlType; account?: string; path: string; }; type LegacyIdlType = "bool" | "u8" | "i8" | "u16" | "i16" | "u32" | "i32" | "u64" | "i64" | "u128" | "i128" | "f32" | "f64" | "bytes" | "string" | "publicKey" | { vec: LegacyIdlType; } | { option: LegacyIdlType; } | { defined: string; } | { array: [LegacyIdlType, number]; } | { generic: string; } | { definedWithTypeArgs: { name: string; args: LegacyIdlDefinedTypeArg[]; }; }; type LegacyIdlDefinedTypeArg = { generic: string; } | { value: string; } | { type: LegacyIdlType; }; export declare function convertLegacyIdl(legacyIdl: LegacyIdl, programAddress?: string): Idl; export declare function getIdlSpecType(idl: any): IdlSpec; export type IdlSpec = "0.1.0" | "legacy"; export declare function formatIdl(idl: any, programAddress?: string): Idl; export {}; //# sourceMappingURL=convertLegacyIdl.d.ts.map