import { EndlessConfig } from '../api/endlessConfig.mjs'; import { MoveVector, MoveOption, MoveString } from '../bcs/serializable/moveStructs.mjs'; import { Bool, U8, U16, U32, U64, U128, U256 } from '../bcs/serializable/movePrimitives.mjs'; import { FixedBytes } from '../bcs/serializable/fixedBytes.mjs'; import { AccountAddress, AccountAddressInput } from '../core/accountAddress.mjs'; import { AnyNumber, MoveFunctionId, MoveFunctionGenericTypeParam, HexInput } from '../types/index.mjs'; import { P as PublicKey } from '../authenticationKey-BaHTUD3k.mjs'; import { RawTransaction, MultiAgentRawTransaction, FeePayerRawTransaction } from './instances/rawTransaction.mjs'; import { AccountAuthenticator } from './authenticator/account.mjs'; import { TransactionPayloadEntryFunction, TransactionPayloadScript, TransactionPayloadMultiSig } from './instances/transactionPayload.mjs'; import { SimpleTransaction } from './instances/simpleTransaction.mjs'; import { MultiAgentTransaction } from './instances/multiAgentTransaction.mjs'; import { TypeTag } from './typeTag/index.mjs'; import '../utils/apiEndpoints.mjs'; import '../utils/const.mjs'; import '../types/indexer.mjs'; import '../bcs/serializer.mjs'; import '../core/hex.mjs'; import '../core/common.mjs'; import '../bcs/deserializer.mjs'; import './instances/transactionArgument.mjs'; import '../core/crypto/signature.mjs'; import './instances/chainId.mjs'; import './instances/identifier.mjs'; import './instances/moduleId.mjs'; import '../core/crypto/ed25519.mjs'; import '../core/crypto/privateKey.mjs'; import '../core/crypto/multiEd25519.mjs'; import '../core/crypto/multiKey.mjs'; import '../core/crypto/singleKey.mjs'; import '../core/crypto/bls12381.mjs'; import '../core/crypto/multiAuthKey.mjs'; /** * Entry function arguments to be used when building a raw transaction using remote ABI */ type SimpleEntryFunctionArgumentTypes = boolean | number | bigint | string | null | undefined | Uint8Array | ArrayBuffer | Array; /** * Entry function arguments to be used when building a raw transaction using BCS serialized arguments */ type EntryFunctionArgumentTypes = Bool | U8 | U16 | U32 | U64 | U128 | U256 | AccountAddress | MoveVector | MoveOption | MoveString | FixedBytes; /** * Script function arguments to be used when building a raw transaction using BCS serialized arguments */ type ScriptFunctionArgumentTypes = Bool | U8 | U16 | U32 | U64 | U128 | U256 | AccountAddress | MoveVector | MoveString | FixedBytes; /** * TypeArgument inputs for Entry functions, view functions, and scripts * * This can be a string version of the type argument such as: * - u8 * - u16 * - u32 * - u64 * - u128 * - u256 * - bool * - address * - signer * - vector * - address::module::struct * - address::module::struct */ type TypeArgument = TypeTag | string; /** * Type that holds all raw transaction instances Endless SDK supports */ type AnyRawTransactionInstance = RawTransaction | MultiAgentRawTransaction | FeePayerRawTransaction; /** * Optional options to set when generating a transaction */ type InputGenerateTransactionOptions = { maxGasAmount?: number; gasUnitPrice?: number; expireTimestamp?: number; accountSequenceNumber?: AnyNumber; }; /** * The generated transaction payload type that was produces from `generateTransactionPayload()` function. */ type AnyTransactionPayloadInstance = TransactionPayloadEntryFunction | TransactionPayloadScript | TransactionPayloadMultiSig; /** * Unified type for the data needed to generate a transaction payload of types: * Entry Function | Script | Multi Sig */ type InputGenerateTransactionPayloadData = InputEntryFunctionData | InputScriptData | InputMultiSigData; type InputGenerateTransactionPayloadDataWithRemoteABI = InputScriptData | InputEntryFunctionDataWithRemoteABI | InputMultiSigDataWithRemoteABI; /** * The data needed to generate an Entry Function payload */ type InputEntryFunctionData = { function: MoveFunctionId; typeArguments?: Array; functionArguments: Array; abi?: EntryFunctionABI; paymentChecksum?: HexInput; }; type InputGenerateTransactionPayloadDataWithABI = InputEntryFunctionDataWithABI | InputMultiSigDataWithABI; type InputEntryFunctionDataWithABI = Omit & { abi: EntryFunctionABI; }; type InputMultiSigDataWithABI = { multisigAddress: AccountAddressInput; } & InputEntryFunctionDataWithABI; type InputEntryFunctionDataWithRemoteABI = InputEntryFunctionData & { endlessConfig: EndlessConfig; }; /** * The data needed to generate a Multi Sig payload */ type InputMultiSigData = { multisigAddress: AccountAddressInput; } & InputEntryFunctionData; /** * The data needed to generate a Multi Sig payload */ type InputMultiSigDataWithRemoteABI = { multisigAddress: AccountAddressInput; } & InputEntryFunctionDataWithRemoteABI; /** * The data needed to generate a Script payload */ type InputScriptData = { bytecode: HexInput; typeArguments?: Array; functionArguments: Array; paymentChecksum?: HexInput; }; /** * The data needed to generate a View Function payload */ type InputViewFunctionData = { function: MoveFunctionId; typeArguments?: Array; functionArguments?: Array; abi?: ViewFunctionABI; }; /** * Data needed to generate a view function payload and fetch the remote ABI */ type InputViewFunctionDataWithRemoteABI = InputViewFunctionData & { endlessConfig: EndlessConfig; }; /** * Data needed to generate a view function, with an already fetched ABI */ type InputViewFunctionDataWithABI = InputViewFunctionData & { abi: ViewFunctionABI; }; /** * Data need for a generic function ABI, both view and entry */ type FunctionABI = { typeParameters: Array; parameters: Array; }; /** * Interface of an Entry function's ABI. * * This is used to provide type checking and simple input conversion on ABI based transaction submission. */ type EntryFunctionABI = FunctionABI & { signers?: number; }; /** * Interface of an View function's ABI. * * This is used to provide type checking and simple input conversion on ABI based transaction submission. */ type ViewFunctionABI = FunctionABI & { returnTypes: Array; }; /** * Interface of the arguments to generate a single signer transaction. * Used to provide to `generateTransaction()` method in the transaction builder flow */ interface InputGenerateSingleSignerRawTransactionArgs { endlessConfig: EndlessConfig; sender: AccountAddressInput; payload: AnyTransactionPayloadInstance; options?: InputGenerateTransactionOptions; feePayerAddress?: AccountAddressInput; } /** * Interface of the arguments to generate a multi-agent transaction. * Used to provide to `generateTransaction()` method in the transaction builder flow */ interface InputGenerateMultiAgentRawTransactionArgs { endlessConfig: EndlessConfig; sender: AccountAddressInput; payload: AnyTransactionPayloadInstance; secondarySignerAddresses: AccountAddressInput[]; options?: InputGenerateTransactionOptions; feePayerAddress?: AccountAddressInput; } /** * Unified type that holds all the interfaces to generate different transaction types */ type InputGenerateRawTransactionArgs = InputGenerateSingleSignerRawTransactionArgs | InputGenerateMultiAgentRawTransactionArgs; /** * Unified type that holds all the return interfaces when generating different transaction types */ type AnyRawTransaction = SimpleTransaction | MultiAgentTransaction; type InputSimulateTransactionData = { /** * The transaction to simulate, probably generated by `generateTransaction()` */ transaction: AnyRawTransaction; /** * For a single signer transaction */ signerPublicKey: PublicKey; /** * For a fee payer or multi-agent transaction that requires additional signers in */ secondarySignersPublicKeys?: Array; /** * For a fee payer transaction (aka Sponsored Transaction) */ feePayerPublicKey?: PublicKey; options?: InputSimulateTransactionOptions; }; type InputSimulateTransactionDataMock = { /** * The transaction to simulate, probably generated by `generateTransaction()` */ transaction: AnyRawTransaction; options?: InputSimulateTransactionOptions; }; type InputSimulateTransactionOptions = { estimateGasUnitPrice?: boolean; estimateMaxGasAmount?: boolean; estimatePrioritizedGasUnitPrice?: boolean; }; /** * Interface that holds the user data input when generating a single signer transaction */ interface InputGenerateSingleSignerRawTransactionData { sender: AccountAddressInput; data: InputGenerateTransactionPayloadData; options?: InputGenerateTransactionOptions; withFeePayer?: boolean; secondarySignerAddresses?: undefined; } /** * Interface that holds the user data input when generating a multi-agent transaction */ interface InputGenerateMultiAgentRawTransactionData { sender: AccountAddressInput; data: InputGenerateTransactionPayloadData; secondarySignerAddresses: AccountAddressInput[]; options?: InputGenerateTransactionOptions; withFeePayer?: boolean; } /** * Unified type that holds all the user data input interfaces when generating different transaction types */ type InputGenerateTransactionData = InputGenerateSingleSignerRawTransactionData | InputGenerateMultiAgentRawTransactionData; /** * Interface that holds the user data input when submitting a transaction */ interface InputSubmitTransactionData { transaction: AnyRawTransaction; senderAuthenticator: AccountAuthenticator; feePayerAuthenticator?: AccountAuthenticator; additionalSignersAuthenticators?: Array; } export type { AnyRawTransaction, AnyRawTransactionInstance, AnyTransactionPayloadInstance, EntryFunctionABI, EntryFunctionArgumentTypes, FunctionABI, InputEntryFunctionData, InputEntryFunctionDataWithABI, InputEntryFunctionDataWithRemoteABI, InputGenerateMultiAgentRawTransactionArgs, InputGenerateMultiAgentRawTransactionData, InputGenerateRawTransactionArgs, InputGenerateSingleSignerRawTransactionArgs, InputGenerateSingleSignerRawTransactionData, InputGenerateTransactionData, InputGenerateTransactionOptions, InputGenerateTransactionPayloadData, InputGenerateTransactionPayloadDataWithABI, InputGenerateTransactionPayloadDataWithRemoteABI, InputMultiSigData, InputMultiSigDataWithABI, InputMultiSigDataWithRemoteABI, InputScriptData, InputSimulateTransactionData, InputSimulateTransactionDataMock, InputSimulateTransactionOptions, InputSubmitTransactionData, InputViewFunctionData, InputViewFunctionDataWithABI, InputViewFunctionDataWithRemoteABI, ScriptFunctionArgumentTypes, SimpleEntryFunctionArgumentTypes, TypeArgument, ViewFunctionABI };