import * as $ from "@manahippo/move-to-ts"; import {AptosDataCache, AptosParserRepo, DummyCache, AptosLocalCache} from "@manahippo/move-to-ts"; import {U8, U64, U128} from "@manahippo/move-to-ts"; import {u8, u64, u128} from "@manahippo/move-to-ts"; import {TypeParamDeclType, FieldDeclType} from "@manahippo/move-to-ts"; import {AtomicTypeTag, StructTag, TypeTag, VectorTag, SimpleStructTag} from "@manahippo/move-to-ts"; import {OptionTransaction} from "@manahippo/move-to-ts"; import {HexString, AptosClient, AptosAccount, TxnBuilderTypes, Types} from "aptos"; import * as Account from "./account"; import * as Coin from "./coin"; import * as Error from "./error"; export const packageName = "AptosFramework"; export const moduleAddress = new HexString("0x1"); export const moduleName = "aptos_account"; export const EACCOUNT_NOT_FOUND : U64 = u64("1"); export const EACCOUNT_NOT_REGISTERED_FOR_APT : U64 = u64("2"); export function assert_account_exists_ ( addr: HexString, $c: AptosDataCache, ): void { if (!Account.exists_at_($.copy(addr), $c)) { throw $.abortCode(Error.not_found_($.copy(EACCOUNT_NOT_FOUND), $c)); } return; } export function assert_account_is_registered_for_apt_ ( addr: HexString, $c: AptosDataCache, ): void { assert_account_exists_($.copy(addr), $c); if (!Coin.is_account_registered_($.copy(addr), $c, [new StructTag(new HexString("0x1"), "aptos_coin", "AptosCoin", [])])) { throw $.abortCode(Error.not_found_($.copy(EACCOUNT_NOT_REGISTERED_FOR_APT), $c)); } return; } export function create_account_ ( auth_key: HexString, $c: AptosDataCache, ): void { let signer; signer = Account.create_account_($.copy(auth_key), $c); Coin.register_(signer, $c, [new StructTag(new HexString("0x1"), "aptos_coin", "AptosCoin", [])]); return; } export function buildPayload_create_account ( auth_key: HexString, isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { const typeParamStrings = [] as string[]; return $.buildPayload( new HexString("0x1"), "aptos_account", "create_account", typeParamStrings, [ auth_key, ], isJSON, ); } export function transfer_ ( source: HexString, to: HexString, amount: U64, $c: AptosDataCache, ): void { if (!Account.exists_at_($.copy(to), $c)) { create_account_($.copy(to), $c); } else{ } return Coin.transfer_(source, $.copy(to), $.copy(amount), $c, [new StructTag(new HexString("0x1"), "aptos_coin", "AptosCoin", [])]); } export function buildPayload_transfer ( to: HexString, amount: U64, isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { const typeParamStrings = [] as string[]; return $.buildPayload( new HexString("0x1"), "aptos_account", "transfer", typeParamStrings, [ to, amount, ], isJSON, ); } export function loadParsers(repo: AptosParserRepo) { } export class App { constructor( public client: AptosClient, public repo: AptosParserRepo, public cache: AptosLocalCache, ) { } get moduleAddress() {{ return moduleAddress; }} get moduleName() {{ return moduleName; }} payload_create_account( auth_key: HexString, isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { return buildPayload_create_account(auth_key, isJSON); } async create_account( _account: AptosAccount, auth_key: HexString, option?: OptionTransaction, _isJSON = false ) { const payload__ = buildPayload_create_account(auth_key, _isJSON); return $.sendPayloadTx(this.client, _account, payload__, option); } payload_transfer( to: HexString, amount: U64, isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { return buildPayload_transfer(to, amount, isJSON); } async transfer( _account: AptosAccount, to: HexString, amount: U64, option?: OptionTransaction, _isJSON = false ) { const payload__ = buildPayload_transfer(to, amount, _isJSON); return $.sendPayloadTx(this.client, _account, payload__, option); } }