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 Stdlib from "../stdlib"; import * as Implements from "./implements"; export const packageName = "swap"; export const moduleAddress = new HexString("0x870723e9a8f6d07c350e79d63655de673fb24d0695c702f479c201ab7b055f41"); export const moduleName = "controller"; export const ERR_ALREADY_PAUSE : U64 = u64("202"); export const ERR_NOT_PAUSE : U64 = u64("203"); export const ERR_NO_PERMISSIONS : U64 = u64("201"); export class Emergency { static moduleAddress = moduleAddress; static moduleName = moduleName; __app: $.AppType | null = null; static structName: string = "Emergency"; static typeParameters: TypeParamDeclType[] = [ ]; static fields: FieldDeclType[] = [ ]; constructor(proto: any, public typeTag: TypeTag) { } static EmergencyParser(data:any, typeTag: TypeTag, repo: AptosParserRepo) : Emergency { const proto = $.parseStructProto(data, typeTag, repo, Emergency); return new Emergency(proto, typeTag); } static async load(repo: AptosParserRepo, client: AptosClient, address: HexString, typeParams: TypeTag[]) { const result = await repo.loadResource(client, address, Emergency, typeParams); return result as unknown as Emergency; } static async loadByApp(app: $.AppType, address: HexString, typeParams: TypeTag[]) { const result = await app.repo.loadResource(app.client, address, Emergency, typeParams); await result.loadFullState(app) return result as unknown as Emergency; } static getTag(): StructTag { return new StructTag(moduleAddress, moduleName, "Emergency", []); } async loadFullState(app: $.AppType) { this.__app = app; } } export function is_emergency_ ( $c: AptosDataCache, ): boolean { return $c.exists(new SimpleStructTag(Emergency), Implements.controller_($c)); } export function pause_ ( account: HexString, $c: AptosDataCache, ): void { let controller; controller = Implements.controller_($c); if (!$c.exists(new SimpleStructTag(Emergency), $.copy(controller))) { throw $.abortCode($.copy(ERR_ALREADY_PAUSE)); } if (!(($.copy(controller)).hex() === (Stdlib.Signer.address_of_(account, $c)).hex())) { throw $.abortCode($.copy(ERR_NO_PERMISSIONS)); } $c.move_to(new SimpleStructTag(Emergency), account, new Emergency({ }, new SimpleStructTag(Emergency))); return; } export function buildPayload_pause ( isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { const typeParamStrings = [] as string[]; return $.buildPayload( new HexString("0x870723e9a8f6d07c350e79d63655de673fb24d0695c702f479c201ab7b055f41"), "controller", "pause", typeParamStrings, [], isJSON, ); } export function resume_ ( account: HexString, $c: AptosDataCache, ): void { let controller; controller = Implements.controller_($c); if (!!$c.exists(new SimpleStructTag(Emergency), $.copy(controller))) { throw $.abortCode($.copy(ERR_NOT_PAUSE)); } if (!(($.copy(controller)).hex() === (Stdlib.Signer.address_of_(account, $c)).hex())) { throw $.abortCode($.copy(ERR_NO_PERMISSIONS)); } $c.move_from(new SimpleStructTag(Emergency), Stdlib.Signer.address_of_(account, $c)); return; } export function buildPayload_resume ( isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { const typeParamStrings = [] as string[]; return $.buildPayload( new HexString("0x870723e9a8f6d07c350e79d63655de673fb24d0695c702f479c201ab7b055f41"), "controller", "resume", typeParamStrings, [], isJSON, ); } export function loadParsers(repo: AptosParserRepo) { repo.addParser("0x870723e9a8f6d07c350e79d63655de673fb24d0695c702f479c201ab7b055f41::controller::Emergency", Emergency.EmergencyParser); } export class App { constructor( public client: AptosClient, public repo: AptosParserRepo, public cache: AptosLocalCache, ) { } get moduleAddress() {{ return moduleAddress; }} get moduleName() {{ return moduleName; }} get Emergency() { return Emergency; } async loadEmergency( owner: HexString, loadFull=true, fillCache=true, ) { const val = await Emergency.load(this.repo, this.client, owner, [] as TypeTag[]); if (loadFull) { await val.loadFullState(this); } if (fillCache) { this.cache.set(val.typeTag, owner, val); } return val; } payload_pause( isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { return buildPayload_pause(isJSON); } async pause( _account: AptosAccount, option?: OptionTransaction, _isJSON = false ) { const payload__ = buildPayload_pause(_isJSON); return $.sendPayloadTx(this.client, _account, payload__, option); } payload_resume( isJSON = false, ): TxnBuilderTypes.TransactionPayloadEntryFunction | Types.TransactionPayload_EntryFunctionPayload { return buildPayload_resume(isJSON); } async resume( _account: AptosAccount, option?: OptionTransaction, _isJSON = false ) { const payload__ = buildPayload_resume(_isJSON); return $.sendPayloadTx(this.client, _account, payload__, option); } }