@symmio/trading-core 3.0.0 → 3.1.0
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/core/chains/types.d.ts +197 -0
- package/dist/core/chains/types.d.ts.map +1 -1
- package/dist/core/chains/types.js.map +1 -1
- package/dist/core/config/merge-chain-config.d.ts.map +1 -1
- package/dist/core/config/merge-chain-config.js +49 -19
- package/dist/core/config/merge-chain-config.js.map +1 -1
- package/dist/gasless/abortable-sleep.d.ts +17 -0
- package/dist/gasless/abortable-sleep.d.ts.map +1 -0
- package/dist/gasless/abortable-sleep.js +21 -0
- package/dist/gasless/abortable-sleep.js.map +1 -0
- package/dist/gasless/assert-gateway-coherence.d.ts +20 -0
- package/dist/gasless/assert-gateway-coherence.d.ts.map +1 -0
- package/dist/gasless/assert-gateway-coherence.js +26 -0
- package/dist/gasless/assert-gateway-coherence.js.map +1 -0
- package/dist/gasless/batch/calls.d.ts +121 -0
- package/dist/gasless/batch/calls.d.ts.map +1 -0
- package/dist/gasless/batch/calls.js +36 -0
- package/dist/gasless/batch/calls.js.map +1 -0
- package/dist/gasless/batch/index.d.ts +2 -0
- package/dist/gasless/batch/index.d.ts.map +1 -0
- package/dist/gasless/batch/resolve-gasless-batch.d.ts +118 -0
- package/dist/gasless/batch/resolve-gasless-batch.d.ts.map +1 -0
- package/dist/gasless/batch/resolve-gasless-batch.js +89 -0
- package/dist/gasless/batch/resolve-gasless-batch.js.map +1 -0
- package/dist/gasless/classify-gasless-failure.d.ts +99 -0
- package/dist/gasless/classify-gasless-failure.d.ts.map +1 -0
- package/dist/gasless/classify-gasless-failure.js +60 -0
- package/dist/gasless/classify-gasless-failure.js.map +1 -0
- package/dist/gasless/confirm-gasless-request/confirm-gasless-request.d.ts +121 -0
- package/dist/gasless/confirm-gasless-request/confirm-gasless-request.d.ts.map +1 -0
- package/dist/gasless/confirm-gasless-request/confirm-gasless-request.js +73 -0
- package/dist/gasless/confirm-gasless-request/confirm-gasless-request.js.map +1 -0
- package/dist/gasless/confirm-gasless-request/index.d.ts +2 -0
- package/dist/gasless/confirm-gasless-request/index.d.ts.map +1 -0
- package/dist/gasless/constants.d.ts +24 -0
- package/dist/gasless/constants.d.ts.map +1 -0
- package/dist/gasless/constants.js +6 -0
- package/dist/gasless/constants.js.map +1 -0
- package/dist/gasless/delegation-preflight.d.ts +39 -0
- package/dist/gasless/delegation-preflight.d.ts.map +1 -0
- package/dist/gasless/delegation-preflight.js +33 -0
- package/dist/gasless/delegation-preflight.js.map +1 -0
- package/dist/gasless/dispatch/maybe-relay-as-gasless.d.ts +73 -0
- package/dist/gasless/dispatch/maybe-relay-as-gasless.d.ts.map +1 -0
- package/dist/gasless/dispatch/maybe-relay-as-gasless.js +189 -0
- package/dist/gasless/dispatch/maybe-relay-as-gasless.js.map +1 -0
- package/dist/gasless/eip712.d.ts +79 -0
- package/dist/gasless/eip712.d.ts.map +1 -0
- package/dist/gasless/eip712.js +60 -0
- package/dist/gasless/eip712.js.map +1 -0
- package/dist/gasless/errors.d.ts +132 -0
- package/dist/gasless/errors.d.ts.map +1 -0
- package/dist/gasless/errors.js +110 -0
- package/dist/gasless/errors.js.map +1 -0
- package/dist/gasless/events.d.ts +37 -0
- package/dist/gasless/events.d.ts.map +1 -0
- package/dist/gasless/events.js +34 -0
- package/dist/gasless/events.js.map +1 -0
- package/dist/gasless/fallback.d.ts +58 -0
- package/dist/gasless/fallback.d.ts.map +1 -0
- package/dist/gasless/fallback.js +34 -0
- package/dist/gasless/fallback.js.map +1 -0
- package/dist/gasless/format-gasless-operation.d.ts +37 -0
- package/dist/gasless/format-gasless-operation.d.ts.map +1 -0
- package/dist/gasless/format-gasless-operation.js +33 -0
- package/dist/gasless/format-gasless-operation.js.map +1 -0
- package/dist/gasless/gasless-url.d.ts +82 -0
- package/dist/gasless/gasless-url.d.ts.map +1 -0
- package/dist/gasless/gasless-url.js +70 -0
- package/dist/gasless/gasless-url.js.map +1 -0
- package/dist/gasless/gasless-wallet-execute/calls.d.ts +73 -0
- package/dist/gasless/gasless-wallet-execute/calls.d.ts.map +1 -0
- package/dist/gasless/gasless-wallet-execute/calls.js +24 -0
- package/dist/gasless/gasless-wallet-execute/calls.js.map +1 -0
- package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.d.ts +148 -0
- package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.d.ts.map +1 -0
- package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.js +120 -0
- package/dist/gasless/gasless-wallet-execute/gasless-wallet-execute.js.map +1 -0
- package/dist/gasless/gasless-wallet-execute/index.d.ts +5 -0
- package/dist/gasless/gasless-wallet-execute/index.d.ts.map +1 -0
- package/dist/gasless/gasless-wallet-execute/query.d.ts +18 -0
- package/dist/gasless/gasless-wallet-execute/query.d.ts.map +1 -0
- package/dist/gasless/gasless-wallet-execute/query.js +12 -0
- package/dist/gasless/gasless-wallet-execute/query.js.map +1 -0
- package/dist/gasless/gasless-wallet-execute/selectors.d.ts +38 -0
- package/dist/gasless/gasless-wallet-execute/selectors.d.ts.map +1 -0
- package/dist/gasless/gasless-wallet-execute/selectors.js +15 -0
- package/dist/gasless/gasless-wallet-execute/selectors.js.map +1 -0
- package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.d.ts +72 -0
- package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.d.ts.map +1 -0
- package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.js +42 -0
- package/dist/gasless/get-gasless-batch-fee-quote/get-gasless-batch-fee-quote.js.map +1 -0
- package/dist/gasless/get-gasless-batch-fee-quote/index.d.ts +3 -0
- package/dist/gasless/get-gasless-batch-fee-quote/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-batch-fee-quote/query.d.ts +47 -0
- package/dist/gasless/get-gasless-batch-fee-quote/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-batch-fee-quote/query.js +50 -0
- package/dist/gasless/get-gasless-batch-fee-quote/query.js.map +1 -0
- package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.d.ts +80 -0
- package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.d.ts.map +1 -0
- package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.js +61 -0
- package/dist/gasless/get-gasless-deposit-policy/get-gasless-deposit-policy.js.map +1 -0
- package/dist/gasless/get-gasless-deposit-policy/index.d.ts +3 -0
- package/dist/gasless/get-gasless-deposit-policy/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-deposit-policy/query.d.ts +51 -0
- package/dist/gasless/get-gasless-deposit-policy/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-deposit-policy/query.js +25 -0
- package/dist/gasless/get-gasless-deposit-policy/query.js.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.d.ts +27 -0
- package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.d.ts.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.js +22 -0
- package/dist/gasless/get-gasless-fee-quote/encode-relay-batch-call-data.js.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.d.ts +61 -0
- package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.d.ts.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.js +59 -0
- package/dist/gasless/get-gasless-fee-quote/fee-quote-errors.js.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.d.ts +79 -0
- package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.d.ts.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.js +53 -0
- package/dist/gasless/get-gasless-fee-quote/get-gasless-fee-quote.js.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/index.d.ts +4 -0
- package/dist/gasless/get-gasless-fee-quote/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/query.d.ts +41 -0
- package/dist/gasless/get-gasless-fee-quote/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-fee-quote/query.js +31 -0
- package/dist/gasless/get-gasless-fee-quote/query.js.map +1 -0
- package/dist/gasless/get-gasless-request/get-gasless-request.d.ts +51 -0
- package/dist/gasless/get-gasless-request/get-gasless-request.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request/get-gasless-request.js +15 -0
- package/dist/gasless/get-gasless-request/get-gasless-request.js.map +1 -0
- package/dist/gasless/get-gasless-request/index.d.ts +4 -0
- package/dist/gasless/get-gasless-request/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request/query.d.ts +64 -0
- package/dist/gasless/get-gasless-request/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request/query.js +42 -0
- package/dist/gasless/get-gasless-request/query.js.map +1 -0
- package/dist/gasless/get-gasless-request/to-gasless-request.d.ts +26 -0
- package/dist/gasless/get-gasless-request/to-gasless-request.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request/to-gasless-request.js +62 -0
- package/dist/gasless/get-gasless-request/to-gasless-request.js.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.d.ts +40 -0
- package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.js +15 -0
- package/dist/gasless/get-gasless-request-transactions/get-gasless-request-transactions.js.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/index.d.ts +4 -0
- package/dist/gasless/get-gasless-request-transactions/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/query.d.ts +75 -0
- package/dist/gasless/get-gasless-request-transactions/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/query.js +37 -0
- package/dist/gasless/get-gasless-request-transactions/query.js.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.d.ts +21 -0
- package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.d.ts.map +1 -0
- package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.js +27 -0
- package/dist/gasless/get-gasless-request-transactions/to-gasless-request-transaction.js.map +1 -0
- package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.d.ts +48 -0
- package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.js +20 -0
- package/dist/gasless/get-gasless-wallet-address/get-gasless-wallet-address.js.map +1 -0
- package/dist/gasless/get-gasless-wallet-address/index.d.ts +3 -0
- package/dist/gasless/get-gasless-wallet-address/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-address/query.d.ts +46 -0
- package/dist/gasless/get-gasless-wallet-address/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-address/query.js +25 -0
- package/dist/gasless/get-gasless-wallet-address/query.js.map +1 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.d.ts +57 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.js +17 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/get-gasless-wallet-creation-fee.js.map +1 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/index.d.ts +3 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/query.d.ts +51 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/query.js +25 -0
- package/dist/gasless/get-gasless-wallet-creation-fee/query.js.map +1 -0
- package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.d.ts +51 -0
- package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.js +21 -0
- package/dist/gasless/get-gasless-wallet-nonce/get-gasless-wallet-nonce.js.map +1 -0
- package/dist/gasless/get-gasless-wallet-nonce/index.d.ts +3 -0
- package/dist/gasless/get-gasless-wallet-nonce/index.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-nonce/query.d.ts +47 -0
- package/dist/gasless/get-gasless-wallet-nonce/query.d.ts.map +1 -0
- package/dist/gasless/get-gasless-wallet-nonce/query.js +25 -0
- package/dist/gasless/get-gasless-wallet-nonce/query.js.map +1 -0
- package/dist/gasless/get-session-key-selectors.d.ts +83 -0
- package/dist/gasless/get-session-key-selectors.d.ts.map +1 -0
- package/dist/gasless/get-session-key-selectors.js +25 -0
- package/dist/gasless/get-session-key-selectors.js.map +1 -0
- package/dist/gasless/http.d.ts +229 -0
- package/dist/gasless/http.d.ts.map +1 -0
- package/dist/gasless/http.js +165 -0
- package/dist/gasless/http.js.map +1 -0
- package/dist/gasless/index.d.ts +34 -0
- package/dist/gasless/index.d.ts.map +1 -0
- package/dist/gasless/is-newer-gasless-request.d.ts +32 -0
- package/dist/gasless/is-newer-gasless-request.d.ts.map +1 -0
- package/dist/gasless/is-newer-gasless-request.js +21 -0
- package/dist/gasless/is-newer-gasless-request.js.map +1 -0
- package/dist/gasless/nonce-lock.d.ts +180 -0
- package/dist/gasless/nonce-lock.d.ts.map +1 -0
- package/dist/gasless/nonce-lock.js +102 -0
- package/dist/gasless/nonce-lock.js.map +1 -0
- package/dist/gasless/observe-gasless-request.d.ts +65 -0
- package/dist/gasless/observe-gasless-request.d.ts.map +1 -0
- package/dist/gasless/observe-gasless-request.js +56 -0
- package/dist/gasless/observe-gasless-request.js.map +1 -0
- package/dist/gasless/query-poll-delay.d.ts +39 -0
- package/dist/gasless/query-poll-delay.d.ts.map +1 -0
- package/dist/gasless/query-poll-delay.js +14 -0
- package/dist/gasless/query-poll-delay.js.map +1 -0
- package/dist/gasless/relay-gasless-batch/index.d.ts +3 -0
- package/dist/gasless/relay-gasless-batch/index.d.ts.map +1 -0
- package/dist/gasless/relay-gasless-batch/query.d.ts +18 -0
- package/dist/gasless/relay-gasless-batch/query.d.ts.map +1 -0
- package/dist/gasless/relay-gasless-batch/query.js +12 -0
- package/dist/gasless/relay-gasless-batch/query.js.map +1 -0
- package/dist/gasless/relay-gasless-batch/relay-gasless-batch.d.ts +106 -0
- package/dist/gasless/relay-gasless-batch/relay-gasless-batch.d.ts.map +1 -0
- package/dist/gasless/relay-gasless-batch/relay-gasless-batch.js +145 -0
- package/dist/gasless/relay-gasless-batch/relay-gasless-batch.js.map +1 -0
- package/dist/gasless/relay-gasless-batch/sign-gasless-batch.d.ts +36 -0
- package/dist/gasless/relay-gasless-batch/sign-gasless-batch.d.ts.map +1 -0
- package/dist/gasless/relay-gasless-batch/sign-gasless-batch.js +24 -0
- package/dist/gasless/relay-gasless-batch/sign-gasless-batch.js.map +1 -0
- package/dist/gasless/relay-grant-delegation/index.d.ts +3 -0
- package/dist/gasless/relay-grant-delegation/index.d.ts.map +1 -0
- package/dist/gasless/relay-grant-delegation/query.d.ts +18 -0
- package/dist/gasless/relay-grant-delegation/query.d.ts.map +1 -0
- package/dist/gasless/relay-grant-delegation/query.js +12 -0
- package/dist/gasless/relay-grant-delegation/query.js.map +1 -0
- package/dist/gasless/relay-grant-delegation/relay-grant-delegation.d.ts +69 -0
- package/dist/gasless/relay-grant-delegation/relay-grant-delegation.d.ts.map +1 -0
- package/dist/gasless/relay-grant-delegation/relay-grant-delegation.js +57 -0
- package/dist/gasless/relay-grant-delegation/relay-grant-delegation.js.map +1 -0
- package/dist/gasless/relay-instant-operations/index.d.ts +3 -0
- package/dist/gasless/relay-instant-operations/index.d.ts.map +1 -0
- package/dist/gasless/relay-instant-operations/query.d.ts +18 -0
- package/dist/gasless/relay-instant-operations/query.d.ts.map +1 -0
- package/dist/gasless/relay-instant-operations/query.js +12 -0
- package/dist/gasless/relay-instant-operations/query.js.map +1 -0
- package/dist/gasless/relay-instant-operations/relay-instant-operations.d.ts +127 -0
- package/dist/gasless/relay-instant-operations/relay-instant-operations.d.ts.map +1 -0
- package/dist/gasless/relay-instant-operations/relay-instant-operations.js +42 -0
- package/dist/gasless/relay-instant-operations/relay-instant-operations.js.map +1 -0
- package/dist/gasless/relayable-writes.d.ts +163 -0
- package/dist/gasless/relayable-writes.d.ts.map +1 -0
- package/dist/gasless/relayable-writes.js +113 -0
- package/dist/gasless/relayable-writes.js.map +1 -0
- package/dist/gasless/resolve-gasless.d.ts +52 -0
- package/dist/gasless/resolve-gasless.d.ts.map +1 -0
- package/dist/gasless/resolve-gasless.js +19 -0
- package/dist/gasless/resolve-gasless.js.map +1 -0
- package/dist/gasless/resolve-wallet-identities.d.ts +30 -0
- package/dist/gasless/resolve-wallet-identities.d.ts.map +1 -0
- package/dist/gasless/resolve-wallet-identities.js +21 -0
- package/dist/gasless/resolve-wallet-identities.js.map +1 -0
- package/dist/gasless/resubmit-gasless-request/index.d.ts +3 -0
- package/dist/gasless/resubmit-gasless-request/index.d.ts.map +1 -0
- package/dist/gasless/resubmit-gasless-request/query.d.ts +19 -0
- package/dist/gasless/resubmit-gasless-request/query.d.ts.map +1 -0
- package/dist/gasless/resubmit-gasless-request/query.js +12 -0
- package/dist/gasless/resubmit-gasless-request/query.js.map +1 -0
- package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.d.ts +50 -0
- package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.d.ts.map +1 -0
- package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.js +52 -0
- package/dist/gasless/resubmit-gasless-request/resubmit-gasless-request.js.map +1 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/index.d.ts +3 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/index.d.ts.map +1 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/query.d.ts +18 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/query.d.ts.map +1 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/query.js +12 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/query.js.map +1 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.d.ts +66 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.d.ts.map +1 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.js +36 -0
- package/dist/gasless/settle-gasless-deposit-existing-account/settle-gasless-deposit-existing-account.js.map +1 -0
- package/dist/gasless/settle-gasless-deposit-new-account/index.d.ts +3 -0
- package/dist/gasless/settle-gasless-deposit-new-account/index.d.ts.map +1 -0
- package/dist/gasless/settle-gasless-deposit-new-account/query.d.ts +18 -0
- package/dist/gasless/settle-gasless-deposit-new-account/query.d.ts.map +1 -0
- package/dist/gasless/settle-gasless-deposit-new-account/query.js +12 -0
- package/dist/gasless/settle-gasless-deposit-new-account/query.js.map +1 -0
- package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.d.ts +106 -0
- package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.d.ts.map +1 -0
- package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.js +43 -0
- package/dist/gasless/settle-gasless-deposit-new-account/settle-gasless-deposit-new-account.js.map +1 -0
- package/dist/gasless/status-read-limiter.d.ts +44 -0
- package/dist/gasless/status-read-limiter.d.ts.map +1 -0
- package/dist/gasless/status-read-limiter.js +28 -0
- package/dist/gasless/status-read-limiter.js.map +1 -0
- package/dist/gasless/to-gasless-deposit-receipt.d.ts +61 -0
- package/dist/gasless/to-gasless-deposit-receipt.d.ts.map +1 -0
- package/dist/gasless/to-gasless-deposit-receipt.js +36 -0
- package/dist/gasless/to-gasless-deposit-receipt.js.map +1 -0
- package/dist/gasless/to-gasless-submit-receipt.d.ts +60 -0
- package/dist/gasless/to-gasless-submit-receipt.d.ts.map +1 -0
- package/dist/gasless/to-gasless-submit-receipt.js +26 -0
- package/dist/gasless/to-gasless-submit-receipt.js.map +1 -0
- package/dist/gasless/transient-read.d.ts +32 -0
- package/dist/gasless/transient-read.d.ts.map +1 -0
- package/dist/gasless/transient-read.js +28 -0
- package/dist/gasless/transient-read.js.map +1 -0
- package/dist/gasless/types/generated/gasless-deposits.d.ts +170 -0
- package/dist/gasless/types/generated/gasless-deposits.d.ts.map +1 -0
- package/dist/gasless/types/generated/gasless-operations.d.ts +260 -0
- package/dist/gasless/types/generated/gasless-operations.d.ts.map +1 -0
- package/dist/gasless/types.d.ts +493 -0
- package/dist/gasless/types.d.ts.map +1 -0
- package/dist/gasless/types.js +33 -0
- package/dist/gasless/types.js.map +1 -0
- package/dist/gasless/unconfirmed-submit.d.ts +132 -0
- package/dist/gasless/unconfirmed-submit.d.ts.map +1 -0
- package/dist/gasless/unconfirmed-submit.js +49 -0
- package/dist/gasless/unconfirmed-submit.js.map +1 -0
- package/dist/gasless/wait-for-gasless-request/index.d.ts +2 -0
- package/dist/gasless/wait-for-gasless-request/index.d.ts.map +1 -0
- package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.d.ts +114 -0
- package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.d.ts.map +1 -0
- package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.js +77 -0
- package/dist/gasless/wait-for-gasless-request/wait-for-gasless-request.js.map +1 -0
- package/dist/gasless/wallet-id.d.ts +42 -0
- package/dist/gasless/wallet-id.d.ts.map +1 -0
- package/dist/gasless/wallet-id.js +25 -0
- package/dist/gasless/wallet-id.js.map +1 -0
- package/dist/gasless/wire-parse.d.ts +33 -0
- package/dist/gasless/wire-parse.d.ts.map +1 -0
- package/dist/gasless/wire-parse.js +14 -0
- package/dist/gasless/wire-parse.js.map +1 -0
- package/dist/gasless/wire-types.d.ts +73 -0
- package/dist/gasless/wire-types.d.ts.map +1 -0
- package/dist/gasless/write-request-registry.d.ts +56 -0
- package/dist/gasless/write-request-registry.d.ts.map +1 -0
- package/dist/gasless/write-request-registry.js +22 -0
- package/dist/gasless/write-request-registry.js.map +1 -0
- package/dist/index.d.ts +82 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +568 -497
- package/dist/pools/listing-config/to-listing-config.js +2 -2
- package/dist/pools/listing-config/to-listing-config.js.map +1 -1
- package/dist/pools/market-detail/to-listing-market-detail.d.ts.map +1 -1
- package/dist/pools/market-detail/to-listing-market-detail.js +46 -40
- package/dist/pools/market-detail/to-listing-market-detail.js.map +1 -1
- package/dist/pools/markets/to-listing-market.d.ts.map +1 -1
- package/dist/pools/markets/to-listing-market.js +2 -1
- package/dist/pools/markets/to-listing-market.js.map +1 -1
- package/dist/pools/types/generated/listing-backend.d.ts +163 -16
- package/dist/pools/types/generated/listing-backend.d.ts.map +1 -1
- package/dist/pools/types/generated/listing-backend.js.map +1 -1
- package/dist/pools/types.d.ts +52 -2
- package/dist/pools/types.d.ts.map +1 -1
- package/dist/pools/types.js +6 -4
- package/dist/pools/types.js.map +1 -1
- package/dist/quotes/get-quote-funding/get-quote-funding.d.ts +3 -2
- package/dist/quotes/get-quote-funding/get-quote-funding.d.ts.map +1 -1
- package/dist/quotes/get-quote-funding/get-quote-funding.js.map +1 -1
- package/dist/quotes/get-quote-funding/types.d.ts +4 -2
- package/dist/quotes/get-quote-funding/types.d.ts.map +1 -1
- package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.d.ts +68 -0
- package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.d.ts.map +1 -0
- package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.js +34 -0
- package/dist/quotes/get-quote-pending-funding/get-quote-pending-funding.js.map +1 -0
- package/dist/quotes/get-quote-pending-funding/index.d.ts +4 -0
- package/dist/quotes/get-quote-pending-funding/index.d.ts.map +1 -0
- package/dist/quotes/get-quote-pending-funding/query.d.ts +58 -0
- package/dist/quotes/get-quote-pending-funding/query.d.ts.map +1 -0
- package/dist/quotes/get-quote-pending-funding/query.js +27 -0
- package/dist/quotes/get-quote-pending-funding/query.js.map +1 -0
- package/dist/quotes/get-quote-pending-funding/types.d.ts +19 -0
- package/dist/quotes/get-quote-pending-funding/types.d.ts.map +1 -0
- package/dist/quotes/get-quotes-events-by-type/get-quotes-events-by-type.d.ts +2 -1
- package/dist/quotes/get-quotes-events-by-type/get-quotes-events-by-type.d.ts.map +1 -1
- package/dist/quotes/get-quotes-events-by-type/get-quotes-events-by-type.js.map +1 -1
- package/dist/quotes/grouping/aggregate-group-funding.d.ts +9 -8
- package/dist/quotes/grouping/aggregate-group-funding.d.ts.map +1 -1
- package/dist/quotes/grouping/aggregate-group-funding.js.map +1 -1
- package/dist/quotes/grouping/partition-quotes.d.ts +30 -0
- package/dist/quotes/grouping/partition-quotes.d.ts.map +1 -1
- package/dist/quotes/grouping/partition-quotes.js +9 -6
- package/dist/quotes/grouping/partition-quotes.js.map +1 -1
- package/dist/quotes/index.d.ts +1 -0
- package/dist/quotes/index.d.ts.map +1 -1
- package/dist/quotes/unified-quote.d.ts +6 -6
- package/dist/quotes/unified-quote.js.map +1 -1
- package/dist/shared/errors/redact-url.d.ts +15 -0
- package/dist/shared/errors/redact-url.d.ts.map +1 -0
- package/dist/shared/errors/redact-url.js +9 -0
- package/dist/shared/errors/redact-url.js.map +1 -0
- package/dist/shared/errors/retry-after.d.ts +17 -0
- package/dist/shared/errors/retry-after.d.ts.map +1 -0
- package/dist/shared/errors/retry-after.js +16 -0
- package/dist/shared/errors/retry-after.js.map +1 -0
- package/dist/shared/errors/sanitized-api-error.d.ts +32 -0
- package/dist/shared/errors/sanitized-api-error.d.ts.map +1 -0
- package/dist/shared/errors/sanitized-api-error.js +41 -0
- package/dist/shared/errors/sanitized-api-error.js.map +1 -0
- package/dist/shared/errors/symm-error.d.ts +39 -4
- package/dist/shared/errors/symm-error.d.ts.map +1 -1
- package/dist/shared/errors/symm-error.js +29 -15
- package/dist/shared/errors/symm-error.js.map +1 -1
- package/dist/shared/types/properties.d.ts +53 -5
- package/dist/shared/types/properties.d.ts.map +1 -1
- package/dist/shared/utils/core-units.d.ts +82 -0
- package/dist/shared/utils/core-units.d.ts.map +1 -0
- package/dist/shared/utils/core-units.js +21 -0
- package/dist/shared/utils/core-units.js.map +1 -0
- package/dist/shared/utils/http-header.d.ts +16 -0
- package/dist/shared/utils/http-header.d.ts.map +1 -0
- package/dist/shared/utils/http-header.js +14 -0
- package/dist/shared/utils/http-header.js.map +1 -0
- package/dist/shared/utils/query.js +2 -1
- package/dist/shared/utils/query.js.map +1 -1
- package/dist/solvers/force-close/force-close-auto.d.ts +6 -2
- package/dist/solvers/force-close/force-close-auto.d.ts.map +1 -1
- package/dist/solvers/force-close/force-close-auto.js +2 -1
- package/dist/solvers/force-close/force-close-auto.js.map +1 -1
- package/dist/solvers/force-close/force-close-position.d.ts +9 -3
- package/dist/solvers/force-close/force-close-position.d.ts.map +1 -1
- package/dist/solvers/force-close/force-close-position.js +2 -1
- package/dist/solvers/force-close/force-close-position.js.map +1 -1
- package/dist/solvers/instant-open/instant-open/adapters/enigma-instant-open.js +12 -12
- package/dist/solvers/instant-open/instant-open/adapters/rasa-instant-open.js +7 -7
- package/dist/symmio-contracts/abi/index.d.ts +2 -0
- package/dist/symmio-contracts/abi/index.d.ts.map +1 -1
- package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.d.ts +2323 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.d.ts.map +1 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.js +2706 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-layer.js.map +1 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.d.ts +137 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.d.ts.map +1 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.js +145 -0
- package/dist/symmio-contracts/abi/v0.8.6/gasless-wallet.js.map +1 -0
- package/dist/symmio-contracts/abi/v0.8.6/index.d.ts +2 -0
- package/dist/symmio-contracts/abi/v0.8.6/index.d.ts.map +1 -1
- package/dist/symmio-contracts/abi/v0.8.6/instant-layer.d.ts +1879 -37
- package/dist/symmio-contracts/abi/v0.8.6/instant-layer.d.ts.map +1 -1
- package/dist/symmio-contracts/abi/v0.8.6/instant-layer.js +2180 -50
- package/dist/symmio-contracts/abi/v0.8.6/instant-layer.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/add-margin.d.ts +2 -2
- package/dist/symmio-contracts/account-layer/actions/add-margin.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/add-margin.js +34 -17
- package/dist/symmio-contracts/account-layer/actions/add-margin.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.d.ts +11 -2
- package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.js +33 -17
- package/dist/symmio-contracts/account-layer/actions/create-sub-accounts.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/delete-sub-account.d.ts +9 -2
- package/dist/symmio-contracts/account-layer/actions/delete-sub-account.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/delete-sub-account.js +33 -16
- package/dist/symmio-contracts/account-layer/actions/delete-sub-account.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.d.ts +8 -2
- package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.js +34 -17
- package/dist/symmio-contracts/account-layer/actions/deposit-and-allocate-for-account.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/deposit-for-account.d.ts +8 -2
- package/dist/symmio-contracts/account-layer/actions/deposit-for-account.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/deposit-for-account.js +34 -17
- package/dist/symmio-contracts/account-layer/actions/deposit-for-account.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/edit-account-name.d.ts +7 -2
- package/dist/symmio-contracts/account-layer/actions/edit-account-name.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/edit-account-name.js +34 -17
- package/dist/symmio-contracts/account-layer/actions/edit-account-name.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/get-account-balance-info.d.ts +1 -1
- package/dist/symmio-contracts/account-layer/actions/get-account-balance-info.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.d.ts +9 -3
- package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/get-account-balance-of.js.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/remove-margin.d.ts +2 -2
- package/dist/symmio-contracts/account-layer/actions/remove-margin.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/actions/remove-margin.js +41 -20
- package/dist/symmio-contracts/account-layer/actions/remove-margin.js.map +1 -1
- package/dist/symmio-contracts/account-layer/types.d.ts +3 -1
- package/dist/symmio-contracts/account-layer/types.d.ts.map +1 -1
- package/dist/symmio-contracts/account-layer/types.js.map +1 -1
- package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.d.ts +60 -0
- package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.js +35 -0
- package/dist/symmio-contracts/instant-layer/actions/finalize-revoke-delegation.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.d.ts +91 -0
- package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.js +19 -0
- package/dist/symmio-contracts/instant-layer/actions/get-active-delegations.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.d.ts +36 -0
- package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.js +15 -0
- package/dist/symmio-contracts/instant-layer/actions/get-instant-layer-nonce.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.d.ts +79 -0
- package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.js +32 -0
- package/dist/symmio-contracts/instant-layer/actions/get-pending-revocation-etas.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.d.ts +43 -0
- package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.js +14 -0
- package/dist/symmio-contracts/instant-layer/actions/get-revocation-cooldown.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/grant-delegation.d.ts +24 -3
- package/dist/symmio-contracts/instant-layer/actions/grant-delegation.d.ts.map +1 -1
- package/dist/symmio-contracts/instant-layer/actions/grant-delegation.js +48 -22
- package/dist/symmio-contracts/instant-layer/actions/grant-delegation.js.map +1 -1
- package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.d.ts +62 -0
- package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.js +35 -0
- package/dist/symmio-contracts/instant-layer/actions/initiate-revoke-delegation.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/index.d.ts +12 -0
- package/dist/symmio-contracts/instant-layer/index.d.ts.map +1 -1
- package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.d.ts +22 -0
- package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.js +12 -0
- package/dist/symmio-contracts/instant-layer/query/finalize-revoke-delegation.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-active-delegations.d.ts +36 -0
- package/dist/symmio-contracts/instant-layer/query/get-active-delegations.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-active-delegations.js +29 -0
- package/dist/symmio-contracts/instant-layer/query/get-active-delegations.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.d.ts +39 -0
- package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.js +27 -0
- package/dist/symmio-contracts/instant-layer/query/get-instant-layer-nonce.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-is-delegation-active.js +7 -7
- package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.d.ts +42 -0
- package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.js +30 -0
- package/dist/symmio-contracts/instant-layer/query/get-pending-revocation-etas.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.d.ts +36 -0
- package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.js +21 -0
- package/dist/symmio-contracts/instant-layer/query/get-revocation-cooldown.js.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.d.ts +22 -0
- package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.d.ts.map +1 -0
- package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.js +12 -0
- package/dist/symmio-contracts/instant-layer/query/initiate-revoke-delegation.js.map +1 -0
- package/dist/symmio-contracts/symmio/actions/allocate.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/allocate.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/allocate.js +2 -1
- package/dist/symmio-contracts/symmio/actions/allocate.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/approve-operational-fee.d.ts +87 -0
- package/dist/symmio-contracts/symmio/actions/approve-operational-fee.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/actions/approve-operational-fee.js +38 -0
- package/dist/symmio-contracts/symmio/actions/approve-operational-fee.js.map +1 -0
- package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.js +2 -1
- package/dist/symmio-contracts/symmio/actions/deallocate-and-initiate-withdraw.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/deallocate.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/deallocate.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/deallocate.js +2 -1
- package/dist/symmio-contracts/symmio/actions/deallocate.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.d.ts +15 -3
- package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.js +34 -17
- package/dist/symmio-contracts/symmio/actions/finalize-withdraw-request.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.js +2 -1
- package/dist/symmio-contracts/symmio/actions/force-cancel-close-request.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/force-cancel-quote.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/force-cancel-quote.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/force-cancel-quote.js +2 -1
- package/dist/symmio-contracts/symmio/actions/force-cancel-quote.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.d.ts +85 -0
- package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.js +29 -0
- package/dist/symmio-contracts/symmio/actions/get-operational-fee-allowance.js.map +1 -0
- package/dist/symmio-contracts/symmio/actions/initiate-withdraw.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/initiate-withdraw.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/initiate-withdraw.js +2 -1
- package/dist/symmio-contracts/symmio/actions/initiate-withdraw.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.js +2 -1
- package/dist/symmio-contracts/symmio/actions/request-cancel-withdraw.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.js +2 -1
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-close-request.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.js +2 -1
- package/dist/symmio-contracts/symmio/actions/request-to-cancel-quote.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/withdraw-auto.d.ts +9 -7
- package/dist/symmio-contracts/symmio/actions/withdraw-auto.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/withdraw-auto.js +24 -22
- package/dist/symmio-contracts/symmio/actions/withdraw-auto.js.map +1 -1
- package/dist/symmio-contracts/symmio/actions/withdraw.d.ts +2 -2
- package/dist/symmio-contracts/symmio/actions/withdraw.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/actions/withdraw.js +4 -2
- package/dist/symmio-contracts/symmio/actions/withdraw.js.map +1 -1
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.d.ts +43 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.js +15 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/get-funding-fees-of-party-b.js.map +1 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/index.d.ts +4 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/index.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.d.ts +43 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.js +25 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/query.js.map +1 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/types.d.ts +85 -0
- package/dist/symmio-contracts/symmio/get-funding-fees-of-party-b/types.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/index.d.ts +5 -0
- package/dist/symmio-contracts/symmio/index.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/internal/call-as-sub-account.d.ts +2 -1
- package/dist/symmio-contracts/symmio/internal/call-as-sub-account.d.ts.map +1 -1
- package/dist/symmio-contracts/symmio/internal/call-as-sub-account.js +46 -17
- package/dist/symmio-contracts/symmio/internal/call-as-sub-account.js.map +1 -1
- package/dist/symmio-contracts/symmio/query/approve-operational-fee.d.ts +18 -0
- package/dist/symmio-contracts/symmio/query/approve-operational-fee.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/query/approve-operational-fee.js +12 -0
- package/dist/symmio-contracts/symmio/query/approve-operational-fee.js.map +1 -0
- package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.d.ts +35 -0
- package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.d.ts.map +1 -0
- package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.js +28 -0
- package/dist/symmio-contracts/symmio/query/get-operational-fee-allowance.js.map +1 -0
- package/dist/symmio-contracts/symmio/types.d.ts +6 -6
- package/dist/symmio-contracts/symmio/types.js.map +1 -1
- package/dist/symmio-subgraph/executeSubgraphRequest.d.ts +2 -1
- package/dist/symmio-subgraph/executeSubgraphRequest.d.ts.map +1 -1
- package/dist/symmio-subgraph/executeSubgraphRequest.js +24 -21
- package/dist/symmio-subgraph/executeSubgraphRequest.js.map +1 -1
- package/dist/websocket/gasless/close-code-policy.d.ts +51 -0
- package/dist/websocket/gasless/close-code-policy.d.ts.map +1 -0
- package/dist/websocket/gasless/close-code-policy.js +75 -0
- package/dist/websocket/gasless/close-code-policy.js.map +1 -0
- package/dist/websocket/gasless/gasless-stream-hub.d.ts +61 -0
- package/dist/websocket/gasless/gasless-stream-hub.d.ts.map +1 -0
- package/dist/websocket/gasless/gasless-stream-hub.js +311 -0
- package/dist/websocket/gasless/gasless-stream-hub.js.map +1 -0
- package/dist/websocket/gasless/index.d.ts +7 -0
- package/dist/websocket/gasless/index.d.ts.map +1 -0
- package/dist/websocket/gasless/parse-gasless-stream-message.d.ts +82 -0
- package/dist/websocket/gasless/parse-gasless-stream-message.d.ts.map +1 -0
- package/dist/websocket/gasless/parse-gasless-stream-message.js +136 -0
- package/dist/websocket/gasless/parse-gasless-stream-message.js.map +1 -0
- package/dist/websocket/gasless/resolve-gasless-stream-url.d.ts +58 -0
- package/dist/websocket/gasless/resolve-gasless-stream-url.d.ts.map +1 -0
- package/dist/websocket/gasless/resolve-gasless-stream-url.js +59 -0
- package/dist/websocket/gasless/resolve-gasless-stream-url.js.map +1 -0
- package/dist/websocket/gasless/types.d.ts +48 -0
- package/dist/websocket/gasless/types.d.ts.map +1 -0
- package/dist/websocket/gasless/watch-gasless-request.d.ts +72 -0
- package/dist/websocket/gasless/watch-gasless-request.d.ts.map +1 -0
- package/dist/websocket/gasless/watch-gasless-request.js +35 -0
- package/dist/websocket/gasless/watch-gasless-request.js.map +1 -0
- package/dist/websocket/index.d.ts +1 -0
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/socket/create-reconnecting-socket.d.ts +39 -6
- package/dist/websocket/socket/create-reconnecting-socket.d.ts.map +1 -1
- package/dist/websocket/socket/create-reconnecting-socket.js +92 -53
- package/dist/websocket/socket/create-reconnecting-socket.js.map +1 -1
- package/dist/websocket/socket/socket-status.d.ts +7 -2
- package/dist/websocket/socket/socket-status.d.ts.map +1 -1
- package/dist/websocket/socket/socket-status.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { gaslessRevertText as e, parseGaslessErrorDetail as t } from "./errors.js";
|
|
2
|
+
import { getGaslessUnconfirmedSubmit as n, isGaslessIdempotencyConflictError as r } from "./unconfirmed-submit.js";
|
|
3
|
+
import { classifyGaslessHttpStatus as i } from "./http.js";
|
|
4
|
+
import { isGaslessFreeQuotaExhaustedError as a } from "./get-gasless-fee-quote/fee-quote-errors.js";
|
|
5
|
+
import { decodeErrorResult as o } from "viem";
|
|
6
|
+
//#region src/gasless/classify-gasless-failure.ts
|
|
7
|
+
function s(e) {
|
|
8
|
+
return e.includes("DailyFreeOpsLimitExceeded") ? "free-quota" : e.includes("OperationalFee: Insufficient balance") ? "payer-balance" : e.includes("OperationalFee: Allowance") || e.includes("OperationalFee: Insufficient allowance") ? "fee-allowance" : e.includes("FeeLimitExceeded") || e.includes("OperationalFee:") ? "fee-limit" : e.includes("DepositAmountBelowMinimum") ? "deposit-below-minimum" : e.includes("DepositAmountNotAboveFees") || e.includes("MinimumDepositNotAboveFee") ? "deposit-not-above-fees" : e.includes("InvalidNonce") || e.includes("DeadlineExpired") || e.includes("WalletOperationExpired") || e.includes("WalletOperationInvalidNonce") || e.includes("NativeGasTopUpNonceMismatch") ? "nonce-or-deadline" : null;
|
|
9
|
+
}
|
|
10
|
+
function c(e) {
|
|
11
|
+
switch (e) {
|
|
12
|
+
case "IDEMPOTENCY_KEY_CONFLICT": return "idempotency-conflict";
|
|
13
|
+
case "INSUFFICIENT_ALLOWANCE": return "fee-allowance";
|
|
14
|
+
case "FEE_POLICY_WOULD_REVERT": return "fee-limit";
|
|
15
|
+
case "DEPOSIT_BELOW_MINIMUM": return "deposit-below-minimum";
|
|
16
|
+
default: return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function l(e) {
|
|
20
|
+
switch (i(e)) {
|
|
21
|
+
case "rate-limited": return "rate-limited";
|
|
22
|
+
case "unauthorized": return "unauthorized";
|
|
23
|
+
case "forbidden": return "forbidden";
|
|
24
|
+
case "unknown-instance":
|
|
25
|
+
case "selector-conflict": return "unknown-instance";
|
|
26
|
+
case "client-schema": return "client-schema";
|
|
27
|
+
case "gateway-not-ready":
|
|
28
|
+
case "ambiguous": return "gateway-unavailable";
|
|
29
|
+
default: return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function u(i) {
|
|
33
|
+
if (n(i) !== null) return "submit-unconfirmed";
|
|
34
|
+
if (r(i)) return "idempotency-conflict";
|
|
35
|
+
if (a(i)) return "free-quota";
|
|
36
|
+
let o = t(i);
|
|
37
|
+
return s(e(o)) || (o?.failedOperation ? "failed-operation" : c(o?.code ?? null) || l(i) || (o?.code === "SIMULATION_REVERTED" ? "simulation-reverted" : "unknown"));
|
|
38
|
+
}
|
|
39
|
+
function d(e, n) {
|
|
40
|
+
let r = t(e)?.failedOperation;
|
|
41
|
+
if (!r) return null;
|
|
42
|
+
let i = null;
|
|
43
|
+
try {
|
|
44
|
+
i = o({
|
|
45
|
+
abi: n,
|
|
46
|
+
data: r.revertData
|
|
47
|
+
});
|
|
48
|
+
} catch {
|
|
49
|
+
i = null;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
index: r.index,
|
|
53
|
+
revertData: r.revertData,
|
|
54
|
+
decoded: i
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { u as classifyGaslessFailure, d as decodeGaslessOperationFailure };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=classify-gasless-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify-gasless-failure.js","names":[],"sources":["../../src/gasless/classify-gasless-failure.ts"],"sourcesContent":["import { decodeErrorResult, type Abi, type DecodeErrorResultReturnType, type Hex } from \"viem\";\nimport { gaslessRevertText, parseGaslessErrorDetail } from \"./errors\";\nimport { isGaslessFreeQuotaExhaustedError } from \"./get-gasless-fee-quote/fee-quote-errors\";\nimport { classifyGaslessHttpStatus } from \"./http\";\nimport { getGaslessUnconfirmedSubmit, isGaslessIdempotencyConflictError } from \"./unconfirmed-submit\";\n\n/**\n * Why a gasless action failed, in terms of what a UI can do about it.\n *\n * Deliberately coarser than the vendor's codes and finer than the HTTP status:\n * `INSUFFICIENT_ALLOWANCE` and an `OperationalFee: Allowance exceeded` revert\n * are the same problem with two wire shapes, while a `404` for an unknown\n * instance and a `404` for an unknown request id are not the same problem at\n * all.\n *\n * - `\"payer-balance\"` — the billing account cannot cover the fee. Top up its\n * SYMMIO collateral; raising the allowance alone does nothing.\n * - `\"fee-allowance\"` — the payer's operational-fee allowance is too low.\n * Approve more with `approveOperationalFee`, then re-read.\n * - `\"free-quota\"` — the daily free-operations quota is spent and the\n * deployment refuses paid ones. Wait for the UTC reset or use the wallet.\n * - `\"fee-limit\"` — the fee policy refused the request for any other reason.\n * - `\"failed-operation\"` — one entry of the batch reverted; decode it with\n * {@link decodeGaslessOperationFailure} to name the real cause.\n * - `\"nonce-or-deadline\"` — the signature is stale. Refresh the nonce and\n * deadline and ask for a new one; never resend the old payload.\n * - `\"deposit-below-minimum\"` — the deposit address holds less than the\n * settlement minimum, or the funds are not visible yet.\n * - `\"deposit-not-above-fees\"` — the balance clears the minimum but not the\n * deposit and wallet-creation fees.\n * - `\"idempotency-conflict\"` — the key belongs to another workflow; mint a new one.\n * - `\"client-schema\"` — a `422`: the payload's shape is wrong. A client bug.\n * - `\"rate-limited\"` / `\"unauthorized\"` / `\"forbidden\"` / `\"unknown-instance\"` /\n * `\"gateway-unavailable\"` — the gateway answered, before any service saw it.\n * - `\"submit-unconfirmed\"` — the outcome is unknown and the request may be\n * executing. Replay it with `resubmitGaslessRequest`; never re-run the intent.\n * - `\"simulation-reverted\"` — the service simulated the batch and it reverted\n * for a reason none of the above explains. Rebuild and re-sign.\n * - `\"unknown\"` — nothing classified it.\n */\nexport type GaslessFailureReason =\n | \"payer-balance\"\n | \"fee-allowance\"\n | \"free-quota\"\n | \"fee-limit\"\n | \"failed-operation\"\n | \"nonce-or-deadline\"\n | \"deposit-below-minimum\"\n | \"deposit-not-above-fees\"\n | \"idempotency-conflict\"\n | \"client-schema\"\n | \"rate-limited\"\n | \"unauthorized\"\n | \"forbidden\"\n | \"unknown-instance\"\n | \"gateway-unavailable\"\n | \"submit-unconfirmed\"\n | \"simulation-reverted\"\n | \"unknown\";\n\n/**\n * Map a revert the service decoded onto a reason, when one of the contract's\n * own error names or require-strings is unambiguous about the cause.\n *\n * The error names come from the perps-core 0.8.6 GaslessLayer and InstantLayer\n * ABIs. The `\"OperationalFee: …\"` strings are not theirs — they are SymmioCore's\n * own `LibOperationalFee` require messages, raised when the GaslessLayer charges\n * the payer (the same ones `approveOperationalFee` documents), and they reach the\n * SDK through the service's simulation of the batch.\n */\nfunction reasonFromRevert(text: string): GaslessFailureReason | null {\n if (text.includes(\"DailyFreeOpsLimitExceeded\")) return \"free-quota\";\n if (text.includes(\"OperationalFee: Insufficient balance\")) return \"payer-balance\";\n if (text.includes(\"OperationalFee: Allowance\") || text.includes(\"OperationalFee: Insufficient allowance\")) {\n return \"fee-allowance\";\n }\n if (text.includes(\"FeeLimitExceeded\") || text.includes(\"OperationalFee:\")) return \"fee-limit\";\n if (text.includes(\"DepositAmountBelowMinimum\")) return \"deposit-below-minimum\";\n if (text.includes(\"DepositAmountNotAboveFees\") || text.includes(\"MinimumDepositNotAboveFee\")) {\n return \"deposit-not-above-fees\";\n }\n if (\n text.includes(\"InvalidNonce\") ||\n text.includes(\"DeadlineExpired\") ||\n text.includes(\"WalletOperationExpired\") ||\n text.includes(\"WalletOperationInvalidNonce\") ||\n text.includes(\"NativeGasTopUpNonceMismatch\")\n ) {\n return \"nonce-or-deadline\";\n }\n return null;\n}\n\n/** Map a vendor `detail.code` onto a reason, where the code alone decides. */\nfunction reasonFromVendorCode(code: string | null): GaslessFailureReason | null {\n switch (code) {\n case \"IDEMPOTENCY_KEY_CONFLICT\":\n return \"idempotency-conflict\";\n case \"INSUFFICIENT_ALLOWANCE\":\n return \"fee-allowance\";\n case \"FEE_POLICY_WOULD_REVERT\":\n return \"fee-limit\";\n case \"DEPOSIT_BELOW_MINIMUM\":\n return \"deposit-below-minimum\";\n default:\n return null;\n }\n}\n\n/** Map the gateway's own answer onto a reason. */\nfunction reasonFromHttpStatus(err: unknown): GaslessFailureReason | null {\n switch (classifyGaslessHttpStatus(err)) {\n case \"rate-limited\":\n return \"rate-limited\";\n case \"unauthorized\":\n return \"unauthorized\";\n case \"forbidden\":\n return \"forbidden\";\n case \"unknown-instance\":\n case \"selector-conflict\":\n return \"unknown-instance\";\n case \"client-schema\":\n return \"client-schema\";\n case \"gateway-not-ready\":\n case \"ambiguous\":\n return \"gateway-unavailable\";\n default:\n return null;\n }\n}\n\n/**\n * Classify any gasless failure into the one reason a UI should act on.\n *\n * The order is deliberate: what the request *did* (unconfirmed, conflicting)\n * outranks what the service *said*, which outranks what the gateway answered —\n * a `400 SIMULATION_REVERTED` whose revert names an allowance shortfall is an\n * allowance problem, not a \"bad request\".\n *\n * Works on the error a framework layer re-wrapped too, so a React hook's\n * `SymmioRequestError` classifies exactly like the `SymmApiError` under it.\n *\n * @param err - Anything caught from a gasless action, or a polled record error.\n * @returns The reason, or `\"unknown\"` when nothing identifies it.\n *\n * @example\n * ```ts\n * switch (classifyGaslessFailure(err)) {\n * case \"fee-allowance\":\n * return showApproveOperationalFee();\n * case \"submit-unconfirmed\":\n * return showReconcilePending(getGaslessUnconfirmedSubmit(err));\n * default:\n * return showDiagnostics(parseGaslessErrorDetail(err));\n * }\n * ```\n */\nexport function classifyGaslessFailure(err: unknown): GaslessFailureReason {\n if (getGaslessUnconfirmedSubmit(err) !== null) return \"submit-unconfirmed\";\n if (isGaslessIdempotencyConflictError(err)) return \"idempotency-conflict\";\n /** Thrown by the fee pre-flight, before any HTTP call and with no vendor detail. */\n if (isGaslessFreeQuotaExhaustedError(err)) return \"free-quota\";\n\n const detail = parseGaslessErrorDetail(err);\n const fromRevert = reasonFromRevert(gaslessRevertText(detail));\n if (fromRevert) return fromRevert;\n if (detail?.failedOperation) return \"failed-operation\";\n\n const fromCode = reasonFromVendorCode(detail?.code ?? null);\n if (fromCode) return fromCode;\n\n const fromStatus = reasonFromHttpStatus(err);\n if (fromStatus) return fromStatus;\n\n return detail?.code === \"SIMULATION_REVERTED\" ? \"simulation-reverted\" : \"unknown\";\n}\n\n/**\n * The failing batch entry of an `OperationFailed` revert, with its inner revert\n * decoded against the ABI you supplied.\n */\nexport interface GaslessDecodedOperationFailure {\n /** Zero-based position of the failing operation in the submitted batch. */\n index: number;\n /** The inner revert data, exactly as the service reported it. */\n revertData: Hex;\n /** The decoded error, or `null` when the ABI does not describe it. */\n decoded: DecodeErrorResultReturnType | null;\n}\n\n/**\n * Identify the batch entry that reverted, and decode its inner revert.\n *\n * A relayed batch is atomic, so the InstantLayer reports an inner failure as\n * `OperationFailed(operationIndex, revertData)` — which names a position, not a\n * cause. Decoding `revertData` against the ABI of the contract that operation\n * targeted turns it back into the error the user can act on\n * (`InvalidNameLength`, `InsufficientBalance`, …).\n *\n * @param err - Anything caught from a gasless submit.\n * @param abi - ABI of the contract the failing operation targeted.\n * @returns The index, the raw revert data and the decoded error, or `null` when\n * the failure was not an `OperationFailed`.\n *\n * @example\n * ```ts\n * const failure = decodeGaslessOperationFailure(err, accountLayerAbi);\n * if (failure) {\n * console.error(`operation ${failure.index} reverted:`, failure.decoded?.errorName ?? failure.revertData);\n * }\n * ```\n */\nexport function decodeGaslessOperationFailure(err: unknown, abi: Abi): GaslessDecodedOperationFailure | null {\n const failed = parseGaslessErrorDetail(err)?.failedOperation;\n if (!failed) return null;\n\n let decoded: DecodeErrorResultReturnType | null = null;\n try {\n decoded = decodeErrorResult({ abi, data: failed.revertData });\n } catch {\n /** An ABI that does not describe this error is a caller mistake, not a reason to lose the index. */\n decoded = null;\n }\n return { index: failed.index, revertData: failed.revertData, decoded };\n}\n"],"mappings":";;;;;;AAsEA,SAAS,EAAiB,GAA2C;CAoBnE,OAnBI,EAAK,SAAS,2BAA2B,IAAU,eACnD,EAAK,SAAS,sCAAsC,IAAU,kBAC9D,EAAK,SAAS,2BAA2B,KAAK,EAAK,SAAS,wCAAwC,IAC/F,kBAEL,EAAK,SAAS,kBAAkB,KAAK,EAAK,SAAS,iBAAiB,IAAU,cAC9E,EAAK,SAAS,2BAA2B,IAAU,0BACnD,EAAK,SAAS,2BAA2B,KAAK,EAAK,SAAS,2BAA2B,IAClF,2BAGP,EAAK,SAAS,cAAc,KAC5B,EAAK,SAAS,iBAAiB,KAC/B,EAAK,SAAS,wBAAwB,KACtC,EAAK,SAAS,6BAA6B,KAC3C,EAAK,SAAS,6BAA6B,IAEpC,sBAEF;AACT;AAGA,SAAS,EAAqB,GAAkD;CAC9E,QAAQ,GAAR;EACE,KAAK,4BACH,OAAO;EACT,KAAK,0BACH,OAAO;EACT,KAAK,2BACH,OAAO;EACT,KAAK,yBACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAGA,SAAS,EAAqB,GAA2C;CACvE,QAAQ,EAA0B,CAAG,GAArC;EACE,KAAK,gBACH,OAAO;EACT,KAAK,gBACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK;EACL,KAAK,qBACH,OAAO;EACT,KAAK,iBACH,OAAO;EACT,KAAK;EACL,KAAK,aACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AA4BA,SAAgB,EAAuB,GAAoC;CACzE,IAAI,EAA4B,CAAG,MAAM,MAAM,OAAO;CACtD,IAAI,EAAkC,CAAG,GAAG,OAAO;CAEnD,IAAI,EAAiC,CAAG,GAAG,OAAO;CAElD,IAAM,IAAS,EAAwB,CAAG;CAW1C,OAVmB,EAAiB,EAAkB,CAAM,CACxD,MACA,GAAQ,kBAAwB,qBAEnB,EAAqB,GAAQ,QAAQ,IAClD,KAEe,EAAqB,CACpC,MAEG,GAAQ,SAAS,wBAAwB,wBAAwB;AAC1E;AAqCA,SAAgB,EAA8B,GAAc,GAAiD;CAC3G,IAAM,IAAS,EAAwB,CAAG,GAAG;CAC7C,IAAI,CAAC,GAAQ,OAAO;CAEpB,IAAI,IAA8C;CAClD,IAAI;EACF,IAAU,EAAkB;GAAE;GAAK,MAAM,EAAO;EAAW,CAAC;CAC9D,QAAQ;EAEN,IAAU;CACZ;CACA,OAAO;EAAE,OAAO,EAAO;EAAO,YAAY,EAAO;EAAY;CAAQ;AACvE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Hash, TransactionReceipt } from 'viem';
|
|
2
|
+
import { Config } from '../../core/config/index.js';
|
|
3
|
+
import { SymmError } from '../../shared/errors/symm-error.js';
|
|
4
|
+
import { ChainIdParameter, Compute } from '../../shared/types/properties.js';
|
|
5
|
+
import { GaslessStatusTransport } from '../observe-gasless-request.js';
|
|
6
|
+
import { GaslessRequest, GaslessService } from '../types.js';
|
|
7
|
+
/** Default budget for the receipt wait, once the relayer reports `succeeded`. */
|
|
8
|
+
export declare const GASLESS_RECEIPT_TIMEOUT_MS = 60000;
|
|
9
|
+
/**
|
|
10
|
+
* How far a relayed request is followed before it counts as done.
|
|
11
|
+
*
|
|
12
|
+
* - `"none"` — the 202 acceptance is the answer. You own the lifecycle and the
|
|
13
|
+
* cache invalidation.
|
|
14
|
+
* - `"terminal"` — the relayer reports `succeeded`. Its node saw the receipt;
|
|
15
|
+
* yours may not have.
|
|
16
|
+
* - `"receipt"` — additionally waits for the receipt on your own client, so the
|
|
17
|
+
* state is readable by the reads you are about to invalidate.
|
|
18
|
+
*/
|
|
19
|
+
export type GaslessConfirmation = "none" | "terminal" | "receipt";
|
|
20
|
+
/** A relayed request followed through to on-chain reality. */
|
|
21
|
+
export interface GaslessConfirmedRequest {
|
|
22
|
+
/** The terminal record. Always `succeeded` — anything else threw. */
|
|
23
|
+
request: GaslessRequest;
|
|
24
|
+
/** The broadcast transaction hash. */
|
|
25
|
+
txHash: Hash;
|
|
26
|
+
/**
|
|
27
|
+
* Receipt from this config's client. Absent when `until: "terminal"`, and
|
|
28
|
+
* absent when the receipt wait ran out of budget — see the timeout note on
|
|
29
|
+
* {@link confirmGaslessRequest}.
|
|
30
|
+
*/
|
|
31
|
+
receipt?: TransactionReceipt;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parameters for {@link confirmGaslessRequest}.
|
|
35
|
+
*/
|
|
36
|
+
export type ConfirmGaslessRequestParameters = Compute<ChainIdParameter & {
|
|
37
|
+
/** Stable service tracking id returned by a gasless submit. */
|
|
38
|
+
requestId: string;
|
|
39
|
+
/** Which sub-service stores the request. Defaults to `"operations"`. */
|
|
40
|
+
service?: GaslessService;
|
|
41
|
+
/** How far to follow the request. Defaults to `"terminal"`. */
|
|
42
|
+
until?: Exclude<GaslessConfirmation, "none">;
|
|
43
|
+
/** Confirmations to wait for. Default `1`. Ignored unless `until: "receipt"`. */
|
|
44
|
+
receiptConfirmations?: number;
|
|
45
|
+
/** Budget for the terminal wait. */
|
|
46
|
+
timeoutMs?: number;
|
|
47
|
+
/** Budget for the receipt wait. Default {@link GASLESS_RECEIPT_TIMEOUT_MS}. */
|
|
48
|
+
receiptTimeoutMs?: number;
|
|
49
|
+
/** Poll cadence while `queued`. */
|
|
50
|
+
queuedPollMs?: number;
|
|
51
|
+
/** Poll cadence after `submitted`. */
|
|
52
|
+
submittedPollMs?: number;
|
|
53
|
+
/** How long to let the stream settle before the first HTTP read. */
|
|
54
|
+
streamSettleMs?: number;
|
|
55
|
+
/** How long a live stream may report nothing before one HTTP read is taken. */
|
|
56
|
+
streamStaleMs?: number;
|
|
57
|
+
/** Abort the wait (e.g. on unmount). The request keeps running server-side. */
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
/** Observer invoked with every fetched record, including the final one. */
|
|
60
|
+
onUpdate?: (request: GaslessRequest) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Observer invoked for every transient read failure the status wait
|
|
63
|
+
* absorbed — see {@link waitForGaslessRequest}.
|
|
64
|
+
* It means the status is temporarily unreadable, never that the request
|
|
65
|
+
* failed.
|
|
66
|
+
*/
|
|
67
|
+
onTransportIssue?: (error: SymmError) => void;
|
|
68
|
+
/**
|
|
69
|
+
* How to follow the workflow: `"auto"` (default) prefers the gateway's
|
|
70
|
+
* status stream where the deployment enables it and polls while it is not
|
|
71
|
+
* delivering; `"poll"` forces HTTP polling. The outcome is identical.
|
|
72
|
+
*/
|
|
73
|
+
transport?: GaslessStatusTransport;
|
|
74
|
+
}>;
|
|
75
|
+
/** Return type of {@link confirmGaslessRequest}. */
|
|
76
|
+
export type ConfirmGaslessRequestReturnType = GaslessConfirmedRequest;
|
|
77
|
+
/**
|
|
78
|
+
* Follow one accepted relay request through to on-chain reality.
|
|
79
|
+
*
|
|
80
|
+
* This is the opinionated layer above {@link waitForGaslessRequest}: where the
|
|
81
|
+
* driver resolves with whatever terminal it reaches, this resolves **only** on
|
|
82
|
+
* `succeeded` and throws for `reverted` / `failed` / `rejected`, with the record
|
|
83
|
+
* attached to the error's `responseData`. That split is deliberate — the driver
|
|
84
|
+
* reports facts, this one asserts the outcome a caller is waiting for.
|
|
85
|
+
*
|
|
86
|
+
* With `until: "receipt"` it then waits for the receipt on *this config's*
|
|
87
|
+
* client. That matters more than it looks: the relayer's `succeeded` is the
|
|
88
|
+
* relayer's node's view, and invalidating cached reads against a node that has
|
|
89
|
+
* not seen the block re-reads pre-state, which is the stalled UI this whole
|
|
90
|
+
* mechanism exists to prevent.
|
|
91
|
+
*
|
|
92
|
+
* **A receipt-wait timeout is not a failure.** The relayer already reported the
|
|
93
|
+
* transaction mined with `status = 1`; the receipt wait is a freshness barrier
|
|
94
|
+
* on your RPC, not a source of truth. On timeout this resolves with `receipt`
|
|
95
|
+
* absent rather than throwing — turning a succeeded action into an error
|
|
96
|
+
* because a public RPC lagged would be a worse bug than the one being fixed.
|
|
97
|
+
*
|
|
98
|
+
* Transient read failures are absorbed by the status wait underneath, not
|
|
99
|
+
* reported as failures — subscribe to `onTransportIssue` to show "status
|
|
100
|
+
* unavailable" while they last. Never re-submits: a 202 is the point of no
|
|
101
|
+
* return.
|
|
102
|
+
*
|
|
103
|
+
* @param config - The SDK config.
|
|
104
|
+
* @param parameters - Request id, how far to follow it, and the budgets.
|
|
105
|
+
* @returns The terminal record, its transaction hash, and (for `"receipt"`) the receipt.
|
|
106
|
+
* @throws {SymmApiError} `GASLESS_RELAY_REJECTED` / `GASLESS_RELAY_REVERTED` /
|
|
107
|
+
* `GASLESS_RELAY_FAILED` on a non-succeeded terminal, carrying the record.
|
|
108
|
+
* @throws {SymmError} `GASLESS_SUCCEEDED_WITHOUT_TX` when a `succeeded` record has no hash.
|
|
109
|
+
* @throws {SymmError} `GASLESS_WAIT_ABORTED` when `signal` aborts — this means
|
|
110
|
+
* nobody is watching any more, **not** that the action failed.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```ts
|
|
114
|
+
* const { request, receipt } = await confirmGaslessRequest(config, {
|
|
115
|
+
* requestId: accepted.requestId,
|
|
116
|
+
* until: "receipt",
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function confirmGaslessRequest(config: Config, parameters: ConfirmGaslessRequestParameters): Promise<ConfirmGaslessRequestReturnType>;
|
|
121
|
+
//# sourceMappingURL=confirm-gasless-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-gasless-request.d.ts","sourceRoot":"","sources":["../../../src/gasless/confirm-gasless-request/confirm-gasless-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAgB,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1F,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAElE,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,OAAO,EAAE,cAAc,CAAC;IACxB,sCAAsC;IACtC,MAAM,EAAE,IAAI,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG,OAAO,CACnD,gBAAgB,GAAG;IACjB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC7C,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC,CACF,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,+BAA+B,GAC1C,OAAO,CAAC,+BAA+B,CAAC,CA+E1C"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { SymmApiError as e, SymmError as t } from "../../shared/errors/symm-error.js";
|
|
2
|
+
import { fireGaslessEvent as n, toGaslessRecordBody as r } from "../events.js";
|
|
3
|
+
import { resolveGaslessService as i } from "../resolve-gasless.js";
|
|
4
|
+
import { GaslessRequestStatus as a } from "../types.js";
|
|
5
|
+
import { waitForGaslessRequest as o } from "../wait-for-gasless-request/wait-for-gasless-request.js";
|
|
6
|
+
//#region src/gasless/confirm-gasless-request/confirm-gasless-request.ts
|
|
7
|
+
var s = 6e4;
|
|
8
|
+
async function c(c, u) {
|
|
9
|
+
let { chainId: d, requestId: f, service: p = "operations", until: m = "terminal", receiptConfirmations: h = 1, receiptTimeoutMs: g = s, signal: _, onUpdate: v, onTransportIssue: y, transport: b } = u, x = i(c, { chainId: d }), S = x.execution?.onEvent, C = await o(c, {
|
|
10
|
+
chainId: d,
|
|
11
|
+
requestId: f,
|
|
12
|
+
service: p,
|
|
13
|
+
until: "terminal",
|
|
14
|
+
timeoutMs: u.timeoutMs,
|
|
15
|
+
queuedPollMs: u.queuedPollMs,
|
|
16
|
+
submittedPollMs: u.submittedPollMs,
|
|
17
|
+
streamSettleMs: u.streamSettleMs,
|
|
18
|
+
streamStaleMs: u.streamStaleMs,
|
|
19
|
+
signal: _,
|
|
20
|
+
onUpdate: v,
|
|
21
|
+
onTransportIssue: y,
|
|
22
|
+
transport: b
|
|
23
|
+
});
|
|
24
|
+
if (n(S, {
|
|
25
|
+
type: "terminal",
|
|
26
|
+
requestId: C.requestId,
|
|
27
|
+
status: C.status,
|
|
28
|
+
txHash: C.txHash,
|
|
29
|
+
chainId: c.getChainConfig(d).chainId
|
|
30
|
+
}), C.status !== a.SUCCEEDED) throw new e({
|
|
31
|
+
code: l[C.status],
|
|
32
|
+
message: `Gasless: request ${C.requestId} ended ${C.status}${C.errorMessage ? ` — ${C.errorMessage}` : ""}.`,
|
|
33
|
+
status: 200,
|
|
34
|
+
statusText: "OK",
|
|
35
|
+
responseData: r(C),
|
|
36
|
+
url: x.url,
|
|
37
|
+
method: "GET"
|
|
38
|
+
});
|
|
39
|
+
if (C.txHash === null) throw new t("api", "GASLESS_SUCCEEDED_WITHOUT_TX", `Gasless: request ${C.requestId} reports succeeded but carries no transaction hash.`);
|
|
40
|
+
let w = C.txHash;
|
|
41
|
+
if (m === "terminal") return {
|
|
42
|
+
request: C,
|
|
43
|
+
txHash: w
|
|
44
|
+
};
|
|
45
|
+
let T = c.getClient({ chainId: d });
|
|
46
|
+
try {
|
|
47
|
+
return {
|
|
48
|
+
request: C,
|
|
49
|
+
txHash: w,
|
|
50
|
+
receipt: await T.waitForTransactionReceipt({
|
|
51
|
+
hash: w,
|
|
52
|
+
confirmations: h,
|
|
53
|
+
timeout: g
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
} catch {
|
|
57
|
+
return {
|
|
58
|
+
request: C,
|
|
59
|
+
txHash: w
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
var l = {
|
|
64
|
+
[a.REJECTED]: "GASLESS_RELAY_REJECTED",
|
|
65
|
+
[a.REVERTED]: "GASLESS_RELAY_REVERTED",
|
|
66
|
+
[a.FAILED]: "GASLESS_RELAY_FAILED",
|
|
67
|
+
[a.QUEUED]: "GASLESS_RELAY_FAILED",
|
|
68
|
+
[a.SUBMITTED]: "GASLESS_RELAY_FAILED"
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
71
|
+
export { s as GASLESS_RECEIPT_TIMEOUT_MS, c as confirmGaslessRequest };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=confirm-gasless-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-gasless-request.js","names":[],"sources":["../../../src/gasless/confirm-gasless-request/confirm-gasless-request.ts"],"sourcesContent":["import type { Hash, TransactionReceipt } from \"viem\";\nimport type { Config } from \"../../core/config\";\nimport { SymmApiError, SymmError } from \"../../shared/errors/symm-error\";\nimport type { ChainIdParameter, Compute } from \"../../shared/types/properties\";\nimport { fireGaslessEvent, toGaslessRecordBody } from \"../events\";\nimport type { GaslessStatusTransport } from \"../observe-gasless-request\";\nimport { resolveGaslessService } from \"../resolve-gasless\";\nimport { GaslessRequestStatus, type GaslessRequest, type GaslessService } from \"../types\";\nimport { waitForGaslessRequest } from \"../wait-for-gasless-request/wait-for-gasless-request\";\n\n/** Default budget for the receipt wait, once the relayer reports `succeeded`. */\nexport const GASLESS_RECEIPT_TIMEOUT_MS = 60_000;\n\n/**\n * How far a relayed request is followed before it counts as done.\n *\n * - `\"none\"` — the 202 acceptance is the answer. You own the lifecycle and the\n * cache invalidation.\n * - `\"terminal\"` — the relayer reports `succeeded`. Its node saw the receipt;\n * yours may not have.\n * - `\"receipt\"` — additionally waits for the receipt on your own client, so the\n * state is readable by the reads you are about to invalidate.\n */\nexport type GaslessConfirmation = \"none\" | \"terminal\" | \"receipt\";\n\n/** A relayed request followed through to on-chain reality. */\nexport interface GaslessConfirmedRequest {\n /** The terminal record. Always `succeeded` — anything else threw. */\n request: GaslessRequest;\n /** The broadcast transaction hash. */\n txHash: Hash;\n /**\n * Receipt from this config's client. Absent when `until: \"terminal\"`, and\n * absent when the receipt wait ran out of budget — see the timeout note on\n * {@link confirmGaslessRequest}.\n */\n receipt?: TransactionReceipt;\n}\n\n/**\n * Parameters for {@link confirmGaslessRequest}.\n */\nexport type ConfirmGaslessRequestParameters = Compute<\n ChainIdParameter & {\n /** Stable service tracking id returned by a gasless submit. */\n requestId: string;\n /** Which sub-service stores the request. Defaults to `\"operations\"`. */\n service?: GaslessService;\n /** How far to follow the request. Defaults to `\"terminal\"`. */\n until?: Exclude<GaslessConfirmation, \"none\">;\n /** Confirmations to wait for. Default `1`. Ignored unless `until: \"receipt\"`. */\n receiptConfirmations?: number;\n /** Budget for the terminal wait. */\n timeoutMs?: number;\n /** Budget for the receipt wait. Default {@link GASLESS_RECEIPT_TIMEOUT_MS}. */\n receiptTimeoutMs?: number;\n /** Poll cadence while `queued`. */\n queuedPollMs?: number;\n /** Poll cadence after `submitted`. */\n submittedPollMs?: number;\n /** How long to let the stream settle before the first HTTP read. */\n streamSettleMs?: number;\n /** How long a live stream may report nothing before one HTTP read is taken. */\n streamStaleMs?: number;\n /** Abort the wait (e.g. on unmount). The request keeps running server-side. */\n signal?: AbortSignal;\n /** Observer invoked with every fetched record, including the final one. */\n onUpdate?: (request: GaslessRequest) => void;\n /**\n * Observer invoked for every transient read failure the status wait\n * absorbed — see {@link waitForGaslessRequest}.\n * It means the status is temporarily unreadable, never that the request\n * failed.\n */\n onTransportIssue?: (error: SymmError) => void;\n /**\n * How to follow the workflow: `\"auto\"` (default) prefers the gateway's\n * status stream where the deployment enables it and polls while it is not\n * delivering; `\"poll\"` forces HTTP polling. The outcome is identical.\n */\n transport?: GaslessStatusTransport;\n }\n>;\n\n/** Return type of {@link confirmGaslessRequest}. */\nexport type ConfirmGaslessRequestReturnType = GaslessConfirmedRequest;\n\n/**\n * Follow one accepted relay request through to on-chain reality.\n *\n * This is the opinionated layer above {@link waitForGaslessRequest}: where the\n * driver resolves with whatever terminal it reaches, this resolves **only** on\n * `succeeded` and throws for `reverted` / `failed` / `rejected`, with the record\n * attached to the error's `responseData`. That split is deliberate — the driver\n * reports facts, this one asserts the outcome a caller is waiting for.\n *\n * With `until: \"receipt\"` it then waits for the receipt on *this config's*\n * client. That matters more than it looks: the relayer's `succeeded` is the\n * relayer's node's view, and invalidating cached reads against a node that has\n * not seen the block re-reads pre-state, which is the stalled UI this whole\n * mechanism exists to prevent.\n *\n * **A receipt-wait timeout is not a failure.** The relayer already reported the\n * transaction mined with `status = 1`; the receipt wait is a freshness barrier\n * on your RPC, not a source of truth. On timeout this resolves with `receipt`\n * absent rather than throwing — turning a succeeded action into an error\n * because a public RPC lagged would be a worse bug than the one being fixed.\n *\n * Transient read failures are absorbed by the status wait underneath, not\n * reported as failures — subscribe to `onTransportIssue` to show \"status\n * unavailable\" while they last. Never re-submits: a 202 is the point of no\n * return.\n *\n * @param config - The SDK config.\n * @param parameters - Request id, how far to follow it, and the budgets.\n * @returns The terminal record, its transaction hash, and (for `\"receipt\"`) the receipt.\n * @throws {SymmApiError} `GASLESS_RELAY_REJECTED` / `GASLESS_RELAY_REVERTED` /\n * `GASLESS_RELAY_FAILED` on a non-succeeded terminal, carrying the record.\n * @throws {SymmError} `GASLESS_SUCCEEDED_WITHOUT_TX` when a `succeeded` record has no hash.\n * @throws {SymmError} `GASLESS_WAIT_ABORTED` when `signal` aborts — this means\n * nobody is watching any more, **not** that the action failed.\n *\n * @example\n * ```ts\n * const { request, receipt } = await confirmGaslessRequest(config, {\n * requestId: accepted.requestId,\n * until: \"receipt\",\n * });\n * ```\n */\nexport async function confirmGaslessRequest(\n config: Config,\n parameters: ConfirmGaslessRequestParameters,\n): Promise<ConfirmGaslessRequestReturnType> {\n const {\n chainId,\n requestId,\n service = \"operations\",\n until = \"terminal\",\n receiptConfirmations = 1,\n receiptTimeoutMs = GASLESS_RECEIPT_TIMEOUT_MS,\n signal,\n onUpdate,\n onTransportIssue,\n transport,\n } = parameters;\n\n const gasless = resolveGaslessService(config, { chainId });\n const events = gasless.execution?.onEvent;\n\n const record = await waitForGaslessRequest(config, {\n chainId,\n requestId,\n service,\n until: \"terminal\",\n timeoutMs: parameters.timeoutMs,\n queuedPollMs: parameters.queuedPollMs,\n submittedPollMs: parameters.submittedPollMs,\n streamSettleMs: parameters.streamSettleMs,\n streamStaleMs: parameters.streamStaleMs,\n signal,\n onUpdate,\n onTransportIssue,\n transport,\n });\n\n fireGaslessEvent(events, {\n type: \"terminal\",\n requestId: record.requestId,\n status: record.status,\n txHash: record.txHash,\n chainId: config.getChainConfig(chainId).chainId,\n });\n\n if (record.status !== GaslessRequestStatus.SUCCEEDED) {\n throw new SymmApiError({\n code: TERMINAL_ERROR_CODES[record.status],\n message: `Gasless: request ${record.requestId} ended ${record.status}${record.errorMessage ? ` — ${record.errorMessage}` : \"\"}.`,\n status: 200,\n statusText: \"OK\",\n responseData: toGaslessRecordBody(record),\n url: gasless.url,\n method: \"GET\",\n });\n }\n\n if (record.txHash === null) {\n throw new SymmError(\n \"api\",\n \"GASLESS_SUCCEEDED_WITHOUT_TX\",\n `Gasless: request ${record.requestId} reports succeeded but carries no transaction hash.`,\n );\n }\n const txHash = record.txHash;\n\n if (until === \"terminal\") return { request: record, txHash };\n\n const client = config.getClient({ chainId });\n try {\n const receipt = await client.waitForTransactionReceipt({\n hash: txHash,\n confirmations: receiptConfirmations,\n timeout: receiptTimeoutMs,\n });\n return { request: record, txHash, receipt };\n } catch {\n /**\n * The transaction is mined — the relayer watched it happen. Only our view\n * of it is late, so report the success we already have.\n */\n return { request: record, txHash };\n }\n}\n\n/** Which typed error a non-succeeded terminal raises. */\nconst TERMINAL_ERROR_CODES: Record<Exclude<GaslessRequestStatus, GaslessRequestStatus.SUCCEEDED>, string> = {\n [GaslessRequestStatus.REJECTED]: \"GASLESS_RELAY_REJECTED\",\n [GaslessRequestStatus.REVERTED]: \"GASLESS_RELAY_REVERTED\",\n [GaslessRequestStatus.FAILED]: \"GASLESS_RELAY_FAILED\",\n [GaslessRequestStatus.QUEUED]: \"GASLESS_RELAY_FAILED\",\n [GaslessRequestStatus.SUBMITTED]: \"GASLESS_RELAY_FAILED\",\n};\n"],"mappings":";;;;;;AAWA,IAAa,IAA6B;AAuH1C,eAAsB,EACpB,GACA,GAC0C;CAC1C,IAAM,EACJ,YACA,cACA,aAAU,cACV,WAAQ,YACR,0BAAuB,GACvB,sBAAmB,GACnB,WACA,aACA,qBACA,iBACE,GAEE,IAAU,EAAsB,GAAQ,EAAE,WAAQ,CAAC,GACnD,IAAS,EAAQ,WAAW,SAE5B,IAAS,MAAM,EAAsB,GAAQ;EACjD;EACA;EACA;EACA,OAAO;EACP,WAAW,EAAW;EACtB,cAAc,EAAW;EACzB,iBAAiB,EAAW;EAC5B,gBAAgB,EAAW;EAC3B,eAAe,EAAW;EAC1B;EACA;EACA;EACA;CACF,CAAC;CAUD,IARA,EAAiB,GAAQ;EACvB,MAAM;EACN,WAAW,EAAO;EAClB,QAAQ,EAAO;EACf,QAAQ,EAAO;EACf,SAAS,EAAO,eAAe,CAAO,EAAE;CAC1C,CAAC,GAEG,EAAO,WAAW,EAAqB,WACzC,MAAM,IAAI,EAAa;EACrB,MAAM,EAAqB,EAAO;EAClC,SAAS,oBAAoB,EAAO,UAAU,SAAS,EAAO,SAAS,EAAO,eAAe,MAAM,EAAO,iBAAiB,GAAG;EAC9H,QAAQ;EACR,YAAY;EACZ,cAAc,EAAoB,CAAM;EACxC,KAAK,EAAQ;EACb,QAAQ;CACV,CAAC;CAGH,IAAI,EAAO,WAAW,MACpB,MAAM,IAAI,EACR,OACA,gCACA,oBAAoB,EAAO,UAAU,oDACvC;CAEF,IAAM,IAAS,EAAO;CAEtB,IAAI,MAAU,YAAY,OAAO;EAAE,SAAS;EAAQ;CAAO;CAE3D,IAAM,IAAS,EAAO,UAAU,EAAE,WAAQ,CAAC;CAC3C,IAAI;EAMF,OAAO;GAAE,SAAS;GAAQ;GAAQ,SAAA,MALZ,EAAO,0BAA0B;IACrD,MAAM;IACN,eAAe;IACf,SAAS;GACX,CAAC;EACyC;CAC5C,QAAQ;EAKN,OAAO;GAAE,SAAS;GAAQ;EAAO;CACnC;AACF;AAGA,IAAM,IAAsG;EACzG,EAAqB,WAAW;EAChC,EAAqB,WAAW;EAChC,EAAqB,SAAS;EAC9B,EAAqB,SAAS;EAC9B,EAAqB,YAAY;AACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gasless/confirm-gasless-request/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 4-byte selector of `GaslessWallet.execute((address,uint256,bytes)[])` — the
|
|
3
|
+
* only selector a relayed wallet operation's `callData` may start with.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const isWalletOperation = operation.callData.slice(0, 10).toLowerCase() === GASLESS_WALLET_EXECUTE_SELECTOR;
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare const GASLESS_WALLET_EXECUTE_SELECTOR: "0x3f707e6b";
|
|
11
|
+
/**
|
|
12
|
+
* Sentinel selector (`bytes4(keccak256("GASLESSQ_WALLET_EXECUTION"))`) a
|
|
13
|
+
* session key must hold an InstantLayer delegation for before it may sign
|
|
14
|
+
* **delegated** GaslessWallet executions — alongside every inner call selector.
|
|
15
|
+
* Owner-signed wallet operations do not use it. The GaslessLayer exposes the
|
|
16
|
+
* same value as `WALLET_EXECUTION_SENTINEL_SELECTOR()`.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const selectors = [GASLESS_WALLET_EXECUTION_SENTINEL_SELECTOR, ...innerSelectors];
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare const GASLESS_WALLET_EXECUTION_SENTINEL_SELECTOR: "0x1dccecab";
|
|
24
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/gasless/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,EAAG,YAAqB,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0CAA0C,EAAG,YAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../src/gasless/constants.ts"],"sourcesContent":["/**\n * 4-byte selector of `GaslessWallet.execute((address,uint256,bytes)[])` — the\n * only selector a relayed wallet operation's `callData` may start with.\n *\n * @example\n * ```ts\n * const isWalletOperation = operation.callData.slice(0, 10).toLowerCase() === GASLESS_WALLET_EXECUTE_SELECTOR;\n * ```\n */\nexport const GASLESS_WALLET_EXECUTE_SELECTOR = \"0x3f707e6b\" as const;\n\n/**\n * Sentinel selector (`bytes4(keccak256(\"GASLESSQ_WALLET_EXECUTION\"))`) a\n * session key must hold an InstantLayer delegation for before it may sign\n * **delegated** GaslessWallet executions — alongside every inner call selector.\n * Owner-signed wallet operations do not use it. The GaslessLayer exposes the\n * same value as `WALLET_EXECUTION_SENTINEL_SELECTOR()`.\n *\n * @example\n * ```ts\n * const selectors = [GASLESS_WALLET_EXECUTION_SENTINEL_SELECTOR, ...innerSelectors];\n * ```\n */\nexport const GASLESS_WALLET_EXECUTION_SENTINEL_SELECTOR = \"0x1dccecab\" as const;\n"],"mappings":";AASA,IAAa,IAAkC,cAclC,IAA6C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Address, Hex } from 'viem';
|
|
2
|
+
import { Config } from '../core/config/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* The owning EOA of a sub-account, read once per config lifetime.
|
|
5
|
+
*
|
|
6
|
+
* The real promise is cached (so concurrent writes share the single in-flight
|
|
7
|
+
* read instead of each issuing their own), and the entry is dropped on rejection
|
|
8
|
+
* so a transient RPC failure cannot poison the config.
|
|
9
|
+
*
|
|
10
|
+
* @param config - The SDK config.
|
|
11
|
+
* @param chainId - The chain the sub-account lives on.
|
|
12
|
+
* @param account - The sub-account.
|
|
13
|
+
* @returns The owner, or `null` when the AccountLayer knows no such sub-account.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare function getCachedGaslessAccountOwner(config: Config, chainId: number, account: Address): Promise<Address | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Selectors the signing key may not relay under `signerAccount`.
|
|
20
|
+
*
|
|
21
|
+
* The owner needs no delegation, so an owner signer short-circuits after the
|
|
22
|
+
* (cached) owner read with zero extra calls. Any other signer is a delegate — a
|
|
23
|
+
* session key — and every distinct selector is checked against
|
|
24
|
+
* `isDelegationActive` concurrently.
|
|
25
|
+
*
|
|
26
|
+
* @param config - The SDK config.
|
|
27
|
+
* @param parameters - The chain, the signing key, the account it signs under, and the selectors it relays.
|
|
28
|
+
* @returns The selectors with no active delegation; empty when the signer may
|
|
29
|
+
* relay every call.
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export declare function findUndelegatedGaslessSelectors(config: Config, parameters: {
|
|
34
|
+
chainId: number;
|
|
35
|
+
signer: Address;
|
|
36
|
+
signerAccount: Address;
|
|
37
|
+
selectors: readonly Hex[];
|
|
38
|
+
}): Promise<Hex[]>;
|
|
39
|
+
//# sourceMappingURL=delegation-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-preflight.d.ts","sourceRoot":"","sources":["../../src/gasless/delegation-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgB7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA4BzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,GAClG,OAAO,CAAC,GAAG,EAAE,CAAC,CAgBhB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getSubAccount as e } from "../symmio-contracts/account-layer/actions/get-sub-account.js";
|
|
2
|
+
import { getIsDelegationActive as t } from "../symmio-contracts/instant-layer/actions/get-is-delegation-active.js";
|
|
3
|
+
import { isAddressEqual as n } from "viem";
|
|
4
|
+
//#region src/gasless/delegation-preflight.ts
|
|
5
|
+
var r = /* @__PURE__ */ new WeakMap();
|
|
6
|
+
function i(t, n, i) {
|
|
7
|
+
let a = r.get(t);
|
|
8
|
+
a || (a = /* @__PURE__ */ new Map(), r.set(t, a));
|
|
9
|
+
let o = a, s = `${n}:${i.toLowerCase()}`, c = o.get(s);
|
|
10
|
+
if (c) return c;
|
|
11
|
+
let l = e(t, {
|
|
12
|
+
chainId: n,
|
|
13
|
+
account: i
|
|
14
|
+
}).then((e) => e.isExists ? e.owner : null);
|
|
15
|
+
return o.set(s, l), l.catch(() => {
|
|
16
|
+
o.get(s) === l && o.delete(s);
|
|
17
|
+
}), l;
|
|
18
|
+
}
|
|
19
|
+
async function a(e, r) {
|
|
20
|
+
let a = await i(e, r.chainId, r.signerAccount);
|
|
21
|
+
if (a === null || n(r.signer, a)) return [];
|
|
22
|
+
let o = [...new Set(r.selectors)], s = await Promise.all(o.map((n) => t(e, {
|
|
23
|
+
chainId: r.chainId,
|
|
24
|
+
account: r.signerAccount,
|
|
25
|
+
delegate: r.signer,
|
|
26
|
+
selector: n
|
|
27
|
+
})));
|
|
28
|
+
return o.filter((e, t) => !s[t]);
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { a as findUndelegatedGaslessSelectors, i as getCachedGaslessAccountOwner };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=delegation-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-preflight.js","names":[],"sources":["../../src/gasless/delegation-preflight.ts"],"sourcesContent":["import { isAddressEqual, type Address, type Hex } from \"viem\";\nimport type { Config } from \"../core/config\";\nimport { getSubAccount } from \"../symmio-contracts/account-layer/actions/get-sub-account\";\nimport { getIsDelegationActive } from \"../symmio-contracts/instant-layer/actions/get-is-delegation-active\";\n\n/**\n * One owner read per (config, chainId, sub-account).\n *\n * Cached for the config's lifetime, which is a deliberate trade: the AccountLayer\n * does expose `transferSubAccountOwnership`, so an owner is not strictly\n * immutable, but a transfer mid-session is rare and the alternative is an extra\n * RPC read on every relayed write. A stale entry costs a spurious delegation\n * probe, never a wrong authorization — the contract re-checks both the owner and\n * the delegation on execution.\n */\nconst accountOwners = new WeakMap<Config, Map<string, Promise<Address | null>>>();\n\n/**\n * The owning EOA of a sub-account, read once per config lifetime.\n *\n * The real promise is cached (so concurrent writes share the single in-flight\n * read instead of each issuing their own), and the entry is dropped on rejection\n * so a transient RPC failure cannot poison the config.\n *\n * @param config - The SDK config.\n * @param chainId - The chain the sub-account lives on.\n * @param account - The sub-account.\n * @returns The owner, or `null` when the AccountLayer knows no such sub-account.\n *\n * @internal\n */\nexport function getCachedGaslessAccountOwner(\n config: Config,\n chainId: number,\n account: Address,\n): Promise<Address | null> {\n let byAccount = accountOwners.get(config);\n if (!byAccount) {\n byAccount = new Map();\n accountOwners.set(config, byAccount);\n }\n const cache = byAccount;\n const key = `${chainId}:${account.toLowerCase()}`;\n const cached = cache.get(key);\n if (cached) return cached;\n\n const read = getSubAccount(config, { chainId, account }).then((detail) =>\n /**\n * An unknown or deleted sub-account reports `isExists: false` with a zero\n * `owner`. Returning that zero address would make every signer compare\n * unequal to the owner, so the dispatcher would classify even the real owner\n * as a delegate and reject the write with a misleading\n * `GASLESS_SIGNER_NOT_DELEGATED`. `null` instead means \"cannot establish an\n * owner\" and skips the pre-flight, leaving the contract to give the accurate\n * error.\n */\n detail.isExists ? detail.owner : null,\n );\n cache.set(key, read);\n read.catch(() => {\n if (cache.get(key) === read) cache.delete(key);\n });\n return read;\n}\n\n/**\n * Selectors the signing key may not relay under `signerAccount`.\n *\n * The owner needs no delegation, so an owner signer short-circuits after the\n * (cached) owner read with zero extra calls. Any other signer is a delegate — a\n * session key — and every distinct selector is checked against\n * `isDelegationActive` concurrently.\n *\n * @param config - The SDK config.\n * @param parameters - The chain, the signing key, the account it signs under, and the selectors it relays.\n * @returns The selectors with no active delegation; empty when the signer may\n * relay every call.\n *\n * @internal\n */\nexport async function findUndelegatedGaslessSelectors(\n config: Config,\n parameters: { chainId: number; signer: Address; signerAccount: Address; selectors: readonly Hex[] },\n): Promise<Hex[]> {\n const owner = await getCachedGaslessAccountOwner(config, parameters.chainId, parameters.signerAccount);\n if (owner === null || isAddressEqual(parameters.signer, owner)) return [];\n\n const selectors = [...new Set(parameters.selectors)];\n const active = await Promise.all(\n selectors.map((selector) =>\n getIsDelegationActive(config, {\n chainId: parameters.chainId,\n account: parameters.signerAccount,\n delegate: parameters.signer,\n selector,\n }),\n ),\n );\n return selectors.filter((_, index) => !active[index]);\n}\n"],"mappings":";;;;AAeA,IAAM,oBAAgB,IAAI,QAAsD;AAgBhF,SAAgB,EACd,GACA,GACA,GACyB;CACzB,IAAI,IAAY,EAAc,IAAI,CAAM;CACxC,AAAK,MACH,oBAAY,IAAI,IAAI,GACpB,EAAc,IAAI,GAAQ,CAAS;CAErC,IAAM,IAAQ,GACR,IAAM,GAAG,EAAQ,GAAG,EAAQ,YAAY,KACxC,IAAS,EAAM,IAAI,CAAG;CAC5B,IAAI,GAAQ,OAAO;CAEnB,IAAM,IAAO,EAAc,GAAQ;EAAE;EAAS;CAAQ,CAAC,EAAE,MAAM,MAU7D,EAAO,WAAW,EAAO,QAAQ,IACnC;CAKA,OAJA,EAAM,IAAI,GAAK,CAAI,GACnB,EAAK,YAAY;EACf,AAAI,EAAM,IAAI,CAAG,MAAM,KAAM,EAAM,OAAO,CAAG;CAC/C,CAAC,GACM;AACT;AAiBA,eAAsB,EACpB,GACA,GACgB;CAChB,IAAM,IAAQ,MAAM,EAA6B,GAAQ,EAAW,SAAS,EAAW,aAAa;CACrG,IAAI,MAAU,QAAQ,EAAe,EAAW,QAAQ,CAAK,GAAG,OAAO,CAAC;CAExE,IAAM,IAAY,CAAC,GAAG,IAAI,IAAI,EAAW,SAAS,CAAC,GAC7C,IAAS,MAAM,QAAQ,IAC3B,EAAU,KAAK,MACb,EAAsB,GAAQ;EAC5B,SAAS,EAAW;EACpB,SAAS,EAAW;EACpB,UAAU,EAAW;EACrB;CACF,CAAC,CACH,CACF;CACA,OAAO,EAAU,QAAQ,GAAG,MAAU,CAAC,EAAO,EAAM;AACtD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Address, Hash, Hex } from 'viem';
|
|
2
|
+
import { Config } from '../../core/config/index.js';
|
|
3
|
+
import { GaslessWriteOptions } from '../../shared/types/properties.js';
|
|
4
|
+
/** One inner call of a write the dispatcher may relay. @internal */
|
|
5
|
+
export interface GaslessDispatchCall {
|
|
6
|
+
/** Contract the calldata targets (core diamond or AccountLayer). */
|
|
7
|
+
target: Address;
|
|
8
|
+
/** Raw function calldata. */
|
|
9
|
+
callData: Hex;
|
|
10
|
+
}
|
|
11
|
+
/** Input the write seams hand to {@link maybeRelayAsGasless}. @internal */
|
|
12
|
+
export interface MaybeRelayAsGaslessParameters {
|
|
13
|
+
chainId?: number;
|
|
14
|
+
from?: Address;
|
|
15
|
+
/** The write's `gasless` parameter, verbatim. */
|
|
16
|
+
gasless: boolean | GaslessWriteOptions | undefined;
|
|
17
|
+
/** The calls, in execution order (a multi-call `_call` batch stays atomic as a relay batch). */
|
|
18
|
+
calls: readonly GaslessDispatchCall[];
|
|
19
|
+
/**
|
|
20
|
+
* The sub-account the operations run under. The `_call` seam knows it; the
|
|
21
|
+
* margin seam passes `virtualAccount` instead and the parent is resolved
|
|
22
|
+
* on-chain (or taken from `gasless.account`).
|
|
23
|
+
*/
|
|
24
|
+
signerAccount?: Address;
|
|
25
|
+
/** The virtual account of a margin write, for parent-sub-account resolution. */
|
|
26
|
+
virtualAccount?: Address;
|
|
27
|
+
/**
|
|
28
|
+
* An account a write targets that may be either a sub-account or a virtual
|
|
29
|
+
* account — the deposit seams cannot tell the two apart from their parameters.
|
|
30
|
+
* A VA resolves to its parent sub-account (a VA has no balance of its own to
|
|
31
|
+
* bill); anything else is used as the billing account unchanged. Unlike
|
|
32
|
+
* {@link MaybeRelayAsGaslessParameters.virtualAccount} this never throws for a
|
|
33
|
+
* non-VA address.
|
|
34
|
+
*/
|
|
35
|
+
accountMaybeVirtual?: Address;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The transparent gasless dispatcher. Called by relayable write actions before
|
|
39
|
+
* their wallet path: returns the relayer's broadcast transaction hash when the
|
|
40
|
+
* write was relayed, or `null` when the caller must proceed on the normal
|
|
41
|
+
* gas-paid wallet path (gasless off, unsupported selector, or a definitive
|
|
42
|
+
* pre-broadcast rejection under `fallback: "wallet"`).
|
|
43
|
+
*
|
|
44
|
+
* The full policy lives in the docs; the load-bearing rules are:
|
|
45
|
+
* - **202 is the point of no return** — after acceptance there is no wallet
|
|
46
|
+
* fallback ever, except a `rejected` terminal whose cause is a confirmed
|
|
47
|
+
* fee/quota limit (nothing was broadcast, so a wallet retry cannot
|
|
48
|
+
* double-execute).
|
|
49
|
+
* - A user's signature rejection always propagates — the user said no.
|
|
50
|
+
* - The returned hash behaves exactly like a wallet-submitted hash: the
|
|
51
|
+
* caller's receipt-wait and invalidation pipelines run unchanged.
|
|
52
|
+
* - A signer that is not the sub-account's owner is checked against its
|
|
53
|
+
* InstantLayer delegations **before** the signature prompt
|
|
54
|
+
* (`execution.preflightDelegation`, default on): a session key missing a
|
|
55
|
+
* selector throws `GASLESS_SIGNER_NOT_DELEGATED` — the selector set to grant
|
|
56
|
+
* is the one `getSessionKeySelectors` builds. Under `fallback: "wallet"` that
|
|
57
|
+
* rejection returns `null` instead, exactly like an exhausted free quota; note
|
|
58
|
+
* the wallet path will then fail too for a session key, which holds no gas
|
|
59
|
+
* and is not the owner — guarding that is the caller's concern, not this
|
|
60
|
+
* dispatcher's.
|
|
61
|
+
* - The fee quote runs **before** the signature prompt too
|
|
62
|
+
* (`execution.preflightFee`, default on). An exhausted daily free quota throws
|
|
63
|
+
* `GASLESS_FREE_QUOTA_EXHAUSTED` (or returns `null` under `fallback: "wallet"`);
|
|
64
|
+
* a quote the contract rejects throws `GASLESS_FEE_QUOTE_REVERTED` and a
|
|
65
|
+
* GaslessLayer without the multi-wallet interface throws
|
|
66
|
+
* `GASLESS_LAYER_INTERFACE_UNSUPPORTED`, neither with a fallback. A quote that
|
|
67
|
+
* fails for transport reasons does not block: the relayer's own simulation is
|
|
68
|
+
* authoritative.
|
|
69
|
+
*
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
export declare function maybeRelayAsGasless(config: Config, parameters: MaybeRelayAsGaslessParameters): Promise<Hash | null>;
|
|
73
|
+
//# sourceMappingURL=maybe-relay-as-gasless.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maybe-relay-as-gasless.d.ts","sourceRoot":"","sources":["../../../src/gasless/dispatch/maybe-relay-as-gasless.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AA8BzE,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB,6BAA6B;IAC7B,QAAQ,EAAE,GAAG,CAAC;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,OAAO,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACnD,gGAAgG;IAChG,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,6BAA6B,GACxC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CA6QtB"}
|