@wowok/wowok 2.7.8 → 2.7.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{arb-DZ5-FP7_.mjs → arb-JMhHn5kY.mjs} +1 -1
- package/dist/esm/{base-f1zBnHpg.mjs → base-o08Syk_8.mjs} +1 -1
- package/dist/esm/{call-auKyfjK7.mjs → call-CtePYECR.mjs} +1 -1
- package/dist/esm/client/index.d.mts +1 -1
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/{client-CTMCNWFH.mjs → client-oE69u-rK.mjs} +1 -1
- package/dist/esm/cryptography/index.d.mts +1 -1
- package/dist/esm/graphql/index.d.mts +1 -1
- package/dist/esm/graphql/index.mjs +1 -1
- package/dist/esm/{graphql-B-ccXDHR.mjs → graphql-DyX3W1VP.mjs} +1 -1
- package/dist/esm/grpc/index.d.mts +1 -1
- package/dist/esm/grpc/index.mjs +1 -1
- package/dist/esm/{grpc-BOYXM3Gp.mjs → grpc-BfuVFCn4.mjs} +1 -1
- package/dist/esm/{index-CfOec8aL.d.mts → index-OlNG95EF.d.mts} +13 -4
- package/dist/esm/index.d.mts +2 -3
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/jsonRpc/index.d.mts +1 -1
- package/dist/esm/jsonRpc/index.mjs +1 -1
- package/dist/esm/keypairs/ed25519/index.d.mts +1 -1
- package/dist/esm/keypairs/falcon512/index.d.mts +1 -1
- package/dist/esm/keypairs/passkey/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256k1/index.d.mts +1 -1
- package/dist/esm/keypairs/secp256r1/index.d.mts +1 -1
- package/dist/esm/{messenger-BYQYMKsr.mjs → messenger-B-CSCV8C.mjs} +1 -1
- package/dist/esm/{messenger-api-hJXTikF9.mjs → messenger-api-DTnmFsT-.mjs} +1 -1
- package/dist/esm/multisig/index.d.mts +1 -1
- package/dist/esm/multisig/index.mjs +1 -1
- package/dist/esm/network-y8yMus5q.mjs +1 -1
- package/dist/esm/{object-Ddewar4L.mjs → object-CJHJxXlc.mjs} +1 -1
- package/dist/esm/passkey-hU0KN8tj.mjs +1 -1
- package/dist/esm/{passport-9xWbg5h4.mjs → passport-B5g5Rv9_.mjs} +1 -1
- package/dist/esm/proof-pOwly4FL.mjs +1 -0
- package/dist/esm/publickey-C1XTriFK.mjs +1 -1
- package/dist/esm/publickey-CO7mE1h4.mjs +1 -1
- package/dist/esm/publickey-CaeLjex_.mjs +1 -1
- package/dist/esm/publickey-CvsHmrwa.mjs +1 -1
- package/dist/esm/publickey-D1qNOZY_.mjs +1 -1
- package/dist/esm/publickey-DioRydm4.mjs +1 -1
- package/dist/esm/{query-DNcY8aRP.mjs → query-BDY4w7pA.mjs} +1 -1
- package/dist/esm/{received-B6OMjPC0.mjs → received-D0KPLcZ8.mjs} +1 -1
- package/dist/esm/secp256k1-DbTX5WTS.mjs +1 -1
- package/dist/esm/secp256r1-tIVPNUMT.mjs +1 -1
- package/dist/esm/{service-BdbL5IK5.mjs → service-Rz5iSVL2.mjs} +1 -1
- package/dist/esm/storage-j7eJYpqQ.mjs +1 -0
- package/dist/esm/transactions/index.d.mts +1 -1
- package/dist/esm/{util-Bgqh9uNb.mjs → util-Bwj83MFX.mjs} +1 -1
- package/dist/esm/verify/index.d.mts +1 -1
- package/dist/esm/w/call/allocation.d.mts +1 -1
- package/dist/esm/w/call/allocation.mjs +1 -1
- package/dist/esm/w/call/arbitration.d.mts +1 -1
- package/dist/esm/w/call/arbitration.mjs +1 -1
- package/dist/esm/w/call/base.d.mts +1 -1
- package/dist/esm/w/call/base.mjs +1 -1
- package/dist/esm/w/call/demand.d.mts +1 -1
- package/dist/esm/w/call/demand.mjs +1 -1
- package/dist/esm/w/call/guard.d.mts +1 -1
- package/dist/esm/w/call/guard.mjs +1 -1
- package/dist/esm/w/call/index.d.mts +1 -1
- package/dist/esm/w/call/index.mjs +1 -1
- package/dist/esm/w/call/machine.d.mts +1 -1
- package/dist/esm/w/call/machine.mjs +1 -1
- package/dist/esm/w/call/passport.d.mts +1 -1
- package/dist/esm/w/call/passport.mjs +1 -1
- package/dist/esm/w/call/payment.d.mts +1 -1
- package/dist/esm/w/call/payment.mjs +1 -1
- package/dist/esm/w/call/permission.d.mts +1 -1
- package/dist/esm/w/call/permission.mjs +1 -1
- package/dist/esm/w/call/progress.d.mts +1 -1
- package/dist/esm/w/call/progress.mjs +1 -1
- package/dist/esm/w/call/repository.d.mts +1 -1
- package/dist/esm/w/call/repository.mjs +1 -1
- package/dist/esm/w/call/reward.d.mts +1 -1
- package/dist/esm/w/call/reward.mjs +1 -1
- package/dist/esm/w/call/service.d.mts +1 -1
- package/dist/esm/w/call/service.mjs +1 -1
- package/dist/esm/w/call/treasury.d.mts +1 -1
- package/dist/esm/w/call/treasury.mjs +1 -1
- package/dist/esm/w/common.d.mts +1 -1
- package/dist/esm/w/index.d.mts +2 -3
- package/dist/esm/w/index.mjs +1 -1
- package/dist/esm/w/local/account.d.mts +2 -2
- package/dist/esm/w/local/account.mjs +1 -1
- package/dist/esm/w/local/cache.mjs +1 -1
- package/dist/esm/w/local/config.mjs +1 -1
- package/dist/esm/w/local/evm/networks.mjs +1 -1
- package/dist/esm/w/local/evm-account.mjs +1 -1
- package/dist/esm/w/local/index.d.mts +2 -3
- package/dist/esm/w/local/index.mjs +1 -1
- package/dist/esm/w/local/local.mjs +1 -1
- package/dist/esm/w/local/secure-storage.mjs +1 -1
- package/dist/esm/w/local/storage.mjs +1 -1
- package/dist/esm/w/local/token.d.mts +1 -1
- package/dist/esm/w/local/token.mjs +1 -1
- package/dist/esm/w/local/util.mjs +1 -1
- package/dist/esm/w/local/wip.mjs +1 -1
- package/dist/esm/w/messenger/index.d.mts +1 -1
- package/dist/esm/w/messenger/index.mjs +1 -1
- package/dist/esm/w/messenger/messenger-api.d.mts +1 -1
- package/dist/esm/w/messenger/messenger-api.mjs +1 -1
- package/dist/esm/w/messenger/messenger.d.mts +1 -1
- package/dist/esm/w/messenger/messenger.mjs +1 -1
- package/dist/esm/w/messenger/pq/crypto.mjs +1 -1
- package/dist/esm/w/messenger/reply.d.mts +1 -1
- package/dist/esm/w/messenger/storage.d.mts +1 -1
- package/dist/esm/w/messenger/storage.mjs +1 -1
- package/dist/esm/w/messenger/types.d.mts +1 -1
- package/dist/esm/w/query/index.d.mts +2 -2
- package/dist/esm/w/query/index.mjs +1 -1
- package/dist/esm/w/query/object.d.mts +1 -1
- package/dist/esm/w/query/object.mjs +1 -1
- package/dist/esm/w-CRLsrxnb.mjs +1 -0
- package/package.json +1 -4
- package/dist/esm/lock-QdrQzo0u.mjs +0 -1
- package/dist/esm/project-B3Z3z_Z_.d.mts +0 -246
- package/dist/esm/proof-Du71Cy6u.mjs +0 -1
- package/dist/esm/w/local/project.d.mts +0 -2
- package/dist/esm/w/local/project.mjs +0 -1
- package/dist/esm/w-DNJ63FSn.mjs +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as a84a}from'../../exception-Xd2RFs2i.mjs';import{getWowDir}from'./util.mjs';import{t as a84b}from'../../lock-QdrQzo0u.mjs';import a84c from'libsql';import*as a84d from'path';import*as a84e from'fs';const WOW_DIR=getWowDir(),PROJECT_DB_PATH=a84d['join'](WOW_DIR,'project.db');function ensureWowDirExists(){if(!a84e['existsSync'](WOW_DIR))a84e['mkdirSync'](WOW_DIR,{'recursive':!![]});}let projectDbInstance=null;function getProjectDatabase(){ensureWowDirExists();const a=new a84c(PROJECT_DB_PATH);return a['pragma']('journal_mode\x20=\x20WAL'),a['pragma']('synchronous\x20=\x20NORMAL'),a['pragma']('busy_timeout\x20=\x205000'),a['exec'](SCHEMA_SQL),a;}function getProjectDb(){if(projectDbInstance)return projectDbInstance;return projectDbInstance=getProjectDatabase(),projectDbInstance;}const SCHEMA_SQL='\x0a--\x20Project\x20metadata\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20projects\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20prefix\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20UNIQUE\x20NOT\x20NULL,\x0a\x20\x20\x20\x20name\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20description\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20industry\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20perspective\x20\x20\x20\x20\x20TEXT\x20DEFAULT\x20\x27producer\x27,\x0a\x20\x20\x20\x20status\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20DEFAULT\x20\x27draft\x27,\x0a\x20\x20\x20\x20labels\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20current_version\x20TEXT,\x0a\x20\x20\x20\x20service_address\x20TEXT,\x0a\x20\x20\x20\x20default_account\x20TEXT,\x0a\x20\x20\x20\x20network\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27testnet\x27,\x0a\x20\x20\x20\x20created_at\x20\x20\x20\x20\x20\x20INTEGER,\x0a\x20\x20\x20\x20updated_at\x20\x20\x20\x20\x20\x20INTEGER,\x0a\x20\x20\x20\x20metadata\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_projects_status\x20ON\x20projects(status);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_projects_network\x20ON\x20projects(network);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_projects_perspective\x20ON\x20projects(perspective);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_projects_service\x20ON\x20projects(service_address);\x0a\x0a--\x20Project\x20version\x20history\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20project_versions\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20project_id\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20version\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20description\x20TEXT,\x0a\x20\x20\x20\x20created_at\x20\x20INTEGER,\x0a\x20\x20\x20\x20metadata\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE,\x0a\x20\x20\x20\x20UNIQUE(project_id,\x20version)\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_versions_project\x20ON\x20project_versions(project_id);\x0a\x0a--\x20Project-object\x20relationships\x20(rigid,\x20not\x20tag-based)\x0a--\x20An\x20object\x20can\x20belong\x20to\x20multiple\x20projects\x20(no\x20UNIQUE\x20on\x20object_address)\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20project_objects\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20project_id\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20object_address\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20object_type\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20object_name\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20role\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20DEFAULT\x20\x27reference\x27,\x0a\x20\x20\x20\x20tags\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20added_at\x20\x20\x20\x20\x20\x20INTEGER,\x0a\x20\x20\x20\x20metadata\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_objects_project\x20ON\x20project_objects(project_id);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_objects_address\x20ON\x20project_objects(object_address);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_objects_type\x20ON\x20project_objects(object_type);\x0a\x0a--\x20Cached\x20on-chain\x20object\x20data\x20with\x20timestamps\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20object_cache\x20(\x0a\x20\x20\x20\x20address\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20object_type\x20TEXT,\x0a\x20\x20\x20\x20data\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20fetched_at\x20\x20INTEGER,\x0a\x20\x20\x20\x20network\x20\x20\x20\x20\x20TEXT\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_cache_type\x20ON\x20object_cache(object_type);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_cache_network\x20ON\x20object_cache(network);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_cache_fetched\x20ON\x20object_cache(fetched_at);\x0a\x0a--\x20Historical\x20snapshots\x20for\x20diff\x20analysis\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20object_cache_history\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20address\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20object_type\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20data\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20fetched_at\x20\x20\x20\x20\x20\x20INTEGER,\x0a\x20\x20\x20\x20network\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20changed_fields\x20\x20TEXT\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_history_address\x20ON\x20object_cache_history(address);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_history_time\x20ON\x20object_cache_history(fetched_at);\x0a\x0a--\x20Relationship\x20graph\x20edges\x20(3-pathway\x20fusion)\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20graph_edges\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20project_id\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20source_object\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20target_object\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20edge_source\x20\x20\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20relationship_type\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20field_name\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20depth\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20verified\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INTEGER\x20DEFAULT\x200,\x0a\x20\x20\x20\x20weight\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20REAL\x20DEFAULT\x200.5,\x0a\x20\x20\x20\x20direction\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20metadata\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20cached_at\x20\x20\x20\x20\x20\x20\x20\x20\x20INTEGER\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_edges_project\x20ON\x20graph_edges(project_id);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_edges_source\x20ON\x20graph_edges(source_object);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_edges_target\x20ON\x20graph_edges(target_object);\x0a\x0a--\x20Evaluation\x20results\x20(cached\x20with\x20timestamps)\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20evaluations\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20project_id\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20eval_type\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20score\x20\x20\x20\x20\x20\x20\x20\x20\x20REAL,\x0a\x20\x20\x20\x20summary\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20details\x20\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20evaluated_at\x20\x20INTEGER,\x0a\x20\x20\x20\x20metadata\x20\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_eval_project\x20ON\x20evaluations(project_id);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_eval_type\x20ON\x20evaluations(eval_type);\x0a\x0a--\x20Project\x20deployment\x20documents\x20(generated\x20from\x20SQLite\x20data)\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20project_documents\x20(\x0a\x20\x20\x20\x20id\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20project_id\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20version\x20\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20network\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20doc_type\x20\x20\x20\x20TEXT\x20DEFAULT\x20\x27deployment\x27,\x0a\x20\x20\x20\x20content\x20\x20\x20\x20\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20checksum\x20\x20\x20\x20TEXT,\x0a\x20\x20\x20\x20generated_at\x20INTEGER,\x0a\x20\x20\x20\x20updated_at\x20\x20\x20INTEGER,\x0a\x20\x20\x20\x20FOREIGN\x20KEY\x20(project_id)\x20REFERENCES\x20projects(id)\x20ON\x20DELETE\x20CASCADE\x0a);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_docs_project\x20ON\x20project_documents(project_id);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_docs_network\x20ON\x20project_documents(network);\x0a';function generateId(){if(typeof crypto!=='undefined'&&crypto['randomUUID'])return crypto['randomUUID']();return Date['now']()+'-'+Math['random']()['toString'](0x24)['slice'](0x2,0xb);}function parseJSON(a){if(!a)return null;try{return JSON['parse'](a);}catch{return null;}}function parseStringArray(a){if(!a)return null;try{const b=JSON['parse'](a);return Array['isArray'](b)?b:null;}catch{return null;}}function rowToProject(a){return{'id':a['id'],'prefix':a['prefix'],'name':a['name'],'description':a['description'],'industry':a['industry'],'perspective':a['perspective'],'status':a['status'],'labels':parseStringArray(a['labels']),'currentVersion':a['current_version'],'serviceAddress':a['service_address'],'defaultAccount':a['default_account'],'network':a['network'],'createdAt':a['created_at'],'updatedAt':a['updated_at'],'metadata':parseJSON(a['metadata'])};}function rowToVersion(a){return{'id':a['id'],'projectId':a['project_id'],'version':a['version'],'description':a['description'],'createdAt':a['created_at'],'metadata':parseJSON(a['metadata'])};}function rowToProjectObject(a){return{'id':a['id'],'projectId':a['project_id'],'objectAddress':a['object_address'],'objectType':a['object_type'],'objectName':a['object_name'],'role':a['role'],'tags':parseStringArray(a['tags']),'addedAt':a['added_at'],'metadata':parseJSON(a['metadata'])};}function rowToGraphEdge(a){return{'id':a['id'],'projectId':a['project_id'],'sourceObject':a['source_object'],'targetObject':a['target_object'],'edgeSource':a['edge_source'],'relationshipType':a['relationship_type'],'fieldName':a['field_name'],'depth':a['depth'],'verified':a['verified']===0x1,'weight':a['weight'],'direction':a['direction'],'metadata':parseJSON(a['metadata']),'cachedAt':a['cached_at']};}function rowToEvaluation(a){return{'id':a['id'],'projectId':a['project_id'],'evalType':a['eval_type'],'score':a['score'],'summary':a['summary'],'details':parseJSON(a['details']),'evaluatedAt':a['evaluated_at'],'metadata':parseJSON(a['metadata'])};}function rowToProjectDocument(a){return{'id':a['id'],'project_id':a['project_id'],'version':a['version']??void 0x0,'network':a['network'],'doc_type':a['doc_type'],'content':a['content'],'checksum':a['checksum']??void 0x0,'generated_at':a['generated_at']??void 0x0,'updated_at':a['updated_at']??void 0x0};}var LocalProject=class LocalProject{static{this['_instanceLock']=new a84b();}constructor(){this['_dbLock']=new a84b();}static['Instance'](){if(LocalProject['_instance'])return LocalProject['_instance'];if(!LocalProject['_instance'])LocalProject['_instance']=new LocalProject();return LocalProject['_instance'];}get['db'](){return getProjectDb();}async['createProject'](a){return this['_dbLock']['run'](async()=>{const b=generateId(),c=Date['now'](),d=a['network']??'testnet',e=a['perspective']??'producer';return this['db']['prepare']('INSERT\x20INTO\x20projects\x20(id,\x20prefix,\x20name,\x20description,\x20industry,\x20perspective,\x20status,\x20labels,\x0a\x09\x09\x09\x09\x09\x09current_version,\x20service_address,\x20default_account,\x20network,\x20created_at,\x20updated_at,\x20metadata)\x0a\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20\x27draft\x27,\x20?,\x20NULL,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](b,a['prefix'],a['name'],a['description']??null,a['industry']??null,e,a['labels']?JSON['stringify'](a['labels']):null,a['serviceAddress']??null,a['defaultAccount']??null,d,c,c,a['metadata']?JSON['stringify'](a['metadata']):null),await this['getProject'](b);});}async['updateProject'](a,b){return this['_dbLock']['run'](async()=>{if(!await this['getProject'](a))a84a('invalid\x20parameter','Project\x20not\x20found:\x20'+a);const c=Date['now'](),d=[],e=[];return b['name']!==void 0x0&&(d['push']('name\x20=\x20?'),e['push'](b['name'])),b['description']!==void 0x0&&(d['push']('description\x20=\x20?'),e['push'](b['description'])),b['industry']!==void 0x0&&(d['push']('industry\x20=\x20?'),e['push'](b['industry'])),b['perspective']!==void 0x0&&(d['push']('perspective\x20=\x20?'),e['push'](b['perspective'])),b['status']!==void 0x0&&(d['push']('status\x20=\x20?'),e['push'](b['status'])),b['labels']!==void 0x0&&(d['push']('labels\x20=\x20?'),e['push'](b['labels']?JSON['stringify'](b['labels']):null)),b['currentVersion']!==void 0x0&&(d['push']('current_version\x20=\x20?'),e['push'](b['currentVersion'])),b['serviceAddress']!==void 0x0&&(d['push']('service_address\x20=\x20?'),e['push'](b['serviceAddress'])),b['defaultAccount']!==void 0x0&&(d['push']('default_account\x20=\x20?'),e['push'](b['defaultAccount'])),b['metadata']!==void 0x0&&(d['push']('metadata\x20=\x20?'),e['push'](b['metadata']?JSON['stringify'](b['metadata']):null)),d['push']('updated_at\x20=\x20?'),e['push'](c),e['push'](a),this['db']['prepare']('UPDATE\x20projects\x20SET\x20'+d['join'](',\x20')+'\x20WHERE\x20id\x20=\x20?')['run'](...e),await this['getProject'](a);});}async['getProject'](a){const b=this['db']['prepare']('SELECT\x20*\x20FROM\x20projects\x20WHERE\x20id\x20=\x20?')['get'](a);return b?rowToProject(b):void 0x0;}async['getProjectByPrefix'](a){const b=this['db']['prepare']('SELECT\x20*\x20FROM\x20projects\x20WHERE\x20prefix\x20=\x20?')['get'](a);return b?rowToProject(b):void 0x0;}async['listProjects'](a){const b=[],c=[];a?.['status']&&(b['push']('status\x20=\x20?'),c['push'](a['status']));a?.['perspective']&&(b['push']('perspective\x20=\x20?'),c['push'](a['perspective']));a?.['network']&&(b['push']('network\x20=\x20?'),c['push'](a['network']));a?.['industry']&&(b['push']('industry\x20=\x20?'),c['push'](a['industry']));a?.['serviceAddress']&&(b['push']('service_address\x20=\x20?'),c['push'](a['serviceAddress']));let d='SELECT\x20*\x20FROM\x20projects';if(b['length']>0x0)d+='\x20WHERE\x20'+b['join']('\x20AND\x20');d+='\x20ORDER\x20BY\x20updated_at\x20DESC';let e=this['db']['prepare'](d)['all'](...c);if(a?.['labels']&&a['labels']['length']>0x0)e=e['filter'](f=>{const g=parseStringArray(f['labels']);if(!g)return![];return a['labels']['some'](h=>g['includes'](h));});return e['map'](rowToProject);}async['deleteProject'](a){return this['_dbLock']['run'](async()=>{this['db']['prepare']('DELETE\x20FROM\x20projects\x20WHERE\x20id\x20=\x20?')['run'](a);});}async['createVersion'](a,b,c,d){return this['_dbLock']['run'](async()=>{const e=generateId(),f=Date['now']();return this['db']['prepare']('INSERT\x20INTO\x20project_versions\x20(id,\x20project_id,\x20version,\x20description,\x20created_at,\x20metadata)\x0a\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](e,a,b,c??null,f,d?JSON['stringify'](d):null),this['db']['prepare']('UPDATE\x20projects\x20SET\x20current_version\x20=\x20?,\x20updated_at\x20=\x20?\x20WHERE\x20id\x20=\x20?')['run'](b,f,a),await this['getVersion'](e);});}async['getVersion'](a){const b=this['db']['prepare']('SELECT\x20*\x20FROM\x20project_versions\x20WHERE\x20id\x20=\x20?')['get'](a);return b?rowToVersion(b):void 0x0;}async['listVersions'](a){return this['db']['prepare']('SELECT\x20*\x20FROM\x20project_versions\x20WHERE\x20project_id\x20=\x20?\x20ORDER\x20BY\x20created_at\x20DESC')['all'](a)['map'](rowToVersion);}async['addObject'](a,b){return this['_dbLock']['run'](async()=>{const c=generateId(),d=Date['now'](),e=b['role']??'reference';return this['db']['prepare']('INSERT\x20INTO\x20project_objects\x20(id,\x20project_id,\x20object_address,\x20object_type,\x20object_name,\x20role,\x20tags,\x20added_at,\x20metadata)\x0a\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](c,a,b['objectAddress'],b['objectType']??null,b['objectName']??null,e,b['tags']?JSON['stringify'](b['tags']):null,d,b['metadata']?JSON['stringify'](b['metadata']):null),await this['getObject'](c);});}async['addObjects'](a,b){const c=[];for(const d of b)c['push'](await this['addObject'](a,d));return c;}async['getObject'](a){const b=this['db']['prepare']('SELECT\x20*\x20FROM\x20project_objects\x20WHERE\x20id\x20=\x20?')['get'](a);return b?rowToProjectObject(b):void 0x0;}async['listObjects'](a,b){const c=['project_id\x20=\x20?'],d=[a];return b?.['objectType']&&(c['push']('object_type\x20=\x20?'),d['push'](b['objectType'])),b?.['role']&&(c['push']('role\x20=\x20?'),d['push'](b['role'])),this['db']['prepare']('SELECT\x20*\x20FROM\x20project_objects\x20WHERE\x20'+c['join']('\x20AND\x20')+'\x20ORDER\x20BY\x20added_at\x20DESC')['all'](...d)['map'](rowToProjectObject);}async['removeObject'](a){this['db']['prepare']('DELETE\x20FROM\x20project_objects\x20WHERE\x20id\x20=\x20?')['run'](a);}async['removeObjectByAddress'](a,b){this['db']['prepare']('DELETE\x20FROM\x20project_objects\x20WHERE\x20project_id\x20=\x20?\x20AND\x20object_address\x20=\x20?')['run'](a,b);}async['updateObject'](a,b){const c=[],d=[];b['objectName']!==void 0x0&&(c['push']('object_name\x20=\x20?'),d['push'](b['objectName']));b['objectType']!==void 0x0&&(c['push']('object_type\x20=\x20?'),d['push'](b['objectType']));b['role']!==void 0x0&&(c['push']('role\x20=\x20?'),d['push'](b['role']));b['tags']!==void 0x0&&(c['push']('tags\x20=\x20?'),d['push'](JSON['stringify'](b['tags'])));if(c['length']===0x0)throw new Error('No\x20fields\x20to\x20update');return d['push'](a),this['db']['prepare']('UPDATE\x20project_objects\x20SET\x20'+c['join'](',\x20')+'\x20WHERE\x20id\x20=\x20?')['run'](...d),await this['getObject'](a);}async['findObjectsByAddress'](a){return this['db']['prepare']('SELECT\x20*\x20FROM\x20project_objects\x20WHERE\x20object_address\x20=\x20?\x20ORDER\x20BY\x20added_at\x20DESC')['all'](a)['map'](rowToProjectObject);}async['cacheObject'](a,b,c,d){return this['_dbLock']['run'](async()=>{const e=Date['now'](),f=this['db']['prepare']('SELECT\x20*\x20FROM\x20object_cache\x20WHERE\x20address\x20=\x20?')['get'](a);if(f){const g=this['computeChangedFields'](f['data'],c);this['db']['prepare']('INSERT\x20INTO\x20object_cache_history\x20(id,\x20address,\x20object_type,\x20data,\x20fetched_at,\x20network,\x20changed_fields)\x0a\x09\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](generateId(),a,f['object_type'],f['data'],f['fetched_at'],f['network'],g['length']>0x0?JSON['stringify'](g):null);}this['db']['prepare']('INSERT\x20INTO\x20object_cache\x20(address,\x20object_type,\x20data,\x20fetched_at,\x20network)\x0a\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?)\x0a\x09\x09\x09\x09\x09\x20ON\x20CONFLICT(address)\x20DO\x20UPDATE\x20SET\x20object_type\x20=\x20excluded.object_type,\x0a\x09\x09\x09\x09\x09\x09data\x20=\x20excluded.data,\x20fetched_at\x20=\x20excluded.fetched_at,\x20network\x20=\x20excluded.network')['run'](a,b,c,e,d);});}async['getCachedObject'](a){const b=this['db']['prepare']('SELECT\x20*\x20FROM\x20object_cache\x20WHERE\x20address\x20=\x20?')['get'](a);if(!b)return void 0x0;return{'address':b['address'],'objectType':b['object_type'],'data':b['data'],'fetchedAt':b['fetched_at'],'network':b['network']};}async['getCachedObjects'](a){const b=new Map();if(a['length']===0x0)return b;const c=a['map'](()=>'?')['join'](','),d=this['db']['prepare']('SELECT\x20*\x20FROM\x20object_cache\x20WHERE\x20address\x20IN\x20('+c+')')['all'](...a);for(const e of d)b['set'](e['address'],{'address':e['address'],'objectType':e['object_type'],'data':e['data'],'fetchedAt':e['fetched_at'],'network':e['network']});return b;}async['deleteCachedObject'](a){this['db']['prepare']('DELETE\x20FROM\x20object_cache\x20WHERE\x20address\x20=\x20?')['run'](a);}async['getObjectDiff'](a,b,c){const d=this['db']['prepare']('SELECT\x20*\x20FROM\x20object_cache_history\x0a\x09\x09\x09\x09\x20WHERE\x20address\x20=\x20?\x20AND\x20fetched_at\x20BETWEEN\x20?\x20AND\x20?\x0a\x09\x09\x09\x09\x20ORDER\x20BY\x20fetched_at\x20ASC')['all'](a,b,c),e=await this['getCachedObject'](a);if(e&&e['fetchedAt']>=b&&e['fetchedAt']<=c)d['push']({'id':'current','address':e['address'],'object_type':e['objectType'],'data':e['data'],'fetched_at':e['fetchedAt'],'network':e['network'],'changed_fields':null});const f=[];if(d['length']>=0x2){const g=d[0x0],h=d[d['length']-0x1],i=this['computeDiff'](g['data'],h['data'],g['data'],h['data']);f['push'](...i);}return{'address':a,'fromTime':b,'toTime':c,'changedFields':f};}async['getObjectHistory'](a){return this['db']['prepare']('SELECT\x20*\x20FROM\x20object_cache_history\x20WHERE\x20address\x20=\x20?\x20ORDER\x20BY\x20fetched_at\x20DESC')['all'](a)['map'](b=>({'id':b['id'],'address':b['address'],'objectType':b['object_type'],'data':b['data'],'fetchedAt':b['fetched_at'],'network':b['network'],'changedFields':parseStringArray(b['changed_fields'])}));}['computeChangedFields'](a,b){try{const c=JSON['parse'](a),d=JSON['parse'](b),e=[];return this['collectChangedPaths'](c,d,'',e),e;}catch{return[];}}['collectChangedPaths'](a,b,c,d){if(typeof a!==typeof b){d['push'](c||'(root)');return;}if(typeof a!=='object'||a===null||b===null){if(a!==b)d['push'](c||'(root)');return;}const e=a,f=b,g=new Set([...Object['keys'](e),...Object['keys'](f)]);for(const h of g){const i=c?c+'.'+h:h;if(!(h in e))d['push'](i);else{if(!(h in f))d['push'](i);else this['collectChangedPaths'](e[h],f[h],i,d);}}}['computeDiff'](a,b,c,d){try{const e=JSON['parse'](a),f=JSON['parse'](b),g=[];return this['collectDiff'](e,f,'',g),g;}catch{return[];}}['collectDiff'](a,b,c,d){if(typeof a!==typeof b){d['push']({'fieldPath':c||'(root)','oldValue':a,'newValue':b,'changeType':'modified'});return;}if(typeof a!=='object'||a===null||b===null){if(a!==b)d['push']({'fieldPath':c||'(root)','oldValue':a,'newValue':b,'changeType':'modified'});return;}const e=a,f=b,g=new Set([...Object['keys'](e),...Object['keys'](f)]);for(const h of g){const i=c?c+'.'+h:h;if(!(h in e))d['push']({'fieldPath':i,'oldValue':void 0x0,'newValue':f[h],'changeType':'added'});else{if(!(h in f))d['push']({'fieldPath':i,'oldValue':e[h],'newValue':void 0x0,'changeType':'removed'});else this['collectDiff'](e[h],f[h],i,d);}}}async['saveGraphEdges'](a,b){return this['_dbLock']['run'](async()=>{const c=Date['now']();if(a)this['db']['prepare']('DELETE\x20FROM\x20graph_edges\x20WHERE\x20project_id\x20=\x20?')['run'](a);const d=this['db']['prepare']('INSERT\x20INTO\x20graph_edges\x20(id,\x20project_id,\x20source_object,\x20target_object,\x20edge_source,\x0a\x09\x09\x09\x09\x09relationship_type,\x20field_name,\x20depth,\x20verified,\x20weight,\x20direction,\x20metadata,\x20cached_at)\x0a\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)');return this['db']['transaction'](e=>{for(const f of e){const g=generateId();d['run'](g,a??f['projectId']??null,f['sourceObject'],f['targetObject'],f['edgeSource'],f['relationshipType'],f['fieldName']??null,f['depth']??0x0,f['verified']?0x1:0x0,f['weight']??0.5,f['direction']??null,f['metadata']?JSON['stringify'](f['metadata']):null,c);}})(b),(a?this['db']['prepare']('SELECT\x20*\x20FROM\x20graph_edges\x20WHERE\x20project_id\x20=\x20?')['all'](a):this['db']['prepare']('SELECT\x20*\x20FROM\x20graph_edges\x20WHERE\x20project_id\x20IS\x20NULL')['all']())['map'](rowToGraphEdge);});}async['getGraph'](a){return(a?this['db']['prepare']('SELECT\x20*\x20FROM\x20graph_edges\x20WHERE\x20project_id\x20=\x20?')['all'](a):this['db']['prepare']('SELECT\x20*\x20FROM\x20graph_edges')['all']())['map'](rowToGraphEdge);}async['getGraphForObject'](a){return this['db']['prepare']('SELECT\x20*\x20FROM\x20graph_edges\x20WHERE\x20source_object\x20=\x20?\x20OR\x20target_object\x20=\x20?')['all'](a,a)['map'](rowToGraphEdge);}async['clearGraph'](a){if(a)this['db']['prepare']('DELETE\x20FROM\x20graph_edges\x20WHERE\x20project_id\x20=\x20?')['run'](a);else this['db']['exec']('DELETE\x20FROM\x20graph_edges');}async['saveEvaluation'](a){return this['_dbLock']['run'](async()=>{const b=generateId(),c=Date['now']();return this['db']['prepare']('INSERT\x20INTO\x20evaluations\x20(id,\x20project_id,\x20eval_type,\x20score,\x20summary,\x20details,\x20evaluated_at,\x20metadata)\x0a\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](b,a['projectId'],a['evalType'],a['score']??null,a['summary']??null,a['details']?JSON['stringify'](a['details']):null,c,a['metadata']?JSON['stringify'](a['metadata']):null),await this['getEvaluation'](b);});}async['getEvaluation'](a){const b=this['db']['prepare']('SELECT\x20*\x20FROM\x20evaluations\x20WHERE\x20id\x20=\x20?')['get'](a);return b?rowToEvaluation(b):void 0x0;}async['listEvaluations'](a,b){const c=['project_id\x20=\x20?'],d=[a];return b?.['evalType']&&(c['push']('eval_type\x20=\x20?'),d['push'](b['evalType'])),this['db']['prepare']('SELECT\x20*\x20FROM\x20evaluations\x20WHERE\x20'+c['join']('\x20AND\x20')+'\x20ORDER\x20BY\x20evaluated_at\x20DESC')['all'](...d)['map'](rowToEvaluation);}async['getLatestEvaluation'](a,b){const c=this['db']['prepare']('SELECT\x20*\x20FROM\x20evaluations\x20WHERE\x20project_id\x20=\x20?\x20AND\x20eval_type\x20=\x20?\x0a\x09\x09\x09\x09\x20ORDER\x20BY\x20evaluated_at\x20DESC\x20LIMIT\x201')['get'](a,b);return c?rowToEvaluation(c):void 0x0;}async['saveDocument'](a,b,c,d='deployment'){return this['_dbLock']['run'](async()=>{const e=generateId(),f=Date['now'](),g=this['computeChecksum'](c),h=this['db']['prepare']('SELECT\x20id\x20FROM\x20project_documents\x20WHERE\x20project_id\x20=\x20?\x20AND\x20network\x20=\x20?\x20AND\x20doc_type\x20=\x20?')['get'](a,b,d);if(h)return this['db']['prepare']('UPDATE\x20project_documents\x20SET\x20content\x20=\x20?,\x20checksum\x20=\x20?,\x20updated_at\x20=\x20?\x20WHERE\x20id\x20=\x20?')['run'](c,g,f,h['id']),this['getDocument'](a,b,d);return this['db']['prepare']('INSERT\x20INTO\x20project_documents\x20(id,\x20project_id,\x20network,\x20doc_type,\x20content,\x20checksum,\x20generated_at,\x20updated_at)\x0a\x09\x09\x09\x09\x09\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)')['run'](e,a,b,d,c,g,f,f),this['getDocument'](a,b,d);});}async['getDocument'](a,b,c='deployment'){const d=this['db']['prepare']('SELECT\x20*\x20FROM\x20project_documents\x20WHERE\x20project_id\x20=\x20?\x20AND\x20network\x20=\x20?\x20AND\x20doc_type\x20=\x20?')['get'](a,b,c);return d?rowToProjectDocument(d):void 0x0;}async['listDocuments'](a){return this['db']['prepare']('SELECT\x20*\x20FROM\x20project_documents\x20WHERE\x20project_id\x20=\x20?\x20ORDER\x20BY\x20updated_at\x20DESC')['all'](a)['map'](rowToProjectDocument);}async['deleteDocument'](a,b,c='deployment'){return this['_dbLock']['run'](async()=>{return this['db']['prepare']('DELETE\x20FROM\x20project_documents\x20WHERE\x20project_id\x20=\x20?\x20AND\x20network\x20=\x20?\x20AND\x20doc_type\x20=\x20?')['run'](a,b,c)['changes']>0x0;});}['computeChecksum'](a){let b=0x0;for(let c=0x0;c<a['length'];c++){const d=a['charCodeAt'](c);b=(b<<0x5)-b+d,b=b&b;}return b['toString'](0x10);}static['resetDbConnection'](){if(projectDbInstance){try{projectDbInstance['close']();}catch{}projectDbInstance=null;}}};process['on']('exit',()=>{LocalProject['resetDbConnection']();}),process['on']('SIGINT',()=>{LocalProject['resetDbConnection']();}),process['on']('SIGTERM',()=>{LocalProject['resetDbConnection']();});export{LocalProject};
|
package/dist/esm/w-DNJ63FSn.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as a109a}from'./client-CTMCNWFH.mjs';import{t as a109b}from'./Transaction-BlZi1w6F.mjs';import{o as a109c}from'./exception-Xd2RFs2i.mjs';import{n as a109d}from'./network-y8yMus5q.mjs';import{t as a109e}from'./lock-QdrQzo0u.mjs';import{SQLiteStorage}from'./w/local/storage.mjs';import{Config}from'./w/local/config.mjs';import{r as a109f}from'./logger-Cs5Mf7Mf.mjs';import{Account}from'./w/local/account.mjs';import{bigIntToBytes,bytesToHex,hexToBytes as a109g}from'./w/local/evm/rlp.mjs';import{registerBridgeEvmNetworks}from'./w/local/evm/networks.mjs';import{EvmAccount}from'./w/local/evm-account.mjs';import{_ as a109h,g as a109i,m as a109j,x as a109k}from'./query-DNcY8aRP.mjs';import{keccak_256}from'@noble/hashes/sha3.js';const BRIDGE_ETH_V2_SIG='bridgeETHV2(bytes,uint8)',BRIDGE_ETH_V2_SELECTOR='b4b7068c',BRIDGE_ETH_V1_SELECTOR='9449ebd2',BRIDGE_ERC20_V1_SELECTOR='212afaff',BRIDGE_ERC20_V2_SIG='bridgeERC20V2(uint8,uint256,bytes,uint8)',BRIDGE_ERC20_V2_SELECTOR='0bdba58b',TRANSFER_BRIDGED_V2_SIG='transferBridgedTokensWithSignaturesV2(bytes[],(uint8,uint8,uint64,uint8,bytes))',TRANSFER_BRIDGED_V2_SELECTOR='9c3ecefb',TRANSFER_BRIDGED_V1_SIG='transferBridgedTokensWithSignatures(bytes[],(uint8,uint8,uint64,uint8,bytes))',APPROVE_SIG='approve(address,uint256)',APPROVE_SELECTOR='095ea7b3',IS_TRANSFER_PROCESSED_SIG='isTransferProcessed(uint64)',IS_TRANSFER_PROCESSED_SELECTOR='5458ea9e',WORD_SIZE=0x20;function uintWord(a){const b=bigIntToBytes(BigInt(a)),c=new Uint8Array(WORD_SIZE);return c['set'](b,WORD_SIZE-b['length']),c;}function addressWord(a){const b=a109g(a['startsWith']('0x')?a['slice'](0x2):a);if(b['length']!==0x14)throw new Error('Invalid\x20EVM\x20address\x20length:\x20'+a);const c=new Uint8Array(WORD_SIZE);return c['set'](b,WORD_SIZE-0x14),c;}function padToWord(a){const b=a['length']%WORD_SIZE;if(b===0x0)return a;const c=new Uint8Array(a['length']+WORD_SIZE-b);return c['set'](a,0x0),c;}function concat(...b){const c=b['reduce']((f,g)=>f+g['length'],0x0),d=new Uint8Array(c);let e=0x0;for(const f of b){d['set'](f,e),e+=f['length'];}return d;}function encodeBytes(a){return concat(uintWord(BigInt(a['length'])),padToWord(a));}function computeSelector(a){return bytesToHex(keccak_256(new TextEncoder()['encode'](a))['slice'](0x0,0x4));}function computeEventTopic(a){return'0x'+bytesToHex(keccak_256(new TextEncoder()['encode'](a)));}function encodeBridgeETHV2(a,b){const c=a109g(a['startsWith']('0x')?a['slice'](0x2):a);if(c['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes,\x20got\x20'+c['length']);const d=uintWord(0x40n),e=uintWord(b),f=encodeBytes(c);return'0x'+bytesToHex(concat(a109g(BRIDGE_ETH_V2_SELECTOR),d,e,f));}function encodeBridgeETH(a,b){const c=a109g(a['startsWith']('0x')?a['slice'](0x2):a);if(c['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes,\x20got\x20'+c['length']);const d=uintWord(0x40n),e=uintWord(b),f=encodeBytes(c);return'0x'+bytesToHex(concat(a109g(BRIDGE_ETH_V1_SELECTOR),d,e,f));}function encodeBridgeERC20V2(a,b,c,d){const e=a109g(c['startsWith']('0x')?c['slice'](0x2):c);if(e['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes');const f=uintWord(0x80n),g=encodeBytes(e);return'0x'+bytesToHex(concat(a109g(BRIDGE_ERC20_V2_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeBridgeERC20(a,b,c,d){const e=a109g(c['startsWith']('0x')?c['slice'](0x2):c);if(e['length']!==0x20)throw new Error('Recipient\x20address\x20must\x20be\x2032\x20bytes');const f=uintWord(0x80n),g=encodeBytes(e);return'0x'+bytesToHex(concat(a109g(BRIDGE_ERC20_V1_SELECTOR),uintWord(a),uintWord(b),f,uintWord(d),g));}function encodeMessage(a){return concat(uintWord(a['messageType']),uintWord(a['version']),uintWord(a['nonce']),uintWord(a['chainID']),uintWord(0xa0n),encodeBytes(a['payload']));}function encodeBytesArray(a){const b=a['length'],c=b*0x20,d=[];let e=0x0n;for(const g of a){d['push'](BigInt(c)+e),e+=BigInt(0x20+Math['ceil'](g['length']/0x20)*0x20);}const f=[uintWord(BigInt(b))];for(const h of d)f['push'](uintWord(h));for(const i of a)f['push'](encodeBytes(i));return concat(...f);}function encodeTransferBridgedTokensWithSignatures(a,b,c=!![]){const d=c?TRANSFER_BRIDGED_V2_SELECTOR:computeSelector(TRANSFER_BRIDGED_V1_SIG),e=encodeBytesArray(a),f=encodeMessage(b),g=uintWord(0x40n),h=uintWord(BigInt(0x40+e['length']));return'0x'+bytesToHex(concat(a109g(d),g,h,e,f));}function encodeApprove(a,b){return'0x'+bytesToHex(concat(a109g(APPROVE_SELECTOR),addressWord(a),uintWord(b)));}function encodeTokenTransferPayloadV2(a){const {senderAddress:b,targetChain:c,recipientAddress:d,tokenID:e,amount:f,timestampMs:g}=a;if(b['length']!==0x20)throw new Error('senderAddress\x20must\x20be\x2032\x20bytes');if(d['length']!==0x14)throw new Error('recipientAddress\x20must\x20be\x2020\x20bytes');const h=new Uint8Array(0x48);let i=0x0;h[i++]=0x20,h['set'](b,i),i+=0x20,h[i++]=c,h[i++]=0x14,h['set'](d,i),i+=0x14,h[i++]=e;const j=bigIntToBytes(f);h['set'](j,i+0x8-j['length']),i+=0x8;const k=bigIntToBytes(g);return h['set'](k,i+0x8-k['length']),h;}function encodeIsTransferProcessed(a){return'0x'+bytesToHex(concat(a109g(IS_TRANSFER_PROCESSED_SELECTOR),uintWord(a)));}function verifySelectors(){const a=[[BRIDGE_ETH_V2_SIG,BRIDGE_ETH_V2_SELECTOR],[BRIDGE_ERC20_V2_SIG,BRIDGE_ERC20_V2_SELECTOR],[TRANSFER_BRIDGED_V2_SIG,TRANSFER_BRIDGED_V2_SELECTOR],[APPROVE_SIG,APPROVE_SELECTOR],[IS_TRANSFER_PROCESSED_SIG,IS_TRANSFER_PROCESSED_SELECTOR]];for(const [b,c]of a){const d=computeSelector(b);if(d!==c)throw new Error('ABI\x20selector\x20mismatch\x20for\x20'+b+':\x20expected\x20'+c+',\x20got\x20'+d);}}verifySelectors();const TOKENS_DEPOSITED_V2_TOPIC=computeEventTopic('TokensDepositedV2(uint8,uint64,uint8,uint8,uint64,address,bytes,uint256)'),TOKENS_DEPOSITED_TOPIC=computeEventTopic('TokensDeposited(uint8,uint64,uint8,uint8,uint64,address,bytes)'),TOKENS_CLAIMED_TOPIC=computeEventTopic('TokensClaimed(uint8,uint64,uint8,uint8,uint64,address,bytes)'),ERC20_TRANSFER_TOPIC=computeEventTopic('Transfer(address,address,uint256)');async function depositEth(a,b){try{const c=b['destinationChainId']??0x0,d=b['version']!=='v1'?encodeBridgeETHV2(b['recipientWowAddress'],c):encodeBridgeETH(b['recipientWowAddress'],c),f={'to':b['bridgeProxyAddress'],'value':a,'data':d,'network':b['network'],'rpcUrl':b['rpcUrl'],'gasLimit':0x3d090n},g=EvmAccount['Instance']();await g['active']();const h=await g['sign_and_send'](f,b['rpcUrl']);if(h['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20deposit\x20transaction\x20reverted','revertReason':'txHash:\x20'+h['transactionHash']}};return{'success':!![],'txHash':h['transactionHash']};}catch(i){return{'success':![],'error':{'code':'UNKNOWN','message':'ETH\x20deposit\x20failed:\x20'+(i?.['message']??String(i)),'raw':i}};}}async function depositErc20(a,b){try{const c=EvmAccount['Instance']();await c['active']();const d=b['destinationChainId']??0x0,f={'to':b['tokenAddress'],'data':encodeApprove(b['bridgeProxyAddress'],a),'network':b['network'],'rpcUrl':b['rpcUrl']},g=await c['sign_and_send'](f,b['rpcUrl']);if(g['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ERC20\x20approve\x20reverted','revertReason':'txHash:\x20'+g['transactionHash']}};const h=b['version']!=='v1'?encodeBridgeERC20V2(b['tokenId'],a,b['recipientWowAddress'],d):encodeBridgeERC20(b['tokenId'],a,b['recipientWowAddress'],d),i={'to':b['bridgeProxyAddress'],'value':0x0n,'data':h,'network':b['network'],'rpcUrl':b['rpcUrl']},j=await c['sign_and_send'](i,b['rpcUrl']);if(j['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ERC20\x20deposit\x20transaction\x20reverted','revertReason':'txHash:\x20'+j['transactionHash']}};return{'success':!![],'txHash':j['transactionHash']};}catch(k){return{'success':![],'error':{'code':'UNKNOWN','message':'ERC20\x20deposit\x20failed:\x20'+(k?.['message']??String(k)),'raw':k}};}}async function depositFromEth(a,b){if(a['tokenAddress']){if(a['tokenId']===void 0x0)return{'success':![],'error':{'code':'INVALID_PARAM','message':'tokenId\x20is\x20required\x20for\x20ERC20\x20deposit'}};return depositErc20(a['amount'],{...b,'tokenAddress':a['tokenAddress'],'tokenId':a['tokenId']});}return depositEth(a['amount'],b);}const BRIDGE_PACKAGE_ID='0xb',BRIDGE_OBJECT_ID='0x9',MESSAGE_KEY_TYPE=BRIDGE_PACKAGE_ID+'::message::BridgeMessageKey';let cachedRecordsId;function recordToAbiMessage(a){return{'messageType':a['message']['messageType'],'version':a['message']['messageVersion'],'nonce':a['message']['seqNum'],'chainID':a['message']['sourceChain'],'payload':a['message']['payload']};}async function getBridgeRecordsId(a){if(cachedRecordsId)return cachedRecordsId;try{const b=((await a['getObject']({'objectId':BRIDGE_OBJECT_ID,'options':{'showContent':!![]}}))?.['data']?.['content'])?.['fields']?.['inner']?.['fields']?.['id']?.['id'];if(!b)return void 0x0;const c=((await a['getDynamicFieldObject']({'parentId':b,'name':{'type':'u64','value':'1'}}))?.['data']?.['content'])?.['fields']?.['value']?.['fields']?.['token_transfer_records']?.['fields']?.['id']?.['id'];return cachedRecordsId=c,c;}catch{return;}}async function readBridgeRecord(a,b,c,d=0x0){const e=await getBridgeRecordsId(a);if(!e)return void 0x0;let f;try{f=await a['getDynamicFieldObject']({'parentId':e,'name':{'type':MESSAGE_KEY_TYPE,'value':{'source_chain':String(b),'message_type':String(d),'bridge_seq_num':String(c)}}});}catch{return;}const g=f?.['data']?.['content']?.['fields']?.['value']?.['fields']?.['value']?.['fields'];if(!g)return;return parseBridgeRecord(g);}async function readNextTokenTransferSeq(a){try{const b=((await a['getObject']({'objectId':BRIDGE_OBJECT_ID,'options':{'showContent':!![]}}))?.['data']?.['content'])?.['fields']?.['inner']?.['fields']?.['id']?.['id'];if(!b)return void 0x0;const c=(((await a['getDynamicFieldObject']({'parentId':b,'name':{'type':'u64','value':'1'}}))?.['data']?.['content'])?.['fields']?.['value']?.['fields']?.['sequence_nums'])?.['fields']?.['contents']??[];for(const d of c)if(Number(d?.['fields']?.['key'])===0x0)return BigInt(d?.['fields']?.['value']??0x0);return 0x0n;}catch{return;}}function parseBridgeRecord(a){const b=a?.['message']?.['fields']??a?.['message']??{},c=a?.['verified_signatures'],d=Array['isArray'](c)?c:c&&typeof c==='object'&&'Some'in c?c['Some']:[];return{'message':{'messageType':toNumber(b['message_type']),'messageVersion':toNumber(b['message_version']),'seqNum':toBigInt(b['seq_num']),'sourceChain':toNumber(b['source_chain']),'payload':toBytes(b['payload'])},'verifiedSignatures':Array['isArray'](d)?d['map'](e=>toBytes(e)):[],'claimed':!!a?.['claimed']};}function toNumber(a){if(typeof a==='number')return a;if(typeof a==='string')return Number(a);return 0x0;}function toBigInt(a){if(typeof a==='bigint')return a;if(typeof a==='number')return BigInt(a);if(typeof a==='string')return BigInt(a);return 0x0n;}function toBytes(a){if(a instanceof Uint8Array)return a;if(Array['isArray'](a))return Uint8Array['from'](a['map'](b=>Number(b)));if(typeof a==='string'){if(/^0x/i['test'](a)){const b=a['slice'](0x2),c=new Uint8Array(Math['ceil'](b['length']/0x2));for(let d=0x0;d<c['length'];d++){const e=b['slice'](d*0x2,d*0x2+0x2);c[d]=parseInt(e,0x10)||0x0;}return c;}try{return new Uint8Array(Buffer['from'](a,'base64'));}catch{return new Uint8Array(0x0);}}return new Uint8Array(0x0);}function buildClaimMessage(a){const b=encodeTokenTransferPayloadV2({'senderAddress':a['senderAddress'],'targetChain':a['targetChain'],'recipientAddress':a['recipientAddress'],'tokenID':a['tokenId'],'amount':a['amount'],'timestampMs':a['timestampMs']});return{'messageType':a['messageType'],'version':a['version'],'nonce':a['nonce'],'chainID':a['sourceChain'],'payload':b};}function signaturesToBytes(a){return a['map'](b=>{const c=a109g(b['signature']['startsWith']('0x')?b['signature']['slice'](0x2):b['signature']);if(c['length']!==0x41)throw new Error('Invalid\x20signature\x20length:\x20'+c['length']+'\x20(expected\x2065)');return c;});}async function claimOnEth(a,b){try{const c=b['useV2']??!![];if(await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':b['bridgeProxyAddress'],'network':b['network'],'rpcUrl':b['rpcUrl']},a['message']['nonce']))return{'success':![],'error':{'code':'ALREADY_PROCESSED','message':buildAlreadyProcessedMessage(a['message']['nonce'])}};let d=a['message'],f,g;const h=b['wowClient']?await readBridgeRecord(b['wowClient'],a['message']['chainID'],a['message']['nonce'],a['message']['messageType']):void 0x0;if(h&&h['verifiedSignatures']['length']>0x0)d=recordToAbiMessage(h),f=h['verifiedSignatures'];else{g=await b['nodeClient']['signWowToEth'](a['wowTxDigest'],a['eventIndex']);g['length']===0x0&&(console['warn']('tx_digest\x20路径未收集到签名,回退到\x20seq\x20路径:',a['message']['chainID'],a['message']['messageType'],a['message']['nonce']),g=await b['nodeClient']['signWowTokenTransfer'](a['message']['chainID'],a['message']['messageType'],a['message']['nonce']));if(g['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['message']['chainID'],a['message']['messageType'],a['message']['nonce'])}};d=g[0x0]['action']?messageFromActionData(g[0x0]['action'],a['message']):a['message'],f=signaturesToBytes(g);}const i=encodeTransferBridgedTokensWithSignatures(f,d,c),j={'to':b['bridgeProxyAddress'],'value':0x0n,'data':i,'network':b['network'],'rpcUrl':b['rpcUrl']},k=EvmAccount['Instance']();await k['active']();const l=await k['sign_and_send'](j,b['rpcUrl']);if(l['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+l['transactionHash']}};return{'success':!![],'txHash':l['transactionHash']};}catch(m){return wrapBridgeError(m,'UNKNOWN','ETH\x20claim\x20failed');}}function bridgeChainNameToId(a){switch(a){case'WowMainnet':return 0x0;case'EthMainnet':return 0xa;default:throw new Error('Unknown\x20bridge\x20chain\x20name:\x20'+a);}}function messageFromActionData(a,b){if(!a||typeof a!=='object')return b;const c=a;if(c['WowToEthTokenTransferV2']){const d=c['WowToEthTokenTransferV2'],e=d['wow_address']['startsWith']('0x')?d['wow_address']['slice'](0x2):d['wow_address'],f=d['eth_address']['startsWith']('0x')?d['eth_address']['slice'](0x2):d['eth_address'],g=a109g(e),h=a109g(f),i=encodeTokenTransferPayloadV2({'senderAddress':g,'targetChain':bridgeChainNameToId(d['eth_chain_id']),'recipientAddress':h,'tokenID':d['token_id'],'amount':BigInt(d['amount_adjusted']),'timestampMs':BigInt(d['timestamp_ms'])});return{'messageType':0x0,'version':0x2,'nonce':BigInt(d['nonce']),'chainID':bridgeChainNameToId(d['wow_chain_id']),'payload':i};}return console['warn']('[claimOnEthBySeq]\x20Unknown\x20action\x20data\x20type,\x20falling\x20back\x20to\x20local\x20message:',Object['keys'](c)),b;}async function claimOnEthBySeq(a,b){try{const c=b['useV2']??!![];if(await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':b['bridgeProxyAddress'],'network':b['network'],'rpcUrl':b['rpcUrl']},a['seqNum']))return{'success':![],'error':{'code':'ALREADY_PROCESSED','message':buildAlreadyProcessedMessage(a['seqNum'])}};let d=a['message'],f;const g=b['wowClient']?await readBridgeRecord(b['wowClient'],a['sourceChain'],a['seqNum'],a['messageType']):void 0x0;if(g&&g['verifiedSignatures']['length']>0x0)d=recordToAbiMessage(g),f=g['verifiedSignatures'];else{const m=await b['nodeClient']['signWowTokenTransfer'](a['sourceChain'],a['messageType'],a['seqNum']);if(m['length']===0x0)return{'success':![],'error':{'code':'NO_SIGNATURES','message':buildNoSignaturesMessage(a['sourceChain'],a['messageType'],a['seqNum'])}};d=m[0x0]['action']?messageFromActionData(m[0x0]['action'],a['message']):a['message'],f=signaturesToBytes(m);}const h=encodeTransferBridgedTokensWithSignatures(f,d,c),i={'to':b['bridgeProxyAddress'],'value':0x0n,'data':h,'network':b['network'],'rpcUrl':b['rpcUrl']},j=EvmAccount['Instance']();await j['active']();let k;try{await j['ethCall'](i);}catch(n){const o=n?.['message']??String(n);if(o['includes']('execution\x20reverted')||o['includes']('reverted\x20with\x20reason'))k=o;else console['warn']('\x20\x20[claimOnEthBySeq]\x20eth_call\x20warning\x20(skipped):',o['slice'](0x0,0x78));}if(k)return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20reverted','revertReason':k}};const l=await j['sign_and_send'](i,b['rpcUrl']);if(l['status']!=='0x1')return{'success':![],'error':{'code':'REVERTED','message':'ETH\x20claim\x20transaction\x20reverted','revertReason':'txHash:\x20'+l['transactionHash']}};return{'success':!![],'txHash':l['transactionHash']};}catch(p){return wrapBridgeError(p,'UNKNOWN','ETH\x20claim\x20(by\x20seq)\x20failed');}}async function isEvmNonceAlreadyProcessed(a,b){try{const c=EvmAccount['Instance']();await c['active']();const d=encodeIsTransferProcessed(b),f=(await c['ethCall']({'to':a['bridgeProxyAddress'],'value':0x0n,'data':d,'network':a['network'],'rpcUrl':a['rpcUrl']}))['replace'](/^0x/,'');return(f['length']>=0x2?f['slice'](-0x2):'')==='01';}catch(g){return console['warn']('\x20\x20[claim\x20precheck]\x20isTransferProcessed('+b+')\x20query\x20failed\x20(skipped):',(g?.['message']??String(g))['slice'](0x0,0x78)),![];}}function buildAlreadyProcessedMessage(a){return['EVM\x20bridge\x20has\x20already\x20processed\x20nonce\x20(seq)\x20'+a+'\x20(isTransferProcessed=true).','This\x20transfer\x20CANNOT\x20be\x20claimed,\x20and\x20the\x20WOW-side\x20funds\x20are\x20PERMANENTLY\x20LOCKED.','Do\x20NOT\x20retry\x20the\x20claim.','This\x20usually\x20means\x20the\x20WOW\x20bridge\x20seq\x20collided\x20with\x20an\x20old\x20EVM\x20nonce','left\x20over\x20from\x20a\x20previous\x20chain\x20generation\x20(re-genesis).']['join']('\x0a');}function buildNoSignaturesMessage(a,b,c){return['No\x20signatures\x20collected\x20for\x20seq='+c+'\x20(sourceChain='+a+',\x20messageType='+b+').','Possible\x20reasons:','\x20\x201)\x20Bridge\x20nodes\x20are\x20not\x20reachable\x20or\x20not\x20synced','\x20\x202)\x20The\x20seq\x20'+c+'\x20does\x20not\x20exist\x20on\x20source\x20chain','\x20\x203)\x20The\x20message\x20has\x20already\x20expired','\x20\x204)\x20Insufficient\x20quorum\x20(need\x202/3\x20of\x20total\x20committee\x20weight)','Check\x20node\x20health\x20with\x20nodeClient.pingAll().']['join']('\x0a');}function wrapBridgeError(a,b,c){return{'success':![],'error':{'code':b,'message':c+':\x20'+(a?.['message']??String(a)),'raw':a}};}const BRIDGE_PACKAGE$1='0xb',DEFAULT_BRIDGE_OBJECT_ID$1='0x9',CLOCK_OBJECT_ID$1='0x6',EVM_ADDRESS_LENGTH=0x14,TOKEN_DEPOSITED_EVENT_V2_TYPE=BRIDGE_PACKAGE$1+'::bridge::TokenDepositedEventV2';async function depositFromWow(a,b){if(!a['tokenType']||a['tokenType']['split']('::')['length']<0x3)a109c('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['amount']<=0x0n)a109c('invalid\x20parameter','amount\x20must\x20be\x20positive');const c=parseEvmAddress(a['recipientEthAddress']),d=a['destinationChainId']??0xa,f=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID$1,g=new a109b(),h=await Account['Instance']()['get_coin_object'](g,a['amount'],a['tokenType'],await getEnvAccount$1(b),b['network']);if(!h)a109c('fail','Failed\x20to\x20get\x20coin\x20object');g['moveCall']({'target':BRIDGE_PACKAGE$1+'::bridge::send_token_v2','arguments':[g['object'](f),g['pure']['u8'](d),g['pure']['vector']('u8',c),h,g['object'](CLOCK_OBJECT_ID$1)],'typeArguments':[a['tokenType']]});const i=await Account['Instance']()['sign_and_commit'](g,await getEnvAccount$1(b),b['network']);if(!i||!i['digest'])a109c('fail','WOW\x20deposit\x20transaction\x20failed');let j=i;if(!i['events']||i['events']['length']===0x0){const {WowClient:l}=await import('./client/index.mjs'),{Config:m}=await import('./w/local/config.mjs'),n=await m['Instance']()['network_get'](b['network']),o=new l({'url':a109d(n),'network':n});let p;for(let q=0x0;q<0xa;q++){try{j=await o['getTransactionBlock']({'digest':i['digest'],'options':{'showEvents':!![],'showEffects':!![]}});if(j['events']&&j['events']['length']>0x0)break;}catch(r){p=r;}await new Promise(s=>setTimeout(s,0x3e8*(q+0x1)));}if(!j['events']||j['events']['length']===0x0)throw p??new Error('Failed\x20to\x20fetch\x20events\x20for\x20tx\x20'+i['digest']);}const k=parseSeqNumFromReceipt(j);if(k===void 0x0)a109c('fail','Failed\x20to\x20parse\x20seqNum\x20from\x20WOW\x20tx\x20'+i['digest']);return{'digest':i['digest'],'seqNum':k,'receipt':i};}function parseEvmAddress(a){let b=a;if(b['startsWith']('0x')||b['startsWith']('0X'))b=b['slice'](0x2);if(b['length']!==EVM_ADDRESS_LENGTH*0x2)a109c('invalid\x20parameter','Invalid\x20EVM\x20address:\x20'+a+'\x20(expected\x2020\x20bytes)');const c=new Uint8Array(EVM_ADDRESS_LENGTH);for(let d=0x0;d<EVM_ADDRESS_LENGTH;d++)c[d]=parseInt(b['slice'](d*0x2,d*0x2+0x2),0x10);return c;}function normalizeEventType$1(a){const b=a['split']('::');if(b['length']>0x0&&b[0x0]['startsWith']('0x')){const c=b[0x0]['toLowerCase']()['replace'](/^0x0+/,'0x');b[0x0]=c==='0x'?'0x0':c;}return b['join']('::');}function parseSeqNumFromReceipt(a){const b=a['events'];if(!b||b['length']===0x0)return void 0x0;const c=normalizeEventType$1(TOKEN_DEPOSITED_EVENT_V2_TYPE);for(const d of b){if(normalizeEventType$1(d['type'])!==c)continue;const e=d['parsedJson'];if(!e)continue;const f=e['seq_num'];if(typeof f==='string'||typeof f==='number')return BigInt(f);}}async function getEnvAccount$1(a){return a['account']??void 0x0;}const BRIDGE_PACKAGE='0xb',CLOCK_OBJECT_ID='0x6',TOKEN_TRANSFER_APPROVED_TYPE=BRIDGE_PACKAGE+'::bridge::TokenTransferApproved',TOKEN_TRANSFER_CLAIMED_TYPE=BRIDGE_PACKAGE+'::bridge::TokenTransferClaimed',DEFAULT_BRIDGE_OBJECT_ID='0x9';async function claimOnWow(a,b){if(!a['tokenType']||a['tokenType']['split']('::')['length']<0x3)a109c('invalid\x20parameter','Invalid\x20tokenType:\x20'+a['tokenType']);if(a['bridgeSeqNum']<0x0n)a109c('invalid\x20parameter','bridgeSeqNum\x20must\x20be\x20non-negative');const c=a['sourceChainId']??0xa,d=a['bridgeObjectId']??DEFAULT_BRIDGE_OBJECT_ID,e=new a109b();e['moveCall']({'target':BRIDGE_PACKAGE+'::bridge::claim_and_transfer_token','arguments':[e['object'](d),e['object'](CLOCK_OBJECT_ID),e['pure']['u8'](c),e['pure']['u64'](a['bridgeSeqNum'])],'typeArguments':[a['tokenType']]});const f=await Account['Instance']()['sign_and_commit'](e,await getEnvAccount(b),b['network']);if(!f||!f['digest'])a109c('fail','WOW\x20claim\x20transaction\x20failed');return{'digest':f['digest'],'receipt':f};}let WowClaimStatus=function(a){return a['NotApproved']='not_approved',a['Approved']='approved',a['Claimed']='claimed',a['NotFound']='not_found',a;}({});async function queryWowClaimStatus(a,b){const c=a['sourceChainId']??0xa,d=await Config['Instance']()['network_get'](b),e=new a109a({'url':a109d(d),'network':d}),f=await e['queryEvents']({'query':{'MoveEventType':TOKEN_TRANSFER_CLAIMED_TYPE},'limit':0x64,'order':'descending'});for(const h of f['data']){const i=h['parsedJson'];if(!i)continue;const j=i['message_key'];if(!j)continue;const k=Number(j['source_chain']),l=BigInt(j['bridge_seq_num']??0x0);if(k===c&&l===a['bridgeSeqNum'])return{'status':'claimed','claimedTxHash':h['id']?.['txDigest']};}const g=await e['queryEvents']({'query':{'MoveEventType':TOKEN_TRANSFER_APPROVED_TYPE},'limit':0x64,'order':'descending'});for(const m of g['data']){const n=m['parsedJson'];if(!n)continue;const o=n['message_key'];if(!o)continue;const p=Number(o['source_chain']),q=BigInt(o['bridge_seq_num']??0x0);if(p===c&&q===a['bridgeSeqNum'])return{'status':'approved','approvedEventId':m['id']?.['eventSeq']};}return{'status':'not_approved'};}async function getEnvAccount(a){return a['account']??void 0x0;}const logger$1=a109f('bridge:query');async function queryEthTxReceipt(a,b,c=0x2710){const d=new AbortController(),f=setTimeout(()=>d['abort'](),c);try{const g=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_getTransactionReceipt','params':[a]}),'signal':d['signal']}))['json']();if(g['error'])throw new Error('JSON-RPC\x20error:\x20'+g['error']['message']);return g['result'];}catch(h){if(h?.['name']==='AbortError')throw new Error('queryEthTxReceipt\x20timeout\x20after\x20'+c+'ms');throw h;}finally{clearTimeout(f);}}async function queryEthBalance(a,b){const c=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_getBalance','params':[a,'latest']})}))['json']();if(c['error'])throw new Error('JSON-RPC\x20error:\x20'+c['error']['message']);return BigInt(c['result']);}async function queryErc20Balance(a,b,c){const d='0x70a08231000000000000000000000000'+b['slice'](0x2)['toLowerCase'](),e=await(await fetch(c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':'eth_call','params':[{'to':a,'data':d},'latest']})}))['json']();if(e['error'])throw new Error('JSON-RPC\x20error:\x20'+e['error']['message']);return BigInt(e['result']);}async function queryEthTxConfirmations(a,b,c=0x2710){const d=await queryEthTxReceipt(a,b,c);if(!d?.['blockNumber'])return 0x0;const e=new AbortController(),f=setTimeout(()=>e['abort'](),c);try{const g=await(await fetch(b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x2,'method':'eth_blockNumber','params':[]}),'signal':e['signal']}))['json'](),h=BigInt(g['result']),i=BigInt(d['blockNumber']);return Number(h-i);}finally{clearTimeout(f);}}async function queryWowTx(a,b){try{return await a['getTransactionBlock']({'digest':b,'options':{'showEffects':!![],'showEvents':!![]}});}catch{return null;}}let BridgeTransferDirection=function(a){return a['EvmToWow']='evm_to_wow',a['WowToEvm']='wow_to_evm',a;}({}),BridgeTransferStep=function(a){return a['NotStarted']='not_started',a['SourceTxPending']='source_tx_pending',a['SourceTxConfirmed']='source_tx_confirmed',a['NodeSigning']='node_signing',a['SignaturesReady']='signatures_ready',a['ClaimTxPending']='claim_tx_pending',a['Completed']='completed',a['Failed']='failed',a;}({});const BRIDGE_STEP_DESCRIPTIONS={['not_started']:'尚未发起跨链',['source_tx_pending']:'源链交易已提交,等待区块确认',['source_tx_confirmed']:'源链交易已确认,等待\x20bridge\x20节点签名\x20approve',['node_signing']:'bridge\x20节点签名收集中',['signatures_ready']:'签名已收集完毕,可发起目标链\x20claim',['claim_tx_pending']:'目标链\x20claim\x20交易已提交,待确认',['completed']:'跨链完成',['failed']:'跨链失败'};let BridgeTransferStatus=function(a){return a['NotStarted']='not_started',a['Pending']='pending',a['Confirmed']='confirmed',a['SignaturesReady']='signatures_ready',a['Claiming']='claiming',a['Completed']='completed',a['Failed']='failed',a;}({});function makeBridgeTransferState(a){return{'status':stepToStatus(a['step']),'stepDescription':BRIDGE_STEP_DESCRIPTIONS[a['step']],'updatedAt':Date['now'](),...a};}function stepToStatus(a){switch(a){case'not_started':return'not_started';case'source_tx_pending':return'pending';case'source_tx_confirmed':return'confirmed';case'node_signing':return'confirmed';case'signatures_ready':return'signatures_ready';case'claim_tx_pending':return'claiming';case'completed':return'completed';case'failed':return'failed';}}function parseEthDepositEvent(a,b){const c=b['toLowerCase']();for(const d of a['logs']){if(d['address']['toLowerCase']()!==c)continue;const e=d['topics'][0x0]===TOKENS_DEPOSITED_V2_TOPIC,f=d['topics'][0x0]===TOKENS_DEPOSITED_TOPIC;if(!e&&!f)continue;const g=a109g(d['data']);if(g['length']<0x80)continue;const h=u=>g[u*0x20+0x1f],i=u=>{const v=g['slice'](u*0x20,u*0x20+0x20);return BigInt('0x'+bytesToHex(v['slice'](0x18,0x20)));},j=u=>'0x'+bytesToHex(g['slice'](u*0x20+0xc,u*0x20+0x20)),k=h(0x0),l=i(0x1),m=j(0x2),n=Number(i(0x3)),o=Number(BigInt('0x'+bytesToHex(g['slice'](n,n+0x20))['slice'](0x30))),p='0x'+bytesToHex(g['slice'](n+0x20,n+0x20+o)),q=d['topics'][0x1]?.['slice'](0x40)??'00',r=parseInt(q,0x10),s=d['topics'][0x3]?.['slice'](0x40)??'00',t=parseInt(s,0x10);return{'bridgeSeq':BigInt('0x'+(d['topics'][0x2]?.['slice'](0x38)??'0')),'sourceChain':r,'sender':m,'targetChain':t,'recipient':p,'tokenID':k,'amount':l};}return null;}function parseEthClaimEvent(a,b){const c=b['toLowerCase']();for(const d of a['logs']){if(d['address']['toLowerCase']()!==c)continue;if(d['topics'][0x0]!==TOKENS_CLAIMED_TOPIC)continue;const e=a109g(d['data']);if(e['length']<0x80)continue;const f=n=>e[n*0x20+0x1f],g=n=>{const o=e['slice'](n*0x20,n*0x20+0x20);return BigInt('0x'+bytesToHex(o['slice'](0x18,0x20)));},h=n=>'0x'+bytesToHex(e['slice'](n*0x20+0xc,n*0x20+0x20));f(0x0);const i=g(0x1),j=h(0x2),k=Number(g(0x3)),l=Number(BigInt('0x'+bytesToHex(e['slice'](k,k+0x20))['slice'](0x30))),m='0x'+bytesToHex(e['slice'](k+0x20,k+0x20+l));return{'bridgeSeq':BigInt('0x'+(d['topics'][0x2]?.['slice'](0x38)??'0')),'claimer':j,'recipient':m,'amount':i};}return null;}async function queryEvmToWowTransferStatus(a,b,c){const d=await queryEthTxReceipt(a,b);if(!d)return makeBridgeTransferState({'step':'source_tx_pending','direction':'evm_to_wow','sourceTxHash':a});if(d['status']!=='0x1')return makeBridgeTransferState({'step':'failed','direction':'evm_to_wow','sourceTxHash':a,'ethReceipt':d,'error':'ETH\x20source\x20transaction\x20reverted'});const e=parseEthDepositEvent(d,c);if(!e)return makeBridgeTransferState({'step':'failed','direction':'evm_to_wow','sourceTxHash':a,'ethReceipt':d,'error':'No\x20TokensDeposited/TokensDepositedV2\x20event\x20found\x20in\x20receipt'});let f=0x0;try{f=await queryEthTxConfirmations(a,b);}catch{}return makeBridgeTransferState({'step':'source_tx_confirmed','direction':'evm_to_wow','sourceTxHash':a,'bridgeSeq':e['bridgeSeq'],'confirmations':f,'ethReceipt':d});}async function queryWowToEvmTransferStatus(a,b){const c=await queryWowTx(a,b);if(!c)return makeBridgeTransferState({'step':'source_tx_pending','direction':'wow_to_evm','sourceTxHash':b});if(c['effects']?.['status']?.['status']!=='success')return makeBridgeTransferState({'step':'failed','direction':'wow_to_evm','sourceTxHash':b,'wowReceipt':c,'error':c['effects']?.['status']?.['error']||'WOW\x20transaction\x20failed'});return makeBridgeTransferState({'step':'source_tx_confirmed','direction':'wow_to_evm','sourceTxHash':b,'bridgeSeq':parseWowDepositSeqFromReceipt(c),'wowReceipt':c});}function normalizeEventType(a){const b=a['split']('::');if(b['length']>0x0&&b[0x0]['startsWith']('0x')){const c=b[0x0]['toLowerCase']()['replace'](/^0x0+/,'0x');b[0x0]=c==='0x'?'0x0':c;}return b['join']('::');}function parseWowDepositSeqFromReceipt(a){const b=a['events'];if(!b||b['length']===0x0)return void 0x0;const c=normalizeEventType('0xb::bridge::TokenDepositedEventV2');for(const d of b){if(normalizeEventType(d['type'])!==c)continue;const e=d['parsedJson'];if(!e)continue;const f=e['seq_num'];if(typeof f==='string'||typeof f==='number')return BigInt(f);}}async function waitForEthTx(a,b,c=0x1,d=0x2ee0,e=0x1e*0xea60){const f=Math['max'](0x1,Math['ceil'](e/d));for(let g=0x0;g<f;g++){const h=await queryEthTxReceipt(a,b);if(h){const j=await queryEthTxConfirmations(a,b);if(j>=c)return h;logger$1['debug'](g+0x1+'/'+f+':\x20'+j+'/'+c+'\x20confirmations');}else logger$1['debug'](g+0x1+'/'+f+':\x20pending');await sleep$1(d);}a109c('fail','Timeout\x20waiting\x20for\x20ETH\x20tx\x20'+a+'\x20after\x20'+f+'\x20iterations');}async function waitForWowTx(a,b,c=0xbb8,d=0x5*0xea60){const e=Math['max'](0x1,Math['ceil'](d/c));for(let f=0x0;f<e;f++){const g=await queryWowTx(a,b);if(g&&g['effects']?.['status']?.['status']==='success')return g;if(g&&g['effects']?.['status']?.['status']==='failure')a109c('fail','WOW\x20tx\x20'+b+'\x20failed:\x20'+(g['effects']['status']['error']||'unknown'));logger$1['debug'](f+0x1+'/'+e+':\x20pending'),await sleep$1(c);}a109c('fail','Timeout\x20waiting\x20for\x20WOW\x20tx\x20'+b+'\x20after\x20'+e+'\x20iterations');}function sleep$1(a){return new Promise(b=>setTimeout(b,a));}function isBase64(a){return/^[A-Za-z0-9+/]*={0,2}$/['test'](a)&&a['length']>0x0;}function decodeFlex(a){if(a['startsWith']('0x')||a['startsWith']('0X'))return a109g(a);if(/^[0-9a-fA-F]+$/['test'](a)&&a['length']%0x2===0x0)return a109g(a);if(isBase64(a))return Buffer['from'](a,'base64');throw new Error('Cannot\x20decode\x20signature/pubkey\x20string:\x20'+a);}function parseSignedAction(a,b){const c=decodeFlex(a['auth_signature']['authority_pub_key']),d=decodeFlex(a['auth_signature']['signature']);if(c['length']!==0x21&&c['length']!==0x41)throw new Error('Invalid\x20pubkey\x20length:\x20'+c['length']+'\x20(expected\x2033\x20or\x2065)');if(d['length']!==0x41)throw new Error('Invalid\x20signature\x20length:\x20'+d['length']+'\x20(expected\x2065)');return{'signerPubkey':'0x'+bytesToHex(c),'signature':'0x'+bytesToHex(d),'weight':b,'action':a['data']};}var BridgeNodeClient=class{constructor(a){this['committee']=a['committee'],this['timeoutMs']=a['timeoutMs']??0x7530,this['quorumRatio']=a['quorumRatio']??0x2/0x3,this['minRequiredStake']=a['minRequiredStake'];}get['totalWeight'](){return this['committee']['reduce']((a,b)=>a+b['weight'],0x0);}get['quorumWeight'](){if(this['minRequiredStake']!=null)return this['minRequiredStake'];return Math['floor'](this['totalWeight']*this['quorumRatio'])+0x1;}async['signEthToWow'](a,b){const c='/sign/bridge_tx/eth/wow/'+a+'/'+b;return this['collectSignatures'](c);}async['signWowToEth'](a,b){const c='/sign/bridge_tx/wow/eth/'+a+'/'+b;return this['collectSignatures'](c);}async['signWowTokenTransfer'](a,b,c){const d='/sign/bridge_action/wow/eth/'+a+'/'+b+'/'+c;return this['collectSignatures'](d);}async['ping'](a){try{const b=new AbortController(),c=setTimeout(()=>b['abort'](),Math['min'](this['timeoutMs'],0x2710)),d=await fetch(a+'/ping',{'signal':b['signal']});return clearTimeout(c),d['ok'];}catch{return![];}}async['pingAll'](){return Promise['all'](this['committee']['map'](async a=>({'url':a['baseUrl'],'healthy':await this['ping'](a['baseUrl'])})));}async['collectSignatures'](a){const b=new Map();let c=0x0;const d=this['committee']['map'](async f=>{try{return{'action':parseSignedAction(await this['fetchFromNode'](f['baseUrl'],a),f['weight']),'ok':!![]};}catch(g){return{'action':null,'ok':![],'error':g['message']};}}),e=await Promise['all'](d);for(const f of e){if(!f['ok']||!f['action'])continue;!b['has'](f['action']['signerPubkey'])&&(b['set'](f['action']['signerPubkey'],f['action']),c+=f['action']['weight']);}if(c<this['quorumWeight'])a109c('fail','Quorum\x20not\x20reached:\x20collected\x20'+c+',\x20required\x20'+this['quorumWeight']+'\x20(total\x20'+this['totalWeight']+')');return Array['from'](b['values']());}async['fetchFromNode'](a,b){const c=new AbortController(),d=setTimeout(()=>c['abort'](),this['timeoutMs']);try{const e=await fetch(''+a+b,{'signal':c['signal'],'headers':{'Accept':'application/json'}});if(!e['ok'])throw new Error('Node\x20'+a+'\x20returned\x20'+e['status']+':\x20'+await e['text']());return await e['json']();}finally{clearTimeout(d);}}};const logger=a109f('bridge');var BridgeClient=class BridgeClient{constructor(a={}){this['_transferHistory']=new Map(),this['_transferCounter']=0x0,this['_loadHistoryPromise']=Promise['resolve'](),this['_historyLock']=new a109e(),this['config']=a['config']??loadDefaultConfig(),this['wowEnv']=a['wowEnv'],registerBridgeEvmNetworks({'evmChain':{'chainId':this['config']['ethereum']['chainId'],'rpcUrl':this['config']['ethereum']['rpcUrl']},'setAsDefault':!![]});if(this['config']['l2']){for(const c of Object['values'](this['config']['l2']))if(c)registerBridgeEvmNetworks({'evmChain':{'chainId':c['chainId'],'rpcUrl':c['rpcUrl']}});}const b=this['config']['bridgeNodeUrls']['map']((d,e)=>({'pubkey':a109i[e]??'0x'+e['toString']()['padStart'](0x40,'0'),'weight':a109h[e]??0x1,'baseUrl':d}));this['nodeClient']=new BridgeNodeClient({'committee':b,'timeoutMs':this['config']['timeouts']['nodeRpcMs'],'minRequiredStake':0xd06}),this['_loadHistoryPromise']=this['_loadHistory']();}async['bridgeNativeEvmToWow'](a){return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':'ETH','idempotencyKey':a['idempotencyKey'],'idempotentByParams':a['idempotentByParams']});}async['bridgeErc20ToWow'](a){if(a['token']==='ETH')a109c('invalid\x20parameter','Use\x20bridgeNativeEvmToWow()\x20for\x20native\x20ETH;\x20bridgeErc20ToWow()\x20only\x20accepts\x20WETH/WBTC/USDC/USDT');return this['depositEvmToWowAndFinalize']({'amount':a['amount'],'recipientWowAddress':a['recipientWowAddress'],'waitForFinalization':a['waitForFinalization'],'token':a['token'],'idempotencyKey':a['idempotencyKey'],'idempotentByParams':a['idempotentByParams']});}async['resolveEvmRpcUrl'](){const a=this['config']['ethereum'];if(a['rpcUrl'])return a['rpcUrl'];const {EvmNetworkRegistry:b}=await import('./w/local/evm/networks.mjs'),c=b['Instance'](),d=await c['resolve'](a['chainId']),e=c['pickHealthyRpc'](d);if(!e)a109c('invalid\x20parameter','No\x20healthy\x20EVM\x20RPC\x20available\x20for\x20chainId\x20'+a['chainId']+'.\x20Use\x20manage_evm_rpc\x20to\x20add\x20RPC\x20endpoints\x20first.');return e;}async['_ensureSafeEvmNonce'](a){const {WowClient:b}=await import('./client/index.mjs'),{Config:c}=await import('./w/local/config.mjs'),{getFullnodeUrl:d}=await import('./network-y8yMus5q.mjs')['then'](j=>j['i']),e=await c['Instance']()['network_get'](this['wowEnv']['network']),f=new b({'url':d(e),'network':e}),g=await this['resolveEvmRpcUrl'](),h=0x8;for(let j=0x0;j<h;j++){const k=await readNextTokenTransferSeq(f);if(k===void 0x0){console['warn']('\x20\x20[bridge]\x20readNextTokenTransferSeq\x20failed,\x20skipping\x20EVM\x20nonce\x20precheck');return;}if(!await isEvmNonceAlreadyProcessed({'bridgeProxyAddress':this['config']['ethereum']['bridgeProxyAddress'],'network':this['config']['ethereum']['chainId'],'rpcUrl':g},k))return;console['warn']('\x20\x20[bridge]\x20EVM\x20nonce\x20'+k+'\x20already\x20processed,\x20sending\x201-unit\x20placeholder\x20deposit\x20to\x20skip\x20it'),await waitForWowTx(f,(await depositFromWow({'amount':0x1n,'tokenType':a['tokenType'],'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':a['bridgeObjectId']},this['wowEnv']))['digest'],this['config']['timeouts']['signaturePollIntervalMs'],this['config']['timeouts']['signatureCollectMs']);}a109c('fail','EVM\x20nonce\x20precheck:\x20could\x20not\x20find\x20a\x20safe\x20nonce\x20after\x20'+h+'\x20placeholder\x20deposits');}async['depositEvmToWowAndFinalize'](a){let b;if(a['idempotencyKey'])b=a['idempotencyKey'];else{if(a['idempotentByParams'])b=this['_generateIdempotencyKey']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':a['recipientWowAddress']});}if(b){const t=await this['_findTransferByIdempotencyKey'](b);if(t){if(t['status']==='success')return{'depositTxHash':t['depositTxHash'],'claimTxDigest':t['claimTxDigest'],'bridgeSeq':t['bridgeSeq']?BigInt(t['bridgeSeq']):void 0x0,'idempotentHit':!![]};else{if(t['status']==='pending'||t['status']==='in_progress')return{'depositTxHash':t['depositTxHash']??'','claimTxDigest':t['claimTxDigest'],'bridgeSeq':t['bridgeSeq']?BigInt(t['bridgeSeq']):void 0x0,'idempotentHit':!![]};}await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](t['transferId']),await this['_saveHistory']();});}}const c=this['config']['ethereum'],d=a['waitForFinalization']??!![],e=await this['resolveEvmRpcUrl'](),f=a109k(this['config'],a['token']);if(!f)a109c('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const g=a['token']==='ETH',h=this['config']['defaultVersion']===0x1?'v1':'v2',j={'recipientWowAddress':a['recipientWowAddress'],'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':e,'version':h},k=await depositFromEth({'amount':a['amount'],'tokenAddress':g?void 0x0:f['evmAddress'],'tokenId':g?void 0x0:f['tokenId']},j);if(!k['success']||!k['txHash'])a109c('fail','EVM\x20deposit\x20failed:\x20'+(k['error']?.['message']??'unknown\x20error'));const l=k['txHash'];if(!d)return{'depositTxHash':l};await waitForEthTx(l,e,0x40,0x2ee0,this['config']['timeouts']['signatureCollectMs']);const m=await queryEthTxReceipt(l,e);if(!m)return{'depositTxHash':l};const n=parseEthDepositEvent(m,c['bridgeProxyAddress']);if(!n)return{'depositTxHash':l};if(!this['wowEnv'])a109c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20finalization\x20(claim\x20on\x20WOW)');const o=this['config']['timeouts']['autoClaimMs'],p=this['config']['timeouts']['signaturePollIntervalMs'],q=Math['max'](0x1,Math['ceil'](o/p));let r;for(let u=0x0;u<q;u++){r=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':n['bridgeSeq']},this['config']['wow']['network']),logger['debug']('wait\x20approve\x20'+(u+0x1)+'/'+q+':\x20status='+r['status']);if(r['status']==='approved'||r['status']==='claimed')break;await sleep(p);}if(!r||r['status']==='not_approved')a109c('fail','Timeout\x20waiting\x20for\x20bridge\x20nodes\x20to\x20approve\x20bridgeSeq='+n['bridgeSeq']+'\x20after\x20'+q+'\x20iterations');if(r['status']==='claimed')return{'depositTxHash':l,'bridgeSeq':n['bridgeSeq'],'claimTxDigest':r['claimedTxHash']};const s=await claimOnWow({'sourceChainId':0xa,'bridgeSeqNum':n['bridgeSeq'],'tokenType':f['wowTypeTag'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']);return{'depositTxHash':l,'bridgeSeq':n['bridgeSeq'],'claimTxDigest':s['digest']};}async['bridgeWowToEvm'](a){let b;if(a['idempotencyKey'])b=a['idempotencyKey'];else{if(a['idempotentByParams'])b=this['_generateIdempotencyKey']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['recipientEthAddress']});}if(b){const v=await this['_findTransferByIdempotencyKey'](b);if(v){if(v['status']==='success')return{'depositTxDigest':v['depositTxDigest'],'bridgeSeq':v['bridgeSeq']?BigInt(v['bridgeSeq']):0x0n,'claimTxHash':v['claimTxHash'],'idempotentHit':!![]};else{if(v['status']==='pending'||v['status']==='in_progress')return{'depositTxDigest':v['depositTxDigest']??'','bridgeSeq':v['bridgeSeq']?BigInt(v['bridgeSeq']):0x0n,'claimTxHash':v['claimTxHash'],'idempotentHit':!![]};}await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](v['transferId']),await this['_saveHistory']();});}}if(!this['wowEnv'])a109c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const c=a['waitForFinalization']??!![],d=this['config']['ethereum'],e=await this['resolveEvmRpcUrl'](),f=a109k(this['config'],a['token']);if(!f)a109c('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const g=f['wowTypeTag'],h=f['tokenId'];await this['_ensureSafeEvmNonce']({'tokenType':g,'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']});const i=await depositFromWow({'amount':a['amount'],'tokenType':g,'recipientEthAddress':a['recipientEthAddress'],'bridgeObjectId':this['config']['wow']['bridgeObjectId']},this['wowEnv']),{WowClient:j}=await import('./client/index.mjs'),{Config:k}=await import('./w/local/config.mjs'),{getFullnodeUrl:l}=await import('./network-y8yMus5q.mjs')['then'](w=>w['i']),m=await k['Instance']()['network_get'](this['wowEnv']['network']),n=new j({'url':l(m),'network':m});await waitForWowTx(n,i['digest'],this['config']['timeouts']['signaturePollIntervalMs'],this['config']['timeouts']['signatureCollectMs']);if(!c)return{'depositTxDigest':i['digest'],'bridgeSeq':i['seqNum']};const o=await n['getTransactionBlock']({'digest':i['digest'],'options':{'showEffects':!![]}}),p=o['timestampMs']?BigInt(o['timestampMs']):BigInt(Date['now']()),q=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!q)a109c('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const r=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':i['seqNum'],'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(a['recipientEthAddress']['slice'](0x2)),'tokenId':h,'amount':a['amount'],'timestampMs':p,'senderAddress':hexToBytes(q['startsWith']('0x')?q['slice'](0x2):q)}),s={'bridgeProxyAddress':d['bridgeProxyAddress'],'network':d['chainId'],'rpcUrl':e,'nodeClient':this['nodeClient'],'wowClient':n},t=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':i['seqNum'],'message':r},s);if(!t['success']||!t['txHash'])a109c('fail','EVM\x20claim\x20failed:\x20'+(t['error']?.['revertReason']?'revert:\x20'+t['error']['revertReason']:t['error']?.['message']??'unknown\x20error'));const u=t['txHash'];return await waitForEthTx(u,e,0x1,0x2ee0,this['config']['timeouts']['signatureCollectMs']),{'depositTxDigest':i['digest'],'bridgeSeq':i['seqNum'],'claimTxHash':u};}async['queryEvmToWowStatus'](a){const b=this['config']['ethereum'],{EvmNetworkRegistry:c}=await import('./w/local/evm/networks.mjs'),d=c['Instance'](),f=await d['resolve'](b['chainId']),g=Date['now'](),h=[...f['rpcUrls']]['sort']((j,k)=>{const l=d['unhealthyRpc']?.['get'](j)??0x0,m=d['unhealthyRpc']?.['get'](k)??0x0,n=d['unhealthyCounter']?.['get'](j)??0x0,o=d['unhealthyCounter']?.['get'](k)??0x0,p=l<g?0x0:0x1,q=m<g?0x0:0x1;if(p!==q)return p-q;return n-o;});let i;for(const j of h)try{const k=await queryEvmToWowTransferStatus(a,j,b['bridgeProxyAddress']);d['markHealthy'](j);if(k['step']==='source_tx_confirmed'&&k['bridgeSeq'])try{const l=await queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':BigInt(k['bridgeSeq'])},this['config']['wow']['network']);if(l['status']==='claimed')k['status']='completed',k['step']='completed',k['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['completed'],k['claimTxDigest']=l['claimedTxHash'];else{if(l['status']==='approved')k['status']='signatures_ready',k['step']='signatures_ready',k['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['signatures_ready'];else{if(l['status']==='not_approved'){}}}}catch{}return k;}catch(m){i=m,d['markUnhealthy'](j);}return{'status':'pending','step':'source_tx_pending','direction':'evm_to_wow','sourceTxHash':a,'error':i instanceof Error?i['message']:String(i)};}async['queryWowToEvmStatus'](a){const {WowClient:b}=await import('./client/index.mjs'),{getFullnodeUrl:c}=await import('./network-y8yMus5q.mjs')['then'](e=>e['i']),d=this['config']['wow']['network'];return queryWowToEvmTransferStatus(new b({'url':c(d),'network':d}),a);}async['queryEvmToWowClaimStatus'](a){return queryWowClaimStatus({'sourceChainId':0xa,'bridgeSeqNum':a['bridgeSeqNum']},this['config']['wow']['network']);}async['claimWowToEvm'](a){if(!this['wowEnv'])a109c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20claim');await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)a109c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['direction']!=='wow_to_evm')a109c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20is\x20not\x20a\x20wow_to_evm\x20transfer');if(!b['depositTxDigest']||!b['bridgeSeq'])a109c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20missing\x20deposit\x20info\x20(depositTxDigest\x20or\x20bridgeSeq)');const c=this['config']['ethereum'],d=await this['resolveEvmRpcUrl'](),e=a109k(this['config'],b['token']);if(!e)a109c('invalid\x20parameter','Token\x20'+b['token']+'\x20not\x20found\x20in\x20config');const f=e['tokenId'],{WowClient:g}=await import('./client/index.mjs'),{Config:h}=await import('./w/local/config.mjs'),{getFullnodeUrl:i}=await import('./network-y8yMus5q.mjs')['then'](r=>r['i']),j=await h['Instance']()['network_get'](this['wowEnv']['network']),k=new g({'url':i(j),'network':j}),l=await k['getTransactionBlock']({'digest':b['depositTxDigest'],'options':{'showEffects':!![]}}),m=l['timestampMs']?BigInt(l['timestampMs']):BigInt(Date['now']()),n=(await Account['Instance']()['get'](this['wowEnv']['account']))?.['address']??'';if(!n)a109c('fail','Failed\x20to\x20resolve\x20WOW\x20sender\x20address');const o=buildClaimMessage({'messageType':0x0,'version':0x2,'nonce':BigInt(b['bridgeSeq']),'sourceChain':0x0,'targetChain':0xa,'recipientAddress':hexToBytes(b['recipientEth']['slice'](0x2)),'tokenId':f,'amount':BigInt(b['amount']),'timestampMs':m,'senderAddress':hexToBytes(n['startsWith']('0x')?n['slice'](0x2):n)}),p={'bridgeProxyAddress':c['bridgeProxyAddress'],'network':c['chainId'],'rpcUrl':d,'nodeClient':this['nodeClient'],'wowClient':k},q=await claimOnEthBySeq({'sourceChain':0x0,'messageType':0x0,'seqNum':BigInt(b['bridgeSeq']),'message':o},p);if(!q['success']||!q['txHash'])a109c('fail','EVM\x20claim\x20failed:\x20'+(q['error']?.['revertReason']?'revert:\x20'+q['error']['revertReason']:q['error']?.['message']??'unknown\x20error'));return this['_updateTransfer'](a,{'step':'claimed','status':'success','claimTxHash':q['txHash']}),{'claimTxHash':q['txHash'],'transferId':a};}async['bridgeWowToEvmSimple'](a){if(!this['wowEnv'])a109c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20WOW→EVM\x20bridge');const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=(await b['Instance']()['active']())['address'];let d;if(a['idempotencyKey'])d=a['idempotencyKey'];else{if(a['idempotentByParams'])d=this['_generateIdempotencyKey']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['withdrawTo']??c,'intermediateEthAccount':c});}if(d){const f=await this['_findTransferByIdempotencyKey'](d);if(f){if(f['status']==='success'||f['status']==='pending'||f['status']==='in_progress')return{'depositTxDigest':f['depositTxDigest']??'','bridgeSeq':f['bridgeSeq']?BigInt(f['bridgeSeq']):0x0n,'claimTxHash':f['claimTxHash'],'withdrawTxHash':f['withdrawTxHash'],'activeEvmAccount':f['intermediateEthAccount'],'transferId':f['transferId'],'idempotentHit':!![]};await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](f['transferId']),await this['_saveHistory']();});}}const e=await this['_recordTransfer']({'direction':'wow_to_evm','token':a['token'],'amount':a['amount'],'recipientEth':a['withdrawTo']??c,'intermediateEthAccount':c,'withdrawToProvided':!!a['withdrawTo'],'idempotencyKey':d});try{this['_updateTransfer'](e,{'step':'deposit','status':'in_progress'});const g=await this['bridgeWowToEvm']({'token':a['token'],'amount':a['amount'],'recipientEthAddress':c,'waitForFinalization':a['waitForFinalization']??!![]});if(g['claimTxHash'])this['_updateTransfer'](e,{'step':'claimed','status':'success','depositTxDigest':g['depositTxDigest'],'bridgeSeq':g['bridgeSeq']?.['toString'](),'claimTxHash':g['claimTxHash']});else this['_updateTransfer'](e,{'step':'deposit','status':'in_progress','depositTxDigest':g['depositTxDigest'],'bridgeSeq':g['bridgeSeq']?.['toString']()});let h;if(a['withdrawTo']&&g['claimTxHash']){this['_updateTransfer'](e,{'step':'withdraw','status':'in_progress'});const i=a109k(this['config'],a['token']);h=(await b['Instance']()['withdrawFromActive']({'to':a['withdrawTo'],'amount':a['amount'],'tokenAddress':a['token']==='ETH'?void 0x0:i?.['evmAddress'],'network':this['config']['ethereum']['chainId']}))['transactionHash'],this['_updateTransfer'](e,{'step':'withdrawn','status':'success','withdrawTxHash':h});}return{'depositTxDigest':g['depositTxDigest'],'bridgeSeq':g['bridgeSeq'],'claimTxHash':g['claimTxHash'],'withdrawTxHash':h,'activeEvmAccount':c,'transferId':e};}catch(j){this['_updateTransfer'](e,{'status':'failed','error':j?.['message']??String(j)});throw j;}}async['bridgeEvmToWowSimple'](a){if(!this['wowEnv'])a109c('invalid\x20parameter','wowEnv\x20is\x20required\x20for\x20EVM→WOW\x20bridge');const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=await b['Instance']()['active']();let d=a['recipientWowAddress'];if(!d){const j=await Account['Instance']()['get'](this['wowEnv']['account']);if(!j?.['address'])a109c('fail','Failed\x20to\x20resolve\x20WOW\x20recipient\x20address');d=j['address'];}let e;if(a['idempotencyKey'])e=a['idempotencyKey'];else{if(a['idempotentByParams'])e=this['_generateIdempotencyKey']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':d,'intermediateEthAccount':c['address']});}if(e){const k=await this['_findTransferByIdempotencyKey'](e);if(k){if(k['status']==='success'||k['status']==='pending'||k['status']==='in_progress')return{'depositTxHash':k['depositTxHash']??'','bridgeSeq':k['bridgeSeq']?BigInt(k['bridgeSeq']):void 0x0,'claimTxDigest':k['claimTxDigest'],'activeEvmAccount':k['intermediateEthAccount'],'transferId':k['transferId'],'idempotentHit':!![]};await this['_historyLock']['run'](async()=>{this['_transferHistory']['delete'](k['transferId']),await this['_saveHistory']();});}}const f=a109k(this['config'],a['token']);if(!f)a109c('invalid\x20parameter','Token\x20'+a['token']+'\x20not\x20found\x20in\x20config');const g=a['token']==='ETH';let h;if(g)h=await b['Instance']()['balance'](this['config']['ethereum']['chainId']);else h=await b['Instance']()['balanceOf'](f['evmAddress'],this['config']['ethereum']['chainId']);if(h===void 0x0||h<a['amount'])a109c('fail','Insufficient\x20'+(g?'ETH':'ERC20')+'\x20balance\x20on\x20activeEvmAccount\x20('+c['address']+')\x20on\x20chain\x20'+this['config']['ethereum']['chainId']+':\x20have\x20'+(h??0x0n)+',\x20need\x20'+a['amount']+'.\x20Please\x20recharge\x20the\x20activeEvmAccount\x20from\x20your\x20wallet\x20(transfer\x20'+(g?'ETH':'the\x20token')+'\x20to\x20'+c['address']+'),\x20then\x20retry\x20the\x20cross-chain\x20transfer.');const i=await this['_recordTransfer']({'direction':'evm_to_wow','token':a['token'],'amount':a['amount'],'recipientWow':d,'intermediateEthAccount':c['address'],'idempotencyKey':e});try{this['_updateTransfer'](i,{'step':'deposit','status':'in_progress'});let l;if(g)l=await this['bridgeNativeEvmToWow']({'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});else l=await this['bridgeErc20ToWow']({'token':a['token'],'amount':a['amount'],'recipientWowAddress':d,'waitForFinalization':a['waitForFinalization']??!![]});const m=a['waitForFinalization']??!![];return this['_updateTransfer'](i,{'step':m?'claimed':'deposit','status':m?'success':'in_progress','depositTxHash':l['depositTxHash'],'bridgeSeq':l['bridgeSeq']?.['toString'](),'claimTxDigest':l['claimTxDigest']}),{...l,'activeEvmAccount':c['address'],'transferId':i};}catch(n){this['_updateTransfer'](i,{'status':'failed','error':n?.['message']??String(n)});throw n;}}async['withdrawFromActiveEvmAccount'](a){const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),c=await b['Instance']()['active']();let d=a['tokenAddress'];if(!d&&a['token']&&a['token']!=='ETH')d=a109k(this['config'],a['token'])?.['evmAddress'];const e=await this['_recordTransfer']({'direction':'withdraw','token':a['token'],'amount':a['amount'],'recipientEth':a['to'],'intermediateEthAccount':c['address']});try{this['_updateTransfer'](e,{'step':'withdraw','status':'in_progress'});const f=await b['Instance']()['withdrawFromActive']({'to':a['to'],'amount':a['amount'],'tokenAddress':d,'network':a['network']??this['config']['ethereum']['chainId']});return this['_updateTransfer'](e,{'step':'withdrawn','status':'success','withdrawTxHash':f['transactionHash']}),{'txHash':f['transactionHash'],'transferId':e};}catch(g){this['_updateTransfer'](e,{'status':'failed','error':g?.['message']??String(g)});throw g;}}async['querySupportedEvmChains'](){const {EvmNetworkRegistry:a}=await import('./w/local/evm/networks.mjs'),b=a['Instance']()['listRpcStatus'](this['config']['ethereum']['chainId']),c=b['filter'](d=>d['healthy'])['length'];return[{'chainId':this['config']['ethereum']['chainId'],'name':'mainnet','description':'Ethereum\x20Mainnet','bridgeChainId':this['config']['ethereum']['bridgeChainId'],'explorerUrl':'https://etherscan.io','rpcCount':b['length'],'healthyRpcCount':c}];}async['querySupportedTokens'](a){const b=await this['querySupportedEvmChains'](),c=a?.['network']?b['filter'](e=>typeof a['network']==='number'?e['chainId']===a['network']:e['name']['toLowerCase']()===String(a['network'])['toLowerCase']()):b,d=[];for(const e of c){const f=this['config']['tokens']['filter'](g=>!g['evmChains']||g['evmChains']['includes'](e['bridgeChainId']))['map'](g=>({'tokenId':g['tokenId'],'symbol':g['symbol'],'evmAddress':g['evmAddress'],'evmDecimals':g['evmDecimals'],'wowTypeTag':g['wowTypeTag'],'wowDecimals':g['wowDecimals'],'description':g['description']??g['symbol']+'\x20(tokenId='+g['tokenId']+')'}));d['push']({'chainId':e['chainId'],'chainName':e['name'],'bridgeChainId':e['bridgeChainId'],'tokens':f});}return d;}async['queryActiveEvmAccount'](a){const {EvmAccount:b}=await import('./w/local/evm-account.mjs'),{EvmNetworkRegistry:c}=await import('./w/local/evm/networks.mjs'),d=await b['Instance']()['active']();c['Instance']();const e=await this['querySupportedEvmChains'](),f=a?.['network']?e['filter'](h=>typeof a['network']==='number'?h['chainId']===a['network']:h['name']['toLowerCase']()===String(a['network'])['toLowerCase']()):e,g=[];for(const h of f){const i=await b['Instance']()['balance'](h['chainId']),j={'chainId':h['chainId'],'name':h['name'],'nativeBalance':(i??0x0n)['toString']()};if(a?.['tokens']&&a['tokens']['length']>0x0){j['tokens']=[];for(const k of a['tokens']){const l=await b['Instance']()['balanceOf'](k,h['chainId']);j['tokens']['push']({'tokenAddress':k,'balance':(l??0x0n)['toString']()});}}g['push'](j);}return{'address':d['address'],'chains':g};}async['queryTransferList'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{const b=Array['from'](this['_transferHistory']['values']())['reverse']();if(a?.['onlyActive'])return b['filter'](c=>c['status']==='in_progress'||c['status']==='pending');return b;});}async['queryTransferStatus'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{return this['_transferHistory']['get'](a);});}async['getTransferByDepositTx'](a){return this['_findTransferByDepositTx'](a);}async['getTransferByBridgeSeq'](a){return this['_findTransferByBridgeSeq'](a);}async['resumeTransfer'](a){await this['_loadHistoryPromise'];const b=await this['_historyLock']['run'](async()=>{return this['_transferHistory']['get'](a);});if(!b)a109c('invalid\x20parameter','transferId\x20\x27'+a+'\x27\x20not\x20found');if(b['status']==='success')return b;if(b['direction']==='wow_to_evm')return this['_resumeWowToEvm'](b);else{if(b['direction']==='evm_to_wow')return this['_resumeEvmToWow'](b);else{if(b['direction']==='withdraw')return this['_resumeWithdraw'](b);}}return b;}async['_resumeWowToEvm'](a){const b=a['transferId'];try{if(a['depositTxDigest']&&a['bridgeSeq']){await this['refreshTransferStatus'](b);const c=await this['queryTransferStatus'](b);if(c?.['status']==='success')return c;if(!a['claimTxHash']){const {EvmAccount:d}=await import('./w/local/evm-account.mjs'),e=await d['Instance']()['active']();if(a['recipientEth']===e['address'])await this['claimWowToEvm'](b);}if(a['withdrawToProvided']&&a['recipientEth']&&!a['withdrawTxHash']){const f=a109k(this['config'],a['token']),{EvmAccount:g}=await import('./w/local/evm-account.mjs');this['_updateTransfer'](b,{'step':'withdraw','status':'in_progress'});const h=await g['Instance']()['withdrawFromActive']({'to':a['recipientEth'],'amount':BigInt(a['amount']),'tokenAddress':a['token']==='ETH'?void 0x0:f?.['evmAddress'],'network':this['config']['ethereum']['chainId']});this['_updateTransfer'](b,{'step':'withdrawn','status':'success','withdrawTxHash':h['transactionHash']});}}}catch(i){this['_updateTransfer'](b,{'status':'failed','error':i?.['message']??String(i)});throw i;}return await this['queryTransferStatus'](b)??a;}async['_resumeEvmToWow'](a){const b=a['transferId'];try{await this['refreshTransferStatus'](b);const c=await this['queryTransferStatus'](b);if(c?.['status']==='success')return c;}catch(d){this['_updateTransfer'](b,{'status':'failed','error':d?.['message']??String(d)});throw d;}return await this['queryTransferStatus'](b)??a;}async['_resumeWithdraw'](a){const b=a['transferId'];try{if(!a['withdrawTxHash']&&a['recipientEth']){const c=a109k(this['config'],a['token']),{EvmAccount:d}=await import('./w/local/evm-account.mjs');this['_updateTransfer'](b,{'step':'withdraw','status':'in_progress'});const e=await d['Instance']()['withdrawFromActive']({'to':a['recipientEth'],'amount':BigInt(a['amount']),'tokenAddress':a['token']==='ETH'?void 0x0:c?.['evmAddress'],'network':this['config']['ethereum']['chainId']});this['_updateTransfer'](b,{'step':'withdrawn','status':'success','withdrawTxHash':e['transactionHash']});}}catch(f){this['_updateTransfer'](b,{'status':'failed','error':f?.['message']??String(f)});throw f;}return await this['queryTransferStatus'](b)??a;}async['refreshTransferStatus'](a){await this['_loadHistoryPromise'];const b=this['_transferHistory']['get'](a);if(!b)return void 0x0;if(b['direction']==='withdraw')return b;try{if(b['direction']==='evm_to_wow'&&b['depositTxHash']){const c=await this['queryEvmToWowStatus'](b['depositTxHash']);if(typeof c['bridgeSeq']==='bigint')c['bridgeSeq']=c['bridgeSeq']['toString']();b['latestState']=c,c['status']==='completed'&&b['status']==='in_progress'&&(b['status']='success',b['step']='claimed');}else{if(b['direction']==='wow_to_evm'&&b['depositTxDigest']){const d=await this['queryWowToEvmStatus'](b['depositTxDigest']);if(typeof d['bridgeSeq']==='bigint')d['bridgeSeq']=d['bridgeSeq']['toString']();if(b['claimTxHash']){if(d['step']==='source_tx_confirmed'||d['step']==='signatures_ready')try{const e=await this['resolveEvmRpcUrl'](),f=await queryEthTxReceipt(b['claimTxHash'],e);f?(d['claimReceipt']=f,f['status']==='0x1'?(d['status']='completed',d['step']='completed',d['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['completed']):(d['status']='failed',d['step']='failed',d['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['failed'],d['error']='EVM\x20claim\x20transaction\x20reverted')):(d['status']='claiming',d['step']='claim_tx_pending',d['stepDescription']=BRIDGE_STEP_DESCRIPTIONS['claim_tx_pending']);}catch{}}else d['hint']='claim_wow_to_evm\x20(step\x202)\x20not\x20yet\x20called.\x20Call\x20claim_wow_to_evm\x20after\x20bridge\x20nodes\x20sign\x20(~1-5\x20min).';b['latestState']=d,d['status']==='completed'&&b['status']==='in_progress'&&(b['status']='success',b['step']='claimed');}}}catch(g){b['error']=g?.['message']??String(g);}return b;}async['manageEvmRpc'](a){const {EvmNetworkRegistry:b}=await import('./w/local/evm/networks.mjs'),c=b['Instance'](),d=a['network']??this['config']['ethereum']['chainId'];switch(a['op']){case'list':return{'op':'list','success':!![],'result':c['listRpcStatus'](d)};case'add':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a109c('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27add\x27\x20op');{const e=c['addRpcs'](d,a['rpcUrls']);return{'op':'add','success':e>0x0,'result':{'added':e}};}case'remove':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a109c('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27remove\x27\x20op');{const f=c['removeRpcs'](d,a['rpcUrls']);return{'op':'remove','success':f>0x0,'result':{'removed':f}};}case'set':if(!a['rpcUrls']||a['rpcUrls']['length']===0x0)a109c('invalid\x20parameter','rpcUrls\x20is\x20required\x20for\x20\x27set\x27\x20op');return{'op':'set','success':c['setRpcs'](d,a['rpcUrls'])};case'ping':{const g=c['listRpcStatus'](d),h=[];for(const i of g){const j=await c['ping'](i['url']);h['push']({'url':i['url'],'healthy':j});}return{'op':'ping','success':!![],'result':h};}default:a109c('invalid\x20parameter','Unknown\x20op:\x20'+a['op']);}}static{this['HISTORY_DB_KEY']='bridge:transfers:all';}async['_loadHistory'](){return this['_historyLock']['run'](async()=>{try{this['_historyStore']=new SQLiteStorage();const a=await this['_historyStore']['get'](BridgeClient['HISTORY_DB_KEY']);if(a){const b=JSON['parse'](a);if(Array['isArray'](b)){for(const d of b)if(d['transferId'])this['_transferHistory']['set'](d['transferId'],d);for(const e of b){const f=e['transferId']?.['match'](/_(\d+)$/);if(f){const g=parseInt(f[0x1],0xa);if(g>this['_transferCounter'])this['_transferCounter']=g;}}}}}catch{}});}async['_saveHistory'](){try{if(!this['_historyStore'])return;const a=Array['from'](this['_transferHistory']['values']());await this['_historyStore']['put'](BridgeClient['HISTORY_DB_KEY'],JSON['stringify'](a));}catch{}}async['_recordTransfer'](a){return this['_historyLock']['run'](async()=>{this['_transferCounter']+=0x1;const b='br_'+Date['now']()+'_'+this['_transferCounter'],c={'transferId':b,'idempotencyKey':a['idempotencyKey'],'direction':a['direction'],'token':a['token'],'amount':a['amount']['toString'](),'recipientEth':a['recipientEth'],'recipientWow':a['recipientWow'],'intermediateEthAccount':a['intermediateEthAccount'],'withdrawToProvided':a['withdrawToProvided'],'step':'init','status':'pending','createdAt':Date['now'](),'updatedAt':Date['now']()};return this['_transferHistory']['set'](b,c),await this['_saveHistory'](),b;});}async['_updateTransfer'](a,b){return this['_historyLock']['run'](async()=>{const c=this['_transferHistory']['get'](a);if(!c)return;Object['assign'](c,b,{'updatedAt':Date['now']()}),await this['_saveHistory']();});}['_generateIdempotencyKey'](a){const b=[a['direction'],a['token']['toString'](),a['amount']['toString'](),a['recipientWow']??'',a['recipientEth']??'',a['intermediateEthAccount']??''];let c=0x1505;const d=b['join']('|');for(let e=0x0;e<d['length'];e++){c=(c<<0x5)+c+d['charCodeAt'](e),c|=0x0;}return'idem_'+Math['abs'](c)['toString'](0x24);}async['_findTransferByIdempotencyKey'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{for(const b of this['_transferHistory']['values']())if(b['idempotencyKey']===a)return b;});}async['_findTransferByDepositTx'](a){return await this['_loadHistoryPromise'],this['_historyLock']['run'](async()=>{for(const b of this['_transferHistory']['values']())if(b['depositTxHash']===a||b['depositTxDigest']===a)return b;});}async['_findTransferByBridgeSeq'](a){await this['_loadHistoryPromise'];const b=a['toString']();return this['_historyLock']['run'](async()=>{for(const c of this['_transferHistory']['values']())if(c['bridgeSeq']===b)return c;});}};function sleep(a){return new Promise(b=>setTimeout(b,a));}function loadDefaultConfig(){return a109j;}function hexToBytes(a){const b=a['startsWith']('0x')?a['slice'](0x2):a,c=new Uint8Array(b['length']/0x2);for(let d=0x0;d<c['length'];d++)c[d]=parseInt(b['slice'](d*0x2,d*0x2+0x2),0x10);return c;}export{ERC20_TRANSFER_TOPIC as A,encodeTokenTransferPayloadV2 as B,buildClaimMessage as C,depositErc20 as D,isEvmNonceAlreadyProcessed as E,encodeBridgeERC20 as F,encodeBridgeERC20V2 as I,encodeBridgeETH as L,TOKENS_DEPOSITED_TOPIC as M,TOKENS_DEPOSITED_V2_TOPIC as N,depositEth as O,encodeApprove as P,encodeBridgeETHV2 as R,depositFromWow as S,claimOnEthBySeq as T,encodeTransferBridgedTokensWithSignatures as V,waitForEthTx as _,BridgeTransferStatus as a,claimOnWow as b,parseEthClaimEvent as c,queryEthBalance as d,queryEthTxConfirmations as f,queryWowTx as g,queryWowToEvmTransferStatus as h,BridgeTransferDirection as i,TOKENS_CLAIMED_TOPIC as j,depositFromEth as k,parseEthDepositEvent as l,queryEvmToWowTransferStatus as m,BridgeNodeClient as n,BridgeTransferStep as o,queryEthTxReceipt as p,BRIDGE_STEP_DESCRIPTIONS as r,makeBridgeTransferState as s,BridgeClient as t,queryErc20Balance as u,waitForWowTx as v,claimOnEth as w,queryWowClaimStatus as x,WowClaimStatus as y,encodeIsTransferProcessed as z};
|