dop-wallet-v6 1.2.3 → 1.2.4
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/services/artifacts/__tests__/artifact-downloader.test.js.map +1 -1
- package/dist/services/artifacts/artifact-downloader.d.ts +1 -1
- package/dist/services/artifacts/artifact-downloader.js +1 -1
- package/dist/services/artifacts/artifact-downloader.js.map +1 -1
- package/dist/services/artifacts/artifact-hash.d.ts +1 -1
- package/dist/services/artifacts/artifact-hash.js +2 -2
- package/dist/services/artifacts/artifact-hash.js.map +1 -1
- package/dist/services/artifacts/artifact-util.d.ts +1 -1
- package/dist/services/artifacts/artifact-util.js +1 -1
- package/dist/services/artifacts/artifact-util.js.map +1 -1
- package/dist/services/dop/core/__tests__/providers.test.js +4 -4
- package/dist/services/dop/core/__tests__/providers.test.js.map +1 -1
- package/dist/services/dop/core/artifacts.d.ts +2 -2
- package/dist/services/dop/core/artifacts.js +1 -1
- package/dist/services/dop/core/artifacts.js.map +1 -1
- package/dist/services/dop/core/encrypts.d.ts +1 -1
- package/dist/services/dop/core/encrypts.js +2 -2
- package/dist/services/dop/core/encrypts.js.map +1 -1
- package/dist/services/dop/core/engine.d.ts +1 -1
- package/dist/services/dop/core/engine.js +1 -1
- package/dist/services/dop/core/engine.js.map +1 -1
- package/dist/services/dop/core/init.d.ts +2 -2
- package/dist/services/dop/core/init.js +2 -2
- package/dist/services/dop/core/init.js.map +1 -1
- package/dist/services/dop/core/load-provider.d.ts +1 -1
- package/dist/services/dop/core/load-provider.js +2 -2
- package/dist/services/dop/core/load-provider.js.map +1 -1
- package/dist/services/dop/core/merkletree.d.ts +3 -3
- package/dist/services/dop/core/merkletree.js +2 -2
- package/dist/services/dop/core/merkletree.js.map +1 -1
- package/dist/services/dop/core/prover.d.ts +1 -1
- package/dist/services/dop/core/prover.js +1 -1
- package/dist/services/dop/core/prover.js.map +1 -1
- package/dist/services/dop/core/providers.d.ts +2 -2
- package/dist/services/dop/core/providers.js +1 -1
- package/dist/services/dop/core/providers.js.map +1 -1
- package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js +1 -1
- package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js.map +1 -1
- package/dist/services/dop/dop-txids/blinded-commitments.d.ts +1 -1
- package/dist/services/dop/dop-txids/blinded-commitments.js +1 -1
- package/dist/services/dop/dop-txids/blinded-commitments.js.map +1 -1
- package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.d.ts +1 -1
- package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.js +1 -1
- package/dist/services/dop/dop-txids/dop-txid-graph-type-formatters.js.map +1 -1
- package/dist/services/dop/dop-txids/dop-txid-merkletrees.d.ts +1 -1
- package/dist/services/dop/dop-txids/dop-txid-merkletrees.js +1 -1
- package/dist/services/dop/dop-txids/dop-txid-merkletrees.js.map +1 -1
- package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.d.ts +1 -1
- package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.js +2 -2
- package/dist/services/dop/dop-txids/dop-txid-sync-graph-v2.js.map +1 -1
- package/dist/services/dop/dop-txids/graphql/index.js +1 -1
- package/dist/services/dop/dop-txids/graphql/index.js.map +1 -1
- package/dist/services/dop/history/transaction-history.d.ts +2 -2
- package/dist/services/dop/history/transaction-history.js +2 -2
- package/dist/services/dop/history/transaction-history.js.map +1 -1
- package/dist/services/dop/index.d.ts +1 -0
- package/dist/services/dop/index.js +1 -0
- package/dist/services/dop/index.js.map +1 -1
- package/dist/services/dop/process/extract-transaction-data.d.ts +1 -1
- package/dist/services/dop/process/extract-transaction-data.js +1 -1
- package/dist/services/dop/process/extract-transaction-data.js.map +1 -1
- package/dist/services/dop/profile/__tests__/profile-manager.test.d.ts +1 -0
- package/dist/services/dop/profile/__tests__/profile-manager.test.js +170 -0
- package/dist/services/dop/profile/__tests__/profile-manager.test.js.map +1 -0
- package/dist/services/dop/profile/__tests__/selective-transparency.test.d.ts +1 -0
- package/dist/services/dop/profile/__tests__/selective-transparency.test.js +256 -0
- package/dist/services/dop/profile/__tests__/selective-transparency.test.js.map +1 -0
- package/dist/services/dop/profile/__tests__/storage.test.d.ts +1 -0
- package/dist/services/dop/profile/__tests__/storage.test.js +174 -0
- package/dist/services/dop/profile/__tests__/storage.test.js.map +1 -0
- package/dist/services/dop/profile/index.d.ts +3 -0
- package/dist/services/dop/profile/index.js +20 -0
- package/dist/services/dop/profile/index.js.map +1 -0
- package/dist/services/dop/profile/profile-manager.d.ts +32 -0
- package/dist/services/dop/profile/profile-manager.js +235 -0
- package/dist/services/dop/profile/profile-manager.js.map +1 -0
- package/dist/services/dop/profile/selective-transparency.d.ts +82 -0
- package/dist/services/dop/profile/selective-transparency.js +447 -0
- package/dist/services/dop/profile/selective-transparency.js.map +1 -0
- package/dist/services/dop/profile/storage.d.ts +27 -0
- package/dist/services/dop/profile/storage.js +648 -0
- package/dist/services/dop/profile/storage.js.map +1 -0
- package/dist/services/dop/profile/types.d.ts +106 -0
- package/dist/services/dop/profile/types.js +3 -0
- package/dist/services/dop/profile/types.js.map +1 -0
- package/dist/services/dop/profile/usage-example.d.ts +11 -0
- package/dist/services/dop/profile/usage-example.js +143 -0
- package/dist/services/dop/profile/usage-example.js.map +1 -0
- package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js +2 -2
- package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js.map +1 -1
- package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.d.ts +1 -1
- package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.js +2 -2
- package/dist/services/dop/quick-sync/V2/graph-type-formatters-v2.js.map +1 -1
- package/dist/services/dop/quick-sync/V2/graphql/index.js +1 -1
- package/dist/services/dop/quick-sync/V2/graphql/index.js.map +1 -1
- package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.d.ts +1 -1
- package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.js +1 -1
- package/dist/services/dop/quick-sync/V2/quick-sync-events-graph-v2.js.map +1 -1
- package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +2 -2
- package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +1 -1
- package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.d.ts +2 -2
- package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.js +1 -1
- package/dist/services/dop/quick-sync/V3/graph-type-formatters-v3.js.map +1 -1
- package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.d.ts +1 -1
- package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.js +2 -2
- package/dist/services/dop/quick-sync/V3/quick-sync-events-graph-v3.js.map +1 -1
- package/dist/services/dop/quick-sync/graph-query.d.ts +1 -1
- package/dist/services/dop/quick-sync/graph-query.js +1 -1
- package/dist/services/dop/quick-sync/graph-query.js.map +1 -1
- package/dist/services/dop/quick-sync/quick-sync-events.d.ts +2 -2
- package/dist/services/dop/quick-sync/quick-sync-events.js.map +1 -1
- package/dist/services/dop/quick-sync/shared-formatters.d.ts +1 -1
- package/dist/services/dop/quick-sync/shared-formatters.js +1 -1
- package/dist/services/dop/quick-sync/shared-formatters.js.map +1 -1
- package/dist/services/dop/util/__tests__/bytes-util.test.js +1 -1
- package/dist/services/dop/util/__tests__/bytes-util.test.js.map +1 -1
- package/dist/services/dop/util/bytes.d.ts +1 -1
- package/dist/services/dop/util/bytes.js +1 -1
- package/dist/services/dop/util/bytes.js.map +1 -1
- package/dist/services/dop/util/crypto.d.ts +2 -2
- package/dist/services/dop/util/crypto.js +1 -1
- package/dist/services/dop/util/crypto.js.map +1 -1
- package/dist/services/dop/wallets/__tests__/balances-live.test.js +1 -1
- package/dist/services/dop/wallets/__tests__/balances-live.test.js.map +1 -1
- package/dist/services/dop/wallets/__tests__/balances-update.test.js +2 -2
- package/dist/services/dop/wallets/__tests__/balances-update.test.js.map +1 -1
- package/dist/services/dop/wallets/__tests__/balances.test.js +2 -2
- package/dist/services/dop/wallets/__tests__/balances.test.js.map +1 -1
- package/dist/services/dop/wallets/__tests__/wallets.test.js +1 -1
- package/dist/services/dop/wallets/__tests__/wallets.test.js.map +1 -1
- package/dist/services/dop/wallets/balance-update.d.ts +2 -2
- package/dist/services/dop/wallets/balance-update.js +2 -2
- package/dist/services/dop/wallets/balance-update.js.map +1 -1
- package/dist/services/dop/wallets/balances.d.ts +1 -1
- package/dist/services/dop/wallets/balances.js.map +1 -1
- package/dist/services/dop/wallets/wallets.d.ts +2 -2
- package/dist/services/dop/wallets/wallets.js +2 -2
- package/dist/services/dop/wallets/wallets.js.map +1 -1
- package/dist/services/ethers/ethers-util.js +1 -1
- package/dist/services/ethers/ethers-util.js.map +1 -1
- package/dist/services/transactions/__tests__/proof-cache.test.js +1 -1
- package/dist/services/transactions/__tests__/proof-cache.test.js.map +1 -1
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +8 -8
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +1 -1
- package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js +2 -2
- package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js.map +1 -1
- package/dist/services/transactions/__tests__/tx-gas-details.test.js +1 -1
- package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +1 -1
- package/dist/services/transactions/__tests__/tx-notes.test.js +1 -1
- package/dist/services/transactions/__tests__/tx-notes.test.js.map +1 -1
- package/dist/services/transactions/__tests__/tx-transfer.test.js +11 -11
- package/dist/services/transactions/__tests__/tx-transfer.test.js.map +1 -1
- package/dist/services/transactions/proof-cache.d.ts +1 -1
- package/dist/services/transactions/proof-cache.js +1 -1
- package/dist/services/transactions/proof-cache.js.map +1 -1
- package/dist/services/transactions/tx-cross-contract-calls.d.ts +2 -2
- package/dist/services/transactions/tx-cross-contract-calls.js +2 -2
- package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
- package/dist/services/transactions/tx-decrypt.d.ts +1 -1
- package/dist/services/transactions/tx-decrypt.js +2 -2
- package/dist/services/transactions/tx-decrypt.js.map +1 -1
- package/dist/services/transactions/tx-encrypt-base-token.d.ts +1 -1
- package/dist/services/transactions/tx-encrypt-base-token.js +2 -2
- package/dist/services/transactions/tx-encrypt-base-token.js.map +1 -1
- package/dist/services/transactions/tx-encrypt.d.ts +1 -1
- package/dist/services/transactions/tx-encrypt.js +2 -2
- package/dist/services/transactions/tx-encrypt.js.map +1 -1
- package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.d.ts +2 -2
- package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js +2 -2
- package/dist/services/transactions/tx-gas-broadcaster-fee-estimator.js.map +1 -1
- package/dist/services/transactions/tx-gas-details.d.ts +1 -1
- package/dist/services/transactions/tx-gas-details.js +2 -2
- package/dist/services/transactions/tx-gas-details.js.map +1 -1
- package/dist/services/transactions/tx-generator.d.ts +2 -2
- package/dist/services/transactions/tx-generator.js +2 -2
- package/dist/services/transactions/tx-generator.js.map +1 -1
- package/dist/services/transactions/tx-notes.d.ts +2 -2
- package/dist/services/transactions/tx-notes.js +2 -2
- package/dist/services/transactions/tx-notes.js.map +1 -1
- package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
- package/dist/services/transactions/tx-nullifiers.js.map +1 -1
- package/dist/services/transactions/tx-proof-decrypt.d.ts +1 -1
- package/dist/services/transactions/tx-proof-decrypt.js +2 -2
- package/dist/services/transactions/tx-proof-decrypt.js.map +1 -1
- package/dist/services/transactions/tx-proof-transfer.d.ts +1 -1
- package/dist/services/transactions/tx-proof-transfer.js +1 -1
- package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
- package/dist/services/transactions/tx-transfer.d.ts +1 -1
- package/dist/services/transactions/tx-transfer.js +1 -1
- package/dist/services/transactions/tx-transfer.js.map +1 -1
- package/dist/tests/helper.test.d.ts +1 -1
- package/dist/tests/helper.test.js +1 -1
- package/dist/tests/helper.test.js.map +1 -1
- package/dist/tests/mocks.test.d.ts +2 -2
- package/dist/tests/mocks.test.js +1 -1
- package/dist/tests/mocks.test.js.map +1 -1
- package/dist/tests/poi/test-wallet-poi-requester.test.d.ts +2 -2
- package/dist/tests/poi/test-wallet-poi-requester.test.js.map +1 -1
- package/dist/tests/setup.test.d.ts +2 -2
- package/dist/tests/setup.test.js +1 -1
- package/dist/tests/setup.test.js.map +1 -1
- package/dist/tests/stubs/engine-stubs.test.d.ts +1 -1
- package/dist/tests/stubs/engine-stubs.test.js +1 -1
- package/dist/tests/stubs/engine-stubs.test.js.map +1 -1
- package/dist/utils/blocked-address.js +1 -1
- package/dist/utils/blocked-address.js.map +1 -1
- package/dist/utils/error.js +1 -1
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/gas-price.d.ts +1 -1
- package/dist/utils/gas-price.js +1 -1
- package/dist/utils/gas-price.js.map +1 -1
- package/package.json +13 -3
- package/postinstall.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-cache.js","sourceRoot":"","sources":["../../../src/services/transactions/proof-cache.ts"],"names":[],"mappings":";;;AAAA,6DAW6B;AAC7B,qDAAmF;AACnF,6CAAqE;AACrE,qDAA+D;AAC/D,yCAOoB;AAuBpB,IAAI,uBAAoD,CAAC;AAElD,MAAM,yBAAyB,GAAG,KAAK,EAC5C,WAAwB,EACxB,WAAwB,EACxB,SAAoB,EACpB,WAAmB,EACnB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,6BAAyD,EACzD,2BAAqD,EACrD,gCAA+D,EAC/D,8BAAwD,EACxD,kBAAmD,EACnD,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EAIhC,EAAE;IACH,IAAI;QACF,IAAA,uCAA+B,EAC7B,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,kBAAkB,EAClB,kCAAkC,EAClC,oBAAoB,EACpB,uBAAuB,CACxB,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,iDAAiD,EAAE;gBACjE,KAAK;aACN,CAAC,CAAC;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KAClE;IAED,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAC/B,IAAA,kCAA0B,GAAE,CAAC;IAE/B,IAAA,4CAA2B,EACzB,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,CACrB,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC,CAAC;AA7DW,QAAA,yBAAyB,6BA6DpC;AAEK,MAAM,0BAA0B,GAAG,CAAC,EAAsB,EAAE,EAAE;IACnE,IAAI,IAAA,+BAAS,EAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE;QACpC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;KACtE;IACD,uBAAuB,GAAG,EAAE,CAAC;AAC/B,CAAC,CAAC;AALW,QAAA,0BAA0B,8BAKrC;AAEK,MAAM,0BAA0B,GAAG,GAAsB,EAAE;IAChE,OAAO,uBAA4C,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,0BAA0B,8BAErC;AAEF,MAAM,mCAAmC,GAAG,CAAC,SAAoB,EAAE,EAAE;IACnE,QAAQ,SAAS,EAAE;QACjB,KAAK,+BAAS,CAAC,kBAAkB;YAC/B,+DAA+D;YAC/D,4BAA4B;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,+BAAS,CAAC,QAAQ,CAAC;QACxB,KAAK,+BAAS,CAAC,OAAO,CAAC;QACvB,KAAK,+BAAS,CAAC,gBAAgB;YAC7B,OAAO,IAAI,CAAC;KACf;AACH,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,CAAC,SAAoB,EAAE,EAAE;IAC/D,QAAQ,SAAS,EAAE;QACjB,KAAK,+BAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,+BAAS,CAAC,gBAAgB;YAC7B,kEAAkE;YAClE,OAAO,IAAI,CAAC;QACd,KAAK,+BAAS,CAAC,QAAQ,CAAC;QACxB,KAAK,+BAAS,CAAC,OAAO;YACpB,OAAO,KAAK,CAAC;KAChB;AACH,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CAAC,SAAoB,EAAE,EAAE;IAChE,QAAQ,SAAS,EAAE;QACjB,KAAK,+BAAS,CAAC,kBAAkB;YAC/B,2CAA2C;YAC3C,OAAO,IAAI,CAAC;QACd,KAAK,+BAAS,CAAC,QAAQ,CAAC;QACxB,KAAK,+BAAS,CAAC,OAAO,CAAC;QACvB,KAAK,+BAAS,CAAC,gBAAgB;YAC7B,OAAO,KAAK,CAAC;KAChB;AACH,CAAC,CAAC;AAEK,MAAM,+BAA+B,GAAG,CAC7C,WAAwB,EACxB,WAAwB,EACxB,SAAoB,EACpB,WAAmB,EACnB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,6BAAyD,EACzD,2BAAqD,EACrD,gCAA+D,EAC/D,8BAAwD,EACxD,kBAAmD,EACnD,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACnC,EAAE;IACR,IAAI,CAAC,uBAAuB,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACpC;SAAM,IAAI,uBAAuB,CAAC,WAAW,KAAK,WAAW,EAAE;QAC9D,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;SAAM,IAAI,uBAAuB,CAAC,SAAS,KAAK,SAAS,EAAE;QAC1D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;SAAM,IAAI,uBAAuB,CAAC,WAAW,KAAK,WAAW,EAAE;QAC9D,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;SAAM,IACL,SAAS,KAAK,+BAAS,CAAC,QAAQ;QAChC,uBAAuB,CAAC,4BAA4B;YAClD,4BAA4B,EAC9B;QACA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;SAAM,IACL,SAAS,KAAK,+BAAS,CAAC,QAAQ;QAChC,uBAAuB,CAAC,QAAQ,KAAK,QAAQ,EAC7C;QACA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACxC;SAAM,IACL,mCAAmC,CAAC,SAAS,CAAC;QAC9C,CAAC,IAAA,4CAAiC,EAChC,qBAAqB,EACrB,uBAAuB,CAAC,qBAAqB,CAC9C,EACD;QACA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;KACrD;SAAM,IACL,CAAC,IAAA,0CAA+B,EAC9B,mBAAmB,EACnB,uBAAuB,CAAC,mBAAmB,CAC5C,EACD;QACA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;KACnD;SAAM,IACL,+BAA+B,CAAC,SAAS,CAAC;QAC1C,CAAC,IAAA,mCAAwB,EACvB,6BAA6B,EAC7B,uBAAuB,CAAC,6BAA6B,CACtD,EACD;QACA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC7D;SAAM,IACL,+BAA+B,CAAC,SAAS,CAAC;QAC1C,CAAC,IAAA,iCAAsB,EACrB,2BAA2B,EAC3B,uBAAuB,CAAC,2BAA2B,CACpD,EACD;QACA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;SAAM,IACL,+BAA+B,CAAC,SAAS,CAAC;QAC1C,CAAC,IAAA,sCAA2B,EAC1B,gCAAgC,EAChC,uBAAuB,CAAC,gCAAgC,CACzD,EACD;QACA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;KAChE;SAAM,IACL,+BAA+B,CAAC,SAAS,CAAC;QAC1C,CAAC,IAAA,iCAAsB,EACrB,8BAA8B,EAC9B,uBAAuB,CAAC,8BAA8B,CACvD,EACD;QACA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;SAAM,IACL,gCAAgC,CAAC,SAAS,CAAC;QAC3C,CAAC,IAAA,wCAAgC,EAC/B,kBAAkB,EAClB,uBAAuB,CAAC,kBAAkB,CAC3C,EACD;QACA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;SAAM,IACL,CAAC,IAAA,uCAA4B,EAC3B,uBAAuB,CAAC,kCAAkC,EAC1D,kCAAkC,CACnC,EACD;QACA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KAClE;SAAM,IACL,oBAAoB,KAAK,uBAAuB,CAAC,oBAAoB,EACrE;QACA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACpD;SAAM,IACL,IAAA,sDAA0C,EACxC,uBAAuB,CAAC,oBAAoB,EAC5C,WAAW,CACZ;QACD,uBAAuB,KAAK,uBAAuB,CAAC,uBAAuB,EAC3E;QACA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;AACH,CAAC,CAAC;AAhHW,QAAA,+BAA+B,mCAgH1C","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopNFTAmountRecipient,\n DopERC20Amount,\n DopERC20AmountRecipient,\n DopNFTAmount,\n TransactionGasDetails,\n isDefined,\n DopERC20Recipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport { shouldSetOverallBatchMinGasPriceForNetwork } from '../../utils/gas-price';\nimport { compareContractTransactionArrays } from '../../utils/utils';\nimport { setGasDetailsForTransaction } from './tx-gas-details';\nimport {\n compareERC20AmountRecipients,\n compareERC20AmountRecipientArrays,\n compareERC20AmountArrays,\n compareNFTAmountRecipientArrays,\n compareNFTAmountArrays,\n compareERC20RecipientArrays,\n} from './tx-notes';\nimport { ContractTransaction } from 'ethers';\n\nexport type ProvedTransaction = {\n proofType: ProofType;\n txidVersion: TXIDVersion;\n transaction: ContractTransaction;\n dopWalletID: string;\n showSenderAddressToRecipient: boolean;\n memoText: Optional<string>;\n erc20AmountRecipients: DopERC20AmountRecipient[];\n nftAmountRecipients: DopNFTAmountRecipient[];\n relayAdaptDecryptERC20Amounts: Optional<DopERC20Amount[]>;\n relayAdaptDecryptNFTAmounts: Optional<DopNFTAmount[]>;\n relayAdaptEncryptERC20Recipients: Optional<DopERC20Recipient[]>;\n relayAdaptEncryptNFTRecipients: Optional<DopNFTAmount[]>;\n crossContractCalls: Optional<ContractTransaction[]>;\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>;\n sendWithPublicWallet: boolean;\n overallBatchMinGasPrice: Optional<bigint>;\n nullifiers: string[];\n};\n\nlet cachedProvedTransaction: Optional<ProvedTransaction>;\n\nexport const populateProvedTransaction = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n proofType: ProofType,\n dopWalletID: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayAdaptDecryptERC20Amounts: Optional<DopERC20Amount[]>,\n relayAdaptDecryptNFTAmounts: Optional<DopNFTAmount[]>,\n relayAdaptEncryptERC20Recipients: Optional<DopERC20Recipient[]>,\n relayAdaptEncryptNFTRecipients: Optional<DopNFTAmount[]>,\n crossContractCalls: Optional<ContractTransaction[]>,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<{\n transaction: ContractTransaction;\n nullifiers: string[];\n}> => {\n try {\n validateCachedProvedTransaction(\n txidVersion,\n networkName,\n proofType,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts,\n relayAdaptEncryptERC20Recipients,\n relayAdaptEncryptNFTRecipients,\n crossContractCalls,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n );\n } catch (cause) {\n if (!(cause instanceof Error)) {\n throw new Error('Non-error thrown from populateProvedTransaction', {\n cause,\n });\n }\n throw new Error(`Invalid proof for this transaction`, { cause });\n }\n\n const { transaction, nullifiers } =\n getCachedProvedTransaction();\n\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n\n return { transaction, nullifiers };\n};\n\nexport const setCachedProvedTransaction = (tx?: ProvedTransaction) => {\n if (isDefined(tx?.transaction?.from)) {\n throw new Error(`Cannot cache a transaction with a 'from' address.`);\n }\n cachedProvedTransaction = tx;\n};\n\nexport const getCachedProvedTransaction = (): ProvedTransaction => {\n return cachedProvedTransaction as ProvedTransaction;\n};\n\nconst shouldValidateERC20AmountRecipients = (proofType: ProofType) => {\n switch (proofType) {\n case ProofType.CrossContractCalls:\n // Skip validation for erc20AmountRecipients, which is not used\n // in this transaction type.\n return false;\n case ProofType.Transfer:\n case ProofType.Decrypt:\n case ProofType.DecryptBaseToken:\n return true;\n }\n};\n\nconst shouldValidateRelayAdaptAmounts = (proofType: ProofType) => {\n switch (proofType) {\n case ProofType.CrossContractCalls:\n case ProofType.DecryptBaseToken:\n // Only validate for Cross Contract and Decrypt Base Token proofs.\n return true;\n case ProofType.Transfer:\n case ProofType.Decrypt:\n return false;\n }\n};\n\nconst shouldValidateCrossContractCalls = (proofType: ProofType) => {\n switch (proofType) {\n case ProofType.CrossContractCalls:\n // Only validate for Cross Contract proofs.\n return true;\n case ProofType.Transfer:\n case ProofType.Decrypt:\n case ProofType.DecryptBaseToken:\n return false;\n }\n};\n\nexport const validateCachedProvedTransaction = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n proofType: ProofType,\n dopWalletID: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayAdaptDecryptERC20Amounts: Optional<DopERC20Amount[]>,\n relayAdaptDecryptNFTAmounts: Optional<DopNFTAmount[]>,\n relayAdaptEncryptERC20Recipients: Optional<DopERC20Recipient[]>,\n relayAdaptEncryptNFTRecipients: Optional<DopNFTAmount[]>,\n crossContractCalls: Optional<ContractTransaction[]>,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n): void => {\n if (!cachedProvedTransaction) {\n throw new Error('No proof found.');\n } else if (cachedProvedTransaction.txidVersion !== txidVersion) {\n throw new Error('Mismatch: txidVersion.');\n } else if (cachedProvedTransaction.proofType !== proofType) {\n throw new Error('Mismatch: proofType.');\n } else if (cachedProvedTransaction.dopWalletID !== dopWalletID) {\n throw new Error('Mismatch: dopWalletID.');\n } else if (\n proofType === ProofType.Transfer &&\n cachedProvedTransaction.showSenderAddressToRecipient !==\n showSenderAddressToRecipient\n ) {\n throw new Error('Mismatch: showSenderAddressToRecipient.');\n } else if (\n proofType === ProofType.Transfer &&\n cachedProvedTransaction.memoText !== memoText\n ) {\n throw new Error('Mismatch: memoText.');\n } else if (\n shouldValidateERC20AmountRecipients(proofType) &&\n !compareERC20AmountRecipientArrays(\n erc20AmountRecipients,\n cachedProvedTransaction.erc20AmountRecipients,\n )\n ) {\n throw new Error('Mismatch: erc20AmountRecipients.');\n } else if (\n !compareNFTAmountRecipientArrays(\n nftAmountRecipients,\n cachedProvedTransaction.nftAmountRecipients,\n )\n ) {\n throw new Error('Mismatch: nftAmountRecipients.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareERC20AmountArrays(\n relayAdaptDecryptERC20Amounts,\n cachedProvedTransaction.relayAdaptDecryptERC20Amounts,\n )\n ) {\n throw new Error('Mismatch: relayAdaptDecryptERC20Amounts.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareNFTAmountArrays(\n relayAdaptDecryptNFTAmounts,\n cachedProvedTransaction.relayAdaptDecryptNFTAmounts,\n )\n ) {\n throw new Error('Mismatch: relayAdaptDecryptNFTAmounts.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareERC20RecipientArrays(\n relayAdaptEncryptERC20Recipients,\n cachedProvedTransaction.relayAdaptEncryptERC20Recipients,\n )\n ) {\n throw new Error('Mismatch: relayAdaptEncryptERC20Recipients.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareNFTAmountArrays(\n relayAdaptEncryptNFTRecipients,\n cachedProvedTransaction.relayAdaptEncryptNFTRecipients,\n )\n ) {\n throw new Error('Mismatch: relayAdaptEncryptNFTRecipients.');\n } else if (\n shouldValidateCrossContractCalls(proofType) &&\n !compareContractTransactionArrays(\n crossContractCalls,\n cachedProvedTransaction.crossContractCalls,\n )\n ) {\n throw new Error('Mismatch: crossContractCalls.');\n } else if (\n !compareERC20AmountRecipients(\n cachedProvedTransaction.broadcasterFeeERC20AmountRecipient,\n broadcasterFeeERC20AmountRecipient,\n )\n ) {\n throw new Error('Mismatch: broadcasterFeeERC20AmountRecipient.');\n } else if (\n sendWithPublicWallet !== cachedProvedTransaction.sendWithPublicWallet\n ) {\n throw new Error('Mismatch: sendWithPublicWallet.');\n } else if (\n shouldSetOverallBatchMinGasPriceForNetwork(\n cachedProvedTransaction.sendWithPublicWallet,\n networkName,\n ) &&\n overallBatchMinGasPrice !== cachedProvedTransaction.overallBatchMinGasPrice\n ) {\n throw new Error('Mismatch: overallBatchMinGasPrice.');\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"proof-cache.js","sourceRoot":"","sources":["../../../src/services/transactions/proof-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopNFTAmountRecipient,\n DopERC20Amount,\n DopERC20AmountRecipient,\n DopNFTAmount,\n TransactionGasDetails,\n isDefined,\n DopERC20Recipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport { shouldSetOverallBatchMinGasPriceForNetwork } from '../../utils/gas-price';\nimport { compareContractTransactionArrays } from '../../utils/utils';\nimport { setGasDetailsForTransaction } from './tx-gas-details';\nimport {\n compareERC20AmountRecipients,\n compareERC20AmountRecipientArrays,\n compareERC20AmountArrays,\n compareNFTAmountRecipientArrays,\n compareNFTAmountArrays,\n compareERC20RecipientArrays,\n} from './tx-notes';\nimport { ContractTransaction } from 'ethers';\n\nexport type ProvedTransaction = {\n proofType: ProofType;\n txidVersion: TXIDVersion;\n transaction: ContractTransaction;\n dopWalletID: string;\n showSenderAddressToRecipient: boolean;\n memoText: Optional<string>;\n erc20AmountRecipients: DopERC20AmountRecipient[];\n nftAmountRecipients: DopNFTAmountRecipient[];\n relayAdaptDecryptERC20Amounts: Optional<DopERC20Amount[]>;\n relayAdaptDecryptNFTAmounts: Optional<DopNFTAmount[]>;\n relayAdaptEncryptERC20Recipients: Optional<DopERC20Recipient[]>;\n relayAdaptEncryptNFTRecipients: Optional<DopNFTAmount[]>;\n crossContractCalls: Optional<ContractTransaction[]>;\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>;\n sendWithPublicWallet: boolean;\n overallBatchMinGasPrice: Optional<bigint>;\n nullifiers: string[];\n};\n\nlet cachedProvedTransaction: Optional<ProvedTransaction>;\n\nexport const populateProvedTransaction = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n proofType: ProofType,\n dopWalletID: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayAdaptDecryptERC20Amounts: Optional<DopERC20Amount[]>,\n relayAdaptDecryptNFTAmounts: Optional<DopNFTAmount[]>,\n relayAdaptEncryptERC20Recipients: Optional<DopERC20Recipient[]>,\n relayAdaptEncryptNFTRecipients: Optional<DopNFTAmount[]>,\n crossContractCalls: Optional<ContractTransaction[]>,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<{\n transaction: ContractTransaction;\n nullifiers: string[];\n}> => {\n try {\n validateCachedProvedTransaction(\n txidVersion,\n networkName,\n proofType,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts,\n relayAdaptEncryptERC20Recipients,\n relayAdaptEncryptNFTRecipients,\n crossContractCalls,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n );\n } catch (cause) {\n if (!(cause instanceof Error)) {\n throw new Error('Non-error thrown from populateProvedTransaction', {\n cause,\n });\n }\n throw new Error(`Invalid proof for this transaction`, { cause });\n }\n\n const { transaction, nullifiers } =\n getCachedProvedTransaction();\n\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n\n return { transaction, nullifiers };\n};\n\nexport const setCachedProvedTransaction = (tx?: ProvedTransaction) => {\n if (isDefined(tx?.transaction?.from)) {\n throw new Error(`Cannot cache a transaction with a 'from' address.`);\n }\n cachedProvedTransaction = tx;\n};\n\nexport const getCachedProvedTransaction = (): ProvedTransaction => {\n return cachedProvedTransaction as ProvedTransaction;\n};\n\nconst shouldValidateERC20AmountRecipients = (proofType: ProofType) => {\n switch (proofType) {\n case ProofType.CrossContractCalls:\n // Skip validation for erc20AmountRecipients, which is not used\n // in this transaction type.\n return false;\n case ProofType.Transfer:\n case ProofType.Decrypt:\n case ProofType.DecryptBaseToken:\n return true;\n }\n};\n\nconst shouldValidateRelayAdaptAmounts = (proofType: ProofType) => {\n switch (proofType) {\n case ProofType.CrossContractCalls:\n case ProofType.DecryptBaseToken:\n // Only validate for Cross Contract and Decrypt Base Token proofs.\n return true;\n case ProofType.Transfer:\n case ProofType.Decrypt:\n return false;\n }\n};\n\nconst shouldValidateCrossContractCalls = (proofType: ProofType) => {\n switch (proofType) {\n case ProofType.CrossContractCalls:\n // Only validate for Cross Contract proofs.\n return true;\n case ProofType.Transfer:\n case ProofType.Decrypt:\n case ProofType.DecryptBaseToken:\n return false;\n }\n};\n\nexport const validateCachedProvedTransaction = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n proofType: ProofType,\n dopWalletID: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayAdaptDecryptERC20Amounts: Optional<DopERC20Amount[]>,\n relayAdaptDecryptNFTAmounts: Optional<DopNFTAmount[]>,\n relayAdaptEncryptERC20Recipients: Optional<DopERC20Recipient[]>,\n relayAdaptEncryptNFTRecipients: Optional<DopNFTAmount[]>,\n crossContractCalls: Optional<ContractTransaction[]>,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n): void => {\n if (!cachedProvedTransaction) {\n throw new Error('No proof found.');\n } else if (cachedProvedTransaction.txidVersion !== txidVersion) {\n throw new Error('Mismatch: txidVersion.');\n } else if (cachedProvedTransaction.proofType !== proofType) {\n throw new Error('Mismatch: proofType.');\n } else if (cachedProvedTransaction.dopWalletID !== dopWalletID) {\n throw new Error('Mismatch: dopWalletID.');\n } else if (\n proofType === ProofType.Transfer &&\n cachedProvedTransaction.showSenderAddressToRecipient !==\n showSenderAddressToRecipient\n ) {\n throw new Error('Mismatch: showSenderAddressToRecipient.');\n } else if (\n proofType === ProofType.Transfer &&\n cachedProvedTransaction.memoText !== memoText\n ) {\n throw new Error('Mismatch: memoText.');\n } else if (\n shouldValidateERC20AmountRecipients(proofType) &&\n !compareERC20AmountRecipientArrays(\n erc20AmountRecipients,\n cachedProvedTransaction.erc20AmountRecipients,\n )\n ) {\n throw new Error('Mismatch: erc20AmountRecipients.');\n } else if (\n !compareNFTAmountRecipientArrays(\n nftAmountRecipients,\n cachedProvedTransaction.nftAmountRecipients,\n )\n ) {\n throw new Error('Mismatch: nftAmountRecipients.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareERC20AmountArrays(\n relayAdaptDecryptERC20Amounts,\n cachedProvedTransaction.relayAdaptDecryptERC20Amounts,\n )\n ) {\n throw new Error('Mismatch: relayAdaptDecryptERC20Amounts.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareNFTAmountArrays(\n relayAdaptDecryptNFTAmounts,\n cachedProvedTransaction.relayAdaptDecryptNFTAmounts,\n )\n ) {\n throw new Error('Mismatch: relayAdaptDecryptNFTAmounts.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareERC20RecipientArrays(\n relayAdaptEncryptERC20Recipients,\n cachedProvedTransaction.relayAdaptEncryptERC20Recipients,\n )\n ) {\n throw new Error('Mismatch: relayAdaptEncryptERC20Recipients.');\n } else if (\n shouldValidateRelayAdaptAmounts(proofType) &&\n !compareNFTAmountArrays(\n relayAdaptEncryptNFTRecipients,\n cachedProvedTransaction.relayAdaptEncryptNFTRecipients,\n )\n ) {\n throw new Error('Mismatch: relayAdaptEncryptNFTRecipients.');\n } else if (\n shouldValidateCrossContractCalls(proofType) &&\n !compareContractTransactionArrays(\n crossContractCalls,\n cachedProvedTransaction.crossContractCalls,\n )\n ) {\n throw new Error('Mismatch: crossContractCalls.');\n } else if (\n !compareERC20AmountRecipients(\n cachedProvedTransaction.broadcasterFeeERC20AmountRecipient,\n broadcasterFeeERC20AmountRecipient,\n )\n ) {\n throw new Error('Mismatch: broadcasterFeeERC20AmountRecipient.');\n } else if (\n sendWithPublicWallet !== cachedProvedTransaction.sendWithPublicWallet\n ) {\n throw new Error('Mismatch: sendWithPublicWallet.');\n } else if (\n shouldSetOverallBatchMinGasPriceForNetwork(\n cachedProvedTransaction.sendWithPublicWallet,\n networkName,\n ) &&\n overallBatchMinGasPrice !== cachedProvedTransaction.overallBatchMinGasPrice\n ) {\n throw new Error('Mismatch: overallBatchMinGasPrice.');\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, TransactionReceiptLog, FeeTokenDetails, DopERC20AmountRecipient, DopNFTAmountRecipient, DopNFTAmount, TransactionGasDetails, DopERC20Recipient, TXIDVersion } from 'dop-sharedmodels-
|
|
1
|
+
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, TransactionReceiptLog, FeeTokenDetails, DopERC20AmountRecipient, DopNFTAmountRecipient, DopNFTAmount, TransactionGasDetails, DopERC20Recipient, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
2
2
|
import { GenerateTransactionsProgressCallback } from './tx-generator';
|
|
3
|
-
import { NFTTokenData } from 'dop-engine-
|
|
3
|
+
import { NFTTokenData } from 'dop-engine-v3';
|
|
4
4
|
import { ContractTransaction } from 'ethers';
|
|
5
5
|
export declare const createRelayAdaptDecryptERC20AmountRecipients: (txidVersion: TXIDVersion, networkName: NetworkName, decryptERC20Amounts: DopERC20Amount[]) => DopERC20AmountRecipient[];
|
|
6
6
|
export declare const createRelayAdaptDecryptNFTAmountRecipients: (txidVersion: TXIDVersion, networkName: NetworkName, decryptNFTAmounts: DopNFTAmount[]) => DopNFTAmountRecipient[];
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseRelayAdaptReturnValue = exports.getRelayAdaptTransactionError = exports.generateCrossContractCallsProof = exports.gasEstimateForUnprovenCrossContractCalls = exports.populateProvedCrossContractCalls = exports.createNFTTokenDataFromDopNFTAmount = exports.createRelayAdaptDecryptNFTAmountRecipients = exports.createRelayAdaptDecryptERC20AmountRecipients = void 0;
|
|
4
|
-
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-
|
|
4
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
5
|
const tx_generator_1 = require("./tx-generator");
|
|
6
6
|
const proof_cache_1 = require("./proof-cache");
|
|
7
7
|
const logger_1 = require("../../utils/logger");
|
|
8
|
-
const dop_engine_v3_1 = require("dop-engine-
|
|
8
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
9
9
|
const blocked_address_1 = require("../../utils/blocked-address");
|
|
10
10
|
const tx_gas_broadcaster_fee_estimator_1 = require("./tx-gas-broadcaster-fee-estimator");
|
|
11
11
|
const error_1 = require("../../utils/error");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-cross-contract-calls.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-cross-contract-calls.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n ProofType,\n TransactionReceiptLog,\n FeeTokenDetails,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n DopNFTAmount,\n TransactionGasDetails,\n isDefined,\n DopERC20Recipient,\n TXIDVersion,\n NETWORK_CONFIG,\n} from 'dop-sharedmodels-v5';\nimport {\n GenerateTransactionsProgressCallback,\n generateDummyProofTransactions,\n generateProofTransactions,\n nullifiersForTransactions,\n} from './tx-generator';\nimport {\n populateProvedTransaction,\n setCachedProvedTransaction,\n} from './proof-cache';\nimport { sendErrorMessage } from '../../utils/logger';\nimport {\n RelayAdaptHelper,\n AdaptID,\n NFTTokenData,\n ByteUtils,\n ByteLength,\n MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT_V2,\n RelayAdaptEncryptNFTRecipient,\n TransactionStructV2,\n TransactionStructV3,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v5';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { gasEstimateResponseDummyProofIterativeBroadcasterFee } from './tx-gas-broadcaster-fee-estimator';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { isDecimalStr } from '../../utils';\nimport { bigIntStringToHex } from '../dop/quick-sync/shared-formatters';\n\nconst createValidCrossContractCalls = (\n crossContractCalls: ContractTransaction[],\n): ContractTransaction[] => {\n if (!crossContractCalls.length) {\n throw new Error('No cross contract calls in transaction.');\n }\n try {\n return crossContractCalls.map(transactionRequest => {\n if (!transactionRequest.to || !transactionRequest.data) {\n throw new Error(`Cross-contract calls require 'to' and 'data' fields.`);\n }\n const transaction: ContractTransaction = {\n to: transactionRequest.to,\n value: transactionRequest.value,\n data: ByteUtils.hexlify(transactionRequest.data, true),\n };\n assertNotBlockedAddress(transaction.to);\n return transaction;\n });\n } catch (cause) {\n if (!(cause instanceof Error)) {\n throw new Error('Non-error thrown from createValidCrossContractCalls', {\n cause,\n });\n }\n throw reportAndSanitizeError(createValidCrossContractCalls.name, cause);\n }\n};\n\nexport const createRelayAdaptDecryptERC20AmountRecipients = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n decryptERC20Amounts: DopERC20Amount[],\n): DopERC20AmountRecipient[] => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(txidVersion, chain);\n const decryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n decryptERC20Amounts.map(decryptERC20Amount => ({\n ...decryptERC20Amount,\n recipientAddress: relayAdaptContract.address,\n }));\n return decryptERC20AmountRecipients;\n};\n\nexport const createRelayAdaptDecryptNFTAmountRecipients = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n decryptNFTAmounts: DopNFTAmount[],\n): DopNFTAmountRecipient[] => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(txidVersion, chain);\n const decryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n decryptNFTAmounts.map(decryptNFTAmount => ({\n ...decryptNFTAmount,\n recipientAddress: relayAdaptContract.address,\n }));\n return decryptNFTAmountRecipients;\n};\n\nexport const createNFTTokenDataFromDopNFTAmount = (\n nftAmount: DopNFTAmount,\n): NFTTokenData => {\n const tokenSubIDHex = isDecimalStr(nftAmount.tokenSubID)\n ? bigIntStringToHex(nftAmount.tokenSubID)\n : nftAmount.tokenSubID;\n\n return {\n tokenAddress: ByteUtils.formatToByteLength(\n nftAmount.nftAddress,\n ByteLength.Address,\n true,\n ),\n tokenType: nftAmount.nftTokenType as 1 | 2,\n tokenSubID: ByteUtils.formatToByteLength(\n tokenSubIDHex,\n ByteLength.UINT_256,\n true,\n ),\n };\n};\n\nconst createRelayAdaptEncryptNFTRecipients = (\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n): RelayAdaptEncryptNFTRecipient[] => {\n return relayAdaptEncryptNFTRecipients.map(\n (nftRecipient: DopNFTAmountRecipient) => ({\n nftTokenData: createNFTTokenDataFromDopNFTAmount(nftRecipient),\n recipientAddress: nftRecipient.recipientAddress,\n }),\n );\n};\n\nexport const populateProvedCrossContractCalls = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n relayAdaptDecryptERC20Amounts: DopERC20Amount[],\n relayAdaptDecryptNFTAmounts: DopNFTAmount[],\n relayAdaptEncryptERC20Recipients: DopERC20Recipient[],\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n crossContractCalls: ContractTransaction[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.CrossContractCalls,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n [], // erc20AmountRecipients\n [], // nftAmountRecipients\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts,\n relayAdaptEncryptERC20Recipients,\n relayAdaptEncryptNFTRecipients,\n crossContractCalls,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n delete transaction.from;\n\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedCrossContractCalls.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenCrossContractCalls = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n relayAdaptDecryptERC20Amounts: DopERC20Amount[],\n relayAdaptDecryptNFTAmounts: DopNFTAmount[],\n relayAdaptEncryptERC20Recipients: DopERC20Recipient[],\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n crossContractCalls: ContractTransaction[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n minGasLimit: Optional<bigint>,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const overallBatchMinGasPrice = 0n;\n\n const validCrossContractCalls =\n createValidCrossContractCalls(crossContractCalls);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptERC20Amounts,\n );\n const relayAdaptDecryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n createRelayAdaptDecryptNFTAmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptNFTAmounts,\n );\n\n const encryptRandom = ByteUtils.randomHex(16);\n const relayEncryptRequests =\n await RelayAdaptHelper.generateRelayEncryptRequests(\n encryptRandom,\n relayAdaptEncryptERC20Recipients,\n createRelayAdaptEncryptNFTRecipients(relayAdaptEncryptNFTRecipients),\n );\n\n // TODO-V3: Needs modification\n const minimumGasLimit =\n minGasLimit ?? MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT_V2;\n\n const response = await gasEstimateResponseDummyProofIterativeBroadcasterFee(\n (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.CrossContractCalls,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n ),\n async (txs: (TransactionStructV2 | TransactionStructV3)[]) => {\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n\n // TODO: We should add the relay adapt contract gas limit here.\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateCrossContractCalls(\n txidVersion,\n chain,\n txs,\n validCrossContractCalls,\n relayEncryptRequests,\n relayAdaptParamsRandom,\n true, // isGasEstimate\n !sendWithPublicWallet, // isBroadcasterTransaction\n minimumGasLimit,\n );\n // Remove gasLimit, we'll set to the minimum below.\n // TODO: Remove after callbacks upgrade.\n delete transaction.gasLimit;\n return transaction;\n },\n txidVersion,\n networkName,\n dopWalletID,\n relayAdaptDecryptERC20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n true, // isCrossContractCall\n );\n\n // TODO: Remove this after callbacks upgrade.\n // If gas estimate is under the cross-contract-minimum, replace it with the minimum.\n if (response.gasEstimate) {\n if (response.gasEstimate < minimumGasLimit) {\n response.gasEstimate = minimumGasLimit;\n }\n }\n\n return response;\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenCrossContractCalls.name,\n err,\n );\n }\n};\n\nexport const generateCrossContractCallsProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n relayAdaptDecryptERC20Amounts: DopERC20Amount[],\n relayAdaptDecryptNFTAmounts: DopNFTAmount[],\n relayAdaptEncryptERC20Recipients: DopERC20Recipient[],\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n crossContractCalls: ContractTransaction[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n minGasLimit: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const validCrossContractCalls =\n createValidCrossContractCalls(crossContractCalls);\n\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptERC20Amounts,\n );\n const relayAdaptDecryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n createRelayAdaptDecryptNFTAmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptNFTAmounts,\n );\n\n // Generate dummy txs for relay adapt params.\n const dummyDecryptTxs = await generateDummyProofTransactions(\n ProofType.CrossContractCalls,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n );\n\n // Generate relay adapt params from dummy transactions.\n const encryptRandom = ByteUtils.randomHex(16);\n\n const relayEncryptRequests =\n await RelayAdaptHelper.generateRelayEncryptRequests(\n encryptRandom,\n relayAdaptEncryptERC20Recipients,\n createRelayAdaptEncryptNFTRecipients(relayAdaptEncryptNFTRecipients),\n );\n\n // TODO-V3: Needs modification\n const minimumGasLimit =\n minGasLimit ?? MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT_V2;\n\n const { chain } = NETWORK_CONFIG[networkName];\n\n const isBroadcasterTransaction = !sendWithPublicWallet;\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n const relayAdaptParams =\n await RelayAdaptVersionedSmartContracts.getRelayAdaptParamsCrossContractCalls(\n txidVersion,\n chain,\n dummyDecryptTxs,\n validCrossContractCalls,\n relayEncryptRequests,\n relayAdaptParamsRandom,\n isBroadcasterTransaction,\n minimumGasLimit,\n );\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(\n txidVersion,\n chain,\n );\n const relayAdaptID: AdaptID = {\n contract: relayAdaptContract.address,\n parameters: relayAdaptParams,\n };\n\n // Create real transactions with relay adapt params.\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.CrossContractCalls,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateCrossContractCalls(\n txidVersion,\n chain,\n provedTransactions,\n validCrossContractCalls,\n relayEncryptRequests,\n relayAdaptParamsRandom,\n false, // isGasEstimate\n isBroadcasterTransaction,\n minimumGasLimit,\n );\n delete transaction.from;\n\n setCachedProvedTransaction({\n proofType: ProofType.CrossContractCalls,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients: [],\n nftAmountRecipients: [],\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts,\n relayAdaptEncryptERC20Recipients,\n relayAdaptEncryptNFTRecipients,\n crossContractCalls: validCrossContractCalls,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateCrossContractCallsProof.name, err);\n }\n};\n\nexport const getRelayAdaptTransactionError = (\n txidVersion: TXIDVersion,\n receiptLogs: TransactionReceiptLog[],\n // receiptLogs: TransactionReceiptLog[] | readonly Log[],\n): Optional<string> => {\n try {\n const relayAdaptError =\n RelayAdaptVersionedSmartContracts.getRelayAdaptCallError(\n txidVersion,\n receiptLogs,\n );\n if (isDefined(relayAdaptError)) {\n sendErrorMessage(relayAdaptError);\n return relayAdaptError;\n }\n return undefined;\n } catch (err) {\n throw reportAndSanitizeError(getRelayAdaptTransactionError.name, err);\n }\n};\n\nexport const parseRelayAdaptReturnValue = (\n txidVersion: TXIDVersion,\n data: string,\n): Optional<string> => {\n try {\n const relayAdaptErrorParsed =\n RelayAdaptVersionedSmartContracts.parseRelayAdaptReturnValue(\n txidVersion,\n data,\n );\n if (isDefined(relayAdaptErrorParsed)) {\n sendErrorMessage(relayAdaptErrorParsed.error);\n return relayAdaptErrorParsed.error;\n }\n return undefined;\n } catch (err) {\n throw reportAndSanitizeError(getRelayAdaptTransactionError.name, err);\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-cross-contract-calls.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-cross-contract-calls.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n ProofType,\n TransactionReceiptLog,\n FeeTokenDetails,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n DopNFTAmount,\n TransactionGasDetails,\n isDefined,\n DopERC20Recipient,\n TXIDVersion,\n NETWORK_CONFIG,\n} from 'dop-sharedmodels-v3';\nimport {\n GenerateTransactionsProgressCallback,\n generateDummyProofTransactions,\n generateProofTransactions,\n nullifiersForTransactions,\n} from './tx-generator';\nimport {\n populateProvedTransaction,\n setCachedProvedTransaction,\n} from './proof-cache';\nimport { sendErrorMessage } from '../../utils/logger';\nimport {\n RelayAdaptHelper,\n AdaptID,\n NFTTokenData,\n ByteUtils,\n ByteLength,\n MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT_V2,\n RelayAdaptEncryptNFTRecipient,\n TransactionStructV2,\n TransactionStructV3,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { gasEstimateResponseDummyProofIterativeBroadcasterFee } from './tx-gas-broadcaster-fee-estimator';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { isDecimalStr } from '../../utils';\nimport { bigIntStringToHex } from '../dop/quick-sync/shared-formatters';\n\nconst createValidCrossContractCalls = (\n crossContractCalls: ContractTransaction[],\n): ContractTransaction[] => {\n if (!crossContractCalls.length) {\n throw new Error('No cross contract calls in transaction.');\n }\n try {\n return crossContractCalls.map(transactionRequest => {\n if (!transactionRequest.to || !transactionRequest.data) {\n throw new Error(`Cross-contract calls require 'to' and 'data' fields.`);\n }\n const transaction: ContractTransaction = {\n to: transactionRequest.to,\n value: transactionRequest.value,\n data: ByteUtils.hexlify(transactionRequest.data, true),\n };\n assertNotBlockedAddress(transaction.to);\n return transaction;\n });\n } catch (cause) {\n if (!(cause instanceof Error)) {\n throw new Error('Non-error thrown from createValidCrossContractCalls', {\n cause,\n });\n }\n throw reportAndSanitizeError(createValidCrossContractCalls.name, cause);\n }\n};\n\nexport const createRelayAdaptDecryptERC20AmountRecipients = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n decryptERC20Amounts: DopERC20Amount[],\n): DopERC20AmountRecipient[] => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(txidVersion, chain);\n const decryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n decryptERC20Amounts.map(decryptERC20Amount => ({\n ...decryptERC20Amount,\n recipientAddress: relayAdaptContract.address,\n }));\n return decryptERC20AmountRecipients;\n};\n\nexport const createRelayAdaptDecryptNFTAmountRecipients = (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n decryptNFTAmounts: DopNFTAmount[],\n): DopNFTAmountRecipient[] => {\n const chain = NETWORK_CONFIG[networkName].chain;\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(txidVersion, chain);\n const decryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n decryptNFTAmounts.map(decryptNFTAmount => ({\n ...decryptNFTAmount,\n recipientAddress: relayAdaptContract.address,\n }));\n return decryptNFTAmountRecipients;\n};\n\nexport const createNFTTokenDataFromDopNFTAmount = (\n nftAmount: DopNFTAmount,\n): NFTTokenData => {\n const tokenSubIDHex = isDecimalStr(nftAmount.tokenSubID)\n ? bigIntStringToHex(nftAmount.tokenSubID)\n : nftAmount.tokenSubID;\n\n return {\n tokenAddress: ByteUtils.formatToByteLength(\n nftAmount.nftAddress,\n ByteLength.Address,\n true,\n ),\n tokenType: nftAmount.nftTokenType as 1 | 2,\n tokenSubID: ByteUtils.formatToByteLength(\n tokenSubIDHex,\n ByteLength.UINT_256,\n true,\n ),\n };\n};\n\nconst createRelayAdaptEncryptNFTRecipients = (\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n): RelayAdaptEncryptNFTRecipient[] => {\n return relayAdaptEncryptNFTRecipients.map(\n (nftRecipient: DopNFTAmountRecipient) => ({\n nftTokenData: createNFTTokenDataFromDopNFTAmount(nftRecipient),\n recipientAddress: nftRecipient.recipientAddress,\n }),\n );\n};\n\nexport const populateProvedCrossContractCalls = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n relayAdaptDecryptERC20Amounts: DopERC20Amount[],\n relayAdaptDecryptNFTAmounts: DopNFTAmount[],\n relayAdaptEncryptERC20Recipients: DopERC20Recipient[],\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n crossContractCalls: ContractTransaction[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.CrossContractCalls,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n [], // erc20AmountRecipients\n [], // nftAmountRecipients\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts,\n relayAdaptEncryptERC20Recipients,\n relayAdaptEncryptNFTRecipients,\n crossContractCalls,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n delete transaction.from;\n\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedCrossContractCalls.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenCrossContractCalls = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n relayAdaptDecryptERC20Amounts: DopERC20Amount[],\n relayAdaptDecryptNFTAmounts: DopNFTAmount[],\n relayAdaptEncryptERC20Recipients: DopERC20Recipient[],\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n crossContractCalls: ContractTransaction[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n minGasLimit: Optional<bigint>,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const overallBatchMinGasPrice = 0n;\n\n const validCrossContractCalls =\n createValidCrossContractCalls(crossContractCalls);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptERC20Amounts,\n );\n const relayAdaptDecryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n createRelayAdaptDecryptNFTAmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptNFTAmounts,\n );\n\n const encryptRandom = ByteUtils.randomHex(16);\n const relayEncryptRequests =\n await RelayAdaptHelper.generateRelayEncryptRequests(\n encryptRandom,\n relayAdaptEncryptERC20Recipients,\n createRelayAdaptEncryptNFTRecipients(relayAdaptEncryptNFTRecipients),\n );\n\n // TODO-V3: Needs modification\n const minimumGasLimit =\n minGasLimit ?? MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT_V2;\n\n const response = await gasEstimateResponseDummyProofIterativeBroadcasterFee(\n (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.CrossContractCalls,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n ),\n async (txs: (TransactionStructV2 | TransactionStructV3)[]) => {\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n\n // TODO: We should add the relay adapt contract gas limit here.\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateCrossContractCalls(\n txidVersion,\n chain,\n txs,\n validCrossContractCalls,\n relayEncryptRequests,\n relayAdaptParamsRandom,\n true, // isGasEstimate\n !sendWithPublicWallet, // isBroadcasterTransaction\n minimumGasLimit,\n );\n // Remove gasLimit, we'll set to the minimum below.\n // TODO: Remove after callbacks upgrade.\n delete transaction.gasLimit;\n return transaction;\n },\n txidVersion,\n networkName,\n dopWalletID,\n relayAdaptDecryptERC20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n true, // isCrossContractCall\n );\n\n // TODO: Remove this after callbacks upgrade.\n // If gas estimate is under the cross-contract-minimum, replace it with the minimum.\n if (response.gasEstimate) {\n if (response.gasEstimate < minimumGasLimit) {\n response.gasEstimate = minimumGasLimit;\n }\n }\n\n return response;\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenCrossContractCalls.name,\n err,\n );\n }\n};\n\nexport const generateCrossContractCallsProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n relayAdaptDecryptERC20Amounts: DopERC20Amount[],\n relayAdaptDecryptNFTAmounts: DopNFTAmount[],\n relayAdaptEncryptERC20Recipients: DopERC20Recipient[],\n relayAdaptEncryptNFTRecipients: DopNFTAmountRecipient[],\n crossContractCalls: ContractTransaction[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n minGasLimit: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const validCrossContractCalls =\n createValidCrossContractCalls(crossContractCalls);\n\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptERC20Amounts,\n );\n const relayAdaptDecryptNFTAmountRecipients: DopNFTAmountRecipient[] =\n createRelayAdaptDecryptNFTAmountRecipients(\n txidVersion,\n networkName,\n relayAdaptDecryptNFTAmounts,\n );\n\n // Generate dummy txs for relay adapt params.\n const dummyDecryptTxs = await generateDummyProofTransactions(\n ProofType.CrossContractCalls,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n );\n\n // Generate relay adapt params from dummy transactions.\n const encryptRandom = ByteUtils.randomHex(16);\n\n const relayEncryptRequests =\n await RelayAdaptHelper.generateRelayEncryptRequests(\n encryptRandom,\n relayAdaptEncryptERC20Recipients,\n createRelayAdaptEncryptNFTRecipients(relayAdaptEncryptNFTRecipients),\n );\n\n // TODO-V3: Needs modification\n const minimumGasLimit =\n minGasLimit ?? MINIMUM_RELAY_ADAPT_CROSS_CONTRACT_CALLS_GAS_LIMIT_V2;\n\n const { chain } = NETWORK_CONFIG[networkName];\n\n const isBroadcasterTransaction = !sendWithPublicWallet;\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n const relayAdaptParams =\n await RelayAdaptVersionedSmartContracts.getRelayAdaptParamsCrossContractCalls(\n txidVersion,\n chain,\n dummyDecryptTxs,\n validCrossContractCalls,\n relayEncryptRequests,\n relayAdaptParamsRandom,\n isBroadcasterTransaction,\n minimumGasLimit,\n );\n const relayAdaptContract =\n RelayAdaptVersionedSmartContracts.getRelayAdaptContract(\n txidVersion,\n chain,\n );\n const relayAdaptID: AdaptID = {\n contract: relayAdaptContract.address,\n parameters: relayAdaptParams,\n };\n\n // Create real transactions with relay adapt params.\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.CrossContractCalls,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n relayAdaptDecryptNFTAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateCrossContractCalls(\n txidVersion,\n chain,\n provedTransactions,\n validCrossContractCalls,\n relayEncryptRequests,\n relayAdaptParamsRandom,\n false, // isGasEstimate\n isBroadcasterTransaction,\n minimumGasLimit,\n );\n delete transaction.from;\n\n setCachedProvedTransaction({\n proofType: ProofType.CrossContractCalls,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient: false,\n memoText: undefined,\n erc20AmountRecipients: [],\n nftAmountRecipients: [],\n relayAdaptDecryptERC20Amounts,\n relayAdaptDecryptNFTAmounts,\n relayAdaptEncryptERC20Recipients,\n relayAdaptEncryptNFTRecipients,\n crossContractCalls: validCrossContractCalls,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateCrossContractCallsProof.name, err);\n }\n};\n\nexport const getRelayAdaptTransactionError = (\n txidVersion: TXIDVersion,\n receiptLogs: TransactionReceiptLog[],\n // receiptLogs: TransactionReceiptLog[] | readonly Log[],\n): Optional<string> => {\n try {\n const relayAdaptError =\n RelayAdaptVersionedSmartContracts.getRelayAdaptCallError(\n txidVersion,\n receiptLogs,\n );\n if (isDefined(relayAdaptError)) {\n sendErrorMessage(relayAdaptError);\n return relayAdaptError;\n }\n return undefined;\n } catch (err) {\n throw reportAndSanitizeError(getRelayAdaptTransactionError.name, err);\n }\n};\n\nexport const parseRelayAdaptReturnValue = (\n txidVersion: TXIDVersion,\n data: string,\n): Optional<string> => {\n try {\n const relayAdaptErrorParsed =\n RelayAdaptVersionedSmartContracts.parseRelayAdaptReturnValue(\n txidVersion,\n data,\n );\n if (isDefined(relayAdaptErrorParsed)) {\n sendErrorMessage(relayAdaptErrorParsed.error);\n return relayAdaptErrorParsed.error;\n }\n return undefined;\n } catch (err) {\n throw reportAndSanitizeError(getRelayAdaptTransactionError.name, err);\n }\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, FeeTokenDetails, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-
|
|
1
|
+
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, FeeTokenDetails, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
2
2
|
export declare const populateProvedDecrypt: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
|
|
3
3
|
export declare const populateProvedDecryptBaseToken: (txidVersion: TXIDVersion, networkName: NetworkName, publicWalletAddress: string, dopWalletID: string, wrappedERC20Amount: DopERC20Amount, broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
|
|
4
4
|
export declare const gasEstimateForUnprovenDecrypt: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], originalGasDetails: TransactionGasDetails, feeTokenDetails: Optional<FeeTokenDetails>, sendWithPublicWallet: boolean, value: bigint) => Promise<DopTransactionGasEstimateResponse>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.gasEstimateForUnprovenDecryptToOrigin = exports.populateProvedDecryptToOrigin = exports.getERC20AndNFTAmountRecipientsForDecryptToOrigin = exports.gasEstimateForUnprovenDecryptBaseToken = exports.gasEstimateForUnprovenDecrypt = exports.populateProvedDecryptBaseToken = exports.populateProvedDecrypt = void 0;
|
|
4
|
-
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-
|
|
4
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
5
|
const tx_generator_1 = require("./tx-generator");
|
|
6
6
|
const proof_cache_1 = require("./proof-cache");
|
|
7
|
-
const dop_engine_v3_1 = require("dop-engine-
|
|
7
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
8
8
|
const tx_gas_broadcaster_fee_estimator_1 = require("./tx-gas-broadcaster-fee-estimator");
|
|
9
9
|
const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
|
|
10
10
|
const error_1 = require("../../utils/error");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-decrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-decrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n ProofType,\n FeeTokenDetails,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TransactionGasDetails,\n TXIDVersion,\n NETWORK_CONFIG,\n} from 'dop-sharedmodels-v5';\nimport {\n DUMMY_FROM_ADDRESS,\n generateDummyProofTransactions,\n generateTransact,\n generateDecryptBaseToken,\n} from './tx-generator';\nimport { populateProvedTransaction } from './proof-cache';\nimport {\n ByteUtils,\n TransactionStructV2,\n TransactionStructV3,\n} from 'dop-engine-v5';\nimport { gasEstimateResponseDummyProofIterativeBroadcasterFee } from './tx-gas-broadcaster-fee-estimator';\nimport { createRelayAdaptDecryptERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { gasEstimateResponse, getGasEstimate } from './tx-gas-details';\nimport {\n walletForID,\n getFallbackProviderForNetwork,\n getSerializedERC20Balances,\n getSerializedNFTBalances,\n} from '../dop';\n\nexport const populateProvedDecrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.Decrypt,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // relayAdaptDecryptERC20AmountRecipients\n undefined, // relayAdaptDecryptNFTAmounts\n undefined, // relayAdaptEncryptERC20Recipients\n undefined, // relayAdaptEncryptNFTRecipients\n undefined, // crossContractCalls\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedDecrypt.name, err);\n }\n};\n\nexport const populateProvedDecryptBaseToken = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n wrappedERC20Amount: DopERC20Amount,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const erc20AmountRecipients: DopERC20AmountRecipient[] = [\n {\n ...wrappedERC20Amount,\n recipientAddress: publicWalletAddress,\n },\n ];\n const relayAdaptDecryptERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const { transaction, nullifiers, } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.DecryptBaseToken,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts,\n undefined, // relayAdaptDecryptNFTAmounts\n undefined, // relayAdaptEncryptERC20Recipients\n undefined, // relayAdaptEncryptNFTRecipients\n undefined, // crossContractCalls\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedDecryptBaseToken.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenDecrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n value: bigint,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeBroadcasterFee(\n (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n ),\n (txs: (TransactionStructV2 | TransactionStructV3)[]) =>\n generateTransact(\n txidVersion,\n txs,\n networkName,\n value,\n true, // useDummyProof\n ),\n txidVersion,\n networkName,\n dopWalletID,\n erc20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForUnprovenDecrypt.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenDecryptBaseToken = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(txidVersion, networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeBroadcasterFee(\n (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.DecryptBaseToken,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n ),\n (txs: (TransactionStructV2 | TransactionStructV3)[]) => {\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n return generateDecryptBaseToken(\n txidVersion,\n txs,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n true, // useDummyProof\n );\n },\n txidVersion,\n networkName,\n dopWalletID,\n relayAdaptDecryptERC20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenDecryptBaseToken.name,\n err,\n );\n }\n};\n\nexport const getERC20AndNFTAmountRecipientsForDecryptToOrigin = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n originalEncryptTxid: string,\n): Promise<{\n erc20AmountRecipients: DopERC20AmountRecipient[];\n nftAmountRecipients: DopNFTAmountRecipient[];\n}> => {\n const wallet = walletForID(dopWalletID);\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const balances = await wallet.getTokenBalancesForDecryptToOrigin(\n txidVersion,\n chain,\n originalEncryptTxid,\n );\n\n const provider = getFallbackProviderForNetwork(networkName);\n const transaction = await provider.getTransaction(originalEncryptTxid);\n if (!transaction) {\n throw new Error('Could not find encrypt transaction from RPC');\n }\n\n const recipientAddress = transaction.from;\n const erc20Amounts = getSerializedERC20Balances(balances);\n const nftAmounts = getSerializedNFTBalances(balances);\n const erc20AmountRecipients: DopERC20AmountRecipient[] = erc20Amounts\n .filter(({ amount }) => amount > 0n)\n .map(erc20Amount => ({\n ...erc20Amount,\n recipientAddress,\n }));\n const nftAmountRecipients: DopNFTAmountRecipient[] = nftAmounts\n .filter(({ amount }) => amount > 0n)\n .map(nftAmount => ({\n ...nftAmount,\n recipientAddress,\n }));\n return { erc20AmountRecipients, nftAmountRecipients };\n};\n\nexport const populateProvedDecryptToOrigin = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers, } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.Decrypt,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // relayAdaptDecryptERC20AmountRecipients\n undefined, // relayAdaptDecryptNFTAmounts\n undefined, // relayAdaptEncryptERC20Recipients\n undefined, // relayAdaptEncryptNFTRecipients\n undefined, // crossContractCalls\n undefined, // broadcasterFeeERC20AmountRecipient\n true, // sendWithPublicWallet\n undefined, // overallBatchMinGasPrice\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedDecryptToOrigin.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenDecryptToOrigin = async (\n originalEncryptTxid: string,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n value: bigint,\n nftAmountRecipients: DopNFTAmountRecipient[],\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n // Use dead address for private transaction gas estimate\n const fromWalletAddress = DUMMY_FROM_ADDRESS;\n\n const overallBatchMinGasPrice = 0n;\n\n const serializedTransactions = await generateDummyProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // broadcasterFeeERC20Amount\n true, // sendWithPublicWallet\n overallBatchMinGasPrice,\n originalEncryptTxid, // originEncryptTxidForSpendabilityOverride\n );\n const transaction = await generateTransact(\n txidVersion,\n serializedTransactions,\n networkName,\n value,\n true, // useDummyProof\n );\n\n const gasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n true, // sendWithPublicWallet\n false, // isCrossContractCall\n );\n\n return gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n true, // isGasEstimateWithDummyProof\n );\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenDecryptToOrigin.name,\n err,\n );\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-decrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-decrypt.ts"],"names":[],"mappings":";;;AAAA,6DAY6B;AAC7B,iDAKwB;AACxB,+CAA0D;AAC1D,iDAIuB;AACvB,yFAA0G;AAC1G,uEAAyF;AACzF,6CAA2D;AAC3D,qDAAuE;AACvE,gCAKgB;AAET,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,qBAAgD,EAChD,mBAA4C,EAC5C,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAC/B,MAAM,IAAA,uCAAyB,EAC7B,WAAW,EACX,WAAW,EACX,+BAAS,CAAC,OAAO,EACjB,WAAW,EACX,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EAAE,yCAAyC;QACpD,SAAS,EAAE,8BAA8B;QACzC,SAAS,EAAE,mCAAmC;QAC9C,SAAS,EAAE,iCAAiC;QAC5C,SAAS,EAAE,qBAAqB;QAChC,kCAAkC,EAClC,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,CACX,CAAC;QACJ,OAAO;YACL,UAAU;YACV,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AAvCW,QAAA,qBAAqB,yBAuChC;AAEK,MAAM,8BAA8B,GAAG,KAAK,EACjD,WAAwB,EACxB,WAAwB,EACxB,mBAA2B,EAC3B,WAAmB,EACnB,kBAAkC,EAClC,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,qBAAqB,GAA8B;YACvD;gBACE,GAAG,kBAAkB;gBACrB,gBAAgB,EAAE,mBAAmB;aACtC;SACF,CAAC;QACF,MAAM,6BAA6B,GAAqB;YACtD,kBAAkB;SACnB,CAAC;QAEF,wBAAwB;QACxB,MAAM,mBAAmB,GAA4B,EAAE,CAAC;QAExD,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG,GAChC,MAAM,IAAA,uCAAyB,EAC7B,WAAW,EACX,WAAW,EACX,+BAAS,CAAC,gBAAgB,EAC1B,WAAW,EACX,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,6BAA6B,EAC7B,SAAS,EAAE,8BAA8B;QACzC,SAAS,EAAE,mCAAmC;QAC9C,SAAS,EAAE,iCAAiC;QAC5C,SAAS,EAAE,qBAAqB;QAChC,kCAAkC,EAClC,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,CACX,CAAC;QACJ,OAAO;YACL,UAAU;YACV,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,sCAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACxE;AACH,CAAC,CAAC;AApDW,QAAA,8BAA8B,kCAoDzC;AAEK,MAAM,6BAA6B,GAAG,KAAK,EAChD,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,qBAAgD,EAChD,mBAA4C,EAC5C,kBAAyC,EACzC,eAA0C,EAC1C,oBAA6B,EAC7B,KAAa,EAC+B,EAAE;IAC9C,IAAI;QACF,MAAM,uBAAuB,GAAG,EAAE,CAAC;QAEnC,MAAM,QAAQ,GAAG,MAAM,IAAA,uFAAoD,EACzE,CAAC,yBAAmD,EAAE,EAAE,CACtD,IAAA,6CAA8B,EAC5B,+BAAS,CAAC,OAAO,EACjB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,CACxB,EACH,CAAC,GAAkD,EAAE,EAAE,CACrD,IAAA,+BAAgB,EACd,WAAW,EACX,GAAG,EACH,WAAW,EACX,KAAK,EACL,IAAI,CACL,EACH,WAAW,EACX,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,KAAK,CACN,CAAC;QACF,OAAO,QAAQ,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,qCAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACvE;AACH,CAAC,CAAC;AApDW,QAAA,6BAA6B,iCAoDxC;AAEK,MAAM,sCAAsC,GAAG,KAAK,EACzD,WAAwB,EACxB,WAAwB,EACxB,mBAA2B,EAC3B,WAAmB,EACnB,aAAqB,EACrB,kBAAkC,EAClC,kBAAyC,EACzC,eAA0C,EAC1C,oBAA6B,EACe,EAAE;IAC9C,IAAI;QACF,MAAM,sCAAsC,GAC1C,IAAA,sEAA4C,EAAC,WAAW,EAAE,WAAW,EAAE;YACrE,kBAAkB;SACnB,CAAC,CAAC;QAEL,wBAAwB;QACxB,MAAM,mBAAmB,GAA4B,EAAE,CAAC;QAExD,MAAM,uBAAuB,GAAG,EAAE,CAAC;QAEnC,MAAM,QAAQ,GAAG,MAAM,IAAA,uFAAoD,EACzE,CAAC,yBAAmD,EAAE,EAAE,CACtD,IAAA,6CAA8B,EAC5B,+BAAS,CAAC,gBAAgB,EAC1B,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,sCAAsC,EACtC,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,CACxB,EACH,CAAC,GAAkD,EAAE,EAAE;YACrD,MAAM,sBAAsB,GAAG,yBAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,IAAA,uCAAwB,EAC7B,WAAW,EACX,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,IAAI,CACL,CAAC;QACJ,CAAC,EACD,WAAW,EACX,WAAW,EACX,WAAW,EACX,sCAAsC,EACtC,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,KAAK,CACN,CAAC;QACF,OAAO,QAAQ,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAC1B,8CAAsC,CAAC,IAAI,EAC3C,GAAG,CACJ,CAAC;KACH;AACH,CAAC,CAAC;AAjEW,QAAA,sCAAsC,0CAiEjD;AAEK,MAAM,gDAAgD,GAAG,KAAK,EACnE,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,mBAA2B,EAI1B,EAAE;IACH,MAAM,MAAM,GAAG,IAAA,iBAAW,EAAC,WAAW,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,oCAAc,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAC9D,WAAW,EACX,KAAK,EACL,mBAAmB,CACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,mCAA6B,EAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACvE,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;KAChE;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAA,gCAA0B,EAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAA,8BAAwB,EAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,qBAAqB,GAA8B,YAAY;SAClE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;SACnC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnB,GAAG,WAAW;QACd,gBAAgB;KACjB,CAAC,CAAC,CAAC;IACN,MAAM,mBAAmB,GAA4B,UAAU;SAC5D,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC;SACnC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjB,GAAG,SAAS;QACZ,gBAAgB;KACjB,CAAC,CAAC,CAAC;IACN,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;AACxD,CAAC,CAAC;AAxCW,QAAA,gDAAgD,oDAwC3D;AAEK,MAAM,6BAA6B,GAAG,KAAK,EAChD,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,qBAAgD,EAChD,mBAA4C,EAC5C,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG,GAChC,MAAM,IAAA,uCAAyB,EAC7B,WAAW,EACX,WAAW,EACX,+BAAS,CAAC,OAAO,EACjB,WAAW,EACX,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EAAE,yCAAyC;QACpD,SAAS,EAAE,8BAA8B;QACzC,SAAS,EAAE,mCAAmC;QAC9C,SAAS,EAAE,iCAAiC;QAC5C,SAAS,EAAE,qBAAqB;QAChC,SAAS,EAAE,qCAAqC;QAChD,IAAI,EAAE,uBAAuB;QAC7B,SAAS,EAAE,0BAA0B;QACrC,UAAU,CACX,CAAC;QACJ,OAAO;YACL,UAAU;YACV,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,qCAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACvE;AACH,CAAC,CAAC;AApCW,QAAA,6BAA6B,iCAoCxC;AAEK,MAAM,qCAAqC,GAAG,KAAK,EACxD,mBAA2B,EAC3B,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,qBAAgD,EAChD,KAAa,EACb,mBAA4C,EACA,EAAE;IAC9C,IAAI;QACF,wDAAwD;QACxD,MAAM,iBAAiB,GAAG,iCAAkB,CAAC;QAE7C,MAAM,uBAAuB,GAAG,EAAE,CAAC;QAEnC,MAAM,sBAAsB,GAAG,MAAM,IAAA,6CAA8B,EACjE,+BAAS,CAAC,OAAO,EACjB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EAAE,4BAA4B;QACvC,IAAI,EAAE,uBAAuB;QAC7B,uBAAuB,EACvB,mBAAmB,CACpB,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACxC,WAAW,EACX,sBAAsB,EACtB,WAAW,EACX,KAAK,EACL,IAAI,CACL,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAc,EACtC,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,IAAI,EAAE,uBAAuB;QAC7B,KAAK,CACN,CAAC;QAEF,OAAO,IAAA,oCAAmB,EACxB,WAAW,EACX,SAAS,EAAE,2BAA2B;QACtC,IAAI,CACL,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAC1B,6CAAqC,CAAC,IAAI,EAC1C,GAAG,CACJ,CAAC;KACH;AACH,CAAC,CAAC;AA3DW,QAAA,qCAAqC,yCA2DhD","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n ProofType,\n FeeTokenDetails,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TransactionGasDetails,\n TXIDVersion,\n NETWORK_CONFIG,\n} from 'dop-sharedmodels-v3';\nimport {\n DUMMY_FROM_ADDRESS,\n generateDummyProofTransactions,\n generateTransact,\n generateDecryptBaseToken,\n} from './tx-generator';\nimport { populateProvedTransaction } from './proof-cache';\nimport {\n ByteUtils,\n TransactionStructV2,\n TransactionStructV3,\n} from 'dop-engine-v3';\nimport { gasEstimateResponseDummyProofIterativeBroadcasterFee } from './tx-gas-broadcaster-fee-estimator';\nimport { createRelayAdaptDecryptERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { gasEstimateResponse, getGasEstimate } from './tx-gas-details';\nimport {\n walletForID,\n getFallbackProviderForNetwork,\n getSerializedERC20Balances,\n getSerializedNFTBalances,\n} from '../dop';\n\nexport const populateProvedDecrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.Decrypt,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // relayAdaptDecryptERC20AmountRecipients\n undefined, // relayAdaptDecryptNFTAmounts\n undefined, // relayAdaptEncryptERC20Recipients\n undefined, // relayAdaptEncryptNFTRecipients\n undefined, // crossContractCalls\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedDecrypt.name, err);\n }\n};\n\nexport const populateProvedDecryptBaseToken = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n wrappedERC20Amount: DopERC20Amount,\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const erc20AmountRecipients: DopERC20AmountRecipient[] = [\n {\n ...wrappedERC20Amount,\n recipientAddress: publicWalletAddress,\n },\n ];\n const relayAdaptDecryptERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const { transaction, nullifiers, } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.DecryptBaseToken,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts,\n undefined, // relayAdaptDecryptNFTAmounts\n undefined, // relayAdaptEncryptERC20Recipients\n undefined, // relayAdaptEncryptNFTRecipients\n undefined, // crossContractCalls\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedDecryptBaseToken.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenDecrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n value: bigint,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeBroadcasterFee(\n (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n ),\n (txs: (TransactionStructV2 | TransactionStructV3)[]) =>\n generateTransact(\n txidVersion,\n txs,\n networkName,\n value,\n true, // useDummyProof\n ),\n txidVersion,\n networkName,\n dopWalletID,\n erc20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForUnprovenDecrypt.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenDecryptBaseToken = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const relayAdaptDecryptERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptDecryptERC20AmountRecipients(txidVersion, networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeBroadcasterFee(\n (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.DecryptBaseToken,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptDecryptERC20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n ),\n (txs: (TransactionStructV2 | TransactionStructV3)[]) => {\n const relayAdaptParamsRandom = ByteUtils.randomHex(31);\n return generateDecryptBaseToken(\n txidVersion,\n txs,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n true, // useDummyProof\n );\n },\n txidVersion,\n networkName,\n dopWalletID,\n relayAdaptDecryptERC20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenDecryptBaseToken.name,\n err,\n );\n }\n};\n\nexport const getERC20AndNFTAmountRecipientsForDecryptToOrigin = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n originalEncryptTxid: string,\n): Promise<{\n erc20AmountRecipients: DopERC20AmountRecipient[];\n nftAmountRecipients: DopNFTAmountRecipient[];\n}> => {\n const wallet = walletForID(dopWalletID);\n const chain = NETWORK_CONFIG[networkName].chain;\n\n const balances = await wallet.getTokenBalancesForDecryptToOrigin(\n txidVersion,\n chain,\n originalEncryptTxid,\n );\n\n const provider = getFallbackProviderForNetwork(networkName);\n const transaction = await provider.getTransaction(originalEncryptTxid);\n if (!transaction) {\n throw new Error('Could not find encrypt transaction from RPC');\n }\n\n const recipientAddress = transaction.from;\n const erc20Amounts = getSerializedERC20Balances(balances);\n const nftAmounts = getSerializedNFTBalances(balances);\n const erc20AmountRecipients: DopERC20AmountRecipient[] = erc20Amounts\n .filter(({ amount }) => amount > 0n)\n .map(erc20Amount => ({\n ...erc20Amount,\n recipientAddress,\n }));\n const nftAmountRecipients: DopNFTAmountRecipient[] = nftAmounts\n .filter(({ amount }) => amount > 0n)\n .map(nftAmount => ({\n ...nftAmount,\n recipientAddress,\n }));\n return { erc20AmountRecipients, nftAmountRecipients };\n};\n\nexport const populateProvedDecryptToOrigin = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers, } =\n await populateProvedTransaction(\n txidVersion,\n networkName,\n ProofType.Decrypt,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // relayAdaptDecryptERC20AmountRecipients\n undefined, // relayAdaptDecryptNFTAmounts\n undefined, // relayAdaptEncryptERC20Recipients\n undefined, // relayAdaptEncryptNFTRecipients\n undefined, // crossContractCalls\n undefined, // broadcasterFeeERC20AmountRecipient\n true, // sendWithPublicWallet\n undefined, // overallBatchMinGasPrice\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedDecryptToOrigin.name, err);\n }\n};\n\nexport const gasEstimateForUnprovenDecryptToOrigin = async (\n originalEncryptTxid: string,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n value: bigint,\n nftAmountRecipients: DopNFTAmountRecipient[],\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n // Use dead address for private transaction gas estimate\n const fromWalletAddress = DUMMY_FROM_ADDRESS;\n\n const overallBatchMinGasPrice = 0n;\n\n const serializedTransactions = await generateDummyProofTransactions(\n ProofType.Decrypt,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // broadcasterFeeERC20Amount\n true, // sendWithPublicWallet\n overallBatchMinGasPrice,\n originalEncryptTxid, // originEncryptTxidForSpendabilityOverride\n );\n const transaction = await generateTransact(\n txidVersion,\n serializedTransactions,\n networkName,\n value,\n true, // useDummyProof\n );\n\n const gasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n true, // sendWithPublicWallet\n false, // isCrossContractCall\n );\n\n return gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n true, // isGasEstimateWithDummyProof\n );\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenDecryptToOrigin.name,\n err,\n );\n }\n};\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-
|
|
1
|
+
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, DopERC20Amount, NetworkName, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
2
2
|
export declare const populateEncryptBaseToken: (txidVersion: TXIDVersion, networkName: NetworkName, dopAddress: string, encryptPrivateKey: string, wrappedERC20Amount: DopERC20Amount, fromWalletAddress: string, gasDetails?: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
|
|
3
3
|
export declare const gasEstimateForEncryptBaseToken: (txidVersion: TXIDVersion, networkName: NetworkName, dopAddress: string, encryptPrivateKey: string, wrappedERC20Amount: DopERC20Amount, fromWalletAddress: string) => Promise<DopTransactionGasEstimateResponse>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.gasEstimateForEncryptBaseToken = exports.populateEncryptBaseToken = void 0;
|
|
4
|
-
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-
|
|
4
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
5
|
const tx_gas_details_1 = require("./tx-gas-details");
|
|
6
6
|
const blocked_address_1 = require("../../utils/blocked-address");
|
|
7
|
-
const dop_engine_v3_1 = require("dop-engine-
|
|
7
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
8
8
|
const error_1 = require("../../utils/error");
|
|
9
9
|
const wallets_1 = require("../dop/wallets/wallets");
|
|
10
10
|
const generateEncryptBaseTokenTransaction = async (txidVersion, networkName, dopAddress, encryptPrivateKey, wrappedERC20Amount, fromWalletAddress) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-encrypt-base-token.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt-base-token.ts"],"names":[],"mappings":";;;AAAA,6DAQ6B;AAC7B,qDAI0B;AAC1B,iEAAsE;AACtE,iDAKuB;AACvB,6CAA2D;AAE3D,oDAA+D;AAE/D,MAAM,mCAAmC,GAAG,KAAK,EAC/C,WAAwB,EACxB,WAAwB,EACxB,UAAkB,EAClB,iBAAyB,EACzB,kBAAkC,EAClC,iBAA0B,EACI,EAAE;IAChC,IAAI;QACF,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GACzC,yBAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,yBAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEvC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC;QAEpD,MAAM,OAAO,GAAG,IAAI,gCAAgB,CAClC,eAAe,EACf,MAAM,EACN,MAAM,EACN,YAAY,CACb,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,SAAS,CAC5C,yBAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EACvC,gBAAgB,CACjB,CAAC;QAEF,MAAM,EAAE,KAAK,EAAE,GAAG,oCAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,WAAW,GACf,MAAM,iDAAiC,CAAC,wBAAwB,CAC9D,WAAW,EACX,KAAK,EACL,cAAc,EACd,iBAAiB,CAClB,CAAC;QAEJ,OAAO,WAAW,CAAC;KACpB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,mCAAmC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7E;AACH,CAAC,CAAC;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAC3C,WAAwB,EACxB,WAAwB,EACxB,UAAkB,EAClB,iBAAyB,EACzB,kBAAkC,EAClC,iBAA0B,EAC1B,UAAkC,EACO,EAAE;IAC3C,IAAI;QACF,IAAA,+BAAqB,EAAC,UAAU,CAAC,CAAC;QAElC,MAAM,WAAW,GAAG,MAAM,mCAAmC,CAC3D,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;QAEF,IAAI,UAAU,EAAE;YACd,MAAM,oBAAoB,GAAG,IAAI,CAAC;YAClC,IAAA,4CAA2B,EACzB,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,CACrB,CAAC;SACH;QAED,OAAO;YACL,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,gCAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAClE;AACH,CAAC,CAAC;AArCW,QAAA,wBAAwB,4BAqCnC;AAEK,MAAM,8BAA8B,GAAG,KAAK,EACjD,WAAwB,EACxB,WAAwB,EACxB,UAAkB,EAClB,iBAAyB,EACzB,kBAAkC,EAClC,iBAAyB,EACmB,EAAE;IAC9C,IAAI;QACF,IAAA,+BAAqB,EAAC,UAAU,CAAC,CAAC;QAClC,IAAA,yCAAuB,EAAC,iBAAiB,CAAC,CAAC;QAE3C,MAAM,WAAW,GAAG,MAAM,mCAAmC,CAC3D,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;QAEF,MAAM,oBAAoB,GAAG,IAAI,CAAC;QAClC,MAAM,2BAA2B,GAAG,KAAK,CAAC;QAC1C,OAAO,IAAA,oCAAmB,EACxB,MAAM,IAAA,+BAAc,EAClB,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,CACN,EACD,SAAS,EAAE,2BAA2B;QACtC,2BAA2B,CAC5B,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,sCAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACxE;AACH,CAAC,CAAC;AAtCW,QAAA,8BAA8B,kCAsCzC","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-
|
|
1
|
+
{"version":3,"file":"tx-encrypt-base-token.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt-base-token.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport {\n EncryptNoteERC20,\n DopEngine,\n ByteUtils,\n RelayAdaptVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { assertValidDopAddress } from '../dop/wallets/wallets';\n\nconst generateEncryptBaseTokenTransaction = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopAddress: string,\n encryptPrivateKey: string,\n wrappedERC20Amount: DopERC20Amount,\n fromWalletAddress : string\n): Promise<ContractTransaction> => {\n try {\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n const random = ByteUtils.randomHex(16);\n\n const { amount, tokenAddress } = wrappedERC20Amount;\n\n const encrypt = new EncryptNoteERC20(\n masterPublicKey,\n random,\n amount,\n tokenAddress,\n );\n\n const encryptRequest = await encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n\n const { chain } = NETWORK_CONFIG[networkName];\n const transaction =\n await RelayAdaptVersionedSmartContracts.populateEncryptBaseToken(\n txidVersion,\n chain,\n encryptRequest,\n fromWalletAddress\n );\n\n return transaction;\n } catch (err) {\n throw reportAndSanitizeError(generateEncryptBaseTokenTransaction.name, err);\n }\n};\n\nexport const populateEncryptBaseToken = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopAddress: string,\n encryptPrivateKey: string,\n wrappedERC20Amount: DopERC20Amount,\n fromWalletAddress : string,\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n assertValidDopAddress(dopAddress);\n\n const transaction = await generateEncryptBaseTokenTransaction(\n txidVersion,\n networkName,\n dopAddress,\n encryptPrivateKey,\n wrappedERC20Amount,\n fromWalletAddress\n );\n\n if (gasDetails) {\n const sendWithPublicWallet = true;\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n }\n\n return {\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateEncryptBaseToken.name, err);\n }\n};\n\nexport const gasEstimateForEncryptBaseToken = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopAddress: string,\n encryptPrivateKey: string,\n wrappedERC20Amount: DopERC20Amount,\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertValidDopAddress(dopAddress);\n assertNotBlockedAddress(fromWalletAddress);\n\n const transaction = await generateEncryptBaseTokenTransaction(\n txidVersion,\n networkName,\n dopAddress,\n encryptPrivateKey,\n wrappedERC20Amount,\n fromWalletAddress\n );\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n false, // isCrossContractCall\n ),\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForEncryptBaseToken.name, err);\n }\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-
|
|
1
|
+
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
2
2
|
import { ContractTransaction } from 'ethers';
|
|
3
3
|
export declare const getEncryptPrivateKeySignatureMessage: () => string;
|
|
4
4
|
export declare const generateEncryptTransaction: (txidVersion: TXIDVersion, networkName: NetworkName, encryptPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[]) => Promise<ContractTransaction>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.gasEstimateForEncrypt = exports.populateEncrypt = exports.generateEncryptTransaction = exports.getEncryptPrivateKeySignatureMessage = void 0;
|
|
4
|
-
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-
|
|
5
|
-
const dop_engine_v3_1 = require("dop-engine-
|
|
4
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
6
6
|
const tx_gas_details_1 = require("./tx-gas-details");
|
|
7
7
|
const blocked_address_1 = require("../../utils/blocked-address");
|
|
8
8
|
const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-encrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n NetworkName,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n NFTTokenType,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-
|
|
1
|
+
{"version":3,"file":"tx-encrypt.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n NetworkName,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n NFTTokenType,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n EncryptNote,\n DopEngine,\n EncryptRequestStruct,\n ByteUtils,\n EncryptNoteERC20,\n EncryptNoteNFT,\n ERC721_NOTE_VALUE,\n DopVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createNFTTokenDataFromDopNFTAmount } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { assertValidDopAddress } from '../dop/wallets';\n\nexport const getEncryptPrivateKeySignatureMessage = () => {\n return EncryptNote.getEncryptPrivateKeySignatureMessage();\n};\n\nconst generateERC20EncryptRequests = async (\n erc20AmountRecipient: DopERC20AmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = erc20AmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const encrypt = new EncryptNoteERC20(\n masterPublicKey,\n random,\n erc20AmountRecipient.amount,\n erc20AmountRecipient.tokenAddress,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nconst generateNFTEncryptRequests = async (\n nftAmountRecipient: DopNFTAmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = nftAmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const value =\n nftAmountRecipient.nftTokenType === NFTTokenType.ERC721\n ? ERC721_NOTE_VALUE\n : nftAmountRecipient.amount;\n\n const nftTokenData =\n createNFTTokenDataFromDopNFTAmount(nftAmountRecipient);\n\n const encrypt = new EncryptNoteNFT(\n masterPublicKey,\n random,\n value,\n nftTokenData,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nexport const generateEncryptTransaction = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n): Promise<ContractTransaction> => {\n try {\n const random = ByteUtils.randomHex(16);\n\n const encryptInputs: EncryptRequestStruct[] = await Promise.all([\n ...erc20AmountRecipients.map(erc20AmountRecipient =>\n generateERC20EncryptRequests(\n erc20AmountRecipient,\n random,\n encryptPrivateKey,\n ),\n ),\n ...nftAmountRecipients.map(nftAmountRecipient =>\n generateNFTEncryptRequests(nftAmountRecipient, random, encryptPrivateKey),\n ),\n ]);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n const transaction = await DopVersionedSmartContracts.generateEncrypt(\n txidVersion,\n chain,\n encryptInputs,\n );\n return transaction;\n } catch (err) {\n throw reportAndSanitizeError(generateEncryptTransaction.name, err);\n }\n};\n\nexport const populateEncrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const transaction = await generateEncryptTransaction(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n\n if (gasDetails) {\n const sendWithPublicWallet = true;\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n }\n\n return {\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateEncrypt.name, err);\n }\n};\n\nexport const gasEstimateForEncrypt = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertNotBlockedAddress(fromWalletAddress);\n\n const transaction = await generateEncryptTransaction(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n );\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n false, // isCrossContractCall\n ),\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForEncrypt.name, err);\n }\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TransactionStructV2, TransactionStructV3 } from 'dop-engine-
|
|
2
|
-
import { NetworkName, TransactionGasDetails, DopERC20Amount, DopTransactionGasEstimateResponse, FeeTokenDetails, DopERC20AmountRecipient, TXIDVersion } from 'dop-sharedmodels-
|
|
1
|
+
import { TransactionStructV2, TransactionStructV3 } from 'dop-engine-v3';
|
|
2
|
+
import { NetworkName, TransactionGasDetails, DopERC20Amount, DopTransactionGasEstimateResponse, FeeTokenDetails, DopERC20AmountRecipient, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
3
3
|
import { ContractTransaction } from 'ethers';
|
|
4
4
|
export declare const calculateBroadcasterFeeERC20Amount: (feeTokenDetails: FeeTokenDetails, gasDetails: TransactionGasDetails) => DopERC20Amount;
|
|
5
5
|
export declare const gasEstimateResponseDummyProofIterativeBroadcasterFee: (generateDummyTransactionStructsWithBroadcasterFee: (broadcasterFeeERC20Amount: Optional<DopERC20Amount>) => Promise<(TransactionStructV2 | TransactionStructV3)[]>, generateTransaction: (serializedTransactions: (TransactionStructV2 | TransactionStructV3)[]) => Promise<ContractTransaction>, txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, erc20AmountRecipients: DopERC20AmountRecipient[], originalGasDetails: TransactionGasDetails, feeTokenDetails: Optional<FeeTokenDetails>, sendWithPublicWallet: boolean, isCrossContractCall: boolean) => Promise<DopTransactionGasEstimateResponse>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.gasEstimateResponseDummyProofIterativeBroadcasterFee = exports.calculateBroadcasterFeeERC20Amount = void 0;
|
|
4
|
-
const dop_engine_v3_1 = require("dop-engine-
|
|
5
|
-
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-
|
|
4
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
5
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
6
6
|
const tx_generator_1 = require("./tx-generator");
|
|
7
7
|
const tx_gas_details_1 = require("./tx-gas-details");
|
|
8
8
|
const balance_update_1 = require("../dop/wallets/balance-update");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-gas-broadcaster-fee-estimator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-gas-broadcaster-fee-estimator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n TransactionStructV2,\n TransactionStructV3,\n convertTransactionStructToCommitmentSummary,\n} from 'dop-engine-v5';\nimport {\n NetworkName,\n TransactionGasDetails,\n DopERC20Amount,\n DopTransactionGasEstimateResponse,\n FeeTokenDetails,\n calculateMaximumGas,\n DopERC20AmountRecipient,\n CommitmentSummary,\n TXIDVersion,\n} from 'dop-sharedmodels-v5';\nimport {\n DUMMY_FROM_ADDRESS,\n createDummyBroadcasterFeeERC20Amount,\n} from './tx-generator';\nimport { getGasEstimate, gasEstimateResponse } from './tx-gas-details';\nimport { balanceForERC20Token } from '../dop/wallets/balance-update';\nimport { ContractTransaction } from 'ethers';\nimport { walletForID } from '../dop/wallets/wallets';\n\nconst MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION = 5;\n\nexport const calculateBroadcasterFeeERC20Amount = (\n feeTokenDetails: FeeTokenDetails,\n gasDetails: TransactionGasDetails,\n): DopERC20Amount => {\n const tokenFeePerUnitGas = BigInt(feeTokenDetails.feePerUnitGas);\n const oneUnitGas = 10n ** 18n;\n const maximumGas = calculateMaximumGas(gasDetails);\n const tokenFee = (tokenFeePerUnitGas * maximumGas) / oneUnitGas;\n return {\n tokenAddress: feeTokenDetails.tokenAddress,\n amount: tokenFee,\n };\n};\n\nconst getBroadcasterFeeCommitment = (\n transactionStructs: (TransactionStructV2 | TransactionStructV3)[],\n): CommitmentSummary => {\n const transactionIndex = 0;\n const broadcasterFeeCommitment = transactionStructs[transactionIndex];\n const broadcasterFeeCommitmentIndex = 0;\n return convertTransactionStructToCommitmentSummary(\n broadcasterFeeCommitment,\n broadcasterFeeCommitmentIndex,\n );\n};\n\nexport const gasEstimateResponseDummyProofIterativeBroadcasterFee = async (\n generateDummyTransactionStructsWithBroadcasterFee: (\n broadcasterFeeERC20Amount: Optional<DopERC20Amount>,\n ) => Promise<(TransactionStructV2 | TransactionStructV3)[]>,\n generateTransaction: (\n serializedTransactions: (TransactionStructV2 | TransactionStructV3)[],\n ) => Promise<ContractTransaction>,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n isCrossContractCall: boolean,\n): Promise<DopTransactionGasEstimateResponse> => {\n const wallet = walletForID(dopWalletID);\n\n // Use dead address for private transaction gas estimate\n const fromWalletAddress = DUMMY_FROM_ADDRESS;\n\n const isGasEstimateWithDummyProof = true;\n\n const dummyBroadcasterFee = feeTokenDetails\n ? createDummyBroadcasterFeeERC20Amount(feeTokenDetails.tokenAddress)\n : undefined;\n\n let serializedTransactions =\n await generateDummyTransactionStructsWithBroadcasterFee(\n dummyBroadcasterFee,\n );\n let transaction = await generateTransaction(serializedTransactions);\n\n let gasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (sendWithPublicWallet) {\n return gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n }\n\n if (!feeTokenDetails) {\n throw new Error(\n 'Must have Broadcaster Fee details or sendWithPublicWallet field.',\n );\n }\n\n // Find any erc20Amount in transfer that matches token of broadcaster fee, if exists.\n const broadcasterFeeMatchingSendingERC20Amount = erc20AmountRecipients.find(\n erc20AmountRecipient =>\n erc20AmountRecipient.tokenAddress.toLowerCase() ===\n feeTokenDetails.tokenAddress.toLowerCase(),\n );\n\n // Get private balance of matching token.\n const balanceForBroadcasterFeeERC20 = await balanceForERC20Token(\n txidVersion,\n wallet,\n networkName,\n feeTokenDetails.tokenAddress,\n true,\n );\n\n let broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n serializedTransactions,\n );\n\n // Iteratively calculate new broadcaster fee and estimate new gas amount.\n // This change if the number of circuits changes because of the additional Broadcaster Fees.\n for (let i = 0; i < MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION; i += 1) {\n const updatedGasDetails: TransactionGasDetails = {\n ...originalGasDetails,\n gasEstimate,\n };\n const updatedBroadcasterFee: DopERC20Amount =\n calculateBroadcasterFeeERC20Amount(feeTokenDetails, updatedGasDetails);\n\n // If Broadcaster fee causes overflow with the token balance,\n // then use the MAX amount for Broadcaster Fee, which is BALANCE - SENDING AMOUNT.\n if (\n balanceForBroadcasterFeeERC20 > 0n &&\n broadcasterFeeMatchingSendingERC20Amount &&\n // eslint-disable-next-line no-await-in-loop\n (await broadcasterFeeWillOverflowBalance(\n balanceForBroadcasterFeeERC20,\n broadcasterFeeMatchingSendingERC20Amount,\n updatedBroadcasterFee,\n ))\n ) {\n updatedBroadcasterFee.amount =\n balanceForBroadcasterFeeERC20 -\n broadcasterFeeMatchingSendingERC20Amount.amount;\n }\n\n const newSerializedTransactions =\n // eslint-disable-next-line no-await-in-loop\n await generateDummyTransactionStructsWithBroadcasterFee(\n updatedBroadcasterFee,\n );\n\n broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n newSerializedTransactions,\n );\n\n if (\n compareCircuitSizesTransactionStructs(\n newSerializedTransactions,\n serializedTransactions,\n )\n ) {\n // Same circuit sizes, no need to run further gas estimates.\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n\n serializedTransactions = newSerializedTransactions;\n\n // eslint-disable-next-line no-await-in-loop\n transaction = await generateTransaction(serializedTransactions);\n\n // eslint-disable-next-line no-await-in-loop\n const newGasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (newGasEstimate === gasEstimate) {\n return gasEstimateResponse(\n newGasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n gasEstimate = newGasEstimate;\n }\n\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n};\n\nconst compareCircuitSizesTransactionStructs = (\n serializedA: (TransactionStructV2 | TransactionStructV3)[],\n serializedB: (TransactionStructV2 | TransactionStructV3)[],\n) => {\n if (serializedA.length !== serializedB.length) {\n return false;\n }\n for (let i = 0; i < serializedA.length; i += 1) {\n if (\n serializedA[i].commitments.length !== serializedB[i].commitments.length\n ) {\n return false;\n }\n if (serializedA[i].nullifiers.length !== serializedB[i].nullifiers.length) {\n return false;\n }\n }\n return true;\n};\n\nconst broadcasterFeeWillOverflowBalance = async (\n tokenBalance: bigint,\n sendingERC20Amount: DopERC20Amount,\n broadcasterFeeERC20Amount: DopERC20Amount,\n) => {\n const sendingAmount = sendingERC20Amount.amount;\n const broadcasterFeeAmount = broadcasterFeeERC20Amount.amount;\n\n return sendingAmount + broadcasterFeeAmount > tokenBalance;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-gas-broadcaster-fee-estimator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-gas-broadcaster-fee-estimator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n TransactionStructV2,\n TransactionStructV3,\n convertTransactionStructToCommitmentSummary,\n} from 'dop-engine-v3';\nimport {\n NetworkName,\n TransactionGasDetails,\n DopERC20Amount,\n DopTransactionGasEstimateResponse,\n FeeTokenDetails,\n calculateMaximumGas,\n DopERC20AmountRecipient,\n CommitmentSummary,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n DUMMY_FROM_ADDRESS,\n createDummyBroadcasterFeeERC20Amount,\n} from './tx-generator';\nimport { getGasEstimate, gasEstimateResponse } from './tx-gas-details';\nimport { balanceForERC20Token } from '../dop/wallets/balance-update';\nimport { ContractTransaction } from 'ethers';\nimport { walletForID } from '../dop/wallets/wallets';\n\nconst MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION = 5;\n\nexport const calculateBroadcasterFeeERC20Amount = (\n feeTokenDetails: FeeTokenDetails,\n gasDetails: TransactionGasDetails,\n): DopERC20Amount => {\n const tokenFeePerUnitGas = BigInt(feeTokenDetails.feePerUnitGas);\n const oneUnitGas = 10n ** 18n;\n const maximumGas = calculateMaximumGas(gasDetails);\n const tokenFee = (tokenFeePerUnitGas * maximumGas) / oneUnitGas;\n return {\n tokenAddress: feeTokenDetails.tokenAddress,\n amount: tokenFee,\n };\n};\n\nconst getBroadcasterFeeCommitment = (\n transactionStructs: (TransactionStructV2 | TransactionStructV3)[],\n): CommitmentSummary => {\n const transactionIndex = 0;\n const broadcasterFeeCommitment = transactionStructs[transactionIndex];\n const broadcasterFeeCommitmentIndex = 0;\n return convertTransactionStructToCommitmentSummary(\n broadcasterFeeCommitment,\n broadcasterFeeCommitmentIndex,\n );\n};\n\nexport const gasEstimateResponseDummyProofIterativeBroadcasterFee = async (\n generateDummyTransactionStructsWithBroadcasterFee: (\n broadcasterFeeERC20Amount: Optional<DopERC20Amount>,\n ) => Promise<(TransactionStructV2 | TransactionStructV3)[]>,\n generateTransaction: (\n serializedTransactions: (TransactionStructV2 | TransactionStructV3)[],\n ) => Promise<ContractTransaction>,\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n isCrossContractCall: boolean,\n): Promise<DopTransactionGasEstimateResponse> => {\n const wallet = walletForID(dopWalletID);\n\n // Use dead address for private transaction gas estimate\n const fromWalletAddress = DUMMY_FROM_ADDRESS;\n\n const isGasEstimateWithDummyProof = true;\n\n const dummyBroadcasterFee = feeTokenDetails\n ? createDummyBroadcasterFeeERC20Amount(feeTokenDetails.tokenAddress)\n : undefined;\n\n let serializedTransactions =\n await generateDummyTransactionStructsWithBroadcasterFee(\n dummyBroadcasterFee,\n );\n let transaction = await generateTransaction(serializedTransactions);\n\n let gasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (sendWithPublicWallet) {\n return gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n }\n\n if (!feeTokenDetails) {\n throw new Error(\n 'Must have Broadcaster Fee details or sendWithPublicWallet field.',\n );\n }\n\n // Find any erc20Amount in transfer that matches token of broadcaster fee, if exists.\n const broadcasterFeeMatchingSendingERC20Amount = erc20AmountRecipients.find(\n erc20AmountRecipient =>\n erc20AmountRecipient.tokenAddress.toLowerCase() ===\n feeTokenDetails.tokenAddress.toLowerCase(),\n );\n\n // Get private balance of matching token.\n const balanceForBroadcasterFeeERC20 = await balanceForERC20Token(\n txidVersion,\n wallet,\n networkName,\n feeTokenDetails.tokenAddress,\n true,\n );\n\n let broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n serializedTransactions,\n );\n\n // Iteratively calculate new broadcaster fee and estimate new gas amount.\n // This change if the number of circuits changes because of the additional Broadcaster Fees.\n for (let i = 0; i < MAX_ITERATIONS_BROADCASTER_FEE_REESTIMATION; i += 1) {\n const updatedGasDetails: TransactionGasDetails = {\n ...originalGasDetails,\n gasEstimate,\n };\n const updatedBroadcasterFee: DopERC20Amount =\n calculateBroadcasterFeeERC20Amount(feeTokenDetails, updatedGasDetails);\n\n // If Broadcaster fee causes overflow with the token balance,\n // then use the MAX amount for Broadcaster Fee, which is BALANCE - SENDING AMOUNT.\n if (\n balanceForBroadcasterFeeERC20 > 0n &&\n broadcasterFeeMatchingSendingERC20Amount &&\n // eslint-disable-next-line no-await-in-loop\n (await broadcasterFeeWillOverflowBalance(\n balanceForBroadcasterFeeERC20,\n broadcasterFeeMatchingSendingERC20Amount,\n updatedBroadcasterFee,\n ))\n ) {\n updatedBroadcasterFee.amount =\n balanceForBroadcasterFeeERC20 -\n broadcasterFeeMatchingSendingERC20Amount.amount;\n }\n\n const newSerializedTransactions =\n // eslint-disable-next-line no-await-in-loop\n await generateDummyTransactionStructsWithBroadcasterFee(\n updatedBroadcasterFee,\n );\n\n broadcasterFeeCommitment = getBroadcasterFeeCommitment(\n newSerializedTransactions,\n );\n\n if (\n compareCircuitSizesTransactionStructs(\n newSerializedTransactions,\n serializedTransactions,\n )\n ) {\n // Same circuit sizes, no need to run further gas estimates.\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n\n serializedTransactions = newSerializedTransactions;\n\n // eslint-disable-next-line no-await-in-loop\n transaction = await generateTransaction(serializedTransactions);\n\n // eslint-disable-next-line no-await-in-loop\n const newGasEstimate = await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n isCrossContractCall,\n );\n\n if (newGasEstimate === gasEstimate) {\n return gasEstimateResponse(\n newGasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n }\n gasEstimate = newGasEstimate;\n }\n\n return gasEstimateResponse(\n gasEstimate,\n broadcasterFeeCommitment,\n isGasEstimateWithDummyProof,\n );\n};\n\nconst compareCircuitSizesTransactionStructs = (\n serializedA: (TransactionStructV2 | TransactionStructV3)[],\n serializedB: (TransactionStructV2 | TransactionStructV3)[],\n) => {\n if (serializedA.length !== serializedB.length) {\n return false;\n }\n for (let i = 0; i < serializedA.length; i += 1) {\n if (\n serializedA[i].commitments.length !== serializedB[i].commitments.length\n ) {\n return false;\n }\n if (serializedA[i].nullifiers.length !== serializedB[i].nullifiers.length) {\n return false;\n }\n }\n return true;\n};\n\nconst broadcasterFeeWillOverflowBalance = async (\n tokenBalance: bigint,\n sendingERC20Amount: DopERC20Amount,\n broadcasterFeeERC20Amount: DopERC20Amount,\n) => {\n const sendingAmount = sendingERC20Amount.amount;\n const broadcasterFeeAmount = broadcasterFeeERC20Amount.amount;\n\n return sendingAmount + broadcasterFeeAmount > tokenBalance;\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DopTransactionGasEstimateResponse, NetworkName, CommitmentSummary, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-
|
|
1
|
+
import { DopTransactionGasEstimateResponse, NetworkName, CommitmentSummary, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
2
2
|
import { ContractTransaction } from 'ethers';
|
|
3
3
|
export declare const getGasEstimate: (txidVersion: TXIDVersion, networkName: NetworkName, transaction: ContractTransaction, fromWalletAddress: string, sendWithPublicWallet: boolean, isCrossContractCall: boolean) => Promise<bigint>;
|
|
4
4
|
export declare const gasEstimateResponse: (gasEstimate: bigint, broadcasterFeeCommitment: Optional<CommitmentSummary>, isGasEstimateWithDummyProof: boolean) => DopTransactionGasEstimateResponse;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setGasDetailsForTransaction = exports.gasEstimateResponse = exports.getGasEstimate = void 0;
|
|
4
|
-
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-
|
|
4
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
5
|
const dop_1 = require("../dop");
|
|
6
6
|
const error_1 = require("../../utils/error");
|
|
7
|
-
const dop_engine_v3_1 = require("dop-engine-
|
|
7
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
8
8
|
const getGasEstimate = async (txidVersion, networkName, transaction, fromWalletAddress, sendWithPublicWallet, isCrossContractCall) => {
|
|
9
9
|
const evmGasType = (0, dop_sharedmodels_v3_1.getEVMGasTypeForTransaction)(networkName, sendWithPublicWallet);
|
|
10
10
|
// Add 'from' field, which is required, as a mock address.
|