@oobe-protocol-labs/synapse-sap-sdk 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/accounts/index.js +286 -0
- package/dist/cjs/accounts/index.js.map +1 -0
- package/dist/cjs/client.js +125 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/constants/seeds.js +9 -9
- package/dist/cjs/constants/seeds.js.map +1 -1
- package/dist/cjs/constants.js +66 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/errors.js +260 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/events/index.js +37 -123
- package/dist/cjs/events/index.js.map +1 -1
- package/dist/cjs/idlTypes.js +4 -0
- package/dist/cjs/idlTypes.js.map +1 -0
- package/dist/cjs/index.js +75 -241
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instructions/agent.js +90 -0
- package/dist/cjs/instructions/agent.js.map +1 -0
- package/dist/cjs/instructions/attestation.js +113 -0
- package/dist/cjs/instructions/attestation.js.map +1 -0
- package/dist/cjs/instructions/digest.js +29 -0
- package/dist/cjs/instructions/digest.js.map +1 -0
- package/dist/cjs/instructions/dispute.js +117 -0
- package/dist/cjs/instructions/dispute.js.map +1 -0
- package/dist/cjs/instructions/escrow.js +102 -0
- package/dist/cjs/instructions/escrow.js.map +1 -0
- package/dist/cjs/instructions/global.js +29 -0
- package/dist/cjs/instructions/global.js.map +1 -0
- package/dist/cjs/instructions/index.js +31 -0
- package/dist/cjs/instructions/index.js.map +1 -0
- package/dist/cjs/instructions/indexing.js +222 -0
- package/dist/cjs/instructions/indexing.js.map +1 -0
- package/dist/cjs/instructions/misc.js +74 -0
- package/dist/cjs/instructions/misc.js.map +1 -0
- package/dist/cjs/instructions/session.js +90 -0
- package/dist/cjs/instructions/session.js.map +1 -0
- package/dist/cjs/instructions/staking.js +133 -0
- package/dist/cjs/instructions/staking.js.map +1 -0
- package/dist/cjs/instructions/subscription.js +81 -0
- package/dist/cjs/instructions/subscription.js.map +1 -0
- package/dist/cjs/instructions/tools.js +110 -0
- package/dist/cjs/instructions/tools.js.map +1 -0
- package/dist/cjs/instructions/vault.js +107 -0
- package/dist/cjs/instructions/vault.js.map +1 -0
- package/dist/cjs/pdas/index.js +120 -0
- package/dist/cjs/pdas/index.js.map +1 -0
- package/dist/cjs/registries/fairscale.js +1 -1
- package/dist/cjs/registries/fairscale.js.map +1 -1
- package/dist/cjs/registries/metaplex-bridge.js +1 -1
- package/dist/cjs/registries/metaplex-bridge.js.map +1 -1
- package/dist/cjs/types.js +45 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/escrow-validation.js +1 -1
- package/dist/cjs/utils/escrow-validation.js.map +1 -1
- package/dist/cjs/utils/index.js +32 -83
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/merchant-validator.js +5 -5
- package/dist/cjs/utils/merchant-validator.js.map +1 -1
- package/dist/cjs/utils/validate.js +236 -0
- package/dist/cjs/utils/validate.js.map +1 -0
- package/dist/cjs/utils/volume-curve.js +1 -1
- package/dist/cjs/utils/volume-curve.js.map +1 -1
- package/dist/esm/accounts/index.d.ts +11 -0
- package/dist/esm/accounts/index.d.ts.map +1 -0
- package/dist/esm/accounts/index.js +273 -0
- package/dist/esm/accounts/index.js.map +1 -0
- package/dist/esm/client.d.ts +55 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +87 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/constants/addresses.d.ts +117 -0
- package/dist/esm/constants/addresses.d.ts.map +1 -0
- package/dist/esm/constants/index.d.ts +31 -0
- package/dist/esm/constants/index.d.ts.map +1 -0
- package/dist/esm/constants/limits.d.ts +149 -0
- package/dist/esm/constants/limits.d.ts.map +1 -0
- package/{src/constants/network.ts → dist/esm/constants/network.d.ts} +23 -31
- package/dist/esm/constants/network.d.ts.map +1 -0
- package/{src/constants/payments.ts → dist/esm/constants/payments.d.ts} +11 -35
- package/dist/esm/constants/payments.d.ts.map +1 -0
- package/{src/constants/programs.ts → dist/esm/constants/programs.d.ts} +6 -20
- package/dist/esm/constants/programs.d.ts.map +1 -0
- package/dist/esm/constants/seeds.d.ts +80 -0
- package/dist/esm/constants/seeds.d.ts.map +1 -0
- package/dist/esm/constants/seeds.js +9 -9
- package/dist/esm/constants/seeds.js.map +1 -1
- package/dist/esm/constants.d.ts +39 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +41 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/core/client.d.ts +452 -0
- package/dist/esm/core/client.d.ts.map +1 -0
- package/dist/esm/core/connection.d.ts +305 -0
- package/dist/esm/core/connection.d.ts.map +1 -0
- package/{src/core/index.ts → dist/esm/core/index.d.ts} +1 -1
- package/dist/esm/core/index.d.ts.map +1 -0
- package/dist/esm/errors/index.d.ts +276 -0
- package/dist/esm/errors/index.d.ts.map +1 -0
- package/dist/esm/errors.d.ts +119 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +252 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/events/geyser.d.ts +150 -0
- package/dist/esm/events/geyser.d.ts.map +1 -0
- package/dist/esm/events/index.d.ts +17 -0
- package/dist/esm/events/index.d.ts.map +1 -0
- package/dist/esm/events/index.js +34 -122
- package/dist/esm/events/index.js.map +1 -1
- package/{src/idl/index.ts → dist/esm/idl/index.d.ts} +9 -15
- package/dist/esm/idl/index.d.ts.map +1 -0
- package/dist/esm/idlTypes.d.ts +925 -0
- package/dist/esm/idlTypes.d.ts.map +1 -0
- package/dist/esm/idlTypes.js +3 -0
- package/dist/esm/idlTypes.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -88
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instructions/agent.d.ts +71 -0
- package/dist/esm/instructions/agent.d.ts.map +1 -0
- package/dist/esm/instructions/agent.js +86 -0
- package/dist/esm/instructions/agent.js.map +1 -0
- package/dist/esm/instructions/attestation.d.ts +76 -0
- package/dist/esm/instructions/attestation.d.ts.map +1 -0
- package/dist/esm/instructions/attestation.js +109 -0
- package/dist/esm/instructions/attestation.js.map +1 -0
- package/dist/esm/instructions/digest.d.ts +20 -0
- package/dist/esm/instructions/digest.d.ts.map +1 -0
- package/dist/esm/instructions/digest.js +25 -0
- package/dist/esm/instructions/digest.js.map +1 -0
- package/dist/esm/instructions/dispute.d.ts +81 -0
- package/dist/esm/instructions/dispute.d.ts.map +1 -0
- package/dist/esm/instructions/dispute.js +113 -0
- package/dist/esm/instructions/dispute.js.map +1 -0
- package/dist/esm/instructions/escrow.d.ts +79 -0
- package/dist/esm/instructions/escrow.d.ts.map +1 -0
- package/dist/esm/instructions/escrow.js +98 -0
- package/dist/esm/instructions/escrow.js.map +1 -0
- package/dist/esm/instructions/global.d.ts +14 -0
- package/dist/esm/instructions/global.d.ts.map +1 -0
- package/dist/esm/instructions/global.js +25 -0
- package/dist/esm/instructions/global.js.map +1 -0
- package/dist/esm/instructions/index.d.ts +14 -0
- package/dist/esm/instructions/index.d.ts.map +1 -0
- package/dist/esm/instructions/index.js +15 -0
- package/dist/esm/instructions/index.js.map +1 -0
- package/dist/esm/instructions/indexing.d.ts +150 -0
- package/dist/esm/instructions/indexing.d.ts.map +1 -0
- package/dist/esm/instructions/indexing.js +218 -0
- package/dist/esm/instructions/indexing.js.map +1 -0
- package/dist/esm/instructions/memory.d.ts +8 -0
- package/dist/esm/instructions/memory.d.ts.map +1 -0
- package/dist/esm/instructions/memory.js +234 -0
- package/dist/esm/instructions/memory.js.map +1 -0
- package/dist/esm/instructions/misc.d.ts +50 -0
- package/dist/esm/instructions/misc.d.ts.map +1 -0
- package/dist/esm/instructions/misc.js +70 -0
- package/dist/esm/instructions/misc.js.map +1 -0
- package/dist/esm/instructions/session.d.ts +57 -0
- package/dist/esm/instructions/session.d.ts.map +1 -0
- package/dist/esm/instructions/session.js +86 -0
- package/dist/esm/instructions/session.js.map +1 -0
- package/dist/esm/instructions/staking.d.ts +85 -0
- package/dist/esm/instructions/staking.d.ts.map +1 -0
- package/dist/esm/instructions/staking.js +129 -0
- package/dist/esm/instructions/staking.js.map +1 -0
- package/dist/esm/instructions/subscription.d.ts +50 -0
- package/dist/esm/instructions/subscription.d.ts.map +1 -0
- package/dist/esm/instructions/subscription.js +77 -0
- package/dist/esm/instructions/subscription.js.map +1 -0
- package/dist/esm/instructions/tools.d.ts +88 -0
- package/dist/esm/instructions/tools.d.ts.map +1 -0
- package/dist/esm/instructions/tools.js +106 -0
- package/dist/esm/instructions/tools.js.map +1 -0
- package/dist/esm/instructions/vault.d.ts +84 -0
- package/dist/esm/instructions/vault.d.ts.map +1 -0
- package/dist/esm/instructions/vault.js +103 -0
- package/dist/esm/instructions/vault.js.map +1 -0
- package/dist/esm/modules/agent.d.ts +166 -0
- package/dist/esm/modules/agent.d.ts.map +1 -0
- package/dist/esm/modules/attestation.d.ts +96 -0
- package/dist/esm/modules/attestation.d.ts.map +1 -0
- package/dist/esm/modules/base.d.ts +161 -0
- package/dist/esm/modules/base.d.ts.map +1 -0
- package/dist/esm/modules/escrow-v2.d.ts +169 -0
- package/dist/esm/modules/escrow-v2.d.ts.map +1 -0
- package/dist/esm/modules/feedback.d.ts +105 -0
- package/dist/esm/modules/feedback.d.ts.map +1 -0
- package/{src/modules/index.ts → dist/esm/modules/index.d.ts} +1 -1
- package/dist/esm/modules/index.d.ts.map +1 -0
- package/dist/esm/modules/indexing.d.ts +200 -0
- package/dist/esm/modules/indexing.d.ts.map +1 -0
- package/dist/esm/modules/ledger.d.ts +150 -0
- package/dist/esm/modules/ledger.d.ts.map +1 -0
- package/dist/esm/modules/receipt.d.ts +77 -0
- package/dist/esm/modules/receipt.d.ts.map +1 -0
- package/dist/esm/modules/staking.d.ts +51 -0
- package/dist/esm/modules/staking.d.ts.map +1 -0
- package/dist/esm/modules/subscription.d.ts +33 -0
- package/dist/esm/modules/subscription.d.ts.map +1 -0
- package/dist/esm/modules/tools.d.ts +182 -0
- package/dist/esm/modules/tools.d.ts.map +1 -0
- package/dist/esm/modules/vault.d.ts +240 -0
- package/dist/esm/modules/vault.d.ts.map +1 -0
- package/dist/esm/parser/client.d.ts +123 -0
- package/dist/esm/parser/client.d.ts.map +1 -0
- package/dist/esm/parser/complete.d.ts +90 -0
- package/dist/esm/parser/complete.d.ts.map +1 -0
- package/{src/parser/index.ts → dist/esm/parser/index.d.ts} +6 -37
- package/dist/esm/parser/index.d.ts.map +1 -0
- package/dist/esm/parser/inner.d.ts +114 -0
- package/dist/esm/parser/inner.d.ts.map +1 -0
- package/{src/parser/instructions.ts → dist/esm/parser/instructions.d.ts} +4 -63
- package/dist/esm/parser/instructions.d.ts.map +1 -0
- package/dist/esm/parser/transaction.d.ts +77 -0
- package/dist/esm/parser/transaction.d.ts.map +1 -0
- package/dist/esm/parser/types.d.ts +154 -0
- package/dist/esm/parser/types.d.ts.map +1 -0
- package/{src/pda/index.ts → dist/esm/pda/index.d.ts} +33 -442
- package/dist/esm/pda/index.d.ts.map +1 -0
- package/dist/esm/pdas/index.d.ts +37 -0
- package/dist/esm/pdas/index.d.ts.map +1 -0
- package/dist/esm/pdas/index.js +101 -0
- package/dist/esm/pdas/index.js.map +1 -0
- package/dist/esm/plugin/index.d.ts +171 -0
- package/dist/esm/plugin/index.d.ts.map +1 -0
- package/dist/esm/plugin/protocols.d.ts +152 -0
- package/dist/esm/plugin/protocols.d.ts.map +1 -0
- package/dist/esm/plugin/schemas.d.ts +829 -0
- package/dist/esm/plugin/schemas.d.ts.map +1 -0
- package/dist/esm/postgres/adapter.d.ts +355 -0
- package/dist/esm/postgres/adapter.d.ts.map +1 -0
- package/dist/esm/postgres/index.d.ts +24 -0
- package/dist/esm/postgres/index.d.ts.map +1 -0
- package/dist/esm/postgres/serializers.d.ts +30 -0
- package/dist/esm/postgres/serializers.d.ts.map +1 -0
- package/dist/esm/postgres/sync.d.ts +156 -0
- package/dist/esm/postgres/sync.d.ts.map +1 -0
- package/dist/esm/postgres/types.d.ts +167 -0
- package/dist/esm/postgres/types.d.ts.map +1 -0
- package/dist/esm/registries/builder.d.ts +340 -0
- package/dist/esm/registries/builder.d.ts.map +1 -0
- package/dist/esm/registries/discovery.d.ts +333 -0
- package/dist/esm/registries/discovery.d.ts.map +1 -0
- package/dist/esm/registries/fairscale.d.ts +680 -0
- package/dist/esm/registries/fairscale.d.ts.map +1 -0
- package/dist/esm/registries/fairscale.js +1 -1
- package/dist/esm/registries/fairscale.js.map +1 -1
- package/dist/esm/registries/index.d.ts +52 -0
- package/dist/esm/registries/index.d.ts.map +1 -0
- package/dist/esm/registries/metaplex-bridge.d.ts +489 -0
- package/dist/esm/registries/metaplex-bridge.d.ts.map +1 -0
- package/dist/esm/registries/metaplex-bridge.js +1 -1
- package/dist/esm/registries/metaplex-bridge.js.map +1 -1
- package/dist/esm/registries/session.d.ts +323 -0
- package/dist/esm/registries/session.d.ts.map +1 -0
- package/dist/esm/registries/x402.d.ts +530 -0
- package/dist/esm/registries/x402.d.ts.map +1 -0
- package/dist/esm/types/accounts.d.ts +765 -0
- package/dist/esm/types/accounts.d.ts.map +1 -0
- package/dist/esm/types/common.d.ts +166 -0
- package/dist/esm/types/common.d.ts.map +1 -0
- package/dist/esm/types/endpoint.d.ts +161 -0
- package/dist/esm/types/endpoint.d.ts.map +1 -0
- package/dist/esm/types/enums.d.ts +353 -0
- package/dist/esm/types/enums.d.ts.map +1 -0
- package/dist/esm/types/index.d.ts +29 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/instructions.d.ts +400 -0
- package/dist/esm/types/instructions.d.ts.map +1 -0
- package/dist/esm/types.d.ts +236 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +40 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/anchor-errors.d.ts +61 -0
- package/dist/esm/utils/anchor-errors.d.ts.map +1 -0
- package/dist/esm/utils/endpoint-validator.d.ts +110 -0
- package/dist/esm/utils/endpoint-validator.d.ts.map +1 -0
- package/dist/esm/utils/escrow-validation.d.ts +145 -0
- package/dist/esm/utils/escrow-validation.d.ts.map +1 -0
- package/dist/esm/utils/escrow-validation.js +1 -1
- package/dist/esm/utils/escrow-validation.js.map +1 -1
- package/{src/utils/hash.ts → dist/esm/utils/hash.d.ts} +4 -42
- package/dist/esm/utils/hash.d.ts.map +1 -0
- package/dist/esm/utils/index.d.ts +6 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +16 -33
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/merchant-validator.d.ts +176 -0
- package/dist/esm/utils/merchant-validator.d.ts.map +1 -0
- package/dist/esm/utils/merchant-validator.js +1 -1
- package/dist/esm/utils/merchant-validator.js.map +1 -1
- package/dist/esm/utils/network-normalizer.d.ts +120 -0
- package/dist/esm/utils/network-normalizer.d.ts.map +1 -0
- package/dist/esm/utils/priority-fee.d.ts +205 -0
- package/dist/esm/utils/priority-fee.d.ts.map +1 -0
- package/dist/esm/utils/rpc-strategy.d.ts +172 -0
- package/dist/esm/utils/rpc-strategy.d.ts.map +1 -0
- package/dist/esm/utils/schemas.d.ts +351 -0
- package/dist/esm/utils/schemas.d.ts.map +1 -0
- package/{src/utils/serialization.ts → dist/esm/utils/serialization.d.ts} +3 -32
- package/dist/esm/utils/serialization.d.ts.map +1 -0
- package/dist/esm/utils/validate.d.ts +66 -0
- package/dist/esm/utils/validate.d.ts.map +1 -0
- package/dist/esm/utils/validate.js +221 -0
- package/dist/esm/utils/validate.js.map +1 -0
- package/{src/utils/validation.ts → dist/esm/utils/validation.d.ts} +2 -9
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/{src/utils/volume-curve.ts → dist/esm/utils/volume-curve.d.ts} +2 -73
- package/dist/esm/utils/volume-curve.d.ts.map +1 -0
- package/dist/esm/utils/volume-curve.js +1 -1
- package/dist/esm/utils/volume-curve.js.map +1 -1
- package/dist/esm/utils/x402-direct.d.ts +114 -0
- package/dist/esm/utils/x402-direct.d.ts.map +1 -0
- package/dist/types/constants/seeds.d.ts +2 -0
- package/dist/types/constants/seeds.d.ts.map +1 -1
- package/dist/types/core/client.d.ts +21 -6
- package/dist/types/core/client.d.ts.map +1 -1
- package/dist/types/errors/index.d.ts +59 -0
- package/dist/types/errors/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/agent.d.ts +9 -19
- package/dist/types/modules/agent.d.ts.map +1 -1
- package/dist/types/modules/attestation.d.ts.map +1 -1
- package/dist/types/modules/base.d.ts +54 -0
- package/dist/types/modules/base.d.ts.map +1 -1
- package/dist/types/modules/escrow-v2.d.ts +117 -1
- package/dist/types/modules/escrow-v2.d.ts.map +1 -1
- package/dist/types/modules/index.d.ts +1 -2
- package/dist/types/modules/index.d.ts.map +1 -1
- package/dist/types/modules/receipt.d.ts +14 -0
- package/dist/types/modules/receipt.d.ts.map +1 -1
- package/dist/types/modules/subscription.d.ts.map +1 -1
- package/dist/types/modules/tools.d.ts +0 -10
- package/dist/types/modules/tools.d.ts.map +1 -1
- package/dist/types/modules/vault.d.ts.map +1 -1
- package/dist/types/pda/index.d.ts +17 -0
- package/dist/types/pda/index.d.ts.map +1 -1
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/registries/builder.d.ts +2 -9
- package/dist/types/registries/builder.d.ts.map +1 -1
- package/dist/types/registries/metaplex-bridge.d.ts.map +1 -1
- package/dist/types/registries/session.d.ts +3 -9
- package/dist/types/registries/session.d.ts.map +1 -1
- package/dist/types/registries/x402.d.ts +2 -9
- package/dist/types/registries/x402.d.ts.map +1 -1
- package/dist/types/types/accounts.d.ts +52 -0
- package/dist/types/types/accounts.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/rpc-strategy.d.ts +7 -0
- package/dist/types/utils/rpc-strategy.d.ts.map +1 -1
- package/package.json +59 -183
- package/src/constants/addresses.ts +0 -162
- package/src/constants/index.ts +0 -69
- package/src/constants/limits.ts +0 -165
- package/src/constants/seeds.ts +0 -85
- package/src/core/client.ts +0 -583
- package/src/core/connection.ts +0 -461
- package/src/errors/index.ts +0 -346
- package/src/events/geyser.ts +0 -384
- package/src/events/index.ts +0 -335
- package/src/events/yellowstone.d.ts +0 -7
- package/src/idl/synapse_agent_sap.json +0 -14595
- package/src/index.ts +0 -421
- package/src/modules/agent.ts +0 -319
- package/src/modules/attestation.ts +0 -168
- package/src/modules/base.ts +0 -247
- package/src/modules/escrow-v2.ts +0 -871
- package/src/modules/escrow.ts +0 -439
- package/src/modules/feedback.ts +0 -186
- package/src/modules/indexing.ts +0 -444
- package/src/modules/ledger.ts +0 -262
- package/src/modules/receipt.ts +0 -212
- package/src/modules/staking.ts +0 -223
- package/src/modules/subscription.ts +0 -147
- package/src/modules/tools.ts +0 -454
- package/src/modules/vault.ts +0 -558
- package/src/parser/client.ts +0 -211
- package/src/parser/complete.ts +0 -232
- package/src/parser/inner.ts +0 -255
- package/src/parser/transaction.ts +0 -200
- package/src/parser/types.ts +0 -182
- package/src/plugin/index.ts +0 -1224
- package/src/plugin/protocols.ts +0 -404
- package/src/plugin/schemas.ts +0 -941
- package/src/postgres/adapter.ts +0 -904
- package/src/postgres/index.ts +0 -59
- package/src/postgres/schema.sql +0 -683
- package/src/postgres/serializers.ts +0 -485
- package/src/postgres/sync.ts +0 -340
- package/src/postgres/types.ts +0 -245
- package/src/registries/builder.ts +0 -607
- package/src/registries/discovery.ts +0 -572
- package/src/registries/fairscale.ts +0 -1278
- package/src/registries/index.ts +0 -143
- package/src/registries/metaplex-bridge.ts +0 -1199
- package/src/registries/session.ts +0 -613
- package/src/registries/x402.ts +0 -1048
- package/src/types/accounts.ts +0 -858
- package/src/types/common.ts +0 -187
- package/src/types/endpoint.ts +0 -181
- package/src/types/enums.ts +0 -333
- package/src/types/index.ts +0 -121
- package/src/types/instructions.ts +0 -453
- package/src/utils/anchor-errors.ts +0 -461
- package/src/utils/endpoint-validator.ts +0 -300
- package/src/utils/escrow-validation.ts +0 -301
- package/src/utils/index.ts +0 -118
- package/src/utils/merchant-validator.ts +0 -359
- package/src/utils/network-normalizer.ts +0 -240
- package/src/utils/priority-fee.ts +0 -325
- package/src/utils/rpc-strategy.ts +0 -322
- package/src/utils/schemas.ts +0 -359
- package/src/utils/x402-direct.ts +0 -370
- /package/dist/{types → esm}/modules/escrow.d.ts +0 -0
- /package/dist/{types → esm}/modules/escrow.d.ts.map +0 -0
package/src/modules/receipt.ts
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module receipt
|
|
3
|
-
* @description Receipt-based trustless dispute resolution (v0.7).
|
|
4
|
-
*
|
|
5
|
-
* Agents inscribe merkle roots of call receipt batches on-chain.
|
|
6
|
-
* During disputes, agents submit merkle inclusion proofs to prove delivery.
|
|
7
|
-
* After the proof deadline, anyone can trigger automatic proportional resolution.
|
|
8
|
-
*
|
|
9
|
-
* @category Modules
|
|
10
|
-
* @since v0.7.0
|
|
11
|
-
* @packageDocumentation
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
SystemProgram,
|
|
16
|
-
type PublicKey,
|
|
17
|
-
type TransactionSignature,
|
|
18
|
-
} from "@solana/web3.js";
|
|
19
|
-
import { BN } from "@coral-xyz/anchor";
|
|
20
|
-
import { BaseModule } from "./base";
|
|
21
|
-
import {
|
|
22
|
-
deriveAgent,
|
|
23
|
-
deriveAgentStats,
|
|
24
|
-
deriveEscrowV2,
|
|
25
|
-
derivePendingSettlement as derivePendingPda,
|
|
26
|
-
deriveDispute as deriveDisputePda,
|
|
27
|
-
deriveReceiptBatch as deriveReceiptPda,
|
|
28
|
-
deriveStake,
|
|
29
|
-
} from "../pda";
|
|
30
|
-
import type { ReceiptBatchData } from "../types";
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @name ReceiptModule
|
|
34
|
-
* @description Manages receipt batch inscriptions, merkle proof submissions,
|
|
35
|
-
* and automatic dispute resolution for the v0.7 trustless settlement layer.
|
|
36
|
-
*
|
|
37
|
-
* @category Modules
|
|
38
|
-
* @since v0.7.0
|
|
39
|
-
* @extends BaseModule
|
|
40
|
-
*/
|
|
41
|
-
export class ReceiptModule extends BaseModule {
|
|
42
|
-
// ── Helpers ──────────────────────────────────────────
|
|
43
|
-
|
|
44
|
-
private toNum(v: BN | number | bigint): number {
|
|
45
|
-
return BN.isBN(v) ? v.toNumber() : Number(v);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// ── PDA helpers ──────────────────────────────────────
|
|
49
|
-
|
|
50
|
-
deriveReceiptBatch(
|
|
51
|
-
escrowV2Pda: PublicKey,
|
|
52
|
-
batchIndex: number,
|
|
53
|
-
): readonly [PublicKey, number] {
|
|
54
|
-
return deriveReceiptPda(escrowV2Pda, batchIndex);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// ── Instructions ─────────────────────────────────────
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Inscribe a receipt batch merkle root on-chain.
|
|
61
|
-
*
|
|
62
|
-
* Called by the **agent** to commit a cryptographic proof of calls delivered.
|
|
63
|
-
* The `merkleRoot` is the root of a merkle tree whose leaves are individual
|
|
64
|
-
* call receipt hashes.
|
|
65
|
-
*
|
|
66
|
-
* @param depositorWallet - The depositor's wallet (needed for escrow PDA derivation).
|
|
67
|
-
* @param nonce - Escrow nonce.
|
|
68
|
-
* @param batchIndex - Zero-based batch index (must equal escrow.receipt_batch_count).
|
|
69
|
-
* @param merkleRoot - 32-byte merkle root of the receipt batch.
|
|
70
|
-
* @param callCount - Number of calls in the batch.
|
|
71
|
-
* @param periodStart - Unix timestamp for the start of the covered period.
|
|
72
|
-
* @param periodEnd - Unix timestamp for the end of the covered period.
|
|
73
|
-
*/
|
|
74
|
-
async inscribeReceiptBatch(
|
|
75
|
-
depositorWallet: PublicKey,
|
|
76
|
-
nonce: BN | number | bigint,
|
|
77
|
-
batchIndex: number,
|
|
78
|
-
merkleRoot: number[],
|
|
79
|
-
callCount: BN | number | bigint,
|
|
80
|
-
periodStart: BN | number | bigint,
|
|
81
|
-
periodEnd: BN | number | bigint,
|
|
82
|
-
): Promise<TransactionSignature> {
|
|
83
|
-
const [agentPda] = deriveAgent(this.walletPubkey);
|
|
84
|
-
const [escrowPda] = deriveEscrowV2(agentPda, depositorWallet, this.toNum(nonce));
|
|
85
|
-
const [receiptPda] = this.deriveReceiptBatch(escrowPda, batchIndex);
|
|
86
|
-
|
|
87
|
-
return this.methods
|
|
88
|
-
.inscribeReceiptBatch(
|
|
89
|
-
batchIndex,
|
|
90
|
-
merkleRoot,
|
|
91
|
-
this.bn(callCount),
|
|
92
|
-
this.bn(periodStart),
|
|
93
|
-
this.bn(periodEnd),
|
|
94
|
-
)
|
|
95
|
-
.accounts({
|
|
96
|
-
wallet: this.walletPubkey,
|
|
97
|
-
agent: agentPda,
|
|
98
|
-
escrow: escrowPda,
|
|
99
|
-
receiptBatch: receiptPda,
|
|
100
|
-
systemProgram: SystemProgram.programId,
|
|
101
|
-
})
|
|
102
|
-
.rpc();
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Submit a merkle inclusion proof during a dispute.
|
|
107
|
-
*
|
|
108
|
-
* Called by the **agent** to prove delivery of specific calls.
|
|
109
|
-
* Each proof verifies that a set of receipt hashes are included
|
|
110
|
-
* in the previously inscribed merkle root.
|
|
111
|
-
*
|
|
112
|
-
* @param depositorWallet - The depositor's wallet.
|
|
113
|
-
* @param nonce - Escrow nonce.
|
|
114
|
-
* @param settlementIndex - Index of the disputed pending settlement.
|
|
115
|
-
* @param batchIndex - Receipt batch index containing the proof.
|
|
116
|
-
* @param provenCount - Number of calls proven in this proof submission.
|
|
117
|
-
* @param proof - Array of 32-byte merkle proof hashes.
|
|
118
|
-
* @param leaf - The 32-byte leaf hash being proven.
|
|
119
|
-
*/
|
|
120
|
-
async submitReceiptProof(
|
|
121
|
-
depositorWallet: PublicKey,
|
|
122
|
-
nonce: BN | number | bigint,
|
|
123
|
-
settlementIndex: BN | number | bigint,
|
|
124
|
-
batchIndex: number,
|
|
125
|
-
provenCount: BN | number | bigint,
|
|
126
|
-
proof: number[][],
|
|
127
|
-
leaf: number[],
|
|
128
|
-
): Promise<TransactionSignature> {
|
|
129
|
-
const [agentPda] = deriveAgent(this.walletPubkey);
|
|
130
|
-
const [escrowPda] = deriveEscrowV2(agentPda, depositorWallet, this.toNum(nonce));
|
|
131
|
-
const [pendingPda] = derivePendingPda(escrowPda, this.toNum(settlementIndex));
|
|
132
|
-
const [disputePda] = deriveDisputePda(pendingPda);
|
|
133
|
-
const [receiptPda] = this.deriveReceiptBatch(escrowPda, batchIndex);
|
|
134
|
-
|
|
135
|
-
return this.methods
|
|
136
|
-
.submitReceiptProof(
|
|
137
|
-
batchIndex,
|
|
138
|
-
this.bn(provenCount),
|
|
139
|
-
proof,
|
|
140
|
-
leaf,
|
|
141
|
-
)
|
|
142
|
-
.accounts({
|
|
143
|
-
wallet: this.walletPubkey,
|
|
144
|
-
agent: agentPda,
|
|
145
|
-
escrow: escrowPda,
|
|
146
|
-
pendingSettlement: pendingPda,
|
|
147
|
-
dispute: disputePda,
|
|
148
|
-
receiptBatch: receiptPda,
|
|
149
|
-
})
|
|
150
|
-
.rpc();
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Trigger automatic dispute resolution after the proof deadline.
|
|
155
|
-
*
|
|
156
|
-
* Permissionless crank — anyone can call this once the deadline has passed.
|
|
157
|
-
* Resolution is proportional: if the agent proved N of M claimed calls,
|
|
158
|
-
* N/M of the settlement amount goes to the agent, the rest is refunded.
|
|
159
|
-
*
|
|
160
|
-
* @param agentWallet - The agent's wallet.
|
|
161
|
-
* @param depositorWallet - The depositor's wallet.
|
|
162
|
-
* @param nonce - Escrow nonce.
|
|
163
|
-
* @param settlementIndex - Index of the disputed pending settlement.
|
|
164
|
-
*/
|
|
165
|
-
async autoResolveDispute(
|
|
166
|
-
agentWallet: PublicKey,
|
|
167
|
-
depositorWallet: PublicKey,
|
|
168
|
-
nonce: BN | number | bigint,
|
|
169
|
-
settlementIndex: BN | number | bigint,
|
|
170
|
-
): Promise<TransactionSignature> {
|
|
171
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
172
|
-
const [escrowPda] = deriveEscrowV2(agentPda, depositorWallet, this.toNum(nonce));
|
|
173
|
-
const [pendingPda] = derivePendingPda(escrowPda, this.toNum(settlementIndex));
|
|
174
|
-
const [disputePda] = deriveDisputePda(pendingPda);
|
|
175
|
-
const [statsPda] = deriveAgentStats(agentPda);
|
|
176
|
-
// v0.11 H-3: AgentStake is now a typed required account so the slash on
|
|
177
|
-
// DepositorWins is guaranteed instead of silently skipped.
|
|
178
|
-
const [stakePda] = deriveStake(agentPda);
|
|
179
|
-
|
|
180
|
-
return this.methods
|
|
181
|
-
.autoResolveDispute()
|
|
182
|
-
.accounts({
|
|
183
|
-
payer: this.walletPubkey,
|
|
184
|
-
depositor: depositorWallet,
|
|
185
|
-
agentWallet,
|
|
186
|
-
escrow: escrowPda,
|
|
187
|
-
pendingSettlement: pendingPda,
|
|
188
|
-
dispute: disputePda,
|
|
189
|
-
agentStats: statsPda,
|
|
190
|
-
agentStake: stakePda,
|
|
191
|
-
})
|
|
192
|
-
.rpc();
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// ── Fetchers ─────────────────────────────────────────
|
|
196
|
-
|
|
197
|
-
async fetchReceiptBatch(
|
|
198
|
-
escrowV2Pda: PublicKey,
|
|
199
|
-
batchIndex: number,
|
|
200
|
-
): Promise<ReceiptBatchData> {
|
|
201
|
-
const [pda] = this.deriveReceiptBatch(escrowV2Pda, batchIndex);
|
|
202
|
-
return this.fetchAccount<ReceiptBatchData>("receiptBatch", pda);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
async fetchReceiptBatchNullable(
|
|
206
|
-
escrowV2Pda: PublicKey,
|
|
207
|
-
batchIndex: number,
|
|
208
|
-
): Promise<ReceiptBatchData | null> {
|
|
209
|
-
const [pda] = this.deriveReceiptBatch(escrowV2Pda, batchIndex);
|
|
210
|
-
return this.fetchAccountNullable<ReceiptBatchData>("receiptBatch", pda);
|
|
211
|
-
}
|
|
212
|
-
}
|
package/src/modules/staking.ts
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module staking
|
|
3
|
-
* @description Agent staking lifecycle — init, deposit, request unstake,
|
|
4
|
-
* complete unstake, and fetch stake accounts.
|
|
5
|
-
*
|
|
6
|
-
* @category Modules
|
|
7
|
-
* @since v0.7.0
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
SystemProgram,
|
|
13
|
-
type PublicKey,
|
|
14
|
-
type TransactionSignature,
|
|
15
|
-
} from "@solana/web3.js";
|
|
16
|
-
import { BN } from "@coral-xyz/anchor";
|
|
17
|
-
import { BaseModule } from "./base";
|
|
18
|
-
import { deriveAgent, deriveStake } from "../pda";
|
|
19
|
-
import type { AgentStakeData } from "../types";
|
|
20
|
-
import {
|
|
21
|
-
MIN_AGENT_STAKE_LAMPORTS,
|
|
22
|
-
computeRequiredStakeLamports,
|
|
23
|
-
} from "../constants/payments";
|
|
24
|
-
import { throwPredicted } from "../utils/anchor-errors";
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @name StakingModule
|
|
28
|
-
* @description Manages agent stake accounts — init, deposit, unstake, and fetch.
|
|
29
|
-
*
|
|
30
|
-
* @category Modules
|
|
31
|
-
* @since v0.7.0
|
|
32
|
-
* @extends BaseModule
|
|
33
|
-
*/
|
|
34
|
-
export class StakingModule extends BaseModule {
|
|
35
|
-
// ── PDA helpers ──────────────────────────────────────
|
|
36
|
-
|
|
37
|
-
deriveStake(agentPda: PublicKey): readonly [PublicKey, number] {
|
|
38
|
-
return deriveStake(agentPda);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// ── Instructions ─────────────────────────────────────
|
|
42
|
-
|
|
43
|
-
async initStake(
|
|
44
|
-
agentWallet: PublicKey,
|
|
45
|
-
initialDeposit: BN | number | bigint,
|
|
46
|
-
): Promise<TransactionSignature> {
|
|
47
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
48
|
-
const [stakePda] = this.deriveStake(agentPda);
|
|
49
|
-
|
|
50
|
-
// v0.13.0 preflights
|
|
51
|
-
const want = BigInt(this.bn(initialDeposit).toString());
|
|
52
|
-
if (want < MIN_AGENT_STAKE_LAMPORTS) {
|
|
53
|
-
throwPredicted(
|
|
54
|
-
"StakeBelowMinimum",
|
|
55
|
-
`initial deposit ${want} < MIN_AGENT_STAKE_LAMPORTS ${MIN_AGENT_STAKE_LAMPORTS}`,
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
await this.requireAccountAbsent(
|
|
59
|
-
"agentStake",
|
|
60
|
-
stakePda,
|
|
61
|
-
"Stake already initialized — use depositStake to top up",
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
return this.methods
|
|
65
|
-
.initStake(this.bn(initialDeposit))
|
|
66
|
-
.accounts({
|
|
67
|
-
wallet: this.walletPubkey,
|
|
68
|
-
agent: agentPda,
|
|
69
|
-
stake: stakePda,
|
|
70
|
-
systemProgram: SystemProgram.programId,
|
|
71
|
-
})
|
|
72
|
-
.rpc();
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async deposit(
|
|
76
|
-
agentWallet: PublicKey,
|
|
77
|
-
amount: BN | number | bigint,
|
|
78
|
-
): Promise<TransactionSignature> {
|
|
79
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
80
|
-
const [stakePda] = this.deriveStake(agentPda);
|
|
81
|
-
|
|
82
|
-
// v0.13.0 preflight — stake must already exist; amount > 0
|
|
83
|
-
if (BigInt(this.bn(amount).toString()) <= 0n) {
|
|
84
|
-
throwPredicted("InsufficientStake", "Deposit amount must be > 0");
|
|
85
|
-
}
|
|
86
|
-
await this.requireAccountExists<AgentStakeData>(
|
|
87
|
-
"agentStake",
|
|
88
|
-
stakePda,
|
|
89
|
-
{ predicted: "NoStakeAccount", hint: "Call initStake first" },
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
return this.methods
|
|
93
|
-
.depositStake(this.bn(amount))
|
|
94
|
-
.accounts({
|
|
95
|
-
wallet: this.walletPubkey,
|
|
96
|
-
agent: agentPda,
|
|
97
|
-
stake: stakePda,
|
|
98
|
-
systemProgram: SystemProgram.programId,
|
|
99
|
-
})
|
|
100
|
-
.rpc();
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
async requestUnstake(
|
|
104
|
-
agentWallet: PublicKey,
|
|
105
|
-
amount: BN | number | bigint,
|
|
106
|
-
): Promise<TransactionSignature> {
|
|
107
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
108
|
-
const [stakePda] = this.deriveStake(agentPda);
|
|
109
|
-
|
|
110
|
-
// v0.13.0 preflight — enforce MIN_STAKE floor + no double-pending
|
|
111
|
-
const stake = await this.requireAccountExists<AgentStakeData>(
|
|
112
|
-
"agentStake",
|
|
113
|
-
stakePda,
|
|
114
|
-
{ predicted: "NoStakeAccount", hint: "No stake account to unstake from" },
|
|
115
|
-
);
|
|
116
|
-
const want = BigInt(this.bn(amount).toString());
|
|
117
|
-
if (want <= 0n) throwPredicted("InsufficientStake", "Unstake amount must be > 0");
|
|
118
|
-
const max = this.getMaxUnstakeLamports(stake);
|
|
119
|
-
if (want > max) {
|
|
120
|
-
throwPredicted(
|
|
121
|
-
"StakeBelowMinimum",
|
|
122
|
-
`requested ${want} would drop stake below MIN_AGENT_STAKE_LAMPORTS (max unstake = ${max})`,
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
if (BigInt(stake.unstakeAmount.toString()) > 0n) {
|
|
126
|
-
throwPredicted(
|
|
127
|
-
"UnstakeAlreadyPending",
|
|
128
|
-
"A pending unstake already exists — completeUnstake first or wait for cooldown",
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return this.methods
|
|
133
|
-
.requestUnstake(this.bn(amount))
|
|
134
|
-
.accounts({
|
|
135
|
-
wallet: this.walletPubkey,
|
|
136
|
-
agent: agentPda,
|
|
137
|
-
stake: stakePda,
|
|
138
|
-
})
|
|
139
|
-
.rpc();
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
async completeUnstake(
|
|
143
|
-
agentWallet: PublicKey,
|
|
144
|
-
): Promise<TransactionSignature> {
|
|
145
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
146
|
-
const [stakePda] = this.deriveStake(agentPda);
|
|
147
|
-
|
|
148
|
-
// v0.13.0 preflight — cooldown must have elapsed and an unstake must be pending
|
|
149
|
-
const stake = await this.requireAccountExists<AgentStakeData>(
|
|
150
|
-
"agentStake",
|
|
151
|
-
stakePda,
|
|
152
|
-
{ predicted: "NoStakeAccount", hint: "No stake account" },
|
|
153
|
-
);
|
|
154
|
-
const pending = BigInt(stake.unstakeAmount.toString());
|
|
155
|
-
if (pending === 0n) {
|
|
156
|
-
throwPredicted("NoUnstakePending", "Call requestUnstake first");
|
|
157
|
-
}
|
|
158
|
-
const availableAt = BigInt(stake.unstakeAvailableAt.toString());
|
|
159
|
-
const nowSec = BigInt(Math.floor(Date.now() / 1000));
|
|
160
|
-
if (nowSec < availableAt) {
|
|
161
|
-
throwPredicted(
|
|
162
|
-
"UnstakeCooldownNotMet",
|
|
163
|
-
`available at unix ${availableAt}, now ${nowSec} (Δ ${availableAt - nowSec}s)`,
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return this.methods
|
|
168
|
-
.completeUnstake()
|
|
169
|
-
.accounts({
|
|
170
|
-
wallet: this.walletPubkey,
|
|
171
|
-
agent: agentPda,
|
|
172
|
-
stake: stakePda,
|
|
173
|
-
})
|
|
174
|
-
.rpc();
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// ── Fetchers ─────────────────────────────────────────
|
|
178
|
-
|
|
179
|
-
async fetch(agentPda: PublicKey): Promise<AgentStakeData> {
|
|
180
|
-
const [pda] = this.deriveStake(agentPda);
|
|
181
|
-
return this.fetchAccount<AgentStakeData>("agentStake", pda);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
async fetchNullable(agentPda: PublicKey): Promise<AgentStakeData | null> {
|
|
185
|
-
const [pda] = this.deriveStake(agentPda);
|
|
186
|
-
return this.fetchAccountNullable<AgentStakeData>("agentStake", pda);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
async fetchByPda(stakePda: PublicKey): Promise<AgentStakeData> {
|
|
190
|
-
return this.fetchAccount<AgentStakeData>("agentStake", stakePda);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// ── v0.11 helpers ────────────────────────────────────────────
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Compute the maximum amount that can be requested via `requestUnstake`
|
|
197
|
-
* without breaching the on-chain {@link MIN_AGENT_STAKE_LAMPORTS} floor.
|
|
198
|
-
*
|
|
199
|
-
* Returns 0 if the agent is already at (or below) the floor.
|
|
200
|
-
*
|
|
201
|
-
* @since v0.11.0
|
|
202
|
-
*/
|
|
203
|
-
getMaxUnstakeLamports(stake: AgentStakeData): bigint {
|
|
204
|
-
const staked = BigInt(stake.stakedAmount.toString());
|
|
205
|
-
if (staked <= MIN_AGENT_STAKE_LAMPORTS) return 0n;
|
|
206
|
-
return staked - MIN_AGENT_STAKE_LAMPORTS;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Returns the lamport delta the agent must `deposit` to satisfy the
|
|
211
|
-
* per-escrow stake-coverage requirement for `escrowLamports`. 0 if already
|
|
212
|
-
* sufficient. Useful for a UI "top up to open this escrow" button.
|
|
213
|
-
*
|
|
214
|
-
* Mirrors the on-chain check in `create_escrow_v2` (v0.11 H-1).
|
|
215
|
-
*
|
|
216
|
-
* @since v0.11.0
|
|
217
|
-
*/
|
|
218
|
-
getRequiredTopUp(stake: AgentStakeData, escrowLamports: bigint): bigint {
|
|
219
|
-
const required = computeRequiredStakeLamports(escrowLamports);
|
|
220
|
-
const have = BigInt(stake.stakedAmount.toString());
|
|
221
|
-
return have >= required ? 0n : required - have;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module subscription
|
|
3
|
-
* @description Agent subscription lifecycle — create, fund, cancel,
|
|
4
|
-
* close, and fetch subscription accounts.
|
|
5
|
-
*
|
|
6
|
-
* @category Modules
|
|
7
|
-
* @since v0.7.0
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
SystemProgram,
|
|
13
|
-
type PublicKey,
|
|
14
|
-
type TransactionSignature,
|
|
15
|
-
} from "@solana/web3.js";
|
|
16
|
-
import { BN } from "@coral-xyz/anchor";
|
|
17
|
-
import { BaseModule } from "./base";
|
|
18
|
-
import { deriveAgent, deriveSubscription } from "../pda";
|
|
19
|
-
import type { SubscriptionData, CreateSubscriptionArgs } from "../types";
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @name SubscriptionModule
|
|
23
|
-
* @description Manages recurring subscriptions between subscribers and agents.
|
|
24
|
-
*
|
|
25
|
-
* @category Modules
|
|
26
|
-
* @since v0.7.0
|
|
27
|
-
* @extends BaseModule
|
|
28
|
-
*/
|
|
29
|
-
export class SubscriptionModule extends BaseModule {
|
|
30
|
-
// ── PDA helpers ──────────────────────────────────────
|
|
31
|
-
|
|
32
|
-
private toNum(v: BN | number | bigint): number {
|
|
33
|
-
return BN.isBN(v) ? v.toNumber() : Number(v);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
deriveSubscription(
|
|
37
|
-
agentPda: PublicKey,
|
|
38
|
-
subscriber?: PublicKey,
|
|
39
|
-
subId: BN | number | bigint = 0,
|
|
40
|
-
): readonly [PublicKey, number] {
|
|
41
|
-
return deriveSubscription(
|
|
42
|
-
agentPda,
|
|
43
|
-
subscriber ?? this.walletPubkey,
|
|
44
|
-
this.toNum(subId),
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// ── Instructions ─────────────────────────────────────
|
|
49
|
-
|
|
50
|
-
async create(
|
|
51
|
-
agentWallet: PublicKey,
|
|
52
|
-
args: CreateSubscriptionArgs,
|
|
53
|
-
): Promise<TransactionSignature> {
|
|
54
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
55
|
-
const [subPda] = this.deriveSubscription(agentPda, undefined, args.subId);
|
|
56
|
-
|
|
57
|
-
return this.methods
|
|
58
|
-
.createSubscription(
|
|
59
|
-
this.bn(args.subId),
|
|
60
|
-
this.bn(args.pricePerInterval),
|
|
61
|
-
args.billingInterval,
|
|
62
|
-
this.bn(args.initialFund),
|
|
63
|
-
)
|
|
64
|
-
.accounts({
|
|
65
|
-
subscriber: this.walletPubkey,
|
|
66
|
-
agent: agentPda,
|
|
67
|
-
subscription: subPda,
|
|
68
|
-
systemProgram: SystemProgram.programId,
|
|
69
|
-
})
|
|
70
|
-
.rpc();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async fund(
|
|
74
|
-
agentWallet: PublicKey,
|
|
75
|
-
subId: BN | number | bigint,
|
|
76
|
-
amount: BN | number | bigint,
|
|
77
|
-
): Promise<TransactionSignature> {
|
|
78
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
79
|
-
const [subPda] = this.deriveSubscription(agentPda, undefined, subId);
|
|
80
|
-
|
|
81
|
-
return this.methods
|
|
82
|
-
.fundSubscription(this.bn(amount))
|
|
83
|
-
.accounts({
|
|
84
|
-
subscriber: this.walletPubkey,
|
|
85
|
-
subscription: subPda,
|
|
86
|
-
systemProgram: SystemProgram.programId,
|
|
87
|
-
})
|
|
88
|
-
.rpc();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
async cancel(
|
|
92
|
-
agentWallet: PublicKey,
|
|
93
|
-
subId: BN | number | bigint = 0,
|
|
94
|
-
): Promise<TransactionSignature> {
|
|
95
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
96
|
-
const [subPda] = this.deriveSubscription(agentPda, undefined, subId);
|
|
97
|
-
|
|
98
|
-
return this.methods
|
|
99
|
-
.cancelSubscription()
|
|
100
|
-
.accounts({
|
|
101
|
-
subscriber: this.walletPubkey,
|
|
102
|
-
agentWallet,
|
|
103
|
-
subscription: subPda,
|
|
104
|
-
})
|
|
105
|
-
.rpc();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
async close(
|
|
109
|
-
agentWallet: PublicKey,
|
|
110
|
-
subId: BN | number | bigint = 0,
|
|
111
|
-
): Promise<TransactionSignature> {
|
|
112
|
-
const [agentPda] = deriveAgent(agentWallet);
|
|
113
|
-
const [subPda] = this.deriveSubscription(agentPda, undefined, subId);
|
|
114
|
-
|
|
115
|
-
return this.methods
|
|
116
|
-
.closeSubscription()
|
|
117
|
-
.accounts({
|
|
118
|
-
subscriber: this.walletPubkey,
|
|
119
|
-
subscription: subPda,
|
|
120
|
-
})
|
|
121
|
-
.rpc();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// ── Fetchers ─────────────────────────────────────────
|
|
125
|
-
|
|
126
|
-
async fetch(
|
|
127
|
-
agentPda: PublicKey,
|
|
128
|
-
subscriber?: PublicKey,
|
|
129
|
-
subId: BN | number | bigint = 0,
|
|
130
|
-
): Promise<SubscriptionData> {
|
|
131
|
-
const [pda] = this.deriveSubscription(agentPda, subscriber, subId);
|
|
132
|
-
return this.fetchAccount<SubscriptionData>("subscriptionAccount", pda);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
async fetchNullable(
|
|
136
|
-
agentPda: PublicKey,
|
|
137
|
-
subscriber?: PublicKey,
|
|
138
|
-
subId: BN | number | bigint = 0,
|
|
139
|
-
): Promise<SubscriptionData | null> {
|
|
140
|
-
const [pda] = this.deriveSubscription(agentPda, subscriber, subId);
|
|
141
|
-
return this.fetchAccountNullable<SubscriptionData>("subscriptionAccount", pda);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
async fetchByPda(subPda: PublicKey): Promise<SubscriptionData> {
|
|
145
|
-
return this.fetchAccount<SubscriptionData>("subscriptionAccount", subPda);
|
|
146
|
-
}
|
|
147
|
-
}
|