@ottochain/sdk 0.2.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/README.md +305 -0
- package/dist/apps/contracts/index.d.ts +21 -0
- package/dist/apps/contracts/index.js +39 -0
- package/dist/apps/contracts/types.d.ts +24 -0
- package/dist/apps/contracts/types.js +48 -0
- package/dist/apps/identity/index.d.ts +22 -0
- package/dist/apps/identity/index.js +40 -0
- package/dist/apps/identity/types.d.ts +30 -0
- package/dist/apps/identity/types.js +53 -0
- package/dist/apps/index.d.ts +29 -0
- package/dist/apps/index.js +60 -0
- package/dist/apps/markets/index.d.ts +26 -0
- package/dist/apps/markets/index.js +46 -0
- package/dist/apps/markets/types.d.ts +185 -0
- package/dist/apps/markets/types.js +252 -0
- package/dist/apps/oracles/index.d.ts +26 -0
- package/dist/apps/oracles/index.js +46 -0
- package/dist/apps/oracles/types.d.ts +211 -0
- package/dist/apps/oracles/types.js +306 -0
- package/dist/cjs/apps/contracts/index.js +60 -0
- package/dist/cjs/apps/contracts/state-machines/contract.json +420 -0
- package/dist/cjs/apps/contracts/state-machines/escrow.json +426 -0
- package/dist/cjs/apps/contracts/types.js +48 -0
- package/dist/cjs/apps/corporate/index.js +112 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-board.json +1064 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-bylaws.json +751 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-committee.json +957 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-compliance.json +1293 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-entity.json +861 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-officers.json +843 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-proxy.json +783 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-resolution.json +1174 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-securities.json +1215 -0
- package/dist/cjs/apps/corporate/state-machines/corporate-shareholders.json +1298 -0
- package/dist/cjs/apps/corporate/types.js +44 -0
- package/dist/cjs/apps/governance/index.js +203 -0
- package/dist/cjs/apps/governance/state-machines/dao-multisig.json +711 -0
- package/dist/cjs/apps/governance/state-machines/dao-single.json +258 -0
- package/dist/cjs/apps/governance/state-machines/dao-threshold.json +660 -0
- package/dist/cjs/apps/governance/state-machines/dao-token.json +680 -0
- package/dist/cjs/apps/governance/state-machines/governance-constitution.json +401 -0
- package/dist/cjs/apps/governance/state-machines/governance-executive.json +441 -0
- package/dist/cjs/apps/governance/state-machines/governance-judiciary.json +626 -0
- package/dist/cjs/apps/governance/state-machines/governance-legislature.json +726 -0
- package/dist/cjs/apps/governance/state-machines/governance-simple.json +679 -0
- package/dist/cjs/apps/governance/types.js +42 -0
- package/dist/cjs/apps/identity/constants.js +58 -0
- package/dist/cjs/apps/identity/index.js +78 -0
- package/dist/cjs/apps/identity/state-machines/agent-identity.json +320 -0
- package/dist/cjs/apps/identity/types.js +53 -0
- package/dist/cjs/apps/index.js +58 -0
- package/dist/cjs/apps/markets/index.js +55 -0
- package/dist/cjs/apps/markets/state-machines/market-universal.json +354 -0
- package/dist/cjs/apps/markets/types.js +219 -0
- package/dist/cjs/apps/oracles/index.js +62 -0
- package/dist/cjs/apps/oracles/state-machines/oracle.json +452 -0
- package/dist/cjs/apps/oracles/types.js +282 -0
- package/dist/cjs/errors.js +293 -0
- package/dist/cjs/generated/google/protobuf/struct.js +514 -0
- package/dist/cjs/generated/google/protobuf/timestamp.js +92 -0
- package/dist/cjs/generated/index.js +150 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +873 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract_pb.js +100 -0
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +4515 -0
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate_pb.js +392 -0
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +3255 -0
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance_pb.js +235 -0
- package/dist/cjs/generated/ottochain/apps/identity/v1/agent.js +619 -0
- package/dist/cjs/generated/ottochain/apps/identity/v1/agent_pb.js +116 -0
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +780 -0
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation_pb.js +79 -0
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1261 -0
- package/dist/cjs/generated/ottochain/apps/markets/v1/market_pb.js +151 -0
- package/dist/cjs/generated/ottochain/apps/oracles/v1/oracle.js +1223 -0
- package/dist/cjs/generated/ottochain/apps/oracles/v1/oracle_pb.js +109 -0
- package/dist/cjs/generated/ottochain/v1/common.js +10 -0
- package/dist/cjs/generated/ottochain/v1/common_pb.js +37 -0
- package/dist/cjs/generated/ottochain/v1/fiber.js +1057 -0
- package/dist/cjs/generated/ottochain/v1/fiber_pb.js +86 -0
- package/dist/cjs/generated/ottochain/v1/messages.js +740 -0
- package/dist/cjs/generated/ottochain/v1/messages_pb.js +44 -0
- package/dist/cjs/generated/ottochain/v1/records.js +1253 -0
- package/dist/cjs/generated/ottochain/v1/records_pb.js +44 -0
- package/dist/cjs/index.js +79 -0
- package/dist/cjs/metakit/binary.js +58 -0
- package/dist/cjs/metakit/canonicalize.js +40 -0
- package/dist/cjs/metakit/codec.js +45 -0
- package/dist/cjs/metakit/currency-transaction.js +319 -0
- package/dist/cjs/metakit/currency-types.js +13 -0
- package/dist/cjs/metakit/hash.js +84 -0
- package/dist/cjs/metakit/index.js +74 -0
- package/dist/cjs/metakit/network/client.js +78 -0
- package/dist/cjs/metakit/network/currency-l1-client.js +101 -0
- package/dist/cjs/metakit/network/data-l1-client.js +76 -0
- package/dist/cjs/metakit/network/index.js +16 -0
- package/dist/cjs/metakit/network/types.js +20 -0
- package/dist/cjs/metakit/sign.js +120 -0
- package/dist/cjs/metakit/signed-object.js +100 -0
- package/dist/cjs/metakit/types.js +14 -0
- package/dist/cjs/metakit/verify.js +217 -0
- package/dist/cjs/metakit/wallet.js +127 -0
- package/dist/cjs/ottochain/index.js +47 -0
- package/dist/cjs/ottochain/metagraph-client.js +157 -0
- package/dist/cjs/ottochain/snapshot.js +110 -0
- package/dist/cjs/ottochain/types.js +11 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.js +25 -0
- package/dist/cjs/validation.js +312 -0
- package/dist/errors.d.ts +221 -0
- package/dist/errors.js +293 -0
- package/dist/esm/apps/contracts/index.js +42 -0
- package/dist/esm/apps/contracts/state-machines/contract.json +420 -0
- package/dist/esm/apps/contracts/state-machines/escrow.json +426 -0
- package/dist/esm/apps/contracts/types.js +44 -0
- package/dist/esm/apps/corporate/index.js +57 -0
- package/dist/esm/apps/corporate/state-machines/corporate-board.json +1064 -0
- package/dist/esm/apps/corporate/state-machines/corporate-bylaws.json +751 -0
- package/dist/esm/apps/corporate/state-machines/corporate-committee.json +957 -0
- package/dist/esm/apps/corporate/state-machines/corporate-compliance.json +1293 -0
- package/dist/esm/apps/corporate/state-machines/corporate-entity.json +861 -0
- package/dist/esm/apps/corporate/state-machines/corporate-officers.json +843 -0
- package/dist/esm/apps/corporate/state-machines/corporate-proxy.json +783 -0
- package/dist/esm/apps/corporate/state-machines/corporate-resolution.json +1174 -0
- package/dist/esm/apps/corporate/state-machines/corporate-securities.json +1215 -0
- package/dist/esm/apps/corporate/state-machines/corporate-shareholders.json +1298 -0
- package/dist/esm/apps/corporate/types.js +38 -0
- package/dist/esm/apps/governance/index.js +154 -0
- package/dist/esm/apps/governance/state-machines/dao-multisig.json +711 -0
- package/dist/esm/apps/governance/state-machines/dao-single.json +258 -0
- package/dist/esm/apps/governance/state-machines/dao-threshold.json +660 -0
- package/dist/esm/apps/governance/state-machines/dao-token.json +680 -0
- package/dist/esm/apps/governance/state-machines/governance-constitution.json +401 -0
- package/dist/esm/apps/governance/state-machines/governance-executive.json +441 -0
- package/dist/esm/apps/governance/state-machines/governance-judiciary.json +626 -0
- package/dist/esm/apps/governance/state-machines/governance-legislature.json +726 -0
- package/dist/esm/apps/governance/state-machines/governance-simple.json +679 -0
- package/dist/esm/apps/governance/types.js +35 -0
- package/dist/esm/apps/identity/constants.js +53 -0
- package/dist/esm/apps/identity/index.js +50 -0
- package/dist/esm/apps/identity/state-machines/agent-identity.json +320 -0
- package/dist/esm/apps/identity/types.js +50 -0
- package/dist/esm/apps/index.js +32 -0
- package/dist/esm/apps/markets/index.js +34 -0
- package/dist/esm/apps/markets/state-machines/market-universal.json +354 -0
- package/dist/esm/apps/markets/types.js +206 -0
- package/dist/esm/apps/oracles/index.js +42 -0
- package/dist/esm/apps/oracles/state-machines/oracle.json +452 -0
- package/dist/esm/apps/oracles/types.js +267 -0
- package/dist/esm/errors.js +283 -0
- package/dist/esm/generated/google/protobuf/struct.js +508 -0
- package/dist/esm/generated/google/protobuf/timestamp.js +89 -0
- package/dist/esm/generated/index.js +26 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +867 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract_pb.js +97 -0
- package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +4493 -0
- package/dist/esm/generated/ottochain/apps/corporate/v1/corporate_pb.js +389 -0
- package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +3240 -0
- package/dist/esm/generated/ottochain/apps/governance/v1/governance_pb.js +232 -0
- package/dist/esm/generated/ottochain/apps/identity/v1/agent.js +610 -0
- package/dist/esm/generated/ottochain/apps/identity/v1/agent_pb.js +113 -0
- package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +774 -0
- package/dist/esm/generated/ottochain/apps/identity/v1/attestation_pb.js +76 -0
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1252 -0
- package/dist/esm/generated/ottochain/apps/markets/v1/market_pb.js +148 -0
- package/dist/esm/generated/ottochain/apps/oracles/v1/oracle.js +1217 -0
- package/dist/esm/generated/ottochain/apps/oracles/v1/oracle_pb.js +106 -0
- package/dist/esm/generated/ottochain/v1/common.js +7 -0
- package/dist/esm/generated/ottochain/v1/common_pb.js +34 -0
- package/dist/esm/generated/ottochain/v1/fiber.js +1051 -0
- package/dist/esm/generated/ottochain/v1/fiber_pb.js +83 -0
- package/dist/esm/generated/ottochain/v1/messages.js +737 -0
- package/dist/esm/generated/ottochain/v1/messages_pb.js +41 -0
- package/dist/esm/generated/ottochain/v1/records.js +1250 -0
- package/dist/esm/generated/ottochain/v1/records_pb.js +41 -0
- package/dist/esm/index.js +33 -0
- package/dist/esm/metakit/binary.js +53 -0
- package/dist/esm/metakit/canonicalize.js +33 -0
- package/dist/esm/metakit/codec.js +38 -0
- package/dist/esm/metakit/currency-transaction.js +306 -0
- package/dist/esm/metakit/currency-types.js +10 -0
- package/dist/esm/metakit/hash.js +77 -0
- package/dist/esm/metakit/index.js +30 -0
- package/dist/esm/metakit/network/client.js +74 -0
- package/dist/esm/metakit/network/currency-l1-client.js +97 -0
- package/dist/esm/metakit/network/data-l1-client.js +72 -0
- package/dist/esm/metakit/network/index.js +9 -0
- package/dist/esm/metakit/network/types.js +16 -0
- package/dist/esm/metakit/sign.js +114 -0
- package/dist/esm/metakit/signed-object.js +94 -0
- package/dist/esm/metakit/types.js +11 -0
- package/dist/esm/metakit/verify.js +210 -0
- package/dist/esm/metakit/wallet.js +117 -0
- package/dist/esm/ottochain/index.js +13 -0
- package/dist/esm/ottochain/metagraph-client.js +153 -0
- package/dist/esm/ottochain/snapshot.js +100 -0
- package/dist/esm/ottochain/types.js +10 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types.js +20 -0
- package/dist/esm/validation.js +301 -0
- package/dist/generated/index.d.ts +15 -0
- package/dist/generated/index.js +34 -0
- package/dist/generated/ottochain/apps/contracts/v1/contract_pb.d.ts +274 -0
- package/dist/generated/ottochain/apps/contracts/v1/contract_pb.js +100 -0
- package/dist/generated/ottochain/apps/identity/v1/agent_pb.d.ts +211 -0
- package/dist/generated/ottochain/apps/identity/v1/agent_pb.js +116 -0
- package/dist/generated/ottochain/apps/identity/v1/attestation_pb.d.ts +238 -0
- package/dist/generated/ottochain/apps/identity/v1/attestation_pb.js +79 -0
- package/dist/generated/ottochain/apps/markets/v1/market_pb.d.ts +436 -0
- package/dist/generated/ottochain/apps/markets/v1/market_pb.js +151 -0
- package/dist/generated/ottochain/apps/oracles/v1/oracle_pb.d.ts +393 -0
- package/dist/generated/ottochain/apps/oracles/v1/oracle_pb.js +109 -0
- package/dist/generated/ottochain/v1/common_pb.d.ts +86 -0
- package/dist/generated/ottochain/v1/common_pb.js +37 -0
- package/dist/generated/ottochain/v1/fiber_pb.d.ts +292 -0
- package/dist/generated/ottochain/v1/fiber_pb.js +86 -0
- package/dist/generated/ottochain/v1/messages_pb.d.ts +190 -0
- package/dist/generated/ottochain/v1/messages_pb.js +44 -0
- package/dist/generated/ottochain/v1/records_pb.d.ts +221 -0
- package/dist/generated/ottochain/v1/records_pb.js +44 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +77 -0
- package/dist/metakit/binary.d.ts +38 -0
- package/dist/metakit/binary.js +58 -0
- package/dist/metakit/canonicalize.d.ts +26 -0
- package/dist/metakit/canonicalize.js +40 -0
- package/dist/metakit/codec.d.ts +16 -0
- package/dist/metakit/codec.js +45 -0
- package/dist/metakit/currency-transaction.d.ts +157 -0
- package/dist/metakit/currency-transaction.js +319 -0
- package/dist/metakit/currency-types.d.ts +55 -0
- package/dist/metakit/currency-types.js +13 -0
- package/dist/metakit/hash.d.ts +50 -0
- package/dist/metakit/hash.js +84 -0
- package/dist/metakit/index.d.ts +23 -0
- package/dist/metakit/index.js +74 -0
- package/dist/metakit/network/client.d.ts +23 -0
- package/dist/metakit/network/client.js +78 -0
- package/dist/metakit/network/currency-l1-client.d.ts +71 -0
- package/dist/metakit/network/currency-l1-client.js +101 -0
- package/dist/metakit/network/data-l1-client.d.ts +57 -0
- package/dist/metakit/network/data-l1-client.js +76 -0
- package/dist/metakit/network/index.d.ts +10 -0
- package/dist/metakit/network/index.js +16 -0
- package/dist/metakit/network/types.d.ts +74 -0
- package/dist/metakit/network/types.js +20 -0
- package/dist/metakit/sign.d.ts +65 -0
- package/dist/metakit/sign.js +120 -0
- package/dist/metakit/signed-object.d.ts +66 -0
- package/dist/metakit/signed-object.js +100 -0
- package/dist/metakit/types.d.ts +67 -0
- package/dist/metakit/types.js +14 -0
- package/dist/metakit/verify.d.ts +55 -0
- package/dist/metakit/verify.js +217 -0
- package/dist/metakit/wallet.d.ts +70 -0
- package/dist/metakit/wallet.js +127 -0
- package/dist/ottochain/index.d.ts +13 -0
- package/dist/ottochain/index.js +45 -0
- package/dist/ottochain/metagraph-client.d.ts +111 -0
- package/dist/ottochain/metagraph-client.js +157 -0
- package/dist/ottochain/snapshot.d.ts +86 -0
- package/dist/ottochain/snapshot.js +110 -0
- package/dist/ottochain/types.d.ts +278 -0
- package/dist/ottochain/types.js +11 -0
- package/dist/types/apps/contracts/index.d.ts +30 -0
- package/dist/types/apps/contracts/types.d.ts +24 -0
- package/dist/types/apps/corporate/index.d.ts +27 -0
- package/dist/types/apps/corporate/types.d.ts +9861 -0
- package/dist/types/apps/governance/index.d.ts +77 -0
- package/dist/types/apps/governance/types.d.ts +344 -0
- package/dist/types/apps/identity/constants.d.ts +27 -0
- package/dist/types/apps/identity/index.d.ts +39 -0
- package/dist/types/apps/identity/types.d.ts +30 -0
- package/dist/types/apps/index.d.ts +31 -0
- package/dist/types/apps/markets/index.d.ts +26 -0
- package/dist/types/apps/markets/types.d.ts +155 -0
- package/dist/types/apps/oracles/index.d.ts +34 -0
- package/dist/types/apps/oracles/types.d.ts +193 -0
- package/dist/types/errors.d.ts +221 -0
- package/dist/types/generated/google/protobuf/struct.d.ts +134 -0
- package/dist/types/generated/google/protobuf/timestamp.d.ts +134 -0
- package/dist/types/generated/index.d.ts +18 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +112 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract_pb.d.ts +274 -0
- package/dist/types/generated/ottochain/apps/corporate/v1/corporate.d.ts +376 -0
- package/dist/types/generated/ottochain/apps/corporate/v1/corporate_pb.d.ts +1172 -0
- package/dist/types/generated/ottochain/apps/governance/v1/governance.d.ts +296 -0
- package/dist/types/generated/ottochain/apps/governance/v1/governance_pb.d.ts +772 -0
- package/dist/types/generated/ottochain/apps/identity/v1/agent.d.ts +94 -0
- package/dist/types/generated/ottochain/apps/identity/v1/agent_pb.d.ts +211 -0
- package/dist/types/generated/ottochain/apps/identity/v1/attestation.d.ts +102 -0
- package/dist/types/generated/ottochain/apps/identity/v1/attestation_pb.d.ts +238 -0
- package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +174 -0
- package/dist/types/generated/ottochain/apps/markets/v1/market_pb.d.ts +436 -0
- package/dist/types/generated/ottochain/apps/oracles/v1/oracle.d.ts +150 -0
- package/dist/types/generated/ottochain/apps/oracles/v1/oracle_pb.d.ts +393 -0
- package/dist/types/generated/ottochain/v1/common.d.ts +1 -0
- package/dist/types/generated/ottochain/v1/common_pb.d.ts +86 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +130 -0
- package/dist/types/generated/ottochain/v1/fiber_pb.d.ts +292 -0
- package/dist/types/generated/ottochain/v1/messages.d.ts +89 -0
- package/dist/types/generated/ottochain/v1/messages_pb.d.ts +190 -0
- package/dist/types/generated/ottochain/v1/records.d.ts +128 -0
- package/dist/types/generated/ottochain/v1/records_pb.d.ts +221 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/metakit/binary.d.ts +38 -0
- package/dist/types/metakit/canonicalize.d.ts +26 -0
- package/dist/types/metakit/codec.d.ts +16 -0
- package/dist/types/metakit/currency-transaction.d.ts +157 -0
- package/dist/types/metakit/currency-types.d.ts +55 -0
- package/dist/types/metakit/hash.d.ts +50 -0
- package/dist/types/metakit/index.d.ts +23 -0
- package/dist/types/metakit/network/client.d.ts +23 -0
- package/dist/types/metakit/network/currency-l1-client.d.ts +71 -0
- package/dist/types/metakit/network/data-l1-client.d.ts +57 -0
- package/dist/types/metakit/network/index.d.ts +10 -0
- package/dist/types/metakit/network/types.d.ts +74 -0
- package/dist/types/metakit/sign.d.ts +65 -0
- package/dist/types/metakit/signed-object.d.ts +66 -0
- package/dist/types/metakit/types.d.ts +67 -0
- package/dist/types/metakit/verify.d.ts +55 -0
- package/dist/types/metakit/wallet.d.ts +70 -0
- package/dist/types/ottochain/index.d.ts +13 -0
- package/dist/types/ottochain/metagraph-client.d.ts +111 -0
- package/dist/types/ottochain/snapshot.d.ts +86 -0
- package/dist/types/ottochain/types.d.ts +210 -0
- package/dist/types/types.d.ts +51 -0
- package/dist/types/validation.d.ts +449 -0
- package/dist/validation.d.ts +449 -0
- package/dist/validation.js +312 -0
- package/package.json +136 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Currency transaction operations for metagraph token transfers
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { CurrencyTransaction, TransactionReference, TransferParams } from './currency-types.js';
|
|
7
|
+
import type { VerificationResult } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Convert token amount to smallest units
|
|
10
|
+
*
|
|
11
|
+
* @param amount - Amount in token units (e.g., 100.5)
|
|
12
|
+
* @returns Amount in smallest units (1e-8)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const units = tokenToUnits(100.5); // 10050000000
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function tokenToUnits(amount: number): number;
|
|
20
|
+
/**
|
|
21
|
+
* Convert smallest units to token amount
|
|
22
|
+
*
|
|
23
|
+
* @param units - Amount in smallest units
|
|
24
|
+
* @returns Amount in token units
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const tokens = unitsToToken(10050000000); // 100.5
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function unitsToToken(units: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* Validate DAG address format
|
|
34
|
+
*
|
|
35
|
+
* @param address - DAG address to validate
|
|
36
|
+
* @returns True if address is valid
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const valid = isValidDagAddress('DAG...');
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function isValidDagAddress(address: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Create a metagraph token transaction
|
|
46
|
+
*
|
|
47
|
+
* @param params - Transfer parameters
|
|
48
|
+
* @param privateKey - Private key to sign with (hex string)
|
|
49
|
+
* @param lastRef - Reference to last accepted transaction
|
|
50
|
+
* @returns Signed currency transaction
|
|
51
|
+
*
|
|
52
|
+
* @throws If addresses are invalid or amount is too small
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const tx = await createCurrencyTransaction(
|
|
57
|
+
* { destination: 'DAG...', amount: 100.5, fee: 0 },
|
|
58
|
+
* privateKey,
|
|
59
|
+
* { hash: 'abc123...', ordinal: 5 }
|
|
60
|
+
* );
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function createCurrencyTransaction(params: TransferParams, privateKey: string, lastRef: TransactionReference): Promise<CurrencyTransaction>;
|
|
64
|
+
/**
|
|
65
|
+
* Create multiple metagraph token transactions (batch)
|
|
66
|
+
*
|
|
67
|
+
* @param transfers - Array of transfer parameters
|
|
68
|
+
* @param privateKey - Private key to sign with
|
|
69
|
+
* @param lastRef - Reference to last accepted transaction
|
|
70
|
+
* @returns Array of signed currency transactions
|
|
71
|
+
*
|
|
72
|
+
* @throws If any address is invalid or amount is too small
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const txns = await createCurrencyTransactionBatch(
|
|
77
|
+
* [
|
|
78
|
+
* { destination: 'DAG...1', amount: 10 },
|
|
79
|
+
* { destination: 'DAG...2', amount: 20 },
|
|
80
|
+
* ],
|
|
81
|
+
* privateKey,
|
|
82
|
+
* { hash: 'abc123...', ordinal: 5 }
|
|
83
|
+
* );
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function createCurrencyTransactionBatch(transfers: TransferParams[], privateKey: string, lastRef: TransactionReference): Promise<CurrencyTransaction[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Add a signature to an existing currency transaction (for multi-sig)
|
|
89
|
+
*
|
|
90
|
+
* @param transaction - Transaction to sign
|
|
91
|
+
* @param privateKey - Private key to sign with
|
|
92
|
+
* @returns Transaction with additional signature
|
|
93
|
+
*
|
|
94
|
+
* @throws If sign-verify fails
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const signedTx = await signCurrencyTransaction(tx, privateKey2);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function signCurrencyTransaction(transaction: CurrencyTransaction, privateKey: string): Promise<CurrencyTransaction>;
|
|
102
|
+
/**
|
|
103
|
+
* Verify all signatures on a currency transaction
|
|
104
|
+
*
|
|
105
|
+
* @param transaction - Transaction to verify
|
|
106
|
+
* @returns Verification result with valid/invalid proofs
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const result = await verifyCurrencyTransaction(tx);
|
|
111
|
+
* console.log('Valid:', result.isValid);
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export declare function verifyCurrencyTransaction(transaction: CurrencyTransaction): Promise<VerificationResult>;
|
|
115
|
+
/**
|
|
116
|
+
* Encode a currency transaction for hashing
|
|
117
|
+
*
|
|
118
|
+
* @param transaction - Transaction to encode
|
|
119
|
+
* @returns Hex-encoded string
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const encoded = encodeCurrencyTransaction(tx);
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function encodeCurrencyTransaction(transaction: CurrencyTransaction): string;
|
|
127
|
+
/**
|
|
128
|
+
* Hash a currency transaction
|
|
129
|
+
*
|
|
130
|
+
* @param transaction - Transaction to hash
|
|
131
|
+
* @returns Hash object with value and bytes
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const hash = await hashCurrencyTransaction(tx);
|
|
136
|
+
* console.log('Hash:', hash.value);
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export declare function hashCurrencyTransaction(transaction: CurrencyTransaction): Promise<{
|
|
140
|
+
value: string;
|
|
141
|
+
bytes: Uint8Array;
|
|
142
|
+
}>;
|
|
143
|
+
/**
|
|
144
|
+
* Get transaction reference from a currency transaction
|
|
145
|
+
* Useful for chaining transactions
|
|
146
|
+
*
|
|
147
|
+
* @param transaction - Transaction to extract reference from
|
|
148
|
+
* @param ordinal - Ordinal number for this transaction
|
|
149
|
+
* @returns Transaction reference
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* const ref = await getTransactionReference(tx, 6);
|
|
154
|
+
* // Use ref as lastRef for next transaction
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export declare function getTransactionReference(transaction: CurrencyTransaction, ordinal: number): Promise<TransactionReference>;
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Currency transaction operations for metagraph token transfers
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.getTransactionReference = exports.hashCurrencyTransaction = exports.encodeCurrencyTransaction = exports.verifyCurrencyTransaction = exports.signCurrencyTransaction = exports.createCurrencyTransactionBatch = exports.createCurrencyTransaction = exports.isValidDagAddress = exports.unitsToToken = exports.tokenToUnits = void 0;
|
|
9
|
+
const dag4_keystore_1 = require("@stardust-collective/dag4-keystore");
|
|
10
|
+
const currency_types_js_1 = require("./currency-types.js");
|
|
11
|
+
const wallet_js_1 = require("./wallet.js");
|
|
12
|
+
const verify_js_1 = require("./verify.js");
|
|
13
|
+
/**
|
|
14
|
+
* Convert token amount to smallest units
|
|
15
|
+
*
|
|
16
|
+
* @param amount - Amount in token units (e.g., 100.5)
|
|
17
|
+
* @returns Amount in smallest units (1e-8)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const units = tokenToUnits(100.5); // 10050000000
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
function tokenToUnits(amount) {
|
|
25
|
+
return Math.floor(amount * 1e8);
|
|
26
|
+
}
|
|
27
|
+
exports.tokenToUnits = tokenToUnits;
|
|
28
|
+
/**
|
|
29
|
+
* Convert smallest units to token amount
|
|
30
|
+
*
|
|
31
|
+
* @param units - Amount in smallest units
|
|
32
|
+
* @returns Amount in token units
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const tokens = unitsToToken(10050000000); // 100.5
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
function unitsToToken(units) {
|
|
40
|
+
return units * currency_types_js_1.TOKEN_DECIMALS;
|
|
41
|
+
}
|
|
42
|
+
exports.unitsToToken = unitsToToken;
|
|
43
|
+
/**
|
|
44
|
+
* Validate DAG address format
|
|
45
|
+
*
|
|
46
|
+
* @param address - DAG address to validate
|
|
47
|
+
* @returns True if address is valid
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const valid = isValidDagAddress('DAG...');
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
function isValidDagAddress(address) {
|
|
55
|
+
return dag4_keystore_1.keyStore.validateDagAddress(address);
|
|
56
|
+
}
|
|
57
|
+
exports.isValidDagAddress = isValidDagAddress;
|
|
58
|
+
/**
|
|
59
|
+
* Create a metagraph token transaction
|
|
60
|
+
*
|
|
61
|
+
* @param params - Transfer parameters
|
|
62
|
+
* @param privateKey - Private key to sign with (hex string)
|
|
63
|
+
* @param lastRef - Reference to last accepted transaction
|
|
64
|
+
* @returns Signed currency transaction
|
|
65
|
+
*
|
|
66
|
+
* @throws If addresses are invalid or amount is too small
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const tx = await createCurrencyTransaction(
|
|
71
|
+
* { destination: 'DAG...', amount: 100.5, fee: 0 },
|
|
72
|
+
* privateKey,
|
|
73
|
+
* { hash: 'abc123...', ordinal: 5 }
|
|
74
|
+
* );
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
async function createCurrencyTransaction(params, privateKey, lastRef) {
|
|
78
|
+
// Get source address from private key
|
|
79
|
+
const publicKey = dag4_keystore_1.keyStore.getPublicKeyFromPrivate(privateKey);
|
|
80
|
+
const source = (0, wallet_js_1.getAddress)(publicKey);
|
|
81
|
+
// Validate addresses
|
|
82
|
+
if (!isValidDagAddress(source)) {
|
|
83
|
+
throw new Error('Invalid source address');
|
|
84
|
+
}
|
|
85
|
+
if (!isValidDagAddress(params.destination)) {
|
|
86
|
+
throw new Error('Invalid destination address');
|
|
87
|
+
}
|
|
88
|
+
if (source === params.destination) {
|
|
89
|
+
throw new Error('Source and destination addresses cannot be the same');
|
|
90
|
+
}
|
|
91
|
+
// Convert amounts to smallest units
|
|
92
|
+
const amount = tokenToUnits(params.amount);
|
|
93
|
+
const fee = tokenToUnits(params.fee ?? 0);
|
|
94
|
+
// Validate amounts
|
|
95
|
+
if (amount < 1) {
|
|
96
|
+
throw new Error('Transfer amount must be greater than 1e-8');
|
|
97
|
+
}
|
|
98
|
+
if (fee < 0) {
|
|
99
|
+
throw new Error('Fee must be greater than or equal to zero');
|
|
100
|
+
}
|
|
101
|
+
// Use dag4.js TransactionV2 to create and encode the transaction
|
|
102
|
+
const txProps = {
|
|
103
|
+
fromAddress: source,
|
|
104
|
+
toAddress: params.destination,
|
|
105
|
+
amount,
|
|
106
|
+
fee,
|
|
107
|
+
lastTxRef: lastRef,
|
|
108
|
+
};
|
|
109
|
+
const tx = new dag4_keystore_1.TransactionV2(txProps);
|
|
110
|
+
// Get encoded transaction for hashing
|
|
111
|
+
const encodedTx = tx.getEncoded();
|
|
112
|
+
// Kryo serialize - v2 uses setReferences = false (matching dag4.js behavior)
|
|
113
|
+
const serializedTx = dag4_keystore_1.txEncode.kryoSerialize(encodedTx, false);
|
|
114
|
+
// Hash the serialized transaction
|
|
115
|
+
const hash = dag4_keystore_1.keyStore.sha256(Buffer.from(serializedTx, 'hex'));
|
|
116
|
+
// Sign the hash
|
|
117
|
+
const signature = await dag4_keystore_1.keyStore.sign(privateKey, hash);
|
|
118
|
+
// Get uncompressed public key
|
|
119
|
+
const uncompressedPublicKey = publicKey.length === 128 ? '04' + publicKey : publicKey;
|
|
120
|
+
// Verify signature
|
|
121
|
+
const success = dag4_keystore_1.keyStore.verify(uncompressedPublicKey, hash, signature);
|
|
122
|
+
if (!success) {
|
|
123
|
+
throw new Error('Sign-Verify failed');
|
|
124
|
+
}
|
|
125
|
+
// Add signature proof (remove '04' prefix from public key)
|
|
126
|
+
const proof = {
|
|
127
|
+
id: uncompressedPublicKey.substring(2),
|
|
128
|
+
signature,
|
|
129
|
+
};
|
|
130
|
+
tx.addSignature(proof);
|
|
131
|
+
return tx.getPostTransaction();
|
|
132
|
+
}
|
|
133
|
+
exports.createCurrencyTransaction = createCurrencyTransaction;
|
|
134
|
+
/**
|
|
135
|
+
* Create multiple metagraph token transactions (batch)
|
|
136
|
+
*
|
|
137
|
+
* @param transfers - Array of transfer parameters
|
|
138
|
+
* @param privateKey - Private key to sign with
|
|
139
|
+
* @param lastRef - Reference to last accepted transaction
|
|
140
|
+
* @returns Array of signed currency transactions
|
|
141
|
+
*
|
|
142
|
+
* @throws If any address is invalid or amount is too small
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* const txns = await createCurrencyTransactionBatch(
|
|
147
|
+
* [
|
|
148
|
+
* { destination: 'DAG...1', amount: 10 },
|
|
149
|
+
* { destination: 'DAG...2', amount: 20 },
|
|
150
|
+
* ],
|
|
151
|
+
* privateKey,
|
|
152
|
+
* { hash: 'abc123...', ordinal: 5 }
|
|
153
|
+
* );
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
async function createCurrencyTransactionBatch(transfers, privateKey, lastRef) {
|
|
157
|
+
const transactions = [];
|
|
158
|
+
let currentRef = { ...lastRef };
|
|
159
|
+
for (const transfer of transfers) {
|
|
160
|
+
const tx = await createCurrencyTransaction(transfer, privateKey, currentRef);
|
|
161
|
+
// Calculate hash for next transaction's parent reference
|
|
162
|
+
const hash = await hashCurrencyTransaction(tx);
|
|
163
|
+
// Update reference for next transaction
|
|
164
|
+
currentRef = {
|
|
165
|
+
hash: hash.value,
|
|
166
|
+
ordinal: currentRef.ordinal + 1,
|
|
167
|
+
};
|
|
168
|
+
transactions.push(tx);
|
|
169
|
+
}
|
|
170
|
+
return transactions;
|
|
171
|
+
}
|
|
172
|
+
exports.createCurrencyTransactionBatch = createCurrencyTransactionBatch;
|
|
173
|
+
/**
|
|
174
|
+
* Add a signature to an existing currency transaction (for multi-sig)
|
|
175
|
+
*
|
|
176
|
+
* @param transaction - Transaction to sign
|
|
177
|
+
* @param privateKey - Private key to sign with
|
|
178
|
+
* @returns Transaction with additional signature
|
|
179
|
+
*
|
|
180
|
+
* @throws If sign-verify fails
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```typescript
|
|
184
|
+
* const signedTx = await signCurrencyTransaction(tx, privateKey2);
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
async function signCurrencyTransaction(transaction, privateKey) {
|
|
188
|
+
// Reconstruct TransactionV2 from PostTransaction
|
|
189
|
+
const tx = dag4_keystore_1.TransactionV2.fromPostTransaction(transaction);
|
|
190
|
+
// Restore existing proofs (fromPostTransaction doesn't copy them)
|
|
191
|
+
for (const existingProof of transaction.proofs) {
|
|
192
|
+
tx.addSignature(existingProof);
|
|
193
|
+
}
|
|
194
|
+
// Get encoded transaction
|
|
195
|
+
const encodedTx = tx.getEncoded();
|
|
196
|
+
// Kryo serialize - v2 uses setReferences = false (matching dag4.js behavior)
|
|
197
|
+
const serializedTx = dag4_keystore_1.txEncode.kryoSerialize(encodedTx, false);
|
|
198
|
+
const hash = dag4_keystore_1.keyStore.sha256(Buffer.from(serializedTx, 'hex'));
|
|
199
|
+
// Sign the hash
|
|
200
|
+
const publicKey = dag4_keystore_1.keyStore.getPublicKeyFromPrivate(privateKey);
|
|
201
|
+
const signature = await dag4_keystore_1.keyStore.sign(privateKey, hash);
|
|
202
|
+
// Verify signature
|
|
203
|
+
const uncompressedPublicKey = publicKey.length === 128 ? '04' + publicKey : publicKey;
|
|
204
|
+
const success = dag4_keystore_1.keyStore.verify(uncompressedPublicKey, hash, signature);
|
|
205
|
+
if (!success) {
|
|
206
|
+
throw new Error('Sign-Verify failed');
|
|
207
|
+
}
|
|
208
|
+
// Add new proof
|
|
209
|
+
const proof = {
|
|
210
|
+
id: uncompressedPublicKey.substring(2),
|
|
211
|
+
signature,
|
|
212
|
+
};
|
|
213
|
+
tx.addSignature(proof);
|
|
214
|
+
return tx.getPostTransaction();
|
|
215
|
+
}
|
|
216
|
+
exports.signCurrencyTransaction = signCurrencyTransaction;
|
|
217
|
+
/**
|
|
218
|
+
* Verify all signatures on a currency transaction
|
|
219
|
+
*
|
|
220
|
+
* @param transaction - Transaction to verify
|
|
221
|
+
* @returns Verification result with valid/invalid proofs
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* const result = await verifyCurrencyTransaction(tx);
|
|
226
|
+
* console.log('Valid:', result.isValid);
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
async function verifyCurrencyTransaction(transaction) {
|
|
230
|
+
// Reconstruct TransactionV2 to get encoded form
|
|
231
|
+
const tx = dag4_keystore_1.TransactionV2.fromPostTransaction(transaction);
|
|
232
|
+
// Get hash
|
|
233
|
+
const encodedTx = tx.getEncoded();
|
|
234
|
+
// Kryo serialize - v2 uses setReferences = false (matching dag4.js behavior)
|
|
235
|
+
const serializedTx = dag4_keystore_1.txEncode.kryoSerialize(encodedTx, false);
|
|
236
|
+
const hash = dag4_keystore_1.keyStore.sha256(Buffer.from(serializedTx, 'hex'));
|
|
237
|
+
const validProofs = [];
|
|
238
|
+
const invalidProofs = [];
|
|
239
|
+
// Verify each proof
|
|
240
|
+
for (const proof of transaction.proofs) {
|
|
241
|
+
const publicKey = '04' + proof.id; // Add back the '04' prefix
|
|
242
|
+
// Normalize signature to low-S form for BIP 62/146 compatibility
|
|
243
|
+
const normalizedSignature = (0, verify_js_1.normalizeSignatureToLowS)(proof.signature);
|
|
244
|
+
const isValid = dag4_keystore_1.keyStore.verify(publicKey, hash, normalizedSignature);
|
|
245
|
+
if (isValid) {
|
|
246
|
+
validProofs.push(proof);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
invalidProofs.push(proof);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
isValid: invalidProofs.length === 0 && validProofs.length > 0,
|
|
254
|
+
validProofs,
|
|
255
|
+
invalidProofs,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
exports.verifyCurrencyTransaction = verifyCurrencyTransaction;
|
|
259
|
+
/**
|
|
260
|
+
* Encode a currency transaction for hashing
|
|
261
|
+
*
|
|
262
|
+
* @param transaction - Transaction to encode
|
|
263
|
+
* @returns Hex-encoded string
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* const encoded = encodeCurrencyTransaction(tx);
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
function encodeCurrencyTransaction(transaction) {
|
|
271
|
+
const tx = dag4_keystore_1.TransactionV2.fromPostTransaction(transaction);
|
|
272
|
+
return tx.getEncoded();
|
|
273
|
+
}
|
|
274
|
+
exports.encodeCurrencyTransaction = encodeCurrencyTransaction;
|
|
275
|
+
/**
|
|
276
|
+
* Hash a currency transaction
|
|
277
|
+
*
|
|
278
|
+
* @param transaction - Transaction to hash
|
|
279
|
+
* @returns Hash object with value and bytes
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* ```typescript
|
|
283
|
+
* const hash = await hashCurrencyTransaction(tx);
|
|
284
|
+
* console.log('Hash:', hash.value);
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
287
|
+
async function hashCurrencyTransaction(transaction) {
|
|
288
|
+
const encoded = encodeCurrencyTransaction(transaction);
|
|
289
|
+
// Kryo serialize - v2 uses setReferences = false (matching dag4.js behavior)
|
|
290
|
+
const serialized = dag4_keystore_1.txEncode.kryoSerialize(encoded, false);
|
|
291
|
+
const hash = dag4_keystore_1.keyStore.sha256(Buffer.from(serialized, 'hex'));
|
|
292
|
+
return {
|
|
293
|
+
value: hash,
|
|
294
|
+
bytes: Buffer.from(hash, 'hex'),
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
exports.hashCurrencyTransaction = hashCurrencyTransaction;
|
|
298
|
+
/**
|
|
299
|
+
* Get transaction reference from a currency transaction
|
|
300
|
+
* Useful for chaining transactions
|
|
301
|
+
*
|
|
302
|
+
* @param transaction - Transaction to extract reference from
|
|
303
|
+
* @param ordinal - Ordinal number for this transaction
|
|
304
|
+
* @returns Transaction reference
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```typescript
|
|
308
|
+
* const ref = await getTransactionReference(tx, 6);
|
|
309
|
+
* // Use ref as lastRef for next transaction
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
async function getTransactionReference(transaction, ordinal) {
|
|
313
|
+
const hash = await hashCurrencyTransaction(transaction);
|
|
314
|
+
return {
|
|
315
|
+
hash: hash.value,
|
|
316
|
+
ordinal,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
exports.getTransactionReference = getTransactionReference;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Currency transaction types for metagraph token transfers
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { Signed } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Reference to a previous transaction for chaining
|
|
9
|
+
*/
|
|
10
|
+
export interface TransactionReference {
|
|
11
|
+
/** Transaction hash */
|
|
12
|
+
hash: string;
|
|
13
|
+
/** Transaction ordinal number */
|
|
14
|
+
ordinal: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Currency transaction value structure (v2)
|
|
18
|
+
* Contains the actual transaction data before signing
|
|
19
|
+
*/
|
|
20
|
+
export interface CurrencyTransactionValue {
|
|
21
|
+
/** Source DAG address */
|
|
22
|
+
source: string;
|
|
23
|
+
/** Destination DAG address */
|
|
24
|
+
destination: string;
|
|
25
|
+
/** Amount in smallest units (1e-8) */
|
|
26
|
+
amount: number;
|
|
27
|
+
/** Fee in smallest units (1e-8) */
|
|
28
|
+
fee: number;
|
|
29
|
+
/** Reference to parent transaction */
|
|
30
|
+
parent: TransactionReference;
|
|
31
|
+
/** Random salt for uniqueness (as string) */
|
|
32
|
+
salt: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Currency transaction structure (v2)
|
|
36
|
+
* A signed currency transaction value
|
|
37
|
+
* Used for metagraph token transfers
|
|
38
|
+
*/
|
|
39
|
+
export type CurrencyTransaction = Signed<CurrencyTransactionValue>;
|
|
40
|
+
/**
|
|
41
|
+
* Parameters for creating a token transfer
|
|
42
|
+
*/
|
|
43
|
+
export interface TransferParams {
|
|
44
|
+
/** Destination DAG address */
|
|
45
|
+
destination: string;
|
|
46
|
+
/** Amount in token units (e.g., 100.5 tokens) */
|
|
47
|
+
amount: number;
|
|
48
|
+
/** Fee in token units (defaults to 0) */
|
|
49
|
+
fee?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Token decimals constant (1e-8)
|
|
53
|
+
* Same as DAG_DECIMALS from dag4.js
|
|
54
|
+
*/
|
|
55
|
+
export declare const TOKEN_DECIMALS = 1e-8;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Currency transaction types for metagraph token transfers
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.TOKEN_DECIMALS = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Token decimals constant (1e-8)
|
|
11
|
+
* Same as DAG_DECIMALS from dag4.js
|
|
12
|
+
*/
|
|
13
|
+
exports.TOKEN_DECIMALS = 1e-8;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hashing Utilities
|
|
3
|
+
*
|
|
4
|
+
* SHA-256 and SHA-512 hashing for the Constellation signature protocol.
|
|
5
|
+
*/
|
|
6
|
+
import { Hash } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Compute SHA-256 hash of canonical JSON data
|
|
9
|
+
*
|
|
10
|
+
* @param data - Any JSON-serializable object
|
|
11
|
+
* @returns Hash object with hex string and raw bytes
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const hashResult = hash({ action: 'test' });
|
|
16
|
+
* console.log(hashResult.value); // 64-char hex string
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function hash<T>(data: T): Hash;
|
|
20
|
+
/**
|
|
21
|
+
* Compute SHA-256 hash of raw bytes
|
|
22
|
+
*
|
|
23
|
+
* @param bytes - Input bytes
|
|
24
|
+
* @returns Hash object with hex string and raw bytes
|
|
25
|
+
*/
|
|
26
|
+
export declare function hashBytes(bytes: Uint8Array): Hash;
|
|
27
|
+
/**
|
|
28
|
+
* Compute the full signing digest according to Constellation protocol
|
|
29
|
+
*
|
|
30
|
+
* Protocol:
|
|
31
|
+
* 1. Serialize data to binary (with optional DataUpdate prefix)
|
|
32
|
+
* 2. Compute SHA-256 hash
|
|
33
|
+
* 3. Convert hash to hex string
|
|
34
|
+
* 4. Treat hex string as UTF-8 bytes (NOT hex decode)
|
|
35
|
+
* 5. Compute SHA-512 of those bytes
|
|
36
|
+
* 6. Truncate to 32 bytes for secp256k1 signing
|
|
37
|
+
*
|
|
38
|
+
* @param data - Any JSON-serializable object
|
|
39
|
+
* @param isDataUpdate - Whether to apply DataUpdate encoding
|
|
40
|
+
* @returns 32-byte digest ready for ECDSA signing
|
|
41
|
+
*/
|
|
42
|
+
export declare function computeDigest<T>(data: T, isDataUpdate?: boolean): Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* Compute SHA-256 hash of data with optional DataUpdate encoding
|
|
45
|
+
*
|
|
46
|
+
* @param data - Any JSON-serializable object
|
|
47
|
+
* @param isDataUpdate - Whether to apply DataUpdate encoding
|
|
48
|
+
* @returns Hash object
|
|
49
|
+
*/
|
|
50
|
+
export declare function hashData<T>(data: T, isDataUpdate?: boolean): Hash;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Hashing Utilities
|
|
4
|
+
*
|
|
5
|
+
* SHA-256 and SHA-512 hashing for the Constellation signature protocol.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.hashData = exports.computeDigest = exports.hashBytes = exports.hash = void 0;
|
|
9
|
+
const js_sha256_1 = require("js-sha256");
|
|
10
|
+
const js_sha512_1 = require("js-sha512");
|
|
11
|
+
const binary_js_1 = require("./binary.js");
|
|
12
|
+
/**
|
|
13
|
+
* Compute SHA-256 hash of canonical JSON data
|
|
14
|
+
*
|
|
15
|
+
* @param data - Any JSON-serializable object
|
|
16
|
+
* @returns Hash object with hex string and raw bytes
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const hashResult = hash({ action: 'test' });
|
|
21
|
+
* console.log(hashResult.value); // 64-char hex string
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
function hash(data) {
|
|
25
|
+
const bytes = (0, binary_js_1.toBytes)(data, false);
|
|
26
|
+
return hashBytes(bytes);
|
|
27
|
+
}
|
|
28
|
+
exports.hash = hash;
|
|
29
|
+
/**
|
|
30
|
+
* Compute SHA-256 hash of raw bytes
|
|
31
|
+
*
|
|
32
|
+
* @param bytes - Input bytes
|
|
33
|
+
* @returns Hash object with hex string and raw bytes
|
|
34
|
+
*/
|
|
35
|
+
function hashBytes(bytes) {
|
|
36
|
+
const hashArray = js_sha256_1.sha256.array(bytes);
|
|
37
|
+
const hashUint8 = new Uint8Array(hashArray);
|
|
38
|
+
const hashHex = js_sha256_1.sha256.hex(bytes);
|
|
39
|
+
return {
|
|
40
|
+
value: hashHex,
|
|
41
|
+
bytes: hashUint8,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
exports.hashBytes = hashBytes;
|
|
45
|
+
/**
|
|
46
|
+
* Compute the full signing digest according to Constellation protocol
|
|
47
|
+
*
|
|
48
|
+
* Protocol:
|
|
49
|
+
* 1. Serialize data to binary (with optional DataUpdate prefix)
|
|
50
|
+
* 2. Compute SHA-256 hash
|
|
51
|
+
* 3. Convert hash to hex string
|
|
52
|
+
* 4. Treat hex string as UTF-8 bytes (NOT hex decode)
|
|
53
|
+
* 5. Compute SHA-512 of those bytes
|
|
54
|
+
* 6. Truncate to 32 bytes for secp256k1 signing
|
|
55
|
+
*
|
|
56
|
+
* @param data - Any JSON-serializable object
|
|
57
|
+
* @param isDataUpdate - Whether to apply DataUpdate encoding
|
|
58
|
+
* @returns 32-byte digest ready for ECDSA signing
|
|
59
|
+
*/
|
|
60
|
+
function computeDigest(data, isDataUpdate = false) {
|
|
61
|
+
// Step 1: Serialize to binary
|
|
62
|
+
const dataBytes = (0, binary_js_1.toBytes)(data, isDataUpdate);
|
|
63
|
+
// Step 2: SHA-256 hash
|
|
64
|
+
const sha256Hash = hashBytes(dataBytes);
|
|
65
|
+
// Step 3-4: Hex string as UTF-8 bytes (critical: NOT hex decode)
|
|
66
|
+
const hexAsUtf8 = new TextEncoder().encode(sha256Hash.value);
|
|
67
|
+
// Step 5: SHA-512
|
|
68
|
+
const sha512Hash = js_sha512_1.sha512.array(hexAsUtf8);
|
|
69
|
+
// Step 6: Truncate to 32 bytes
|
|
70
|
+
return new Uint8Array(sha512Hash.slice(0, 32));
|
|
71
|
+
}
|
|
72
|
+
exports.computeDigest = computeDigest;
|
|
73
|
+
/**
|
|
74
|
+
* Compute SHA-256 hash of data with optional DataUpdate encoding
|
|
75
|
+
*
|
|
76
|
+
* @param data - Any JSON-serializable object
|
|
77
|
+
* @param isDataUpdate - Whether to apply DataUpdate encoding
|
|
78
|
+
* @returns Hash object
|
|
79
|
+
*/
|
|
80
|
+
function hashData(data, isDataUpdate = false) {
|
|
81
|
+
const bytes = (0, binary_js_1.toBytes)(data, isDataUpdate);
|
|
82
|
+
return hashBytes(bytes);
|
|
83
|
+
}
|
|
84
|
+
exports.hashData = hashData;
|