| 1234567891011121314151617181920212223242526 |
- import { ProgramNode, programNode, ProgramVersion } from '@codama/nodes';
- import { accountNodeFromAnchorV00 } from './AccountNode';
- import { definedTypeNodeFromAnchorV00 } from './DefinedTypeNode';
- import { errorNodeFromAnchorV00 } from './ErrorNode';
- import { IdlV00 } from './idl';
- import { instructionNodeFromAnchorV00 } from './InstructionNode';
- import { pdaNodeFromAnchorV00 } from './PdaNode';
- export function programNodeFromAnchorV00(idl: IdlV00): ProgramNode {
- const origin = (idl.metadata as { origin?: 'anchor' | 'shank' }).origin ?? 'anchor';
- const pdas = (idl.accounts ?? []).filter(account => (account.seeds ?? []).length > 0).map(pdaNodeFromAnchorV00);
- const accounts = (idl.accounts ?? []).map(a => accountNodeFromAnchorV00(a, origin));
- const instructions = (idl.instructions ?? []).map(i => instructionNodeFromAnchorV00(i, origin));
- return programNode({
- accounts,
- definedTypes: (idl.types ?? []).map(definedTypeNodeFromAnchorV00),
- errors: (idl.errors ?? []).map(errorNodeFromAnchorV00),
- instructions,
- name: idl.name ?? '',
- origin,
- pdas,
- publicKey: (idl.metadata as { address?: string })?.address ?? '',
- version: idl.version as ProgramVersion,
- });
- }
|