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'; export const packageName = 'AptosFramework'; export const moduleAddress = new HexString('0x1'); export const moduleName = 'guid'; export const EGUID_GENERATOR_NOT_PUBLISHED: U64 = u64('0'); export class GUID { static moduleAddress = moduleAddress; static moduleName = moduleName; __app: $.AppType | null = null; static structName: string = 'GUID'; static typeParameters: TypeParamDeclType[] = []; static fields: FieldDeclType[] = [{ name: 'id', typeTag: new StructTag(new HexString('0x1'), 'guid', 'ID', []) }]; id: ID; constructor(proto: any, public typeTag: TypeTag) { this.id = proto['id'] as ID; } static GUIDParser(data: any, typeTag: TypeTag, repo: AptosParserRepo): GUID { const proto = $.parseStructProto(data, typeTag, repo, GUID); return new GUID(proto, typeTag); } static getTag(): StructTag { return new StructTag(moduleAddress, moduleName, 'GUID', []); } async loadFullState(app: $.AppType) { await this.id.loadFullState(app); this.__app = app; } } export class ID { static moduleAddress = moduleAddress; static moduleName = moduleName; __app: $.AppType | null = null; static structName: string = 'ID'; static typeParameters: TypeParamDeclType[] = []; static fields: FieldDeclType[] = [ { name: 'creation_num', typeTag: AtomicTypeTag.U64 }, { name: 'addr', typeTag: AtomicTypeTag.Address } ]; creation_num: U64; addr: HexString; constructor(proto: any, public typeTag: TypeTag) { this.creation_num = proto['creation_num'] as U64; this.addr = proto['addr'] as HexString; } static IDParser(data: any, typeTag: TypeTag, repo: AptosParserRepo): ID { const proto = $.parseStructProto(data, typeTag, repo, ID); return new ID(proto, typeTag); } static getTag(): StructTag { return new StructTag(moduleAddress, moduleName, 'ID', []); } async loadFullState(app: $.AppType) { this.__app = app; } } export function create_(addr: HexString, creation_num_ref: U64, $c: AptosDataCache): GUID { let creation_num; creation_num = $.copy(creation_num_ref); $.set(creation_num_ref, $.copy(creation_num).add(u64('1'))); return new GUID( { id: new ID({ creation_num: $.copy(creation_num), addr: $.copy(addr) }, new SimpleStructTag(ID)) }, new SimpleStructTag(GUID) ); } export function create_id_(addr: HexString, creation_num: U64, $c: AptosDataCache): ID { return new ID({ creation_num: $.copy(creation_num), addr: $.copy(addr) }, new SimpleStructTag(ID)); } export function creation_num_(guid: GUID, $c: AptosDataCache): U64 { return $.copy(guid.id.creation_num); } export function creator_address_(guid: GUID, $c: AptosDataCache): HexString { return $.copy(guid.id.addr); } export function eq_id_(guid: GUID, id: ID, $c: AptosDataCache): boolean { return $.deep_eq(guid.id, id); } export function id_(guid: GUID, $c: AptosDataCache): ID { return $.copy(guid.id); } export function id_creation_num_(id: ID, $c: AptosDataCache): U64 { return $.copy(id.creation_num); } export function id_creator_address_(id: ID, $c: AptosDataCache): HexString { return $.copy(id.addr); } export function loadParsers(repo: AptosParserRepo) { repo.addParser('0x1::guid::GUID', GUID.GUIDParser); repo.addParser('0x1::guid::ID', ID.IDParser); } export class App { constructor(public client: AptosClient, public repo: AptosParserRepo, public cache: AptosLocalCache) {} get moduleAddress() { { return moduleAddress; } } get moduleName() { { return moduleName; } } get GUID() { return GUID; } get ID() { return ID; } }