import type { PreparedTransaction, TxSignAdditions } from '../../accounts/types.cjs'; export type PrepareTransactionArgs = { /** 호출할 RPC 메서드 (예: 'locus_transferCoin'). */ method: string; /** 원본 RPC params. 첫 원소가 3 단계에서 sign 추가 필드를 받는다. */ params: readonly unknown[]; }; export type PreparedTransactionEnvelope = { method: string; params: readonly unknown[]; /** 1 단계에서 노드가 반환한 결과. hash + tx + signedHeight 를 담는다. */ prepared: PreparedTransaction; }; /** * submit 호출 (`_sendPreparedTransaction`) 이 params[0] 에 병합하는 부가 필드. * * 두 출처의 합집합: * - sign 단계 결과 (`TxSignAdditions`) — sign / signedHeight / keySign / * signByMasterKey. * - prepared.tx 에서 echo 해야 하는 TX-type 별 필드 (`_deriveTxAdditions`): * contractAccount / synthAccount / sysId / newValidationPkey. */ export type SubmitAdditions = TxSignAdditions & { /** TX_CREATE_CONTRACT — 노드가 생성한 컨트랙트 주소를 echo. */ contractAccount?: string; /** TX_CREATE_SA — 노드가 생성한 synth account 주소를 echo. */ synthAccount?: string; /** TX_CREATE_VME — 노드가 확정한 sysId 를 echo. */ sysId?: string; /** TX_CHANGE_VKEY — 노드가 echo 한 새 validation pubkey. */ newValidationPkey?: string; }; export type SignedTransactionEnvelope = { method: string; params: readonly unknown[]; /** 2 단계 결과 — 3 단계에서 params[0] 에 병합된다. */ additions: SubmitAdditions; };