@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,221 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// synapse-sap-sdk / src/utils/validate.ts
|
|
3
|
+
// Client-side validation — mirrors every on-chain check (v0.13)
|
|
4
|
+
// ================================================================
|
|
5
|
+
import BN from "bn.js";
|
|
6
|
+
import { SettlementSecurity } from "../types";
|
|
7
|
+
import { MAX_CALLS_PER_SETTLEMENT, MAX_VOLUME_CURVE_POINTS, MAX_RECEIPTS_PER_PROOF, MAX_MERKLE_DEPTH, MAX_SUBSCRIPTION_DURATION_YEARS, STAKE_COVERAGE_BPS, MIN_STAKE_LAMPORTS, } from "../constants";
|
|
8
|
+
function fail(msg) {
|
|
9
|
+
return { ok: false, errors: [msg] };
|
|
10
|
+
}
|
|
11
|
+
function ok() {
|
|
12
|
+
return { ok: true, errors: [] };
|
|
13
|
+
}
|
|
14
|
+
/** Validate agent creation parameters */
|
|
15
|
+
export function validateAgentInput(params) {
|
|
16
|
+
if (params.name.length < 3)
|
|
17
|
+
return fail("Agent name must be ≥3 characters");
|
|
18
|
+
if (params.name.length > 64)
|
|
19
|
+
return fail("Agent name must be ≤64 characters");
|
|
20
|
+
if (params.endpointUri.length > 256)
|
|
21
|
+
return fail("Endpoint URI must be ≤256 characters");
|
|
22
|
+
if (!/^https?:\/\//.test(params.endpointUri))
|
|
23
|
+
return fail("Endpoint URI must start with http:// or https://");
|
|
24
|
+
return ok();
|
|
25
|
+
}
|
|
26
|
+
/** Compute max_obligation for an escrow (must match on-chain logic) */
|
|
27
|
+
export function computeEscrowMaxObligation(pricePerCall, maxCalls, initialDeposit) {
|
|
28
|
+
// If maxCalls == 0 → unlimited calls: cap at initialDeposit (v0.13 logic)
|
|
29
|
+
if (maxCalls.isZero())
|
|
30
|
+
return initialDeposit;
|
|
31
|
+
const maxPotential = pricePerCall.mul(maxCalls);
|
|
32
|
+
// On-chain: required = maxPotential * 50% (5000 bps)
|
|
33
|
+
const coverage = maxPotential.mul(new BN(STAKE_COVERAGE_BPS)).div(new BN(10_000));
|
|
34
|
+
const min = new BN(MIN_STAKE_LAMPORTS);
|
|
35
|
+
return BN.max(coverage, min);
|
|
36
|
+
}
|
|
37
|
+
/** Validate escrow V2 creation parameters (mirrors create_escrow_v2 on-chain checks) */
|
|
38
|
+
export function validateEscrowCreate(params) {
|
|
39
|
+
const errors = [];
|
|
40
|
+
// C1: price_per_call > 0
|
|
41
|
+
if (params.pricePerCall.isZero()) {
|
|
42
|
+
errors.push("[C1] price_per_call must be > 0");
|
|
43
|
+
}
|
|
44
|
+
// H6: escrow cannot be already expired
|
|
45
|
+
const nowSec = Math.floor(Date.now() / 1000);
|
|
46
|
+
if (!params.expiresAt.isZero() && params.expiresAt.lt(new BN(nowSec))) {
|
|
47
|
+
errors.push(`[H6] expires_at (${params.expiresAt}) is in the past (${nowSec})`);
|
|
48
|
+
}
|
|
49
|
+
// Volume curve validation
|
|
50
|
+
if (params.volumeCurve.length > MAX_VOLUME_CURVE_POINTS) {
|
|
51
|
+
errors.push(`[C1] Volume curve exceeds ${MAX_VOLUME_CURVE_POINTS} points`);
|
|
52
|
+
}
|
|
53
|
+
for (let i = 0; i < params.volumeCurve.length; i++) {
|
|
54
|
+
const bp = params.volumeCurve[i];
|
|
55
|
+
// C1: price_per_call > 0 for every breakpoint
|
|
56
|
+
if (bp.pricePerCall.isZero()) {
|
|
57
|
+
errors.push(`[C1] Volume curve[${i}] price_per_call must be > 0`);
|
|
58
|
+
}
|
|
59
|
+
// Strictly increasing after_calls
|
|
60
|
+
if (i > 0 && bp.afterCalls <= params.volumeCurve[i - 1].afterCalls) {
|
|
61
|
+
errors.push(`[C1] Volume curve[${i}] after_calls must be > previous`);
|
|
62
|
+
}
|
|
63
|
+
// Non-increasing prices
|
|
64
|
+
if (i > 0 && bp.pricePerCall.gt(params.volumeCurve[i - 1].pricePerCall)) {
|
|
65
|
+
errors.push(`[C1] Volume curve[${i}] price must be ≤ previous`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Settlement security specific
|
|
69
|
+
if (params.settlementSecurity === SettlementSecurity.CoSigned) {
|
|
70
|
+
if (!params.coSigner) {
|
|
71
|
+
errors.push("[H9] CoSigned mode requires a co_signer");
|
|
72
|
+
}
|
|
73
|
+
else if (params.coSigner.equals(params.agentWallet)) {
|
|
74
|
+
errors.push("[H9] co_signer cannot be the agent wallet itself");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (params.settlementSecurity === SettlementSecurity.DisputeWindow) {
|
|
78
|
+
if (params.disputeWindowSlots === 0) {
|
|
79
|
+
errors.push("[H6] DisputeWindow mode requires dispute_window_slots > 0");
|
|
80
|
+
}
|
|
81
|
+
if (!params.arbiter) {
|
|
82
|
+
errors.push("[H6] DisputeWindow mode requires an arbiter");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return errors.length > 0 ? { ok: false, errors } : ok();
|
|
86
|
+
}
|
|
87
|
+
/** Validate deposit parameters */
|
|
88
|
+
export function validateEscrowDeposit(params) {
|
|
89
|
+
const errors = [];
|
|
90
|
+
if (params.amount.isZero())
|
|
91
|
+
errors.push("[C2] Deposit amount must be > 0");
|
|
92
|
+
// H-2: projection must not exceed max_obligation (if set)
|
|
93
|
+
if (!params.escrowMaxObligation.isZero()) {
|
|
94
|
+
const projected = params.escrowBalance.add(params.amount);
|
|
95
|
+
if (projected.gt(params.escrowMaxObligation)) {
|
|
96
|
+
errors.push(`[H2] Deposit would exceed max_obligation (${projected.toString()} > ${params.escrowMaxObligation.toString()})`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return errors.length > 0 ? { ok: false, errors } : ok();
|
|
100
|
+
}
|
|
101
|
+
/** Validate settle_calls_v2 parameters (pre-computation) */
|
|
102
|
+
export function validateEscrowSettle(params) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
if (params.callsToSettle <= 0)
|
|
105
|
+
errors.push("callsToSettle must be > 0");
|
|
106
|
+
// C1: max calls per settlement ≤ 10,000
|
|
107
|
+
if (params.callsToSettle > MAX_CALLS_PER_SETTLEMENT) {
|
|
108
|
+
errors.push(`[C1] callsToSettle (${params.callsToSettle}) exceeds MAX_CALLS_PER_SETTLEMENT (${MAX_CALLS_PER_SETTLEMENT})`);
|
|
109
|
+
}
|
|
110
|
+
const callsBN = new BN(params.callsToSettle);
|
|
111
|
+
// Max calls check
|
|
112
|
+
if (!params.escrowMaxCalls.isZero()) {
|
|
113
|
+
const projected = params.escrowTotalCallsSettled
|
|
114
|
+
.add(params.escrowPendingCalls)
|
|
115
|
+
.add(callsBN);
|
|
116
|
+
if (projected.gt(params.escrowMaxCalls)) {
|
|
117
|
+
errors.push(`Max calls would be exceeded (${projected.toString()} > ${params.escrowMaxCalls.toString()})`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Compute amount (client-side mirror of calculate_settle_amount)
|
|
121
|
+
const amount = calculateSettleAmount(params.pricePerCall, params.basePrice ?? params.pricePerCall, params.volumeCurve ?? [], params.callsToSettle);
|
|
122
|
+
// Available balance check
|
|
123
|
+
const available = params.escrowBalance.sub(params.escrowPendingAmount);
|
|
124
|
+
if (available.lt(amount)) {
|
|
125
|
+
errors.push(`Insufficient balance: available ${available.toString()} < required ${amount.toString()}`);
|
|
126
|
+
}
|
|
127
|
+
return errors.length > 0 ? { ok: false, errors, amount: new BN(0) } : { ok: true, errors: [], amount };
|
|
128
|
+
}
|
|
129
|
+
/** Client-side mirror of on-chain calculate_settle_amount (v0.13) */
|
|
130
|
+
export function calculateSettleAmount(pricePerCall, basePrice, volumeCurve, calls) {
|
|
131
|
+
if (calls <= 0)
|
|
132
|
+
return new BN(0);
|
|
133
|
+
if (volumeCurve.length === 0) {
|
|
134
|
+
return pricePerCall.mul(new BN(calls));
|
|
135
|
+
}
|
|
136
|
+
let amount = new BN(0);
|
|
137
|
+
let remaining = calls;
|
|
138
|
+
let cursor = 0;
|
|
139
|
+
let currentPrice = basePrice;
|
|
140
|
+
while (remaining > 0) {
|
|
141
|
+
// Find applicable breakpoint
|
|
142
|
+
let threshold = 0;
|
|
143
|
+
for (const bp of volumeCurve) {
|
|
144
|
+
if (cursor >= bp.afterCalls) {
|
|
145
|
+
currentPrice = bp.pricePerCall;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
threshold = bp.afterCalls;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const range = threshold === 0
|
|
153
|
+
? remaining
|
|
154
|
+
: Math.min(threshold - cursor, remaining);
|
|
155
|
+
amount = amount.add(new BN(range).mul(currentPrice));
|
|
156
|
+
remaining -= range;
|
|
157
|
+
cursor += range;
|
|
158
|
+
// Safety: break if stuck
|
|
159
|
+
if (range === 0)
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
return amount;
|
|
163
|
+
}
|
|
164
|
+
/** Validate receipt proof submission (C4 bounds check) */
|
|
165
|
+
export function validateReceiptProof(receiptHashes, merkleProofs) {
|
|
166
|
+
const errors = [];
|
|
167
|
+
if (receiptHashes.length > MAX_RECEIPTS_PER_PROOF) {
|
|
168
|
+
errors.push(`[C4] receipt_hashes (${receiptHashes.length}) > MAX_RECEIPTS_PER_PROOF (${MAX_RECEIPTS_PER_PROOF})`);
|
|
169
|
+
}
|
|
170
|
+
if (receiptHashes.length !== merkleProofs.length) {
|
|
171
|
+
errors.push(`receipt_hashes.length (${receiptHashes.length}) !== merkleProofs.length (${merkleProofs.length})`);
|
|
172
|
+
}
|
|
173
|
+
for (let i = 0; i < merkleProofs.length; i++) {
|
|
174
|
+
if (merkleProofs[i].length > MAX_MERKLE_DEPTH) {
|
|
175
|
+
errors.push(`[C4] merkleProofs[${i}] depth (${merkleProofs[i].length}) > MAX_MERKLE_DEPTH (${MAX_MERKLE_DEPTH})`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return errors.length > 0 ? { ok: false, errors } : ok();
|
|
179
|
+
}
|
|
180
|
+
/** Validate subscription parameters */
|
|
181
|
+
export function validateSubscriptionCreate(params) {
|
|
182
|
+
const errors = [];
|
|
183
|
+
// M13: cap duration at 10 years
|
|
184
|
+
const maxIntervals = MAX_SUBSCRIPTION_DURATION_YEARS * 365 * 24; // hourly max
|
|
185
|
+
if (params.durationIntervals > maxIntervals && params.durationIntervals <= 0) {
|
|
186
|
+
errors.push(`[M13] Duration exceeds ${MAX_SUBSCRIPTION_DURATION_YEARS} years`);
|
|
187
|
+
}
|
|
188
|
+
if (params.pricePerInterval.isZero()) {
|
|
189
|
+
errors.push("price_per_interval must be > 0");
|
|
190
|
+
}
|
|
191
|
+
return errors.length > 0 ? { ok: false, errors } : ok();
|
|
192
|
+
}
|
|
193
|
+
/** Validate close_escrow_v2 can proceed (H8 check) */
|
|
194
|
+
export function validateEscrowClose(pendingSettlementCount, balance, pendingAmount) {
|
|
195
|
+
const errors = [];
|
|
196
|
+
if (pendingSettlementCount > 0) {
|
|
197
|
+
errors.push(`[H8] Escrow has ${pendingSettlementCount} pending settlement(s). Finalize or dispute before closing.`);
|
|
198
|
+
}
|
|
199
|
+
if (balance.gt(new BN(0)) && !balance.eq(pendingAmount)) {
|
|
200
|
+
errors.push("Escrow has non-pending balance remaining — withdraw first.");
|
|
201
|
+
}
|
|
202
|
+
return errors.length > 0 ? { ok: false, errors } : ok();
|
|
203
|
+
}
|
|
204
|
+
/** Validate agent close (stake + active_escrows) */
|
|
205
|
+
export function validateAgentClose(stakedAmount, activeEscrows, unstakeAvailableAt) {
|
|
206
|
+
const errors = [];
|
|
207
|
+
if (!stakedAmount.isZero()) {
|
|
208
|
+
errors.push("Agent has staked amount — unstake first.");
|
|
209
|
+
}
|
|
210
|
+
if (activeEscrows > 0) {
|
|
211
|
+
errors.push(`[H1] Agent has ${activeEscrows} active escrow(s) — close all escrows first.`);
|
|
212
|
+
}
|
|
213
|
+
if (!unstakeAvailableAt.isZero() && stakedAmount.gt(new BN(0))) {
|
|
214
|
+
const now = Math.floor(Date.now() / 1000);
|
|
215
|
+
if (unstakeAvailableAt.gt(new BN(now))) {
|
|
216
|
+
errors.push("Unstake cooldown has not expired yet.");
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return errors.length > 0 ? { ok: false, errors } : ok();
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/utils/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* @category Utils
|
|
6
6
|
* @since v0.1.0
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
8
|
/**
|
|
10
9
|
* Assert that a condition holds, throwing a descriptive error otherwise.
|
|
11
10
|
*
|
|
@@ -26,11 +25,5 @@
|
|
|
26
25
|
* assert(name.length <= 64, "Agent name exceeds MAX_NAME_LEN");
|
|
27
26
|
* ```
|
|
28
27
|
*/
|
|
29
|
-
export function assert(
|
|
30
|
-
|
|
31
|
-
message: string,
|
|
32
|
-
): asserts condition {
|
|
33
|
-
if (!condition) {
|
|
34
|
-
throw new RangeError(`[SAP SDK] ${message}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
28
|
+
export declare function assert(condition: boolean, message: string): asserts condition;
|
|
29
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CACpB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAInB"}
|
|
@@ -14,32 +14,8 @@
|
|
|
14
14
|
* @since v0.13.0
|
|
15
15
|
* @packageDocumentation
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
17
|
import { BN } from "@coral-xyz/anchor";
|
|
19
18
|
import type { VolumeCurveBreakpoint } from "../types/common";
|
|
20
|
-
|
|
21
|
-
const U64_MAX = new BN("18446744073709551615");
|
|
22
|
-
|
|
23
|
-
function checkedMul(a: BN, b: BN): BN {
|
|
24
|
-
const r = a.mul(b);
|
|
25
|
-
if (r.gt(U64_MAX)) {
|
|
26
|
-
throw new Error(
|
|
27
|
-
`volume-curve: u64 overflow on multiply (${a.toString()} * ${b.toString()})`,
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
return r;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function checkedAdd(a: BN, b: BN): BN {
|
|
34
|
-
const r = a.add(b);
|
|
35
|
-
if (r.gt(U64_MAX)) {
|
|
36
|
-
throw new Error(
|
|
37
|
-
`volume-curve: u64 overflow on add (${a.toString()} + ${b.toString()})`,
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
return r;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
19
|
/**
|
|
44
20
|
* @function calculateSettleAmount
|
|
45
21
|
* @description Compute the lamport (or token base-unit) amount the on-chain
|
|
@@ -80,52 +56,5 @@ function checkedAdd(a: BN, b: BN): BN {
|
|
|
80
56
|
*
|
|
81
57
|
* @since v0.13.0
|
|
82
58
|
*/
|
|
83
|
-
export function calculateSettleAmount(
|
|
84
|
-
|
|
85
|
-
curve: VolumeCurveBreakpoint[],
|
|
86
|
-
totalCallsBefore: BN,
|
|
87
|
-
calls: BN,
|
|
88
|
-
): BN {
|
|
89
|
-
if (calls.isZero()) return new BN(0);
|
|
90
|
-
if (!curve || curve.length === 0) {
|
|
91
|
-
return checkedMul(calls, basePrice);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
let amount = new BN(0);
|
|
95
|
-
let remaining = calls.clone();
|
|
96
|
-
let cursor = totalCallsBefore.clone();
|
|
97
|
-
|
|
98
|
-
while (remaining.gtn(0)) {
|
|
99
|
-
let currentPrice = basePrice;
|
|
100
|
-
let nextThreshold: BN | null = null;
|
|
101
|
-
|
|
102
|
-
for (const bp of curve) {
|
|
103
|
-
const threshold = new BN(bp.afterCalls);
|
|
104
|
-
if (cursor.gte(threshold)) {
|
|
105
|
-
currentPrice = bp.pricePerCall;
|
|
106
|
-
} else {
|
|
107
|
-
nextThreshold = threshold;
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
let callsAtPrice: BN;
|
|
113
|
-
if (nextThreshold) {
|
|
114
|
-
const room = nextThreshold.sub(cursor);
|
|
115
|
-
callsAtPrice = BN.min(remaining, room.isNeg() ? new BN(0) : room);
|
|
116
|
-
if (callsAtPrice.isZero()) {
|
|
117
|
-
// Defensive: shouldn't happen because cursor < nextThreshold by
|
|
118
|
-
// the `else` branch above, but guard anyway.
|
|
119
|
-
callsAtPrice = remaining;
|
|
120
|
-
}
|
|
121
|
-
} else {
|
|
122
|
-
callsAtPrice = remaining;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
amount = checkedAdd(amount, checkedMul(callsAtPrice, currentPrice));
|
|
126
|
-
remaining = remaining.sub(callsAtPrice);
|
|
127
|
-
cursor = cursor.add(callsAtPrice);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
return amount;
|
|
131
|
-
}
|
|
59
|
+
export declare function calculateSettleAmount(basePrice: BN, curve: VolumeCurveBreakpoint[], totalCallsBefore: BN, calls: BN): BN;
|
|
60
|
+
//# sourceMappingURL=volume-curve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volume-curve.d.ts","sourceRoot":"","sources":["../../../src/utils/volume-curve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAwB7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,EAAE,EACb,KAAK,EAAE,qBAAqB,EAAE,EAC9B,gBAAgB,EAAE,EAAE,EACpB,KAAK,EAAE,EAAE,GACR,EAAE,CA2CJ"}
|
|
@@ -79,7 +79,7 @@ export function calculateSettleAmount(basePrice, curve, totalCallsBefore, calls)
|
|
|
79
79
|
let amount = new BN(0);
|
|
80
80
|
let remaining = calls.clone();
|
|
81
81
|
let cursor = totalCallsBefore.clone();
|
|
82
|
-
while (remaining.
|
|
82
|
+
while (remaining.gt(new BN(0))) {
|
|
83
83
|
let currentPrice = basePrice;
|
|
84
84
|
let nextThreshold = null;
|
|
85
85
|
for (const bp of curve) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volume-curve.js","sourceRoot":"","sources":["../../../src/utils/volume-curve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAGvC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAE/C,SAAS,UAAU,CAAC,CAAK,EAAE,CAAK;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,2CAA2C,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,CAAK,EAAE,CAAK;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,sCAAsC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAa,EACb,KAA8B,EAC9B,gBAAoB,EACpB,KAAS;IAET,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAEtC,OAAO,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"volume-curve.js","sourceRoot":"","sources":["../../../src/utils/volume-curve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module utils/x402-direct
|
|
3
|
+
* @description Recognize x402 direct SPL token payments on an agent's ATA
|
|
4
|
+
* by scanning transaction history and filtering for x402 patterns.
|
|
5
|
+
*
|
|
6
|
+
* @category Utils
|
|
7
|
+
* @since v0.6.4
|
|
8
|
+
*/
|
|
9
|
+
import { type Connection, PublicKey } from "@solana/web3.js";
|
|
10
|
+
/**
|
|
11
|
+
* @interface SettlementPayload
|
|
12
|
+
* @description Settlement metadata from the merchant's PAYMENT-RESPONSE.
|
|
13
|
+
* @category Utils
|
|
14
|
+
* @since v0.6.4
|
|
15
|
+
*/
|
|
16
|
+
export interface SettlementPayload {
|
|
17
|
+
/** SHA-256 service hash. */
|
|
18
|
+
readonly serviceHash: string;
|
|
19
|
+
/** Resource identifier. */
|
|
20
|
+
readonly resource: string;
|
|
21
|
+
/** Agent wallet (base58). */
|
|
22
|
+
readonly agentWallet: string;
|
|
23
|
+
/** Depositor wallet (base58). */
|
|
24
|
+
readonly depositorWallet: string;
|
|
25
|
+
/** Amount in smallest unit. */
|
|
26
|
+
readonly amount: string;
|
|
27
|
+
/** Service timestamp. */
|
|
28
|
+
readonly timestamp: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @interface X402DirectPayment
|
|
32
|
+
* @description A recognized x402 direct SPL transfer on an agent's ATA.
|
|
33
|
+
* @category Utils
|
|
34
|
+
* @since v0.6.4
|
|
35
|
+
*/
|
|
36
|
+
export interface X402DirectPayment {
|
|
37
|
+
/** Transaction signature. */
|
|
38
|
+
readonly signature: string;
|
|
39
|
+
/** Transfer amount (in smallest token unit). */
|
|
40
|
+
readonly amount: bigint;
|
|
41
|
+
/** Source ATA (payer). */
|
|
42
|
+
readonly payerAta: PublicKey;
|
|
43
|
+
/** Destination ATA (payTo / agent). */
|
|
44
|
+
readonly payeeAta: PublicKey;
|
|
45
|
+
/** Token mint used for transfer. */
|
|
46
|
+
readonly mint: PublicKey;
|
|
47
|
+
/** Memo data (if a Memo instruction was included). */
|
|
48
|
+
readonly memo: string | null;
|
|
49
|
+
/** Matched settlement payload (if server-side verification is available). */
|
|
50
|
+
readonly settlement: SettlementPayload | null;
|
|
51
|
+
/** Block time (unix seconds). */
|
|
52
|
+
readonly blockTime: number | null;
|
|
53
|
+
/** Slot number. */
|
|
54
|
+
readonly slot: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @interface GetX402DirectOptions
|
|
58
|
+
* @description Options for {@link getX402DirectPayments}.
|
|
59
|
+
* @category Utils
|
|
60
|
+
* @since v0.6.4
|
|
61
|
+
*/
|
|
62
|
+
export interface GetX402DirectOptions {
|
|
63
|
+
/** Max signatures to scan (default: 100). */
|
|
64
|
+
readonly limit?: number;
|
|
65
|
+
/** Only return transfers from this specific payer. */
|
|
66
|
+
readonly filterPayer?: PublicKey;
|
|
67
|
+
/** Known settlements from server-side PAYMENT-RESPONSE logs.
|
|
68
|
+
* Used for deterministic hash matching. */
|
|
69
|
+
readonly knownSettlements?: SettlementPayload[];
|
|
70
|
+
/** Only include payments that match x402 memo prefix. Default: false. */
|
|
71
|
+
readonly requireMemo?: boolean;
|
|
72
|
+
/** Scan before this TX signature (pagination). */
|
|
73
|
+
readonly before?: string;
|
|
74
|
+
/** Scan after this TX signature (pagination). */
|
|
75
|
+
readonly until?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @name getX402DirectPayments
|
|
79
|
+
* @description Scan an agent's ATA for x402 direct payments.
|
|
80
|
+
*
|
|
81
|
+
* Fetches recent transaction signatures for the given `payTo` ATA,
|
|
82
|
+
* inspects each transaction for SPL token transfers, and filters
|
|
83
|
+
* for x402 payment patterns (memo prefix, settlement hash match, etc.).
|
|
84
|
+
*
|
|
85
|
+
* @param connection - Solana RPC connection.
|
|
86
|
+
* @param payToAta - The agent's receiving ATA (e.g. USDC ATA of Syra).
|
|
87
|
+
* @param opts - Filter and pagination options.
|
|
88
|
+
* @returns Array of recognized x402 direct payments, newest first.
|
|
89
|
+
*
|
|
90
|
+
* @category Utils
|
|
91
|
+
* @since v0.6.4
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* import { getX402DirectPayments, findATA } from "@oobe-protocol-labs/synapse-sap-sdk";
|
|
96
|
+
*
|
|
97
|
+
* const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
|
|
98
|
+
* const payToAta = findATA(agentWallet, USDC_MINT);
|
|
99
|
+
*
|
|
100
|
+
* const payments = await getX402DirectPayments(connection, payToAta, {
|
|
101
|
+
* limit: 50,
|
|
102
|
+
* knownSettlements: savedSettlements, // from your API PAYMENT-RESPONSE logs
|
|
103
|
+
* });
|
|
104
|
+
*
|
|
105
|
+
* for (const p of payments) {
|
|
106
|
+
* console.log(`${p.signature}: ${p.amount} from ${p.payerAta.toBase58()}`);
|
|
107
|
+
* if (p.settlement) {
|
|
108
|
+
* console.log(` Matched settlement: ${p.settlement.serviceHash}`);
|
|
109
|
+
* }
|
|
110
|
+
* }
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function getX402DirectPayments(connection: Connection, payToAta: PublicKey, opts?: GetX402DirectOptions): Promise<X402DirectPayment[]>;
|
|
114
|
+
//# sourceMappingURL=x402-direct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-direct.d.ts","sourceRoot":"","sources":["../../../src/utils/x402-direct.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,UAAU,EACf,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAOzB;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iCAAiC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC9C,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC;gDAC4C;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChD,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA6KD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,SAAS,EACnB,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAmE9B"}
|
|
@@ -56,6 +56,8 @@ export declare const SEEDS: {
|
|
|
56
56
|
readonly SUBSCRIPTION: "sap_sub";
|
|
57
57
|
readonly SHARD: "sap_shard";
|
|
58
58
|
readonly INDEX_PAGE: "sap_idx_page";
|
|
59
|
+
/** v0.12 — On-chain pricing menu for escrow price validation. Seeds: `["sap_pricing", agent_pda]`. */
|
|
60
|
+
readonly PRICING: "sap_pricing";
|
|
59
61
|
/**
|
|
60
62
|
* @since v0.10.0 — Anti-replay receipt PDA bound to (escrow, service_hash) or (escrow, batch_root).
|
|
61
63
|
* Created via `init` on every settle_calls / settle_batch / settle_calls_v2; replays fail.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../../src/constants/seeds.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BhB;;;OAGG;;IAEH;;;OAGG;;CAEK,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../../src/constants/seeds.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BhB,sGAAsG;;IAEtG;;;OAGG;;IAEH;;;OAGG;;CAEK,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC"}
|
|
@@ -30,7 +30,6 @@ import { FeedbackModule } from "../modules/feedback";
|
|
|
30
30
|
import { IndexingModule } from "../modules/indexing";
|
|
31
31
|
import { ToolsModule } from "../modules/tools";
|
|
32
32
|
import { VaultModule } from "../modules/vault";
|
|
33
|
-
import { EscrowModule } from "../modules/escrow";
|
|
34
33
|
import { EscrowV2Module } from "../modules/escrow-v2";
|
|
35
34
|
import { ReceiptModule } from "../modules/receipt";
|
|
36
35
|
import { StakingModule } from "../modules/staking";
|
|
@@ -208,14 +207,30 @@ export declare class SapClient {
|
|
|
208
207
|
get vault(): VaultModule;
|
|
209
208
|
/**
|
|
210
209
|
* @name escrow
|
|
211
|
-
* @description
|
|
212
|
-
*
|
|
213
|
-
*
|
|
210
|
+
* @description ⚠️ **DEPRECATED — redirected to EscrowV2** —
|
|
211
|
+
* `client.escrow` now returns {@link EscrowV2Module} automatically.
|
|
212
|
+
* The legacy v1 `EscrowModule` (`createEscrow`, `depositEscrow`, `settleCalls`,
|
|
213
|
+
* `withdrawEscrow`, `closeEscrow`, `batchSettle`) was removed from the on-chain
|
|
214
|
+
* program in v0.12. All escrow operations are now V2-only (USDC-only, dispute
|
|
215
|
+
* support, pricing validation).
|
|
216
|
+
*
|
|
217
|
+
* ```ts
|
|
218
|
+
* // ✅ v0.12+ — works via automatic redirection
|
|
219
|
+
* await client.escrow.create(agentWallet, args);
|
|
220
|
+
* // ^ this calls EscrowV2Module.create() internally
|
|
221
|
+
*
|
|
222
|
+
* // ✅ Explicit (same result)
|
|
223
|
+
* await client.escrowV2.create(agentWallet, args);
|
|
224
|
+
* ```
|
|
225
|
+
*
|
|
226
|
+
* @returns {EscrowV2Module} The lazily-instantiated `EscrowV2Module` singleton.
|
|
214
227
|
* @category Modules
|
|
215
228
|
* @since v0.1.0
|
|
216
|
-
* @
|
|
229
|
+
* @updated v0.12 — redirects to EscrowV2Module (v1 instructions removed from program)
|
|
230
|
+
* @see {@link EscrowV2Module}
|
|
231
|
+
* @deprecated v0.12 — v1 escrow removed; `escrow` getter now auto-redirects to `escrowV2`.
|
|
217
232
|
*/
|
|
218
|
-
get escrow():
|
|
233
|
+
get escrow(): EscrowV2Module;
|
|
219
234
|
/**
|
|
220
235
|
* @name escrowV2
|
|
221
236
|
* @description V2 escrow settlement with dispute windows, co-signing,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -273,4 +273,63 @@ export declare class SapPermissionError extends SapError {
|
|
|
273
273
|
*/
|
|
274
274
|
constructor(message: string);
|
|
275
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* @name SapTransientError
|
|
278
|
+
* @description Wraps RPC failures that are *retryable* — network errors,
|
|
279
|
+
* 429 rate limits, 5xx, blockhash-not-found, node-behind, fetch-failed.
|
|
280
|
+
*
|
|
281
|
+
* SDK fetch helpers (`safeFetch`) auto-retry these with exponential backoff
|
|
282
|
+
* before re-throwing. Callers can also catch and retry at higher layers.
|
|
283
|
+
*
|
|
284
|
+
* @category Errors
|
|
285
|
+
* @since v0.13.1
|
|
286
|
+
* @extends {SapError}
|
|
287
|
+
*/
|
|
288
|
+
export declare class SapTransientError extends SapError {
|
|
289
|
+
readonly attempt: number;
|
|
290
|
+
readonly cause?: unknown;
|
|
291
|
+
constructor(message: string, opts?: {
|
|
292
|
+
attempt?: number;
|
|
293
|
+
cause?: unknown;
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* @name SapAlreadyExistsError
|
|
298
|
+
* @description Thrown when an `init` instruction would collide with an
|
|
299
|
+
* already-existing PDA. Detected by SDK preflight — prevents a wasted tx
|
|
300
|
+
* and surfaces an idempotent success path to callers.
|
|
301
|
+
*
|
|
302
|
+
* @category Errors
|
|
303
|
+
* @since v0.13.1
|
|
304
|
+
* @extends {SapError}
|
|
305
|
+
*/
|
|
306
|
+
export declare class SapAlreadyExistsError extends SapError {
|
|
307
|
+
readonly address: string;
|
|
308
|
+
readonly accountType?: string;
|
|
309
|
+
constructor(address: string, accountType?: string, hint?: string);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* @name SapIdempotencyError
|
|
313
|
+
* @description Thrown by `safeRpc` when a transaction would replay an action
|
|
314
|
+
* that has already been recorded on-chain (e.g. settlement-receipt PDA already
|
|
315
|
+
* exists). Treat as a non-fatal idempotent success and drop the queued action.
|
|
316
|
+
*
|
|
317
|
+
* @category Errors
|
|
318
|
+
* @since v0.13.1
|
|
319
|
+
* @extends {SapError}
|
|
320
|
+
*/
|
|
321
|
+
export declare class SapIdempotencyError extends SapError {
|
|
322
|
+
readonly receiptAddress?: string;
|
|
323
|
+
constructor(message: string, receiptAddress?: string);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* @name isTransientRpcError
|
|
327
|
+
* @description Heuristic classifier for RPC errors. Returns `true` for
|
|
328
|
+
* network failures, rate limits, 5xx, blockhash-not-found, node-behind,
|
|
329
|
+
* fetch-failed, ECONNRESET, ETIMEDOUT, socket hang up.
|
|
330
|
+
*
|
|
331
|
+
* @category Errors
|
|
332
|
+
* @since v0.13.1
|
|
333
|
+
*/
|
|
334
|
+
export declare function isTransientRpcError(err: unknown): boolean;
|
|
276
335
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAOhD;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAK5C;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;;OAKG;gBAED,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE;IAQvD;;;;;;;;;;;;;;;;;;OAkBG;IAEH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW;CAOzC;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;IACnD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;CAOlD;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAK/C;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C;;OAEG;gBACS,OAAO,EAAE,MAAM;CAI5B"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,IAAI,SAAc;CAOhD;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAK5C;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;;OAKG;gBAED,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE;IAQvD;;;;;;;;;;;;;;;;;;OAkBG;IAEH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW;CAOzC;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;IACnD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;CAOlD;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAK/C;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C;;OAEG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAMD;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAM1E;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAQjE;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;gBACrB,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;CAKrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAsBzD"}
|