@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
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module utils/merchant-validator
|
|
3
|
+
* @description Standard Synapse merchant middleware for x402 settlement.
|
|
4
|
+
*
|
|
5
|
+
* Reads `X-Payment-*` headers from incoming HTTP requests, validates
|
|
6
|
+
* the escrow on-chain, auto-generates the correct `AccountMeta[]`,
|
|
7
|
+
* and throws explicit errors (e.g. {@link MissingEscrowAtaError})
|
|
8
|
+
* instead of letting the program return a generic crash.
|
|
9
|
+
*
|
|
10
|
+
* Designed for agents like Syra/Invoica that receive x402 payments.
|
|
11
|
+
*
|
|
12
|
+
* @category Utils
|
|
13
|
+
* @since v0.6.4
|
|
14
|
+
*/
|
|
15
|
+
import { type PublicKey, type Connection, type AccountMeta } from "@solana/web3.js";
|
|
16
|
+
import { BN } from "@coral-xyz/anchor";
|
|
17
|
+
import type { EscrowValidationResult } from "./escrow-validation";
|
|
18
|
+
import type { EscrowAccountData } from "../types";
|
|
19
|
+
/**
|
|
20
|
+
* @interface ParsedX402Headers
|
|
21
|
+
* @description Parsed and typed x402 payment headers from incoming HTTP request.
|
|
22
|
+
* @category Utils
|
|
23
|
+
* @since v0.6.4
|
|
24
|
+
*/
|
|
25
|
+
export interface ParsedX402Headers {
|
|
26
|
+
/** x402 protocol identifier — must be "SAP-x402". */
|
|
27
|
+
readonly protocol: string;
|
|
28
|
+
/** Escrow PDA address. */
|
|
29
|
+
readonly escrowPda: PublicKey;
|
|
30
|
+
/** Agent PDA address. */
|
|
31
|
+
readonly agentPda: PublicKey;
|
|
32
|
+
/** Depositor wallet address. */
|
|
33
|
+
readonly depositorWallet: PublicKey;
|
|
34
|
+
/** Max calls allowed. */
|
|
35
|
+
readonly maxCalls: BN;
|
|
36
|
+
/** Price per call. */
|
|
37
|
+
readonly pricePerCall: BN;
|
|
38
|
+
/** SAP program ID. */
|
|
39
|
+
readonly programId: PublicKey;
|
|
40
|
+
/** Network identifier. */
|
|
41
|
+
readonly network: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @interface MerchantValidationResult
|
|
45
|
+
* @description Complete validation result for merchant-side x402 processing.
|
|
46
|
+
* @category Utils
|
|
47
|
+
* @since v0.6.4
|
|
48
|
+
*/
|
|
49
|
+
export interface MerchantValidationResult {
|
|
50
|
+
/** Whether the escrow is valid and ready for settlement. */
|
|
51
|
+
readonly valid: boolean;
|
|
52
|
+
/** Parsed x402 headers. */
|
|
53
|
+
readonly headers: ParsedX402Headers;
|
|
54
|
+
/** Full escrow validation result. */
|
|
55
|
+
readonly escrowValidation: EscrowValidationResult;
|
|
56
|
+
/** Pre-built AccountMeta[] for settlement TX (empty for SOL escrows). */
|
|
57
|
+
readonly accountMetas: AccountMeta[];
|
|
58
|
+
/** All validation errors. */
|
|
59
|
+
readonly errors: string[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @name parseX402Headers
|
|
63
|
+
* @description Parse and validate x402 headers from an HTTP request.
|
|
64
|
+
*
|
|
65
|
+
* @param headers - HTTP headers object (case-insensitive key lookup).
|
|
66
|
+
* @returns Parsed x402 headers.
|
|
67
|
+
* @throws {SapValidationError} If required headers are missing or malformed.
|
|
68
|
+
*
|
|
69
|
+
* @category Utils
|
|
70
|
+
* @since v0.6.4
|
|
71
|
+
*/
|
|
72
|
+
export declare function parseX402Headers(headers: Record<string, string | string[] | undefined>): ParsedX402Headers;
|
|
73
|
+
/**
|
|
74
|
+
* @name SapMerchantValidator
|
|
75
|
+
* @description Standard Synapse merchant middleware for x402 payment validation.
|
|
76
|
+
*
|
|
77
|
+
* Reads `X-Payment-*` headers, validates escrow state on-chain, generates
|
|
78
|
+
* correct `AccountMeta[]` for SPL token escrows, and throws explicit errors
|
|
79
|
+
* (e.g. {@link MissingEscrowAtaError}) when ATA accounts are missing.
|
|
80
|
+
*
|
|
81
|
+
* @category Utils
|
|
82
|
+
* @since v0.6.4
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* const validator = new SapMerchantValidator(connection, fetchEscrow);
|
|
87
|
+
*
|
|
88
|
+
* // Express.js integration
|
|
89
|
+
* app.post("/api/v1/chat", async (req, res) => {
|
|
90
|
+
* try {
|
|
91
|
+
* const validation = await validator.validateRequest(req.headers, {
|
|
92
|
+
* callsToSettle: 1,
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* if (!validation.valid) {
|
|
96
|
+
* return res.status(402).json({ errors: validation.errors });
|
|
97
|
+
* }
|
|
98
|
+
*
|
|
99
|
+
* // Process request...
|
|
100
|
+
*
|
|
101
|
+
* // Settle payment using pre-built account metas
|
|
102
|
+
* await client.escrow.settle(
|
|
103
|
+
* validation.headers.depositorWallet,
|
|
104
|
+
* 1,
|
|
105
|
+
* serviceHash,
|
|
106
|
+
* validation.accountMetas,
|
|
107
|
+
* );
|
|
108
|
+
*
|
|
109
|
+
* res.json({ result: "..." });
|
|
110
|
+
* } catch (err) {
|
|
111
|
+
* if (err instanceof MissingEscrowAtaError) {
|
|
112
|
+
* return res.status(402).json({
|
|
113
|
+
* error: err.message,
|
|
114
|
+
* side: err.side,
|
|
115
|
+
* ata: err.ataAddress,
|
|
116
|
+
* });
|
|
117
|
+
* }
|
|
118
|
+
* throw err;
|
|
119
|
+
* }
|
|
120
|
+
* });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export declare class SapMerchantValidator {
|
|
124
|
+
private readonly connection;
|
|
125
|
+
private readonly fetchEscrow;
|
|
126
|
+
/**
|
|
127
|
+
* @param connection - Solana RPC connection.
|
|
128
|
+
* @param fetchEscrow - Callback to fetch escrow account data by PDA.
|
|
129
|
+
* Typically `(pda) => client.escrow.fetchByPda(pda).catch(() => null)`.
|
|
130
|
+
*/
|
|
131
|
+
constructor(connection: Connection, fetchEscrow: (escrowPda: PublicKey) => Promise<EscrowAccountData | null>);
|
|
132
|
+
/**
|
|
133
|
+
* @name validateRequest
|
|
134
|
+
* @description Full validation pipeline for an incoming x402 request.
|
|
135
|
+
*
|
|
136
|
+
* Steps:
|
|
137
|
+
* 1. Parse `X-Payment-*` headers
|
|
138
|
+
* 2. Fetch escrow on-chain
|
|
139
|
+
* 3. Validate escrow state (balance, expiry, max calls)
|
|
140
|
+
* 4. If SPL escrow: validate ATAs exist and mint matches
|
|
141
|
+
* 5. Build `AccountMeta[]` for settlement TX
|
|
142
|
+
*
|
|
143
|
+
* @param headers - HTTP headers from the incoming request.
|
|
144
|
+
* @param opts
|
|
145
|
+
* @param opts.callsToSettle - Number of calls to validate affordability for (default: 1).
|
|
146
|
+
* @param opts.throwOnMissingAta - Throw {@link MissingEscrowAtaError} instead of returning errors (default: true).
|
|
147
|
+
*
|
|
148
|
+
* @returns A complete {@link MerchantValidationResult}.
|
|
149
|
+
*
|
|
150
|
+
* @throws {SapValidationError} If headers are missing or malformed.
|
|
151
|
+
* @throws {MissingEscrowAtaError} If SPL ATAs are missing and `throwOnMissingAta` is true.
|
|
152
|
+
*
|
|
153
|
+
* @category Utils
|
|
154
|
+
* @since v0.6.4
|
|
155
|
+
*/
|
|
156
|
+
validateRequest(headers: Record<string, string | string[] | undefined>, opts?: {
|
|
157
|
+
callsToSettle?: number;
|
|
158
|
+
throwOnMissingAta?: boolean;
|
|
159
|
+
}): Promise<MerchantValidationResult>;
|
|
160
|
+
/**
|
|
161
|
+
* @name validateEscrow
|
|
162
|
+
* @description Validate escrow from pre-parsed headers (convenience method).
|
|
163
|
+
* Call this when you've already parsed the headers yourself.
|
|
164
|
+
*
|
|
165
|
+
* @param headers - Pre-parsed x402 headers.
|
|
166
|
+
* @param opts
|
|
167
|
+
* @returns The escrow validation result with pre-built account metas.
|
|
168
|
+
*
|
|
169
|
+
* @category Utils
|
|
170
|
+
* @since v0.6.4
|
|
171
|
+
*/
|
|
172
|
+
validateEscrow(headers: ParsedX402Headers, opts?: {
|
|
173
|
+
callsToSettle?: number;
|
|
174
|
+
}): Promise<EscrowValidationResult>;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=merchant-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merchant-validator.d.ts","sourceRoot":"","sources":["../../../src/utils/merchant-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAMvC,OAAO,KAAK,EACV,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAMlD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtB,sBAAsB;IACtB,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,0BAA0B;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,qCAAqC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACrC,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,iBAAiB,CA6EnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAEW;IAEvC;;;;OAIG;gBAED,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,CACX,SAAS,EAAE,SAAS,KACjB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,IAAI,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GACA,OAAO,CAAC,wBAAwB,CAAC;IAwCpC;;;;;;;;;;;OAWG;IACG,cAAc,CAClB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,OAAO,CAAC,sBAAsB,CAAC;CASnC"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { PublicKey as PK } from "@solana/web3.js";
|
|
16
16
|
import { BN } from "@coral-xyz/anchor";
|
|
17
17
|
import { validateEscrowState, toAccountMetas, MissingEscrowAtaError, } from "./escrow-validation";
|
|
18
|
-
import { SapValidationError } from "../errors";
|
|
18
|
+
import { SapValidationError } from "../errors/index";
|
|
19
19
|
// ═══════════════════════════════════════════════════════════════════
|
|
20
20
|
// Header parsing
|
|
21
21
|
// ═══════════════════════════════════════════════════════════════════
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merchant-validator.js","sourceRoot":"","sources":["../../../src/utils/merchant-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"merchant-validator.js","sourceRoot":"","sources":["../../../src/utils/merchant-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAmDrD,sEAAsE;AACtE,kBAAkB;AAClB,sEAAsE;AAEtE,6BAA6B;AAC7B,MAAM,gBAAgB,GAAG;IACvB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB;IACpB,wBAAwB;IACxB,mBAAmB;IACnB,mBAAmB;CACX,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAsD;IAEtD,gCAAgC;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,kBAAkB,CAC1B,kCAAkC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACtD,cAAc,CACf,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAE,CAAC;IAExE,oBAAoB;IACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAC1B,gCAAgC,QAAQ,yBAAyB,EACjE,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,IAAI,SAAoB,CAAC;IACzB,IAAI,QAAmB,CAAC;IACxB,IAAI,eAA0B,CAAC;IAC/B,IAAI,SAAoB,CAAC;IACzB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,QAAQ,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,eAAe,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACrD,SAAS,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAC1B,sCAAsC,EACtC,cAAc,CACf,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtD,IAAI,QAAY,CAAC;IACjB,IAAI,YAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;QAC/B,YAAY,GAAG,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAC1B,uEAAuE,EACvE,cAAc,CACf,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,eAAe;QACf,QAAQ;QACR,YAAY;QACZ,SAAS;QACT,OAAO,EAAE,GAAG,CAAC,mBAAmB,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,sBAAsB;AACtB,sEAAsE;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,OAAO,oBAAoB;IACd,UAAU,CAAa;IACvB,WAAW,CAEW;IAEvC;;;;OAIG;IACH,YACE,UAAsB,EACtB,WAEsC;QAEtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,eAAe,CACnB,OAAsD,EACtD,IAGC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,2BAA2B;QAC3B,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAChD,IAAI,CAAC,UAAU,EACf,MAAM,CAAC,QAAQ,EAAQ,sCAAsC;QAC7D,MAAM,CAAC,eAAe,EACtB,IAAI,CAAC,WAAW,EAChB,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,CAAC,EAAE,CAC5C,CAAC;QAEF,+CAA+C;QAC/C,MAAM,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,KAAK,KAAK,CAAC;QAC5D,IAAI,iBAAiB,IAAI,gBAAgB,CAAC,WAAW,EAAE,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;oBACnD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;oBAClD,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACxD,CAAC;gBACD,IAAI,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;oBAChD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;oBAClD,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAElE,OAAO;YACL,KAAK,EAAE,gBAAgB,CAAC,KAAK;YAC7B,OAAO,EAAE,MAAM;YACf,gBAAgB;YAChB,YAAY;YACZ,MAAM,EAAE,gBAAgB,CAAC,MAAM;SAChC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,cAAc,CAClB,OAA0B,EAC1B,IAAiC;QAEjC,OAAO,mBAAmB,CACxB,IAAI,CAAC,UAAU,EACf,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,eAAe,EACvB,IAAI,CAAC,WAAW,EAChB,IAAI,CACL,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module utils/network-normalizer
|
|
3
|
+
* @description Network identifier normalization for x402 payment headers.
|
|
4
|
+
*
|
|
5
|
+
* Solves the canonical-string mismatch between SAP clients and servers:
|
|
6
|
+
* some providers accept `solana:mainnet-beta` while others require
|
|
7
|
+
* the genesis-hash form `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`.
|
|
8
|
+
*
|
|
9
|
+
* This module provides a single source of truth for normalizing
|
|
10
|
+
* network identifiers so that both clients and agents canonicalize
|
|
11
|
+
* before comparing. Catches the Kamiyo "sap network mismatch" error
|
|
12
|
+
* at the SDK level.
|
|
13
|
+
*
|
|
14
|
+
* @category Utils
|
|
15
|
+
* @since v0.6.0
|
|
16
|
+
*/
|
|
17
|
+
import { type SapNetworkId } from "../constants/network";
|
|
18
|
+
/**
|
|
19
|
+
* @name normalizeNetworkId
|
|
20
|
+
* @description Normalize a raw network identifier string to its canonical
|
|
21
|
+
* {@link SapNetworkId} form.
|
|
22
|
+
*
|
|
23
|
+
* Handles:
|
|
24
|
+
* - Case-insensitive matching
|
|
25
|
+
* - Stripping whitespace
|
|
26
|
+
* - Resolving genesis-hash vs. cluster-name aliases
|
|
27
|
+
* - Unknown strings are returned as-is (passthrough)
|
|
28
|
+
*
|
|
29
|
+
* @param raw - Raw network identifier string from headers, env vars, or config.
|
|
30
|
+
* @returns The canonical {@link SapNetworkId}, or the trimmed input if unknown.
|
|
31
|
+
*
|
|
32
|
+
* @category Utils
|
|
33
|
+
* @since v0.6.0
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { normalizeNetworkId } from "@synapse-sap/sdk";
|
|
38
|
+
*
|
|
39
|
+
* normalizeNetworkId("solana:mainnet-beta");
|
|
40
|
+
* // → "solana:mainnet-beta"
|
|
41
|
+
*
|
|
42
|
+
* normalizeNetworkId("5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
|
|
43
|
+
* // → "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"
|
|
44
|
+
*
|
|
45
|
+
* normalizeNetworkId(" MAINNET ");
|
|
46
|
+
* // → "solana:mainnet-beta"
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function normalizeNetworkId(raw: string): SapNetworkId | string;
|
|
50
|
+
/**
|
|
51
|
+
* @name isNetworkEquivalent
|
|
52
|
+
* @description Check if two network identifier strings refer to the same network,
|
|
53
|
+
* even if they use different formats (cluster-name vs. genesis-hash).
|
|
54
|
+
*
|
|
55
|
+
* This is the key function that prevents the Kamiyo "sap network mismatch"
|
|
56
|
+
* error — instead of comparing strings literally, we compare their
|
|
57
|
+
* canonical equivalence class.
|
|
58
|
+
*
|
|
59
|
+
* @param a - First network identifier.
|
|
60
|
+
* @param b - Second network identifier.
|
|
61
|
+
* @returns `true` if both identifiers refer to the same Solana network.
|
|
62
|
+
*
|
|
63
|
+
* @category Utils
|
|
64
|
+
* @since v0.6.0
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* import { isNetworkEquivalent } from "@synapse-sap/sdk";
|
|
69
|
+
*
|
|
70
|
+
* isNetworkEquivalent("solana:mainnet-beta", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp");
|
|
71
|
+
* // → true
|
|
72
|
+
*
|
|
73
|
+
* isNetworkEquivalent("solana:devnet", "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1");
|
|
74
|
+
* // → true
|
|
75
|
+
*
|
|
76
|
+
* isNetworkEquivalent("solana:mainnet-beta", "solana:devnet");
|
|
77
|
+
* // → false
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function isNetworkEquivalent(a: string, b: string): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* @name getNetworkGenesisHash
|
|
83
|
+
* @description Get the genesis-hash form of a network identifier.
|
|
84
|
+
* Returns the genesis-hash variant for known networks, or the input as-is.
|
|
85
|
+
*
|
|
86
|
+
* Useful for agents that require the genesis-hash form (Kamiyo, Helius x402).
|
|
87
|
+
*
|
|
88
|
+
* @param networkId - Any network identifier.
|
|
89
|
+
* @returns The genesis-hash form, or the input if unknown.
|
|
90
|
+
*
|
|
91
|
+
* @category Utils
|
|
92
|
+
* @since v0.6.0
|
|
93
|
+
*/
|
|
94
|
+
export declare function getNetworkGenesisHash(networkId: string): string;
|
|
95
|
+
/**
|
|
96
|
+
* @name getNetworkClusterName
|
|
97
|
+
* @description Get the cluster-name form of a network identifier.
|
|
98
|
+
* Returns the human-readable cluster name for known networks.
|
|
99
|
+
*
|
|
100
|
+
* Useful for providers that accept cluster names (Coinbase, Phantom).
|
|
101
|
+
*
|
|
102
|
+
* @param networkId - Any network identifier.
|
|
103
|
+
* @returns The cluster-name form, or the input if unknown.
|
|
104
|
+
*
|
|
105
|
+
* @category Utils
|
|
106
|
+
* @since v0.6.0
|
|
107
|
+
*/
|
|
108
|
+
export declare function getNetworkClusterName(networkId: string): string;
|
|
109
|
+
/**
|
|
110
|
+
* @name isKnownNetwork
|
|
111
|
+
* @description Check if a network identifier is recognized by the SDK.
|
|
112
|
+
*
|
|
113
|
+
* @param networkId - The network identifier to check.
|
|
114
|
+
* @returns `true` if the identifier maps to a known Solana network.
|
|
115
|
+
*
|
|
116
|
+
* @category Utils
|
|
117
|
+
* @since v0.6.0
|
|
118
|
+
*/
|
|
119
|
+
export declare function isKnownNetwork(networkId: string): boolean;
|
|
120
|
+
//# sourceMappingURL=network-normalizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-normalizer.d.ts","sourceRoot":"","sources":["../../../src/utils/network-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAsDrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,MAAM,CAcrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CA2BjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIzD"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module utils/priority-fee
|
|
3
|
+
* @description Compute budget and priority fee utilities for SAP transactions.
|
|
4
|
+
*
|
|
5
|
+
* Solana transactions that include a priority fee (via the Compute Budget program)
|
|
6
|
+
* land faster because validators prefer higher-fee transactions. This module
|
|
7
|
+
* provides a clean, composable API for building priority-fee instructions
|
|
8
|
+
* that can be prepended to any Anchor method builder via `.preInstructions()`.
|
|
9
|
+
*
|
|
10
|
+
* Typical use: x402 settlement transactions where the receiving agent's RPC
|
|
11
|
+
* has a short confirmation window (e.g., 30 seconds).
|
|
12
|
+
*
|
|
13
|
+
* @category Utils
|
|
14
|
+
* @since v0.6.2
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { buildPriorityFeeIxs, DEFAULT_SETTLE_PRIORITY } from "@synapse-sap/sdk";
|
|
19
|
+
*
|
|
20
|
+
* // Append to any Anchor method builder:
|
|
21
|
+
* await program.methods
|
|
22
|
+
* .settleCalls(calls, hash)
|
|
23
|
+
* .accounts({ ... })
|
|
24
|
+
* .preInstructions(buildPriorityFeeIxs({ priorityFeeMicroLamports: 5000 }))
|
|
25
|
+
* .rpc({ skipPreflight: true });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import { type TransactionInstruction } from "@solana/web3.js";
|
|
29
|
+
/**
|
|
30
|
+
* Default priority fee for settlement transactions (in microlamports).
|
|
31
|
+
* 5000 µL ≈ 0.0005 SOL per 200k CU — fast enough for most agent RPCs.
|
|
32
|
+
*
|
|
33
|
+
* @since v0.6.2
|
|
34
|
+
*/
|
|
35
|
+
export declare const DEFAULT_SETTLE_PRIORITY_FEE = 5000;
|
|
36
|
+
/**
|
|
37
|
+
* Default compute unit limit for settlement transactions.
|
|
38
|
+
* `settle_calls` uses ~60k CU; 100k provides a safe margin.
|
|
39
|
+
*
|
|
40
|
+
* @since v0.6.2
|
|
41
|
+
*/
|
|
42
|
+
export declare const DEFAULT_SETTLE_COMPUTE_UNITS = 100000;
|
|
43
|
+
/**
|
|
44
|
+
* Default compute unit limit for batch settlement transactions.
|
|
45
|
+
* `settle_batch` with 10 entries uses ~200k CU; 300k provides margin.
|
|
46
|
+
*
|
|
47
|
+
* @since v0.6.2
|
|
48
|
+
*/
|
|
49
|
+
export declare const DEFAULT_BATCH_SETTLE_COMPUTE_UNITS = 300000;
|
|
50
|
+
/**
|
|
51
|
+
* @name computeBatchSettleCu
|
|
52
|
+
* @description Compute the CU limit needed by `settle_batch` for a
|
|
53
|
+
* given entry count. Returned value is safe to pass to
|
|
54
|
+
* `ComputeBudgetProgram.setComputeUnitLimit`.
|
|
55
|
+
*
|
|
56
|
+
* Formula: `60_000 + n * 25_000`, clamped to 1.2M.
|
|
57
|
+
*
|
|
58
|
+
* @param entryCount - Number of settlements in the batch (1..N).
|
|
59
|
+
* @returns CU limit suitable for `setComputeUnitLimit`.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const cu = computeBatchSettleCu(20); // 560_000
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @category Utils
|
|
67
|
+
* @since v0.11.0
|
|
68
|
+
*/
|
|
69
|
+
export declare function computeBatchSettleCu(entryCount: number): number;
|
|
70
|
+
/**
|
|
71
|
+
* @interface PriorityFeeConfig
|
|
72
|
+
* @description Configuration for building compute budget instructions.
|
|
73
|
+
* @category Utils
|
|
74
|
+
* @since v0.6.2
|
|
75
|
+
*/
|
|
76
|
+
export interface PriorityFeeConfig {
|
|
77
|
+
/**
|
|
78
|
+
* Priority fee in microlamports per compute unit.
|
|
79
|
+
* Higher values = faster confirmation.
|
|
80
|
+
*
|
|
81
|
+
* Common values:
|
|
82
|
+
* - `1000` — low priority (~0.0001 SOL)
|
|
83
|
+
* - `5000` — medium priority (~0.0005 SOL) ← recommended for settle
|
|
84
|
+
* - `50000` — high priority (~0.005 SOL)
|
|
85
|
+
* - `0` — no priority fee (default Solana behavior)
|
|
86
|
+
*
|
|
87
|
+
* @default 0
|
|
88
|
+
*/
|
|
89
|
+
readonly priorityFeeMicroLamports?: number;
|
|
90
|
+
/**
|
|
91
|
+
* Maximum compute units the transaction may consume.
|
|
92
|
+
* Setting an explicit limit avoids overpaying for unused CU.
|
|
93
|
+
*
|
|
94
|
+
* @default 200_000 (Solana default)
|
|
95
|
+
*/
|
|
96
|
+
readonly computeUnits?: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* @interface SettleOptions
|
|
100
|
+
* @description Options for x402 settlement transactions.
|
|
101
|
+
* Controls priority fees, compute budget, and RPC behavior
|
|
102
|
+
* to optimize confirmation speed for time-sensitive settlements.
|
|
103
|
+
*
|
|
104
|
+
* @category Registries
|
|
105
|
+
* @since v0.6.2
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* // Fast settlement with priority fee
|
|
110
|
+
* const receipt = await x402.settle(depositor, 1, "data", {
|
|
111
|
+
* priorityFeeMicroLamports: 5000,
|
|
112
|
+
* computeUnits: 100_000,
|
|
113
|
+
* skipPreflight: true,
|
|
114
|
+
* });
|
|
115
|
+
*
|
|
116
|
+
* // Use the convenience preset
|
|
117
|
+
* import { FAST_SETTLE_OPTIONS } from "@synapse-sap/sdk";
|
|
118
|
+
* const receipt = await x402.settle(depositor, 1, "data", FAST_SETTLE_OPTIONS);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export interface SettleOptions extends PriorityFeeConfig {
|
|
122
|
+
/**
|
|
123
|
+
* Skip Solana simulation before submitting.
|
|
124
|
+
* Saves ~400ms but loses pre-flight error detection.
|
|
125
|
+
*
|
|
126
|
+
* Recommended for settlements where the escrow state
|
|
127
|
+
* has already been pre-fetched and validated.
|
|
128
|
+
*
|
|
129
|
+
* @default false
|
|
130
|
+
*/
|
|
131
|
+
readonly skipPreflight?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Transaction commitment level override.
|
|
134
|
+
* Uses the provider's default when omitted.
|
|
135
|
+
*
|
|
136
|
+
* - `"processed"` — fastest, least reliable
|
|
137
|
+
* - `"confirmed"` — balanced (recommended)
|
|
138
|
+
* - `"finalized"` — slowest, most reliable
|
|
139
|
+
*/
|
|
140
|
+
readonly commitment?: "processed" | "confirmed" | "finalized";
|
|
141
|
+
/**
|
|
142
|
+
* Maximum number of RPC retry attempts.
|
|
143
|
+
* @default provider default (usually 3)
|
|
144
|
+
*/
|
|
145
|
+
readonly maxRetries?: number;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Recommended preset for fast x402 settlements.
|
|
149
|
+
* Priority fee 5000 µL, 100k CU, skip preflight, confirmed commitment.
|
|
150
|
+
*
|
|
151
|
+
* @since v0.6.2
|
|
152
|
+
*/
|
|
153
|
+
export declare const FAST_SETTLE_OPTIONS: Readonly<SettleOptions>;
|
|
154
|
+
/**
|
|
155
|
+
* Recommended preset for fast batch settlements.
|
|
156
|
+
* Priority fee 5000 µL, 300k CU, skip preflight, confirmed commitment.
|
|
157
|
+
*
|
|
158
|
+
* @since v0.6.2
|
|
159
|
+
*/
|
|
160
|
+
export declare const FAST_BATCH_SETTLE_OPTIONS: Readonly<SettleOptions>;
|
|
161
|
+
/**
|
|
162
|
+
* @name buildPriorityFeeIxs
|
|
163
|
+
* @description Build compute budget instructions for priority fee transactions.
|
|
164
|
+
*
|
|
165
|
+
* Returns an array of 0–2 `TransactionInstruction`s:
|
|
166
|
+
* - `SetComputeUnitPrice` (if `priorityFeeMicroLamports > 0`)
|
|
167
|
+
* - `SetComputeUnitLimit` (if `computeUnits` provided)
|
|
168
|
+
*
|
|
169
|
+
* The returned array is designed to be passed directly to
|
|
170
|
+
* Anchor's `.preInstructions()` builder method.
|
|
171
|
+
*
|
|
172
|
+
* @param config - Priority fee configuration.
|
|
173
|
+
* @returns Array of compute budget instructions (may be empty).
|
|
174
|
+
*
|
|
175
|
+
* @category Utils
|
|
176
|
+
* @since v0.6.2
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* const ixs = buildPriorityFeeIxs({
|
|
181
|
+
* priorityFeeMicroLamports: 5000,
|
|
182
|
+
* computeUnits: 100_000,
|
|
183
|
+
* });
|
|
184
|
+
*
|
|
185
|
+
* await program.methods
|
|
186
|
+
* .settleCalls(calls, hash)
|
|
187
|
+
* .accounts({ ... })
|
|
188
|
+
* .preInstructions(ixs)
|
|
189
|
+
* .rpc({ skipPreflight: true });
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export declare function buildPriorityFeeIxs(config?: PriorityFeeConfig): TransactionInstruction[];
|
|
193
|
+
/**
|
|
194
|
+
* @name buildRpcOptions
|
|
195
|
+
* @description Build Anchor `.rpc()` options from {@link SettleOptions}.
|
|
196
|
+
*
|
|
197
|
+
* @param opts - Settle options.
|
|
198
|
+
* @returns Options object suitable for Anchor `.rpc(opts)`.
|
|
199
|
+
*
|
|
200
|
+
* @category Utils
|
|
201
|
+
* @since v0.6.2
|
|
202
|
+
* @internal
|
|
203
|
+
*/
|
|
204
|
+
export declare function buildRpcOptions(opts?: SettleOptions): Record<string, unknown> | undefined;
|
|
205
|
+
//# sourceMappingURL=priority-fee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-fee.d.ts","sourceRoot":"","sources":["../../../src/utils/priority-fee.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AAMzB;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,SAAU,CAAC;AA8B1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM/D;AAMD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAE3C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;IAE9D;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,aAAa,CAKtD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,aAAa,CAK5D,CAAC;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,CAAC,EAAE,iBAAiB,GACzB,sBAAsB,EAAE,CAwB1B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,IAAI,CAAC,EAAE,aAAa,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgBrC"}
|