@oobe-protocol-labs/synapse-sap-sdk 0.13.0 → 0.15.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/cjs/accounts/index.js +286 -0
- package/dist/cjs/accounts/index.js.map +1 -0
- package/dist/cjs/client.js +125 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/constants/seeds.js +9 -9
- package/dist/cjs/constants/seeds.js.map +1 -1
- package/dist/cjs/constants.js +66 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/errors.js +260 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/events/index.js +37 -123
- package/dist/cjs/events/index.js.map +1 -1
- package/dist/cjs/idlTypes.js +4 -0
- package/dist/cjs/idlTypes.js.map +1 -0
- package/dist/cjs/index.js +75 -241
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instructions/agent.js +90 -0
- package/dist/cjs/instructions/agent.js.map +1 -0
- package/dist/cjs/instructions/attestation.js +113 -0
- package/dist/cjs/instructions/attestation.js.map +1 -0
- package/dist/cjs/instructions/digest.js +29 -0
- package/dist/cjs/instructions/digest.js.map +1 -0
- package/dist/cjs/instructions/dispute.js +117 -0
- package/dist/cjs/instructions/dispute.js.map +1 -0
- package/dist/cjs/instructions/escrow.js +102 -0
- package/dist/cjs/instructions/escrow.js.map +1 -0
- package/dist/cjs/instructions/global.js +29 -0
- package/dist/cjs/instructions/global.js.map +1 -0
- package/dist/cjs/instructions/index.js +31 -0
- package/dist/cjs/instructions/index.js.map +1 -0
- package/dist/cjs/instructions/indexing.js +222 -0
- package/dist/cjs/instructions/indexing.js.map +1 -0
- package/dist/cjs/instructions/misc.js +74 -0
- package/dist/cjs/instructions/misc.js.map +1 -0
- package/dist/cjs/instructions/session.js +90 -0
- package/dist/cjs/instructions/session.js.map +1 -0
- package/dist/cjs/instructions/staking.js +133 -0
- package/dist/cjs/instructions/staking.js.map +1 -0
- package/dist/cjs/instructions/subscription.js +81 -0
- package/dist/cjs/instructions/subscription.js.map +1 -0
- package/dist/cjs/instructions/tools.js +110 -0
- package/dist/cjs/instructions/tools.js.map +1 -0
- package/dist/cjs/instructions/vault.js +107 -0
- package/dist/cjs/instructions/vault.js.map +1 -0
- package/dist/cjs/pdas/index.js +120 -0
- package/dist/cjs/pdas/index.js.map +1 -0
- package/dist/cjs/registries/fairscale.js +1 -1
- package/dist/cjs/registries/fairscale.js.map +1 -1
- package/dist/cjs/registries/metaplex-bridge.js +1 -1
- package/dist/cjs/registries/metaplex-bridge.js.map +1 -1
- package/dist/cjs/types.js +45 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/escrow-validation.js +1 -1
- package/dist/cjs/utils/escrow-validation.js.map +1 -1
- package/dist/cjs/utils/index.js +32 -83
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/merchant-validator.js +5 -5
- package/dist/cjs/utils/merchant-validator.js.map +1 -1
- package/dist/cjs/utils/validate.js +236 -0
- package/dist/cjs/utils/validate.js.map +1 -0
- package/dist/cjs/utils/volume-curve.js +1 -1
- package/dist/cjs/utils/volume-curve.js.map +1 -1
- package/dist/esm/accounts/index.d.ts +11 -0
- package/dist/esm/accounts/index.d.ts.map +1 -0
- package/dist/esm/accounts/index.js +273 -0
- package/dist/esm/accounts/index.js.map +1 -0
- package/dist/esm/client.d.ts +55 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +87 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/constants/addresses.d.ts +117 -0
- package/dist/esm/constants/addresses.d.ts.map +1 -0
- package/dist/esm/constants/index.d.ts +31 -0
- package/dist/esm/constants/index.d.ts.map +1 -0
- package/dist/esm/constants/limits.d.ts +149 -0
- package/dist/esm/constants/limits.d.ts.map +1 -0
- package/{src/constants/network.ts → dist/esm/constants/network.d.ts} +23 -31
- package/dist/esm/constants/network.d.ts.map +1 -0
- package/{src/constants/payments.ts → dist/esm/constants/payments.d.ts} +11 -35
- package/dist/esm/constants/payments.d.ts.map +1 -0
- package/{src/constants/programs.ts → dist/esm/constants/programs.d.ts} +6 -20
- package/dist/esm/constants/programs.d.ts.map +1 -0
- package/dist/esm/constants/seeds.d.ts +80 -0
- package/dist/esm/constants/seeds.d.ts.map +1 -0
- package/dist/esm/constants/seeds.js +9 -9
- package/dist/esm/constants/seeds.js.map +1 -1
- package/dist/esm/constants.d.ts +39 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +41 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/core/client.d.ts +452 -0
- package/dist/esm/core/client.d.ts.map +1 -0
- package/dist/esm/core/connection.d.ts +305 -0
- package/dist/esm/core/connection.d.ts.map +1 -0
- package/{src/core/index.ts → dist/esm/core/index.d.ts} +1 -1
- package/dist/esm/core/index.d.ts.map +1 -0
- package/dist/esm/errors/index.d.ts +276 -0
- package/dist/esm/errors/index.d.ts.map +1 -0
- package/dist/esm/errors.d.ts +119 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +252 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/events/geyser.d.ts +150 -0
- package/dist/esm/events/geyser.d.ts.map +1 -0
- package/dist/esm/events/index.d.ts +17 -0
- package/dist/esm/events/index.d.ts.map +1 -0
- package/dist/esm/events/index.js +34 -122
- package/dist/esm/events/index.js.map +1 -1
- package/{src/idl/index.ts → dist/esm/idl/index.d.ts} +9 -15
- package/dist/esm/idl/index.d.ts.map +1 -0
- package/dist/esm/idlTypes.d.ts +925 -0
- package/dist/esm/idlTypes.d.ts.map +1 -0
- package/dist/esm/idlTypes.js +3 -0
- package/dist/esm/idlTypes.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -88
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instructions/agent.d.ts +71 -0
- package/dist/esm/instructions/agent.d.ts.map +1 -0
- package/dist/esm/instructions/agent.js +86 -0
- package/dist/esm/instructions/agent.js.map +1 -0
- package/dist/esm/instructions/attestation.d.ts +76 -0
- package/dist/esm/instructions/attestation.d.ts.map +1 -0
- package/dist/esm/instructions/attestation.js +109 -0
- package/dist/esm/instructions/attestation.js.map +1 -0
- package/dist/esm/instructions/digest.d.ts +20 -0
- package/dist/esm/instructions/digest.d.ts.map +1 -0
- package/dist/esm/instructions/digest.js +25 -0
- package/dist/esm/instructions/digest.js.map +1 -0
- package/dist/esm/instructions/dispute.d.ts +81 -0
- package/dist/esm/instructions/dispute.d.ts.map +1 -0
- package/dist/esm/instructions/dispute.js +113 -0
- package/dist/esm/instructions/dispute.js.map +1 -0
- package/dist/esm/instructions/escrow.d.ts +79 -0
- package/dist/esm/instructions/escrow.d.ts.map +1 -0
- package/dist/esm/instructions/escrow.js +98 -0
- package/dist/esm/instructions/escrow.js.map +1 -0
- package/dist/esm/instructions/global.d.ts +14 -0
- package/dist/esm/instructions/global.d.ts.map +1 -0
- package/dist/esm/instructions/global.js +25 -0
- package/dist/esm/instructions/global.js.map +1 -0
- package/dist/esm/instructions/index.d.ts +14 -0
- package/dist/esm/instructions/index.d.ts.map +1 -0
- package/dist/esm/instructions/index.js +15 -0
- package/dist/esm/instructions/index.js.map +1 -0
- package/dist/esm/instructions/indexing.d.ts +150 -0
- package/dist/esm/instructions/indexing.d.ts.map +1 -0
- package/dist/esm/instructions/indexing.js +218 -0
- package/dist/esm/instructions/indexing.js.map +1 -0
- package/dist/esm/instructions/memory.d.ts +8 -0
- package/dist/esm/instructions/memory.d.ts.map +1 -0
- package/dist/esm/instructions/memory.js +234 -0
- package/dist/esm/instructions/memory.js.map +1 -0
- package/dist/esm/instructions/misc.d.ts +50 -0
- package/dist/esm/instructions/misc.d.ts.map +1 -0
- package/dist/esm/instructions/misc.js +70 -0
- package/dist/esm/instructions/misc.js.map +1 -0
- package/dist/esm/instructions/session.d.ts +57 -0
- package/dist/esm/instructions/session.d.ts.map +1 -0
- package/dist/esm/instructions/session.js +86 -0
- package/dist/esm/instructions/session.js.map +1 -0
- package/dist/esm/instructions/staking.d.ts +85 -0
- package/dist/esm/instructions/staking.d.ts.map +1 -0
- package/dist/esm/instructions/staking.js +129 -0
- package/dist/esm/instructions/staking.js.map +1 -0
- package/dist/esm/instructions/subscription.d.ts +50 -0
- package/dist/esm/instructions/subscription.d.ts.map +1 -0
- package/dist/esm/instructions/subscription.js +77 -0
- package/dist/esm/instructions/subscription.js.map +1 -0
- package/dist/esm/instructions/tools.d.ts +88 -0
- package/dist/esm/instructions/tools.d.ts.map +1 -0
- package/dist/esm/instructions/tools.js +106 -0
- package/dist/esm/instructions/tools.js.map +1 -0
- package/dist/esm/instructions/vault.d.ts +84 -0
- package/dist/esm/instructions/vault.d.ts.map +1 -0
- package/dist/esm/instructions/vault.js +103 -0
- package/dist/esm/instructions/vault.js.map +1 -0
- package/dist/esm/modules/agent.d.ts +166 -0
- package/dist/esm/modules/agent.d.ts.map +1 -0
- package/dist/esm/modules/attestation.d.ts +96 -0
- package/dist/esm/modules/attestation.d.ts.map +1 -0
- package/dist/esm/modules/base.d.ts +161 -0
- package/dist/esm/modules/base.d.ts.map +1 -0
- package/dist/esm/modules/escrow-v2.d.ts +169 -0
- package/dist/esm/modules/escrow-v2.d.ts.map +1 -0
- package/dist/esm/modules/feedback.d.ts +105 -0
- package/dist/esm/modules/feedback.d.ts.map +1 -0
- package/{src/modules/index.ts → dist/esm/modules/index.d.ts} +1 -1
- package/dist/esm/modules/index.d.ts.map +1 -0
- package/dist/esm/modules/indexing.d.ts +200 -0
- package/dist/esm/modules/indexing.d.ts.map +1 -0
- package/dist/esm/modules/ledger.d.ts +150 -0
- package/dist/esm/modules/ledger.d.ts.map +1 -0
- package/dist/esm/modules/receipt.d.ts +77 -0
- package/dist/esm/modules/receipt.d.ts.map +1 -0
- package/dist/esm/modules/staking.d.ts +51 -0
- package/dist/esm/modules/staking.d.ts.map +1 -0
- package/dist/esm/modules/subscription.d.ts +33 -0
- package/dist/esm/modules/subscription.d.ts.map +1 -0
- package/dist/esm/modules/tools.d.ts +182 -0
- package/dist/esm/modules/tools.d.ts.map +1 -0
- package/dist/esm/modules/vault.d.ts +240 -0
- package/dist/esm/modules/vault.d.ts.map +1 -0
- package/dist/esm/parser/client.d.ts +123 -0
- package/dist/esm/parser/client.d.ts.map +1 -0
- package/dist/esm/parser/complete.d.ts +90 -0
- package/dist/esm/parser/complete.d.ts.map +1 -0
- package/{src/parser/index.ts → dist/esm/parser/index.d.ts} +6 -37
- package/dist/esm/parser/index.d.ts.map +1 -0
- package/dist/esm/parser/inner.d.ts +114 -0
- package/dist/esm/parser/inner.d.ts.map +1 -0
- package/{src/parser/instructions.ts → dist/esm/parser/instructions.d.ts} +4 -63
- package/dist/esm/parser/instructions.d.ts.map +1 -0
- package/dist/esm/parser/transaction.d.ts +77 -0
- package/dist/esm/parser/transaction.d.ts.map +1 -0
- package/dist/esm/parser/types.d.ts +154 -0
- package/dist/esm/parser/types.d.ts.map +1 -0
- package/{src/pda/index.ts → dist/esm/pda/index.d.ts} +33 -442
- package/dist/esm/pda/index.d.ts.map +1 -0
- package/dist/esm/pdas/index.d.ts +37 -0
- package/dist/esm/pdas/index.d.ts.map +1 -0
- package/dist/esm/pdas/index.js +101 -0
- package/dist/esm/pdas/index.js.map +1 -0
- package/dist/esm/plugin/index.d.ts +171 -0
- package/dist/esm/plugin/index.d.ts.map +1 -0
- package/dist/esm/plugin/protocols.d.ts +152 -0
- package/dist/esm/plugin/protocols.d.ts.map +1 -0
- package/dist/esm/plugin/schemas.d.ts +829 -0
- package/dist/esm/plugin/schemas.d.ts.map +1 -0
- package/dist/esm/postgres/adapter.d.ts +355 -0
- package/dist/esm/postgres/adapter.d.ts.map +1 -0
- package/dist/esm/postgres/index.d.ts +24 -0
- package/dist/esm/postgres/index.d.ts.map +1 -0
- package/dist/esm/postgres/serializers.d.ts +30 -0
- package/dist/esm/postgres/serializers.d.ts.map +1 -0
- package/dist/esm/postgres/sync.d.ts +156 -0
- package/dist/esm/postgres/sync.d.ts.map +1 -0
- package/dist/esm/postgres/types.d.ts +167 -0
- package/dist/esm/postgres/types.d.ts.map +1 -0
- package/dist/esm/registries/builder.d.ts +340 -0
- package/dist/esm/registries/builder.d.ts.map +1 -0
- package/dist/esm/registries/discovery.d.ts +333 -0
- package/dist/esm/registries/discovery.d.ts.map +1 -0
- package/dist/esm/registries/fairscale.d.ts +680 -0
- package/dist/esm/registries/fairscale.d.ts.map +1 -0
- package/dist/esm/registries/fairscale.js +1 -1
- package/dist/esm/registries/fairscale.js.map +1 -1
- package/dist/esm/registries/index.d.ts +52 -0
- package/dist/esm/registries/index.d.ts.map +1 -0
- package/dist/esm/registries/metaplex-bridge.d.ts +489 -0
- package/dist/esm/registries/metaplex-bridge.d.ts.map +1 -0
- package/dist/esm/registries/metaplex-bridge.js +1 -1
- package/dist/esm/registries/metaplex-bridge.js.map +1 -1
- package/dist/esm/registries/session.d.ts +323 -0
- package/dist/esm/registries/session.d.ts.map +1 -0
- package/dist/esm/registries/x402.d.ts +530 -0
- package/dist/esm/registries/x402.d.ts.map +1 -0
- package/dist/esm/types/accounts.d.ts +765 -0
- package/dist/esm/types/accounts.d.ts.map +1 -0
- package/dist/esm/types/common.d.ts +166 -0
- package/dist/esm/types/common.d.ts.map +1 -0
- package/dist/esm/types/endpoint.d.ts +161 -0
- package/dist/esm/types/endpoint.d.ts.map +1 -0
- package/dist/esm/types/enums.d.ts +353 -0
- package/dist/esm/types/enums.d.ts.map +1 -0
- package/dist/esm/types/index.d.ts +29 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/instructions.d.ts +400 -0
- package/dist/esm/types/instructions.d.ts.map +1 -0
- package/dist/esm/types.d.ts +236 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +40 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/anchor-errors.d.ts +61 -0
- package/dist/esm/utils/anchor-errors.d.ts.map +1 -0
- package/dist/esm/utils/endpoint-validator.d.ts +110 -0
- package/dist/esm/utils/endpoint-validator.d.ts.map +1 -0
- package/dist/esm/utils/escrow-validation.d.ts +145 -0
- package/dist/esm/utils/escrow-validation.d.ts.map +1 -0
- package/dist/esm/utils/escrow-validation.js +1 -1
- package/dist/esm/utils/escrow-validation.js.map +1 -1
- package/{src/utils/hash.ts → dist/esm/utils/hash.d.ts} +4 -42
- package/dist/esm/utils/hash.d.ts.map +1 -0
- package/dist/esm/utils/index.d.ts +6 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +16 -33
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/merchant-validator.d.ts +176 -0
- package/dist/esm/utils/merchant-validator.d.ts.map +1 -0
- package/dist/esm/utils/merchant-validator.js +1 -1
- package/dist/esm/utils/merchant-validator.js.map +1 -1
- package/dist/esm/utils/network-normalizer.d.ts +120 -0
- package/dist/esm/utils/network-normalizer.d.ts.map +1 -0
- package/dist/esm/utils/priority-fee.d.ts +205 -0
- package/dist/esm/utils/priority-fee.d.ts.map +1 -0
- package/dist/esm/utils/rpc-strategy.d.ts +172 -0
- package/dist/esm/utils/rpc-strategy.d.ts.map +1 -0
- package/dist/esm/utils/schemas.d.ts +351 -0
- package/dist/esm/utils/schemas.d.ts.map +1 -0
- package/{src/utils/serialization.ts → dist/esm/utils/serialization.d.ts} +3 -32
- package/dist/esm/utils/serialization.d.ts.map +1 -0
- package/dist/esm/utils/validate.d.ts +66 -0
- package/dist/esm/utils/validate.d.ts.map +1 -0
- package/dist/esm/utils/validate.js +221 -0
- package/dist/esm/utils/validate.js.map +1 -0
- package/{src/utils/validation.ts → dist/esm/utils/validation.d.ts} +2 -9
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/{src/utils/volume-curve.ts → dist/esm/utils/volume-curve.d.ts} +2 -73
- package/dist/esm/utils/volume-curve.d.ts.map +1 -0
- package/dist/esm/utils/volume-curve.js +1 -1
- package/dist/esm/utils/volume-curve.js.map +1 -1
- package/dist/esm/utils/x402-direct.d.ts +114 -0
- package/dist/esm/utils/x402-direct.d.ts.map +1 -0
- package/dist/types/constants/seeds.d.ts +2 -0
- package/dist/types/constants/seeds.d.ts.map +1 -1
- package/dist/types/core/client.d.ts +21 -6
- package/dist/types/core/client.d.ts.map +1 -1
- package/dist/types/errors/index.d.ts +59 -0
- package/dist/types/errors/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/agent.d.ts +9 -19
- package/dist/types/modules/agent.d.ts.map +1 -1
- package/dist/types/modules/attestation.d.ts.map +1 -1
- package/dist/types/modules/base.d.ts +54 -0
- package/dist/types/modules/base.d.ts.map +1 -1
- package/dist/types/modules/escrow-v2.d.ts +117 -1
- package/dist/types/modules/escrow-v2.d.ts.map +1 -1
- package/dist/types/modules/index.d.ts +1 -2
- package/dist/types/modules/index.d.ts.map +1 -1
- package/dist/types/modules/receipt.d.ts +14 -0
- package/dist/types/modules/receipt.d.ts.map +1 -1
- package/dist/types/modules/subscription.d.ts.map +1 -1
- package/dist/types/modules/tools.d.ts +0 -10
- package/dist/types/modules/tools.d.ts.map +1 -1
- package/dist/types/modules/vault.d.ts.map +1 -1
- package/dist/types/pda/index.d.ts +17 -0
- package/dist/types/pda/index.d.ts.map +1 -1
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/registries/builder.d.ts +2 -9
- package/dist/types/registries/builder.d.ts.map +1 -1
- package/dist/types/registries/metaplex-bridge.d.ts.map +1 -1
- package/dist/types/registries/session.d.ts +3 -9
- package/dist/types/registries/session.d.ts.map +1 -1
- package/dist/types/registries/x402.d.ts +2 -9
- package/dist/types/registries/x402.d.ts.map +1 -1
- package/dist/types/types/accounts.d.ts +52 -0
- package/dist/types/types/accounts.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/rpc-strategy.d.ts +7 -0
- package/dist/types/utils/rpc-strategy.d.ts.map +1 -1
- package/package.json +59 -183
- package/src/constants/addresses.ts +0 -162
- package/src/constants/index.ts +0 -69
- package/src/constants/limits.ts +0 -165
- package/src/constants/seeds.ts +0 -85
- package/src/core/client.ts +0 -583
- package/src/core/connection.ts +0 -461
- package/src/errors/index.ts +0 -346
- package/src/events/geyser.ts +0 -384
- package/src/events/index.ts +0 -335
- package/src/events/yellowstone.d.ts +0 -7
- package/src/idl/synapse_agent_sap.json +0 -14595
- package/src/index.ts +0 -421
- package/src/modules/agent.ts +0 -319
- package/src/modules/attestation.ts +0 -168
- package/src/modules/base.ts +0 -247
- package/src/modules/escrow-v2.ts +0 -871
- package/src/modules/escrow.ts +0 -439
- package/src/modules/feedback.ts +0 -186
- package/src/modules/indexing.ts +0 -444
- package/src/modules/ledger.ts +0 -262
- package/src/modules/receipt.ts +0 -212
- package/src/modules/staking.ts +0 -223
- package/src/modules/subscription.ts +0 -147
- package/src/modules/tools.ts +0 -454
- package/src/modules/vault.ts +0 -558
- package/src/parser/client.ts +0 -211
- package/src/parser/complete.ts +0 -232
- package/src/parser/inner.ts +0 -255
- package/src/parser/transaction.ts +0 -200
- package/src/parser/types.ts +0 -182
- package/src/plugin/index.ts +0 -1224
- package/src/plugin/protocols.ts +0 -404
- package/src/plugin/schemas.ts +0 -941
- package/src/postgres/adapter.ts +0 -904
- package/src/postgres/index.ts +0 -59
- package/src/postgres/schema.sql +0 -683
- package/src/postgres/serializers.ts +0 -485
- package/src/postgres/sync.ts +0 -340
- package/src/postgres/types.ts +0 -245
- package/src/registries/builder.ts +0 -607
- package/src/registries/discovery.ts +0 -572
- package/src/registries/fairscale.ts +0 -1278
- package/src/registries/index.ts +0 -143
- package/src/registries/metaplex-bridge.ts +0 -1199
- package/src/registries/session.ts +0 -613
- package/src/registries/x402.ts +0 -1048
- package/src/types/accounts.ts +0 -858
- package/src/types/common.ts +0 -187
- package/src/types/endpoint.ts +0 -181
- package/src/types/enums.ts +0 -333
- package/src/types/index.ts +0 -121
- package/src/types/instructions.ts +0 -453
- package/src/utils/anchor-errors.ts +0 -461
- package/src/utils/endpoint-validator.ts +0 -300
- package/src/utils/escrow-validation.ts +0 -301
- package/src/utils/index.ts +0 -118
- package/src/utils/merchant-validator.ts +0 -359
- package/src/utils/network-normalizer.ts +0 -240
- package/src/utils/priority-fee.ts +0 -325
- package/src/utils/rpc-strategy.ts +0 -322
- package/src/utils/schemas.ts +0 -359
- package/src/utils/x402-direct.ts +0 -370
- /package/dist/{types → esm}/modules/escrow.d.ts +0 -0
- /package/dist/{types → esm}/modules/escrow.d.ts.map +0 -0
package/src/events/geyser.ts
DELETED
|
@@ -1,384 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module events/geyser
|
|
3
|
-
* @description Yellowstone gRPC (Geyser) event stream for SAP v2.
|
|
4
|
-
*
|
|
5
|
-
* Drop-in alternative to the WebSocket `connection.onLogs()` pipeline.
|
|
6
|
-
* Uses Triton / Helius / any Yellowstone-compatible gRPC endpoint to
|
|
7
|
-
* receive program transaction updates with sub-second latency and
|
|
8
|
-
* automatic reconnection.
|
|
9
|
-
*
|
|
10
|
-
* @category Events
|
|
11
|
-
* @since v0.6.3
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* import { GeyserEventStream } from "@oobe-protocol-labs/synapse-sap-sdk";
|
|
16
|
-
* import { EventParser } from "@oobe-protocol-labs/synapse-sap-sdk";
|
|
17
|
-
*
|
|
18
|
-
* const stream = new GeyserEventStream({
|
|
19
|
-
* endpoint: "https://grpc.triton.one",
|
|
20
|
-
* token: process.env.GEYSER_TOKEN!,
|
|
21
|
-
* programId: "SAPpUhsWLJG1FfkGRcXagEDMrMsWGjbky7AyhGpFETZ",
|
|
22
|
-
* });
|
|
23
|
-
*
|
|
24
|
-
* const parser = new EventParser(program);
|
|
25
|
-
*
|
|
26
|
-
* stream.on("logs", (logs, signature, slot) => {
|
|
27
|
-
* const events = parser.parseLogs(logs);
|
|
28
|
-
* for (const event of events) {
|
|
29
|
-
* console.log(event.name, event.data);
|
|
30
|
-
* }
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
* stream.on("error", (err) => console.error("gRPC error:", err));
|
|
34
|
-
*
|
|
35
|
-
* await stream.connect();
|
|
36
|
-
* // ... later
|
|
37
|
-
* await stream.disconnect();
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
import { EventEmitter } from "events";
|
|
42
|
-
|
|
43
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
44
|
-
// Types
|
|
45
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Configuration for the Yellowstone gRPC event stream.
|
|
49
|
-
*
|
|
50
|
-
* @interface GeyserConfig
|
|
51
|
-
* @since v0.6.3
|
|
52
|
-
*/
|
|
53
|
-
export interface GeyserConfig {
|
|
54
|
-
/** Yellowstone gRPC endpoint URL (e.g. "https://grpc.triton.one") */
|
|
55
|
-
endpoint: string;
|
|
56
|
-
|
|
57
|
-
/** Authentication token for the gRPC endpoint */
|
|
58
|
-
token: string;
|
|
59
|
-
|
|
60
|
-
/** SAP program ID to filter. Defaults to SAP v2 program. */
|
|
61
|
-
programId?: string;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Commitment level for the subscription.
|
|
65
|
-
* @default "confirmed"
|
|
66
|
-
*/
|
|
67
|
-
commitment?: "processed" | "confirmed" | "finalized";
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Automatically reconnect on disconnect.
|
|
71
|
-
* @default true
|
|
72
|
-
*/
|
|
73
|
-
autoReconnect?: boolean;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Delay between reconnection attempts in ms.
|
|
77
|
-
* @default 3000
|
|
78
|
-
*/
|
|
79
|
-
reconnectDelayMs?: number;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Maximum number of reconnection attempts. 0 = unlimited.
|
|
83
|
-
* @default 0
|
|
84
|
-
*/
|
|
85
|
-
maxReconnectAttempts?: number;
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Include failed transactions in the stream.
|
|
89
|
-
* @default false
|
|
90
|
-
*/
|
|
91
|
-
includeFailedTxs?: boolean;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Events emitted by {@link GeyserEventStream}.
|
|
96
|
-
*
|
|
97
|
-
* @interface GeyserStreamEvents
|
|
98
|
-
* @since v0.6.3
|
|
99
|
-
*/
|
|
100
|
-
export interface GeyserStreamEvents {
|
|
101
|
-
/**
|
|
102
|
-
* Emitted for each transaction's log messages.
|
|
103
|
-
* Same shape as `connection.onLogs()` callback — plug into `EventParser.parseLogs()`.
|
|
104
|
-
*/
|
|
105
|
-
logs: (logs: string[], signature: string, slot: number) => void;
|
|
106
|
-
|
|
107
|
-
/** Emitted when the gRPC stream connects or reconnects. */
|
|
108
|
-
connected: () => void;
|
|
109
|
-
|
|
110
|
-
/** Emitted when the stream disconnects. */
|
|
111
|
-
disconnected: (reason: string) => void;
|
|
112
|
-
|
|
113
|
-
/** Emitted on transport or parsing errors. */
|
|
114
|
-
error: (err: Error) => void;
|
|
115
|
-
|
|
116
|
-
/** Emitted on reconnection attempt. */
|
|
117
|
-
reconnecting: (attempt: number) => void;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
121
|
-
// Constants
|
|
122
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
123
|
-
|
|
124
|
-
const SAP_PROGRAM_ID = "SAPpUhsWLJG1FfkGRcXagEDMrMsWGjbky7AyhGpFETZ";
|
|
125
|
-
|
|
126
|
-
const COMMITMENT_MAP: Record<string, number> = {
|
|
127
|
-
processed: 0,
|
|
128
|
-
confirmed: 1,
|
|
129
|
-
finalized: 2,
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
133
|
-
// GeyserEventStream
|
|
134
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Yellowstone gRPC event stream for SAP v2 programs.
|
|
138
|
-
*
|
|
139
|
-
* Wraps `@triton-one/yellowstone-grpc` and emits parsed log lines
|
|
140
|
-
* compatible with the existing {@link EventParser}.
|
|
141
|
-
*
|
|
142
|
-
* @name GeyserEventStream
|
|
143
|
-
* @category Events
|
|
144
|
-
* @since v0.6.3
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```ts
|
|
148
|
-
* const stream = new GeyserEventStream({
|
|
149
|
-
* endpoint: "https://grpc.triton.one",
|
|
150
|
-
* token: process.env.GEYSER_TOKEN!,
|
|
151
|
-
* });
|
|
152
|
-
*
|
|
153
|
-
* stream.on("logs", (logs, sig, slot) => {
|
|
154
|
-
* const events = parser.parseLogs(logs);
|
|
155
|
-
* events.forEach(e => db.insertEvent(e));
|
|
156
|
-
* });
|
|
157
|
-
*
|
|
158
|
-
* await stream.connect();
|
|
159
|
-
* ```
|
|
160
|
-
*/
|
|
161
|
-
export class GeyserEventStream extends EventEmitter {
|
|
162
|
-
private readonly config: Required<GeyserConfig>;
|
|
163
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
164
|
-
private client: any = null;
|
|
165
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
166
|
-
private stream: any = null;
|
|
167
|
-
private reconnectAttempts = 0;
|
|
168
|
-
private _connected = false;
|
|
169
|
-
private _stopped = false;
|
|
170
|
-
|
|
171
|
-
constructor(config: GeyserConfig) {
|
|
172
|
-
super();
|
|
173
|
-
this.config = {
|
|
174
|
-
endpoint: config.endpoint,
|
|
175
|
-
token: config.token,
|
|
176
|
-
programId: config.programId ?? SAP_PROGRAM_ID,
|
|
177
|
-
commitment: config.commitment ?? "confirmed",
|
|
178
|
-
autoReconnect: config.autoReconnect ?? true,
|
|
179
|
-
reconnectDelayMs: config.reconnectDelayMs ?? 3_000,
|
|
180
|
-
maxReconnectAttempts: config.maxReconnectAttempts ?? 0,
|
|
181
|
-
includeFailedTxs: config.includeFailedTxs ?? false,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/** Whether the gRPC stream is currently connected. */
|
|
186
|
-
get connected(): boolean {
|
|
187
|
-
return this._connected;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Connect to the Yellowstone gRPC endpoint and start streaming.
|
|
192
|
-
*
|
|
193
|
-
* @throws If `@triton-one/yellowstone-grpc` is not installed.
|
|
194
|
-
*/
|
|
195
|
-
async connect(): Promise<void> {
|
|
196
|
-
this._stopped = false;
|
|
197
|
-
this.reconnectAttempts = 0;
|
|
198
|
-
|
|
199
|
-
// Dynamic import — yellowstone is an optional peer dependency
|
|
200
|
-
let YellowstoneClient: new (...args: unknown[]) => unknown;
|
|
201
|
-
try {
|
|
202
|
-
const mod = await import("@triton-one/yellowstone-grpc");
|
|
203
|
-
YellowstoneClient = mod.default ?? mod.Client;
|
|
204
|
-
} catch {
|
|
205
|
-
throw new Error(
|
|
206
|
-
"Missing dependency: @triton-one/yellowstone-grpc\n" +
|
|
207
|
-
"Install it with: npm i @triton-one/yellowstone-grpc",
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
212
|
-
this.client = new (YellowstoneClient as any)(
|
|
213
|
-
this.config.endpoint,
|
|
214
|
-
this.config.token,
|
|
215
|
-
undefined, // TLS options — use defaults
|
|
216
|
-
);
|
|
217
|
-
|
|
218
|
-
await this.subscribe();
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Disconnect from the gRPC stream and stop reconnection.
|
|
223
|
-
*/
|
|
224
|
-
async disconnect(): Promise<void> {
|
|
225
|
-
this._stopped = true;
|
|
226
|
-
this._connected = false;
|
|
227
|
-
|
|
228
|
-
if (this.stream) {
|
|
229
|
-
try {
|
|
230
|
-
this.stream.cancel?.();
|
|
231
|
-
this.stream = null;
|
|
232
|
-
} catch {
|
|
233
|
-
// ignore cancel errors
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
this.emit("disconnected", "manual");
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// ─── Internal ──────────────────────────────────────
|
|
241
|
-
|
|
242
|
-
private async subscribe(): Promise<void> {
|
|
243
|
-
if (!this.client || this._stopped) return;
|
|
244
|
-
|
|
245
|
-
try {
|
|
246
|
-
this.stream = await this.client.subscribe();
|
|
247
|
-
} catch (err) {
|
|
248
|
-
this.emit("error", err instanceof Error ? err : new Error(String(err)));
|
|
249
|
-
await this.maybeReconnect();
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// Build the subscription request
|
|
254
|
-
const request = {
|
|
255
|
-
accounts: {},
|
|
256
|
-
slots: {},
|
|
257
|
-
transactions: {
|
|
258
|
-
sap: {
|
|
259
|
-
vote: false,
|
|
260
|
-
failed: this.config.includeFailedTxs,
|
|
261
|
-
signature: undefined,
|
|
262
|
-
accountInclude: [this.config.programId],
|
|
263
|
-
accountExclude: [],
|
|
264
|
-
accountRequired: [],
|
|
265
|
-
},
|
|
266
|
-
},
|
|
267
|
-
transactionsStatus: {},
|
|
268
|
-
blocks: {},
|
|
269
|
-
blocksMeta: {},
|
|
270
|
-
entry: {},
|
|
271
|
-
commitment: COMMITMENT_MAP[this.config.commitment] ?? 1,
|
|
272
|
-
accountsDataSlice: [],
|
|
273
|
-
ping: { id: 1 },
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
// Send subscription
|
|
277
|
-
try {
|
|
278
|
-
await new Promise<void>((resolve, reject) => {
|
|
279
|
-
this.stream.write(request, (err: Error | null) => {
|
|
280
|
-
if (err) reject(err);
|
|
281
|
-
else resolve();
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
} catch (err) {
|
|
285
|
-
this.emit("error", err instanceof Error ? err : new Error(String(err)));
|
|
286
|
-
await this.maybeReconnect();
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
this._connected = true;
|
|
291
|
-
this.reconnectAttempts = 0;
|
|
292
|
-
this.emit("connected");
|
|
293
|
-
|
|
294
|
-
// Listen for data
|
|
295
|
-
this.stream.on("data", (data: GeyserUpdateMessage) => {
|
|
296
|
-
try {
|
|
297
|
-
this.handleMessage(data);
|
|
298
|
-
} catch (err) {
|
|
299
|
-
this.emit("error", err instanceof Error ? err : new Error(String(err)));
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
this.stream.on("error", (err: Error) => {
|
|
304
|
-
this.emit("error", err);
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
this.stream.on("end", () => {
|
|
308
|
-
this._connected = false;
|
|
309
|
-
this.emit("disconnected", "stream-end");
|
|
310
|
-
this.maybeReconnect();
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
this.stream.on("close", () => {
|
|
314
|
-
this._connected = false;
|
|
315
|
-
this.emit("disconnected", "stream-close");
|
|
316
|
-
this.maybeReconnect();
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
private handleMessage(data: GeyserUpdateMessage): void {
|
|
321
|
-
// Respond to pings to keep the stream alive
|
|
322
|
-
if (data.ping) {
|
|
323
|
-
this.stream?.write({ ping: { id: data.ping.id } }, () => {});
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Extract transaction data
|
|
328
|
-
const tx = data.transaction;
|
|
329
|
-
if (!tx?.transaction?.transaction) return;
|
|
330
|
-
|
|
331
|
-
const meta = tx.transaction.meta;
|
|
332
|
-
if (!meta) return;
|
|
333
|
-
|
|
334
|
-
// Extract log messages from the transaction meta
|
|
335
|
-
const logs: string[] = meta.logMessages ?? [];
|
|
336
|
-
if (logs.length === 0) return;
|
|
337
|
-
|
|
338
|
-
const signature = tx.transaction.signature
|
|
339
|
-
? Buffer.from(tx.transaction.signature).toString("base64")
|
|
340
|
-
: "unknown";
|
|
341
|
-
|
|
342
|
-
const slot = Number(tx.slot ?? 0);
|
|
343
|
-
|
|
344
|
-
this.emit("logs", logs, signature, slot);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
private async maybeReconnect(): Promise<void> {
|
|
348
|
-
if (this._stopped || !this.config.autoReconnect) return;
|
|
349
|
-
|
|
350
|
-
const max = this.config.maxReconnectAttempts;
|
|
351
|
-
if (max > 0 && this.reconnectAttempts >= max) {
|
|
352
|
-
this.emit(
|
|
353
|
-
"error",
|
|
354
|
-
new Error(`Max reconnect attempts (${max}) exceeded`),
|
|
355
|
-
);
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
this.reconnectAttempts++;
|
|
360
|
-
this.emit("reconnecting", this.reconnectAttempts);
|
|
361
|
-
|
|
362
|
-
await new Promise((r) => setTimeout(r, this.config.reconnectDelayMs));
|
|
363
|
-
|
|
364
|
-
if (!this._stopped) {
|
|
365
|
-
await this.subscribe();
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
// ─── Internal Yellowstone message types ─────────────
|
|
371
|
-
|
|
372
|
-
interface GeyserUpdateMessage {
|
|
373
|
-
ping?: { id: number };
|
|
374
|
-
transaction?: {
|
|
375
|
-
slot?: string | number;
|
|
376
|
-
transaction?: {
|
|
377
|
-
signature?: Uint8Array;
|
|
378
|
-
transaction?: unknown;
|
|
379
|
-
meta?: {
|
|
380
|
-
logMessages?: string[];
|
|
381
|
-
};
|
|
382
|
-
};
|
|
383
|
-
};
|
|
384
|
-
}
|
package/src/events/index.ts
DELETED
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module events
|
|
3
|
-
* @description Decode SAP v2 events from transaction logs.
|
|
4
|
-
*
|
|
5
|
-
* Uses Anchor's event parser under the hood. Provides a
|
|
6
|
-
* strongly-typed, filterable event stream.
|
|
7
|
-
*
|
|
8
|
-
* @category Events
|
|
9
|
-
* @since v0.1.0
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { EventParser } from "@synapse-sap/sdk/events";
|
|
14
|
-
*
|
|
15
|
-
* const events = client.events.parseLogs(txLogs);
|
|
16
|
-
* for (const event of events) {
|
|
17
|
-
* if (event.name === "PaymentSettledEvent") {
|
|
18
|
-
* console.log(event.data);
|
|
19
|
-
* }
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
import { type Program, BN, EventParser as AnchorEventParser } from "@coral-xyz/anchor";
|
|
25
|
-
import type { PublicKey } from "@solana/web3.js";
|
|
26
|
-
|
|
27
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
28
|
-
// Event Data Types
|
|
29
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Decoded payload for the `RegisteredEvent` emitted when a new agent is registered.
|
|
33
|
-
*
|
|
34
|
-
* @interface RegisteredEventData
|
|
35
|
-
* @name RegisteredEventData
|
|
36
|
-
* @description Contains the agent PDA, owner wallet, display name, capabilities list, and timestamp.
|
|
37
|
-
* @category Events
|
|
38
|
-
* @since v0.1.0
|
|
39
|
-
* @see {@link SapEvent}
|
|
40
|
-
*/
|
|
41
|
-
export interface RegisteredEventData {
|
|
42
|
-
readonly name: "RegisteredEvent";
|
|
43
|
-
readonly data: {
|
|
44
|
-
agent: PublicKey;
|
|
45
|
-
wallet: PublicKey;
|
|
46
|
-
name: string;
|
|
47
|
-
capabilities: string[];
|
|
48
|
-
timestamp: BN;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Decoded payload for the `UpdatedEvent` emitted when an agent’s profile is modified.
|
|
54
|
-
*
|
|
55
|
-
* @interface UpdatedEventData
|
|
56
|
-
* @name UpdatedEventData
|
|
57
|
-
* @description Contains the agent PDA, owner wallet, a list of changed field names, and timestamp.
|
|
58
|
-
* @category Events
|
|
59
|
-
* @since v0.1.0
|
|
60
|
-
* @see {@link SapEvent}
|
|
61
|
-
*/
|
|
62
|
-
export interface UpdatedEventData {
|
|
63
|
-
readonly name: "UpdatedEvent";
|
|
64
|
-
readonly data: {
|
|
65
|
-
agent: PublicKey;
|
|
66
|
-
wallet: PublicKey;
|
|
67
|
-
updatedFields: string[];
|
|
68
|
-
timestamp: BN;
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Decoded payload for the `FeedbackEvent` emitted when a reviewer submits feedback.
|
|
74
|
-
*
|
|
75
|
-
* @interface FeedbackEventData
|
|
76
|
-
* @name FeedbackEventData
|
|
77
|
-
* @description Contains the agent PDA, reviewer wallet, numeric score, tag, and timestamp.
|
|
78
|
-
* @category Events
|
|
79
|
-
* @since v0.1.0
|
|
80
|
-
* @see {@link SapEvent}
|
|
81
|
-
*/
|
|
82
|
-
export interface FeedbackEventData {
|
|
83
|
-
readonly name: "FeedbackEvent";
|
|
84
|
-
readonly data: {
|
|
85
|
-
agent: PublicKey;
|
|
86
|
-
reviewer: PublicKey;
|
|
87
|
-
score: number;
|
|
88
|
-
tag: string;
|
|
89
|
-
timestamp: BN;
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Decoded payload for the `MemoryInscribedEvent` emitted when data is written to a vault.
|
|
95
|
-
*
|
|
96
|
-
* @interface MemoryInscribedEventData
|
|
97
|
-
* @name MemoryInscribedEventData
|
|
98
|
-
* @description Contains vault/session PDAs, sequence info, encrypted data, nonce, content hash,
|
|
99
|
-
* fragment metadata, compression flag, and timestamp.
|
|
100
|
-
* @category Events
|
|
101
|
-
* @since v0.1.0
|
|
102
|
-
* @see {@link SapEvent}
|
|
103
|
-
*/
|
|
104
|
-
export interface MemoryInscribedEventData {
|
|
105
|
-
readonly name: "MemoryInscribedEvent";
|
|
106
|
-
readonly data: {
|
|
107
|
-
vault: PublicKey;
|
|
108
|
-
session: PublicKey;
|
|
109
|
-
sequence: number;
|
|
110
|
-
epochIndex: number;
|
|
111
|
-
encryptedData: number[];
|
|
112
|
-
nonce: number[];
|
|
113
|
-
contentHash: number[];
|
|
114
|
-
totalFragments: number;
|
|
115
|
-
fragmentIndex: number;
|
|
116
|
-
compression: number;
|
|
117
|
-
dataLen: number;
|
|
118
|
-
nonceVersion: number;
|
|
119
|
-
timestamp: BN;
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Decoded payload for the `PaymentSettledEvent` emitted when an escrow settlement occurs.
|
|
125
|
-
*
|
|
126
|
-
* @interface PaymentSettledEventData
|
|
127
|
-
* @name PaymentSettledEventData
|
|
128
|
-
* @description Contains escrow/agent/depositor PDAs, settlement counts, amounts, service hash,
|
|
129
|
-
* and remaining balance.
|
|
130
|
-
* @category Events
|
|
131
|
-
* @since v0.1.0
|
|
132
|
-
* @see {@link SapEvent}
|
|
133
|
-
*/
|
|
134
|
-
export interface PaymentSettledEventData {
|
|
135
|
-
readonly name: "PaymentSettledEvent";
|
|
136
|
-
readonly data: {
|
|
137
|
-
escrow: PublicKey;
|
|
138
|
-
agent: PublicKey;
|
|
139
|
-
depositor: PublicKey;
|
|
140
|
-
callsSettled: BN;
|
|
141
|
-
amount: BN;
|
|
142
|
-
serviceHash: number[];
|
|
143
|
-
totalCallsSettled: BN;
|
|
144
|
-
remainingBalance: BN;
|
|
145
|
-
timestamp: BN;
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Decoded payload for the `LedgerEntryEvent` emitted when data is appended to a ledger.
|
|
151
|
-
*
|
|
152
|
-
* @interface LedgerEntryEventData
|
|
153
|
-
* @name LedgerEntryEventData
|
|
154
|
-
* @description Contains session/ledger PDAs, entry index, raw data, content hash,
|
|
155
|
-
* Merkle root, and timestamp.
|
|
156
|
-
* @category Events
|
|
157
|
-
* @since v0.1.0
|
|
158
|
-
* @see {@link SapEvent}
|
|
159
|
-
*/
|
|
160
|
-
export interface LedgerEntryEventData {
|
|
161
|
-
readonly name: "LedgerEntryEvent";
|
|
162
|
-
readonly data: {
|
|
163
|
-
session: PublicKey;
|
|
164
|
-
ledger: PublicKey;
|
|
165
|
-
entryIndex: number;
|
|
166
|
-
data: number[];
|
|
167
|
-
contentHash: number[];
|
|
168
|
-
dataLen: number;
|
|
169
|
-
merkleRoot: number[];
|
|
170
|
-
timestamp: BN;
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Discriminated union of all known SAP v2 event types.
|
|
176
|
-
*
|
|
177
|
-
* @name SapEvent
|
|
178
|
-
* @description Use the `name` discriminant to narrow to a specific event payload.
|
|
179
|
-
* @category Events
|
|
180
|
-
* @since v0.1.0
|
|
181
|
-
*/
|
|
182
|
-
export type SapEvent =
|
|
183
|
-
| RegisteredEventData
|
|
184
|
-
| UpdatedEventData
|
|
185
|
-
| FeedbackEventData
|
|
186
|
-
| MemoryInscribedEventData
|
|
187
|
-
| PaymentSettledEventData
|
|
188
|
-
| LedgerEntryEventData;
|
|
189
|
-
|
|
190
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
191
|
-
// Event Name Literals
|
|
192
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Exhaustive list of all SAP v2 event name strings.
|
|
196
|
-
*
|
|
197
|
-
* @name SAP_EVENT_NAMES
|
|
198
|
-
* @description Frozen array of every event discriminant emitted by the program.
|
|
199
|
-
* Useful for log filtering and exhaustive switch checks.
|
|
200
|
-
* @category Events
|
|
201
|
-
* @since v0.1.0
|
|
202
|
-
* @see {@link SapEventName}
|
|
203
|
-
*/
|
|
204
|
-
export const SAP_EVENT_NAMES = [
|
|
205
|
-
"RegisteredEvent",
|
|
206
|
-
"UpdatedEvent",
|
|
207
|
-
"DeactivatedEvent",
|
|
208
|
-
"ReactivatedEvent",
|
|
209
|
-
"ClosedEvent",
|
|
210
|
-
"FeedbackEvent",
|
|
211
|
-
"FeedbackUpdatedEvent",
|
|
212
|
-
"FeedbackRevokedEvent",
|
|
213
|
-
"ReputationUpdatedEvent",
|
|
214
|
-
"CallsReportedEvent",
|
|
215
|
-
"VaultInitializedEvent",
|
|
216
|
-
"SessionOpenedEvent",
|
|
217
|
-
"MemoryInscribedEvent",
|
|
218
|
-
"EpochOpenedEvent",
|
|
219
|
-
"SessionClosedEvent",
|
|
220
|
-
"VaultClosedEvent",
|
|
221
|
-
"SessionPdaClosedEvent",
|
|
222
|
-
"EpochPageClosedEvent",
|
|
223
|
-
"VaultNonceRotatedEvent",
|
|
224
|
-
"DelegateAddedEvent",
|
|
225
|
-
"DelegateRevokedEvent",
|
|
226
|
-
"ToolPublishedEvent",
|
|
227
|
-
"ToolSchemaInscribedEvent",
|
|
228
|
-
"ToolUpdatedEvent",
|
|
229
|
-
"ToolDeactivatedEvent",
|
|
230
|
-
"ToolReactivatedEvent",
|
|
231
|
-
"ToolClosedEvent",
|
|
232
|
-
"ToolInvocationReportedEvent",
|
|
233
|
-
"CheckpointCreatedEvent",
|
|
234
|
-
"EscrowCreatedEvent",
|
|
235
|
-
"EscrowDepositedEvent",
|
|
236
|
-
"PaymentSettledEvent",
|
|
237
|
-
"EscrowWithdrawnEvent",
|
|
238
|
-
"BatchSettledEvent",
|
|
239
|
-
"AttestationCreatedEvent",
|
|
240
|
-
"AttestationRevokedEvent",
|
|
241
|
-
"LedgerEntryEvent",
|
|
242
|
-
"LedgerSealedEvent",
|
|
243
|
-
] as const;
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* String literal union of all SAP v2 event names.
|
|
247
|
-
*
|
|
248
|
-
* @name SapEventName
|
|
249
|
-
* @description Derived from {@link SAP_EVENT_NAMES} for compile-time exhaustiveness.
|
|
250
|
-
* @category Events
|
|
251
|
-
* @since v0.1.0
|
|
252
|
-
*/
|
|
253
|
-
export type SapEventName = (typeof SAP_EVENT_NAMES)[number];
|
|
254
|
-
|
|
255
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
256
|
-
// Event Parser
|
|
257
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* A single parsed event extracted from transaction logs.
|
|
261
|
-
*
|
|
262
|
-
* @interface ParsedEvent
|
|
263
|
-
* @name ParsedEvent
|
|
264
|
-
* @description Lightweight container with a `name` discriminant and untyped `data` record.
|
|
265
|
-
* Narrow via {@link SapEventName} for type-safe access.
|
|
266
|
-
* @category Events
|
|
267
|
-
* @since v0.1.0
|
|
268
|
-
*/
|
|
269
|
-
export interface ParsedEvent {
|
|
270
|
-
readonly name: string;
|
|
271
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
272
|
-
readonly data: Record<string, any>;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Typed wrapper around Anchor’s `EventParser` for SAP v2 programs.
|
|
277
|
-
*
|
|
278
|
-
* Extracts strongly-typed {@link ParsedEvent} objects from raw
|
|
279
|
-
* transaction log lines.
|
|
280
|
-
*
|
|
281
|
-
* @name EventParser
|
|
282
|
-
* @description Instantiate with an Anchor `Program` and call {@link EventParser.parseLogs}
|
|
283
|
-
* to decode events, or {@link EventParser.filterByName} to narrow results.
|
|
284
|
-
* @category Events
|
|
285
|
-
* @since v0.1.0
|
|
286
|
-
*
|
|
287
|
-
* @example
|
|
288
|
-
* ```ts
|
|
289
|
-
* const parser = new EventParser(program);
|
|
290
|
-
* const events = parser.parseLogs(txLogs);
|
|
291
|
-
* const settled = parser.filterByName(events, "PaymentSettledEvent");
|
|
292
|
-
* ```
|
|
293
|
-
*/
|
|
294
|
-
export class EventParser {
|
|
295
|
-
private readonly parser: AnchorEventParser;
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Create a new `EventParser`.
|
|
299
|
-
*
|
|
300
|
-
* @param program - An Anchor `Program` instance whose IDL defines the events to decode.
|
|
301
|
-
*/
|
|
302
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
303
|
-
constructor(program: Program<any>) {
|
|
304
|
-
this.parser = new AnchorEventParser(program.programId, program.coder);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Parse raw transaction log lines into typed events.
|
|
309
|
-
*
|
|
310
|
-
* @param logs - Array of log strings from a confirmed transaction.
|
|
311
|
-
* @returns {ParsedEvent[]} Decoded events found in the logs.
|
|
312
|
-
*/
|
|
313
|
-
parseLogs(logs: string[]): ParsedEvent[] {
|
|
314
|
-
const events: ParsedEvent[] = [];
|
|
315
|
-
const generator = this.parser.parseLogs(logs);
|
|
316
|
-
for (const event of generator) {
|
|
317
|
-
events.push(event as ParsedEvent);
|
|
318
|
-
}
|
|
319
|
-
return events;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Filter a list of parsed events by event name.
|
|
324
|
-
*
|
|
325
|
-
* @param events - The full array of {@link ParsedEvent} objects to filter.
|
|
326
|
-
* @param name - The {@link SapEventName} to match against.
|
|
327
|
-
* @returns {ParsedEvent[]} Only events whose `name` matches.
|
|
328
|
-
*/
|
|
329
|
-
filterByName<N extends SapEventName>(
|
|
330
|
-
events: ParsedEvent[],
|
|
331
|
-
name: N,
|
|
332
|
-
): ParsedEvent[] {
|
|
333
|
-
return events.filter((e) => e.name === name);
|
|
334
|
-
}
|
|
335
|
-
}
|