@orbinum/sdk 0.5.0 → 0.7.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/LICENSE +21 -0
- package/README.md +16 -499
- package/dist/index.d.mts +355 -739
- package/dist/index.d.ts +355 -739
- package/dist/index.js +239 -424
- package/dist/index.mjs +231 -414
- package/package.json +16 -16
package/dist/index.d.mts
CHANGED
|
@@ -3,8 +3,8 @@ import { PolkadotClient, TxFinalizedPayload, PolkadotSigner, TxOptions } from 'p
|
|
|
3
3
|
export { PolkadotSigner, getSs58AddressInfo } from 'polkadot-api';
|
|
4
4
|
import { getDynamicBuilder } from '@polkadot-api/metadata-builders';
|
|
5
5
|
import { getExtrinsicDecoder } from '@polkadot-api/tx-utils';
|
|
6
|
-
import { ArtifactProvider, ProofResult
|
|
7
|
-
export { ArtifactProvider, CircuitType,
|
|
6
|
+
import { ArtifactProvider, ProofResult } from '@orbinum/proof-generator';
|
|
7
|
+
export { ArtifactProvider, CircuitType, ProofResult, WebArtifactProvider } from '@orbinum/proof-generator';
|
|
8
8
|
export { AccountId, Blake2256, Keccak256, Storage, u128, u64 } from '@polkadot-api/substrate-bindings';
|
|
9
9
|
export { base58 } from '@scure/base';
|
|
10
10
|
export { getPolkadotSigner } from 'polkadot-api/signer';
|
|
@@ -159,12 +159,12 @@ declare class SubstrateClient {
|
|
|
159
159
|
* const result = await tx.signAndSubmit(signer);
|
|
160
160
|
* ```
|
|
161
161
|
*/
|
|
162
|
-
get unsafe(): polkadot_api.
|
|
162
|
+
get unsafe(): polkadot_api.TypedApi<polkadot_api.ChainDefinition, false>;
|
|
163
163
|
/**
|
|
164
164
|
* Wraps pre-built SCALE call bytes (from protocol-core TransactionBuilder)
|
|
165
165
|
* into a PAPI UnsafeTransaction that can be signed and submitted.
|
|
166
166
|
*/
|
|
167
|
-
txFromCallData(callData: Uint8Array): Promise<polkadot_api.
|
|
167
|
+
txFromCallData(callData: Uint8Array): Promise<polkadot_api.Transaction<any, Record<string, {
|
|
168
168
|
value: any;
|
|
169
169
|
additionalSigned: any;
|
|
170
170
|
} | {
|
|
@@ -496,6 +496,8 @@ interface ShieldedCommitment {
|
|
|
496
496
|
leafIndex: number;
|
|
497
497
|
/** Asset ID as decimal string (e.g. "0"). */
|
|
498
498
|
assetId: string;
|
|
499
|
+
/** Origin of the commitment: direct shield, output of private transfer, or change from unshield. */
|
|
500
|
+
source: 'shield' | 'transfer' | 'unshield';
|
|
499
501
|
/** SS58 or 0x-prefixed depositor address, null if not tracked. */
|
|
500
502
|
sender: string | null;
|
|
501
503
|
/** 0x-prefixed encrypted memo hex, null if not present. */
|
|
@@ -617,11 +619,56 @@ interface IndexerStats {
|
|
|
617
619
|
merkleRoot: string | null;
|
|
618
620
|
treeSize: number | null;
|
|
619
621
|
};
|
|
622
|
+
relayers: {
|
|
623
|
+
active: number;
|
|
624
|
+
};
|
|
620
625
|
zkVerifier: {
|
|
621
626
|
total: number;
|
|
622
627
|
successful: number;
|
|
623
628
|
};
|
|
624
629
|
}
|
|
630
|
+
/** A registered relayer stored by the indexer. */
|
|
631
|
+
interface Relayer {
|
|
632
|
+
evmAddress: string;
|
|
633
|
+
account: string;
|
|
634
|
+
active: boolean;
|
|
635
|
+
registeredAtBlock: number;
|
|
636
|
+
unregisteredAtBlock: number | null;
|
|
637
|
+
timestampMs: number | null;
|
|
638
|
+
}
|
|
639
|
+
/** A relay fee accumulation or consumption event stored by the indexer. */
|
|
640
|
+
interface RelayFeeEvent {
|
|
641
|
+
id: number;
|
|
642
|
+
relayer: string;
|
|
643
|
+
assetId: string;
|
|
644
|
+
/** Amount as decimal string (bigint-safe). */
|
|
645
|
+
amount: string;
|
|
646
|
+
eventType: 'accumulated' | 'consumed';
|
|
647
|
+
blockNumber: number;
|
|
648
|
+
timestampMs: number | null;
|
|
649
|
+
}
|
|
650
|
+
/** Aggregated relay fee balance per asset for a given relayer. */
|
|
651
|
+
interface RelayFeeSummaryEntry {
|
|
652
|
+
assetId: string;
|
|
653
|
+
/** Total accumulated (bigint string). */
|
|
654
|
+
accumulated: string;
|
|
655
|
+
/** Total consumed (bigint string). */
|
|
656
|
+
consumed: string;
|
|
657
|
+
/** pending = accumulated − consumed (bigint string). */
|
|
658
|
+
pending: string;
|
|
659
|
+
}
|
|
660
|
+
/** A registered asset stored by the indexer. */
|
|
661
|
+
interface RegisteredAsset {
|
|
662
|
+
assetId: string;
|
|
663
|
+
name: string | null;
|
|
664
|
+
symbol: string | null;
|
|
665
|
+
decimals: number | null;
|
|
666
|
+
contractAddress: string | null;
|
|
667
|
+
/** Whether the asset is verified by the protocol. */
|
|
668
|
+
verified: boolean;
|
|
669
|
+
registeredAtBlock: number;
|
|
670
|
+
timestampMs: number | null;
|
|
671
|
+
}
|
|
625
672
|
/**
|
|
626
673
|
* A single shielded activity event tied to an address.
|
|
627
674
|
* The `kind` discriminant identifies whether it is a shield (commitment),
|
|
@@ -771,6 +818,30 @@ declare class IndexerClient {
|
|
|
771
818
|
page?: number;
|
|
772
819
|
limit?: number;
|
|
773
820
|
}): Promise<PaginatedResult<ShieldedAddressEvent>>;
|
|
821
|
+
/** Returns a paginated list of relayers. Filter by active status with `active`. */
|
|
822
|
+
getRelayers(params?: {
|
|
823
|
+
page?: number;
|
|
824
|
+
limit?: number;
|
|
825
|
+
active?: boolean;
|
|
826
|
+
}): Promise<PaginatedResult<Relayer>>;
|
|
827
|
+
/** Returns a single relayer by EVM address, or null if not found. */
|
|
828
|
+
getRelayer(evmAddress: string): Promise<Relayer | null>;
|
|
829
|
+
/** Returns a paginated list of relay fee events. */
|
|
830
|
+
getRelayFees(params?: {
|
|
831
|
+
page?: number;
|
|
832
|
+
limit?: number;
|
|
833
|
+
relayer?: string;
|
|
834
|
+
type?: 'accumulated' | 'consumed';
|
|
835
|
+
}): Promise<PaginatedResult<RelayFeeEvent>>;
|
|
836
|
+
/** Returns aggregated relay fee balances per asset for a given relayer account. */
|
|
837
|
+
getRelayFeesSummary(relayer: string): Promise<RelayFeeSummaryEntry[]>;
|
|
838
|
+
/** Returns a paginated list of assets registered via register_asset. */
|
|
839
|
+
getRegisteredAssets(params?: {
|
|
840
|
+
page?: number;
|
|
841
|
+
limit?: number;
|
|
842
|
+
}): Promise<PaginatedResult<RegisteredAsset>>;
|
|
843
|
+
/** Returns a single registered asset by its ID, or null if not found. */
|
|
844
|
+
getRegisteredAsset(assetId: string): Promise<RegisteredAsset | null>;
|
|
774
845
|
/** Returns aggregated indexer statistics. */
|
|
775
846
|
getStats(): Promise<IndexerStats>;
|
|
776
847
|
/** Returns true if the indexer health endpoint responds OK. */
|
|
@@ -961,7 +1032,7 @@ type ShieldBatchParams = {
|
|
|
961
1032
|
* Parameters for shieldedPool.claimShieldedFees —
|
|
962
1033
|
* claims accrued relay fees into the shielded pool.
|
|
963
1034
|
*
|
|
964
|
-
* The relayer must supply a ZK
|
|
1035
|
+
* The relayer must supply a ZK value proof that binds the commitment to the
|
|
965
1036
|
* exact amount and asset_id, preventing fee inflation attacks.
|
|
966
1037
|
*/
|
|
967
1038
|
type ClaimShieldedFeesParams = {
|
|
@@ -979,355 +1050,6 @@ type ClaimShieldedFeesParams = {
|
|
|
979
1050
|
encryptedMemo: Uint8Array;
|
|
980
1051
|
};
|
|
981
1052
|
|
|
982
|
-
/**
|
|
983
|
-
* TypeScript types for pallet-shielded-pool extrinsics and supporting structures.
|
|
984
|
-
*
|
|
985
|
-
* Conventions:
|
|
986
|
-
* - Fixed/bounded byte arrays → `number[]` (SCALE-compatible)
|
|
987
|
-
* - Balances (u128) → `bigint`
|
|
988
|
-
* - AccountId → `string` (SS58 or 0x-prefixed 64-char hex)
|
|
989
|
-
* - Block numbers → `number`
|
|
990
|
-
* - Optional fields → `T | null`
|
|
991
|
-
*/
|
|
992
|
-
/**
|
|
993
|
-
* 32-byte SCALE-encoded value (commitment, nullifier, Merkle root, etc.).
|
|
994
|
-
* Stored as little-endian Poseidon field elements on-chain.
|
|
995
|
-
*/
|
|
996
|
-
type Bytes32 = number[];
|
|
997
|
-
/**
|
|
998
|
-
* 176-byte encrypted memo (ChaCha20-Poly1305 ECDH).
|
|
999
|
-
* Layout: nonce(12) || ciphertext(132) || tag(16) || ephPk(32) = 176 bytes.
|
|
1000
|
-
*/
|
|
1001
|
-
type Bytes176 = number[];
|
|
1002
|
-
/**
|
|
1003
|
-
* Disclosure public signals — exactly 256 bytes (ECDH Baby Jubjub layout):
|
|
1004
|
-
* commitment[0..32] | auditor_pk_x[32..64] | auditor_pk_y[64..96]
|
|
1005
|
-
* | epk_x[96..128] | epk_y[128..160] | enc_value[160..192]
|
|
1006
|
-
* | enc_asset_id[192..224] | enc_owner_hash[224..256]
|
|
1007
|
-
*/
|
|
1008
|
-
type DisclosurePublicSignals = number[];
|
|
1009
|
-
/**
|
|
1010
|
-
* ECDH-encrypted note fields stored on-chain after a successful disclosure.
|
|
1011
|
-
* Maps to `EncryptedDisclosureSignals` in Rust.
|
|
1012
|
-
*/
|
|
1013
|
-
type EncryptedDisclosureSignals = {
|
|
1014
|
-
/** Ephemeral public key x-coordinate (Baby Jubjub), 32 bytes LE. */
|
|
1015
|
-
epkX: number[];
|
|
1016
|
-
/** Ephemeral public key y-coordinate (Baby Jubjub), 32 bytes LE. */
|
|
1017
|
-
epkY: number[];
|
|
1018
|
-
/** Encrypted note value (field element LE). 0 if not disclosed. */
|
|
1019
|
-
encValue: number[];
|
|
1020
|
-
/** Encrypted asset ID (field element LE). 0 if not disclosed. */
|
|
1021
|
-
encAssetId: number[];
|
|
1022
|
-
/** Encrypted Poseidon(owner_pubkey) (field element LE). 0 if not disclosed. */
|
|
1023
|
-
encOwnerHash: number[];
|
|
1024
|
-
};
|
|
1025
|
-
/**
|
|
1026
|
-
* Bitmap of which note fields the auditor requires to be disclosed.
|
|
1027
|
-
* Maps to `DisclosureFieldMask` in Rust.
|
|
1028
|
-
*/
|
|
1029
|
-
type DisclosureFieldMask = {
|
|
1030
|
-
/** Must disclose the note value (amount in planck). */
|
|
1031
|
-
value: boolean;
|
|
1032
|
-
/** Must disclose the asset ID. */
|
|
1033
|
-
assetId: boolean;
|
|
1034
|
-
/** Must disclose Poseidon(owner_pubkey). */
|
|
1035
|
-
owner: boolean;
|
|
1036
|
-
};
|
|
1037
|
-
/**
|
|
1038
|
-
* A single auditor entry in an audit policy.
|
|
1039
|
-
* Maps to `Auditor<AccountId>` in Rust.
|
|
1040
|
-
*/
|
|
1041
|
-
type Auditor = {
|
|
1042
|
-
/** SS58 or 0x-prefixed AccountId of the authorized auditor. */
|
|
1043
|
-
account: string;
|
|
1044
|
-
};
|
|
1045
|
-
/**
|
|
1046
|
-
* A condition that must be satisfied before disclosure is permitted.
|
|
1047
|
-
* Maps to `DisclosureCondition` in Rust. Max 10 conditions per policy.
|
|
1048
|
-
* Evaluation is OR — a single satisfied condition is enough.
|
|
1049
|
-
*/
|
|
1050
|
-
type DisclosureCondition = {
|
|
1051
|
-
type: 'Always';
|
|
1052
|
-
} | {
|
|
1053
|
-
type: 'TimeDelay';
|
|
1054
|
-
afterBlock: number;
|
|
1055
|
-
} | {
|
|
1056
|
-
type: 'AmountThreshold';
|
|
1057
|
-
minAmount: bigint;
|
|
1058
|
-
};
|
|
1059
|
-
/**
|
|
1060
|
-
* A single entry in a batch disclosure proof submission.
|
|
1061
|
-
* Maps to `BatchDisclosureSubmission<AccountId>` in Rust.
|
|
1062
|
-
*/
|
|
1063
|
-
type BatchDisclosureSubmission = {
|
|
1064
|
-
/** 32-byte commitment (LE). */
|
|
1065
|
-
commitment: Bytes32;
|
|
1066
|
-
/** Groth16 proof bytes — max 256 bytes. */
|
|
1067
|
-
proof: number[];
|
|
1068
|
-
/** 76-byte public signals: commitment(32) | value(8) | asset_id(4) | owner_hash(32). */
|
|
1069
|
-
publicSignals: DisclosurePublicSignals;
|
|
1070
|
-
/** Optional auditor AccountId. Null = voluntary disclosure. */
|
|
1071
|
-
auditor: string | null;
|
|
1072
|
-
};
|
|
1073
|
-
/**
|
|
1074
|
-
* A single shield operation for use in `shield_batch`.
|
|
1075
|
-
*/
|
|
1076
|
-
type ShieldOperation = {
|
|
1077
|
-
assetId: number;
|
|
1078
|
-
amount: bigint;
|
|
1079
|
-
/** 32-byte Poseidon commitment (LE). */
|
|
1080
|
-
commitment: Bytes32;
|
|
1081
|
-
/** Encrypted memo bytes — exactly 104 bytes. */
|
|
1082
|
-
encryptedMemo: number[];
|
|
1083
|
-
};
|
|
1084
|
-
/**
|
|
1085
|
-
* Call index 0 — `shield` (Signed origin)
|
|
1086
|
-
* Deposits a public token amount into the shielded pool.
|
|
1087
|
-
*/
|
|
1088
|
-
type ShieldArgs = {
|
|
1089
|
-
assetId: number;
|
|
1090
|
-
amount: bigint;
|
|
1091
|
-
/** 32-byte Poseidon commitment (LE). */
|
|
1092
|
-
commitment: Bytes32;
|
|
1093
|
-
/** Encrypted memo — exactly 104 bytes. */
|
|
1094
|
-
encryptedMemo: number[];
|
|
1095
|
-
};
|
|
1096
|
-
/**
|
|
1097
|
-
* Call index 12 — `shield_batch` (Signed origin)
|
|
1098
|
-
* Deposits multiple notes in a single extrinsic — max 20 operations.
|
|
1099
|
-
*/
|
|
1100
|
-
type ShieldBatchArgs = {
|
|
1101
|
-
operations: ShieldOperation[];
|
|
1102
|
-
};
|
|
1103
|
-
/** Input note consumed by a private transfer (SCALE wire format). */
|
|
1104
|
-
type RawTransferInput = {
|
|
1105
|
-
/** 32-byte Poseidon nullifier (LE). */
|
|
1106
|
-
nullifier: Bytes32;
|
|
1107
|
-
/** 32-byte Poseidon commitment (LE). */
|
|
1108
|
-
commitment: Bytes32;
|
|
1109
|
-
};
|
|
1110
|
-
/** Output note created by a private transfer (SCALE wire format). */
|
|
1111
|
-
type RawTransferOutput = {
|
|
1112
|
-
/** 32-byte Poseidon commitment (LE). */
|
|
1113
|
-
commitment: Bytes32;
|
|
1114
|
-
/** Encrypted memo — exactly 104 bytes. */
|
|
1115
|
-
memo: number[];
|
|
1116
|
-
};
|
|
1117
|
-
/**
|
|
1118
|
-
* Call index 1 — `private_transfer` (Unsigned/gasless origin)
|
|
1119
|
-
* Transfers value between notes without revealing sender, recipient or amount.
|
|
1120
|
-
* Fee is embedded in the ZK proof: input_sum == output_sum + fee.
|
|
1121
|
-
* The fee is paid to the block author (validator) by the pallet runtime.
|
|
1122
|
-
*/
|
|
1123
|
-
type PrivateTransferArgs = {
|
|
1124
|
-
/** Groth16 proof bytes — max 512 bytes. */
|
|
1125
|
-
proof: number[];
|
|
1126
|
-
/** 32-byte Merkle root (LE). */
|
|
1127
|
-
merkleRoot: Bytes32;
|
|
1128
|
-
nullifiers: RawTransferInput[];
|
|
1129
|
-
outputs: RawTransferOutput[];
|
|
1130
|
-
encryptedMemos: number[][];
|
|
1131
|
-
/** Asset ID being transferred (public input of the proof). */
|
|
1132
|
-
assetId: number;
|
|
1133
|
-
/** Gasless fee in planck. Paid to the block author (validator). */
|
|
1134
|
-
fee: bigint;
|
|
1135
|
-
};
|
|
1136
|
-
/**
|
|
1137
|
-
* Call index 2 — `unshield` (Unsigned/gasless origin)
|
|
1138
|
-
* Withdraws a note from the pool to a public account.
|
|
1139
|
-
* Fee is embedded in the ZK proof: note_value == amount + fee + changeValue.
|
|
1140
|
-
*/
|
|
1141
|
-
type UnshieldArgs = {
|
|
1142
|
-
/** Groth16 proof bytes — max 512 bytes. */
|
|
1143
|
-
proof: number[];
|
|
1144
|
-
/** 32-byte Merkle root (LE). */
|
|
1145
|
-
merkleRoot: Bytes32;
|
|
1146
|
-
/** 32-byte nullifier of the spent note (LE). */
|
|
1147
|
-
nullifier: Bytes32;
|
|
1148
|
-
assetId: number;
|
|
1149
|
-
/** Net amount recipient receives (planck). */
|
|
1150
|
-
amount: bigint;
|
|
1151
|
-
/** SS58 or 0x-prefixed AccountId of the recipient. */
|
|
1152
|
-
recipient: string;
|
|
1153
|
-
/** Gasless fee in planck. */
|
|
1154
|
-
fee: bigint;
|
|
1155
|
-
/**
|
|
1156
|
-
* 32-byte change note commitment (LE). All zeros for total unshield.
|
|
1157
|
-
* Must equal NoteCommitment(changeValue, assetId, changeOwnerPk, changeBlinding)
|
|
1158
|
-
* when changeValue > 0 — enforced by the ZK circuit.
|
|
1159
|
-
*/
|
|
1160
|
-
changeCommitment: Bytes32;
|
|
1161
|
-
/**
|
|
1162
|
-
* Encrypted memo for the change note (176 bytes, empty for total unshield).
|
|
1163
|
-
* Enables note recovery via blockchain scan for partial unshield.
|
|
1164
|
-
*/
|
|
1165
|
-
changeEncryptedMemo?: Bytes176;
|
|
1166
|
-
};
|
|
1167
|
-
/**
|
|
1168
|
-
* Call index 4 — `set_audit_policy` (Signed origin)
|
|
1169
|
-
* Registers or replaces the caller's audit policy for selective disclosure.
|
|
1170
|
-
*/
|
|
1171
|
-
type SetAuditPolicyArgs = {
|
|
1172
|
-
/** Up to 10 authorized auditors. */
|
|
1173
|
-
auditors: Auditor[];
|
|
1174
|
-
/** Up to 10 disclosure conditions. */
|
|
1175
|
-
conditions: DisclosureCondition[];
|
|
1176
|
-
/** Minimum blocks between disclosures to the same auditor. Null = no limit. */
|
|
1177
|
-
maxFrequency: number | null;
|
|
1178
|
-
/** Block after which the policy expires. Null = no expiry. */
|
|
1179
|
-
validUntil: number | null;
|
|
1180
|
-
};
|
|
1181
|
-
/**
|
|
1182
|
-
* Call index 5 — `request_disclosure` (Signed origin)
|
|
1183
|
-
* Auditor requests selective disclosure from a target account for a specific commitment.
|
|
1184
|
-
*/
|
|
1185
|
-
type RequestDisclosureArgs = {
|
|
1186
|
-
/** AccountId of the disclosure target. */
|
|
1187
|
-
target: string;
|
|
1188
|
-
/** 32-byte commitment the auditor wants disclosed (LE). */
|
|
1189
|
-
commitment: number[];
|
|
1190
|
-
/** Which note fields must be revealed. */
|
|
1191
|
-
requiredFields: DisclosureFieldMask;
|
|
1192
|
-
/** Human-readable request reason — max 256 bytes UTF-8. */
|
|
1193
|
-
reason: string;
|
|
1194
|
-
/** Auditor's Baby Jubjub public key x-coordinate (32 bytes LE). */
|
|
1195
|
-
auditorBjjPkX: number[];
|
|
1196
|
-
/** Auditor's Baby Jubjub public key y-coordinate (32 bytes LE). */
|
|
1197
|
-
auditorBjjPkY: number[];
|
|
1198
|
-
};
|
|
1199
|
-
/**
|
|
1200
|
-
* Call index 6 — `disclose` (Signed origin)
|
|
1201
|
-
* Submit a Groth16 disclosure proof for a commitment.
|
|
1202
|
-
*/
|
|
1203
|
-
type DiscloseArgs = {
|
|
1204
|
-
/** 32-byte note commitment to disclose (LE). */
|
|
1205
|
-
commitment: Bytes32;
|
|
1206
|
-
/** Groth16 proof bytes — max 128 bytes. */
|
|
1207
|
-
proofBytes: number[];
|
|
1208
|
-
/**
|
|
1209
|
-
* 256-byte public signals (ECDH Baby Jubjub layout):
|
|
1210
|
-
* commitment[0..32] | auditor_pk_x[32..64] | auditor_pk_y[64..96]
|
|
1211
|
-
* | epk_x[96..128] | epk_y[128..160] | enc_value[160..192]
|
|
1212
|
-
* | enc_asset_id[192..224] | enc_owner_hash[224..256]
|
|
1213
|
-
* Use `buildDisclosurePublicSignals()` to construct this.
|
|
1214
|
-
*/
|
|
1215
|
-
publicSignals: DisclosurePublicSignals;
|
|
1216
|
-
/** Auditor AccountId — required (must match the DisclosureRequest). */
|
|
1217
|
-
auditor: string;
|
|
1218
|
-
};
|
|
1219
|
-
/**
|
|
1220
|
-
* Call index 7 — `reject_disclosure` (Signed origin)
|
|
1221
|
-
* Disclosure target rejects a pending request from an auditor for a specific commitment.
|
|
1222
|
-
*/
|
|
1223
|
-
type RejectDisclosureArgs = {
|
|
1224
|
-
/** AccountId of the auditor whose request is rejected. */
|
|
1225
|
-
auditor: string;
|
|
1226
|
-
/** 32-byte commitment of the request being rejected (LE). */
|
|
1227
|
-
commitment: number[];
|
|
1228
|
-
/** Rejection reason — max 256 bytes UTF-8. */
|
|
1229
|
-
reason: string;
|
|
1230
|
-
};
|
|
1231
|
-
/**
|
|
1232
|
-
* Call index 13 — `batch_submit_disclosure_proofs` (Signed origin)
|
|
1233
|
-
* Submit up to 10 disclosure proofs in one extrinsic.
|
|
1234
|
-
*/
|
|
1235
|
-
type BatchSubmitDisclosureProofsArgs = {
|
|
1236
|
-
submissions: BatchDisclosureSubmission[];
|
|
1237
|
-
};
|
|
1238
|
-
/**
|
|
1239
|
-
* Call index 9 — `register_asset` (Root origin)
|
|
1240
|
-
* Registers a new asset in the shielded pool registry.
|
|
1241
|
-
*/
|
|
1242
|
-
type RegisterAssetArgs = {
|
|
1243
|
-
/** Asset name — max 64 bytes UTF-8. */
|
|
1244
|
-
name: string;
|
|
1245
|
-
/** Asset ticker symbol, e.g. "USDT" — max 16 bytes UTF-8. */
|
|
1246
|
-
symbol: string;
|
|
1247
|
-
/** Token decimal precision (e.g. 18 for ORB, 6 for USDT). */
|
|
1248
|
-
decimals: number;
|
|
1249
|
-
/** 20-byte EVM contract address for ERC-20 assets. Null = native asset. */
|
|
1250
|
-
contractAddress: number[] | null;
|
|
1251
|
-
};
|
|
1252
|
-
/**
|
|
1253
|
-
* Call index 10 — `verify_asset` (Root origin)
|
|
1254
|
-
* Marks a registered asset as verified, enabling shielding.
|
|
1255
|
-
*/
|
|
1256
|
-
type VerifyAssetArgs = {
|
|
1257
|
-
assetId: number;
|
|
1258
|
-
};
|
|
1259
|
-
/**
|
|
1260
|
-
* Call index 11 — `unverify_asset` (Root origin)
|
|
1261
|
-
* Removes the verified status from an asset, disabling new shield operations.
|
|
1262
|
-
*/
|
|
1263
|
-
type UnverifyAssetArgs = {
|
|
1264
|
-
assetId: number;
|
|
1265
|
-
};
|
|
1266
|
-
/**
|
|
1267
|
-
* Call index 14 — `prune_expired_request` (Signed origin)
|
|
1268
|
-
* Cleans up a disclosure request that has passed its expiration block.
|
|
1269
|
-
*/
|
|
1270
|
-
type PruneExpiredRequestArgs = {
|
|
1271
|
-
/** AccountId of the disclosure target. */
|
|
1272
|
-
target: string;
|
|
1273
|
-
/** AccountId of the auditor. */
|
|
1274
|
-
auditor: string;
|
|
1275
|
-
/** 32-byte commitment of the expired request (LE). */
|
|
1276
|
-
commitment: number[];
|
|
1277
|
-
};
|
|
1278
|
-
/**
|
|
1279
|
-
* Call index 15 — `revoke_disclosure_record` (Signed origin)
|
|
1280
|
-
* Allows the note owner to revoke a previously submitted disclosure record.
|
|
1281
|
-
*/
|
|
1282
|
-
type RevokeDisclosureRecordArgs = {
|
|
1283
|
-
/** 32-byte commitment whose disclosure record should be revoked (LE). */
|
|
1284
|
-
commitment: Bytes32;
|
|
1285
|
-
};
|
|
1286
|
-
/** All pallet-shielded-pool calls as a discriminated union. */
|
|
1287
|
-
type ShieldedPoolCall = {
|
|
1288
|
-
type: 'shield';
|
|
1289
|
-
args: ShieldArgs;
|
|
1290
|
-
} | {
|
|
1291
|
-
type: 'shieldBatch';
|
|
1292
|
-
args: ShieldBatchArgs;
|
|
1293
|
-
} | {
|
|
1294
|
-
type: 'privateTransfer';
|
|
1295
|
-
args: PrivateTransferArgs;
|
|
1296
|
-
} | {
|
|
1297
|
-
type: 'unshield';
|
|
1298
|
-
args: UnshieldArgs;
|
|
1299
|
-
} | {
|
|
1300
|
-
type: 'setAuditPolicy';
|
|
1301
|
-
args: SetAuditPolicyArgs;
|
|
1302
|
-
} | {
|
|
1303
|
-
type: 'requestDisclosure';
|
|
1304
|
-
args: RequestDisclosureArgs;
|
|
1305
|
-
} | {
|
|
1306
|
-
type: 'disclose';
|
|
1307
|
-
args: DiscloseArgs;
|
|
1308
|
-
} | {
|
|
1309
|
-
type: 'rejectDisclosure';
|
|
1310
|
-
args: RejectDisclosureArgs;
|
|
1311
|
-
} | {
|
|
1312
|
-
type: 'batchSubmitDisclosureProofs';
|
|
1313
|
-
args: BatchSubmitDisclosureProofsArgs;
|
|
1314
|
-
} | {
|
|
1315
|
-
type: 'registerAsset';
|
|
1316
|
-
args: RegisterAssetArgs;
|
|
1317
|
-
} | {
|
|
1318
|
-
type: 'verifyAsset';
|
|
1319
|
-
args: VerifyAssetArgs;
|
|
1320
|
-
} | {
|
|
1321
|
-
type: 'unverifyAsset';
|
|
1322
|
-
args: UnverifyAssetArgs;
|
|
1323
|
-
} | {
|
|
1324
|
-
type: 'pruneExpiredRequest';
|
|
1325
|
-
args: PruneExpiredRequestArgs;
|
|
1326
|
-
} | {
|
|
1327
|
-
type: 'revokeDisclosureRecord';
|
|
1328
|
-
args: RevokeDisclosureRecordArgs;
|
|
1329
|
-
};
|
|
1330
|
-
|
|
1331
1053
|
/**
|
|
1332
1054
|
* High-level module for Orbinum shielded-pool operations.
|
|
1333
1055
|
*
|
|
@@ -1370,43 +1092,11 @@ declare class ShieldedPoolModule {
|
|
|
1370
1092
|
/**
|
|
1371
1093
|
* Claims accrued relay fees into the shielded pool.
|
|
1372
1094
|
* This is a SIGNED transaction — the relayer must sign it with their wallet.
|
|
1373
|
-
* Before calling this, generate a ZK
|
|
1095
|
+
* Before calling this, generate a ZK value proof with generateFeeClaimProof() (not yet implemented).
|
|
1374
1096
|
*
|
|
1375
1097
|
* Extrinsic: shieldedPool.claim_shielded_fees(commitment, amount, asset_id, memo, proof, public_signals)
|
|
1376
1098
|
*/
|
|
1377
1099
|
claimShieldedFees(params: ClaimShieldedFeesParams, signer: PolkadotSigner, txOptions?: UnsafeTxOptions): Promise<TxResult>;
|
|
1378
|
-
/**
|
|
1379
|
-
* Requests a selective disclosure from a target account for a specific commitment.
|
|
1380
|
-
* The auditor's Baby Jubjub public key is included so the note owner knows
|
|
1381
|
-
* which key to encrypt to when generating the proof.
|
|
1382
|
-
* Extrinsic: shieldedPool.request_disclosure(target, commitment, required_fields,
|
|
1383
|
-
* reason, auditor_bjj_pk_x, auditor_bjj_pk_y)
|
|
1384
|
-
*/
|
|
1385
|
-
requestDisclosure(params: RequestDisclosureArgs, signer: PolkadotSigner, txOptions?: UnsafeTxOptions): Promise<TxResult>;
|
|
1386
|
-
/**
|
|
1387
|
-
* Submits a Groth16 ZK disclosure proof for a note commitment.
|
|
1388
|
-
* The proof reveals the selected fields (value, asset_id, owner_hash) on-chain.
|
|
1389
|
-
* Use generateDisclosureProof() + buildDisclosurePublicSignals() before calling this.
|
|
1390
|
-
* Extrinsic: shieldedPool.disclose(commitment, proof_bytes, public_signals, auditor)
|
|
1391
|
-
*/
|
|
1392
|
-
disclose(params: DiscloseArgs, signer: PolkadotSigner, txOptions?: UnsafeTxOptions): Promise<TxResult>;
|
|
1393
|
-
/**
|
|
1394
|
-
* Rejects a pending disclosure request from an auditor for a specific commitment.
|
|
1395
|
-
* Extrinsic: shieldedPool.reject_disclosure(auditor, commitment, reason)
|
|
1396
|
-
*/
|
|
1397
|
-
rejectDisclosure(params: RejectDisclosureArgs, signer: PolkadotSigner, txOptions?: UnsafeTxOptions): Promise<TxResult>;
|
|
1398
|
-
/**
|
|
1399
|
-
* Cleans up a disclosure request that has passed its expiration block.
|
|
1400
|
-
* Permissionless — any account can prune expired requests.
|
|
1401
|
-
* Extrinsic: shieldedPool.prune_expired_request(target, auditor, commitment)
|
|
1402
|
-
*/
|
|
1403
|
-
pruneExpiredRequest(params: PruneExpiredRequestArgs, signer: PolkadotSigner, txOptions?: UnsafeTxOptions): Promise<TxResult>;
|
|
1404
|
-
/**
|
|
1405
|
-
* Revokes a previously submitted voluntary disclosure record.
|
|
1406
|
-
* Only applies to self-disclosures (auditor = None). Auditor-requested records are permanent.
|
|
1407
|
-
* Extrinsic: shieldedPool.revoke_disclosure_record(commitment)
|
|
1408
|
-
*/
|
|
1409
|
-
revokeDisclosureRecord(params: RevokeDisclosureRecordArgs, signer: PolkadotSigner, txOptions?: UnsafeTxOptions): Promise<TxResult>;
|
|
1410
1100
|
}
|
|
1411
1101
|
|
|
1412
1102
|
/**
|
|
@@ -1656,6 +1346,20 @@ declare class AccountMappingModule {
|
|
|
1656
1346
|
dispatchAsLinkedAccount(params: DispatchAsLinkedParams, signer: PolkadotSigner): Promise<TxResult>;
|
|
1657
1347
|
}
|
|
1658
1348
|
|
|
1349
|
+
/**
|
|
1350
|
+
* Typed client for general chain state queries under the `chain_*` namespace.
|
|
1351
|
+
*/
|
|
1352
|
+
declare class ChainModule {
|
|
1353
|
+
private readonly substrate;
|
|
1354
|
+
constructor(substrate: SubstrateClient);
|
|
1355
|
+
/**
|
|
1356
|
+
* Returns `true` if the given SS58 account is an active Aura validator.
|
|
1357
|
+
*
|
|
1358
|
+
* Reads `pallet_aura::Authorities` directly from storage at the best known block.
|
|
1359
|
+
*/
|
|
1360
|
+
isValidator(ss58Address: string): Promise<boolean>;
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1659
1363
|
type RpcV2MerkleProof = {
|
|
1660
1364
|
path: string[];
|
|
1661
1365
|
leafIndex: number;
|
|
@@ -1811,70 +1515,6 @@ interface KnownPrecompileInfo {
|
|
|
1811
1515
|
/** Map from 4-byte hex selector (no 0x prefix) to function signature. */
|
|
1812
1516
|
functions: Record<string, string>;
|
|
1813
1517
|
}
|
|
1814
|
-
/**
|
|
1815
|
-
* Parameters for `requestDisclosure`.
|
|
1816
|
-
*
|
|
1817
|
-
* The EVM caller of this transaction is treated as the **auditor** on-chain.
|
|
1818
|
-
*/
|
|
1819
|
-
type RequestDisclosureParams = {
|
|
1820
|
-
/** AccountId32 of the note owner (target), as a 0x-prefixed 64-hex-char string. */
|
|
1821
|
-
target: string;
|
|
1822
|
-
/** Note commitment, as a 0x-prefixed 64-hex-char string. */
|
|
1823
|
-
commitment: string;
|
|
1824
|
-
/** Whether to request disclosure of the note value. */
|
|
1825
|
-
disclosedValue: boolean;
|
|
1826
|
-
/** Whether to request disclosure of the asset ID. */
|
|
1827
|
-
disclosedAssetId: boolean;
|
|
1828
|
-
/** Whether to request disclosure of the note owner hash. */
|
|
1829
|
-
disclosedOwner: boolean;
|
|
1830
|
-
/** Human-readable reason (UTF-8, max 256 bytes). */
|
|
1831
|
-
reason: string;
|
|
1832
|
-
/** Auditor's Baby Jubjub public key X coordinate (32 bytes). */
|
|
1833
|
-
auditorBjjPkX: Uint8Array;
|
|
1834
|
-
/** Auditor's Baby Jubjub public key Y coordinate (32 bytes). */
|
|
1835
|
-
auditorBjjPkY: Uint8Array;
|
|
1836
|
-
};
|
|
1837
|
-
/**
|
|
1838
|
-
* Parameters for `disclose`.
|
|
1839
|
-
*
|
|
1840
|
-
* The EVM caller of this transaction is treated as the **note owner** on-chain.
|
|
1841
|
-
*/
|
|
1842
|
-
type DiscloseParams = {
|
|
1843
|
-
/** Note commitment, as a 0x-prefixed 64-hex-char string. */
|
|
1844
|
-
commitment: string;
|
|
1845
|
-
/** 128-byte serialised Groth16 proof. */
|
|
1846
|
-
proofBytes: Uint8Array;
|
|
1847
|
-
/** 256-byte ECDH-encrypted disclosure signals from the circuit. */
|
|
1848
|
-
publicSignals: Uint8Array;
|
|
1849
|
-
/** AccountId32 of the auditor, as a 0x-prefixed 64-hex-char string. */
|
|
1850
|
-
auditor: string;
|
|
1851
|
-
};
|
|
1852
|
-
/**
|
|
1853
|
-
* Parameters for `rejectDisclosure`.
|
|
1854
|
-
*
|
|
1855
|
-
* The EVM caller of this transaction is treated as the **target** (note owner) on-chain.
|
|
1856
|
-
*/
|
|
1857
|
-
type RejectDisclosureParams = {
|
|
1858
|
-
/** AccountId32 of the auditor who sent the request, as a 0x-prefixed 64-hex-char string. */
|
|
1859
|
-
auditor: string;
|
|
1860
|
-
/** Note commitment, as a 0x-prefixed 64-hex-char string. */
|
|
1861
|
-
commitment: string;
|
|
1862
|
-
/** Human-readable rejection reason (UTF-8, max 256 bytes). */
|
|
1863
|
-
reason: string;
|
|
1864
|
-
};
|
|
1865
|
-
/**
|
|
1866
|
-
* Parameters for `pruneExpiredRequest`.
|
|
1867
|
-
*
|
|
1868
|
-
* Permissionless: any EVM caller can prune an expired disclosure request.
|
|
1869
|
-
*/
|
|
1870
|
-
type PruneExpiredRequestParams = {
|
|
1871
|
-
/** AccountId32 of the note owner, as a 0x-prefixed 64-hex-char string. */
|
|
1872
|
-
target: string;
|
|
1873
|
-
/** AccountId32 of the auditor, as a 0x-prefixed 64-hex-char string. */
|
|
1874
|
-
auditor: string;
|
|
1875
|
-
/** Note commitment, as a 0x-prefixed 64-hex-char string. */
|
|
1876
|
-
commitment: string;
|
|
1877
|
-
};
|
|
1878
1518
|
|
|
1879
1519
|
/**
|
|
1880
1520
|
* Bindings for the `ShieldedPoolPrecompile` at address `0x...0801`.
|
|
@@ -1960,66 +1600,41 @@ declare class ShieldedPoolPrecompile {
|
|
|
1960
1600
|
estimateUnshieldGas(params: UnshieldParams, from: string): Promise<bigint>;
|
|
1961
1601
|
/**
|
|
1962
1602
|
* Returns the ABI-encoded calldata for
|
|
1963
|
-
* `
|
|
1964
|
-
*
|
|
1965
|
-
* The **EVM caller** of the resulting transaction is treated as the **auditor**
|
|
1966
|
-
* on-chain. No explicit auditor argument is needed.
|
|
1967
|
-
*/
|
|
1968
|
-
buildRequestDisclosureCalldata(params: RequestDisclosureParams): string;
|
|
1969
|
-
/**
|
|
1970
|
-
* Requests selective disclosure of a specific commitment.
|
|
1971
|
-
*
|
|
1972
|
-
* The EVM caller is recorded as the auditor on-chain. The note owner can
|
|
1973
|
-
* respond with `disclose()` or reject with `rejectDisclosure()`.
|
|
1974
|
-
*
|
|
1975
|
-
* Extrinsic: `shieldedPool.requestDisclosure(target, commitment, requiredFields, reason, bjjPkX, bjjPkY)`
|
|
1976
|
-
*/
|
|
1977
|
-
requestDisclosure(params: RequestDisclosureParams, signer: EvmSigner): Promise<string>;
|
|
1978
|
-
/**
|
|
1979
|
-
* Returns the ABI-encoded calldata for `disclose(bytes32,bytes,bytes,bytes32)`.
|
|
1980
|
-
*
|
|
1981
|
-
* The **EVM caller** is treated as the **note owner** on-chain.
|
|
1982
|
-
* `params.proofBytes` must be exactly 128 bytes; `params.publicSignals` exactly 256 bytes.
|
|
1983
|
-
*/
|
|
1984
|
-
buildDiscloseCalldata(params: DiscloseParams): string;
|
|
1985
|
-
/**
|
|
1986
|
-
* Submits a selective disclosure proof for a commitment.
|
|
1603
|
+
* `claimShieldedFees(bytes32,uint256,uint32,bytes,bytes,bytes)`.
|
|
1987
1604
|
*
|
|
1988
|
-
*
|
|
1989
|
-
*
|
|
1990
|
-
*
|
|
1605
|
+
* ABI layout (params after selector):
|
|
1606
|
+
* - `commitment` — bytes32 (fixed)
|
|
1607
|
+
* - `amount` — uint256 (fixed)
|
|
1608
|
+
* - `asset_id` — uint32 (fixed, right-aligned)
|
|
1609
|
+
* - `memo` — bytes (dynamic)
|
|
1610
|
+
* - `proof` — bytes (dynamic, 128 bytes Groth16)
|
|
1611
|
+
* - `publicSignals` — bytes (dynamic, 76 bytes)
|
|
1991
1612
|
*
|
|
1992
|
-
*
|
|
1613
|
+
* The validator identity is derived from `msg.sender` in the precompile —
|
|
1614
|
+
* do NOT include it in the calldata.
|
|
1993
1615
|
*/
|
|
1994
|
-
|
|
1616
|
+
buildClaimShieldedFeesCalldata(params: ClaimShieldedFeesParams): string;
|
|
1995
1617
|
/**
|
|
1996
|
-
*
|
|
1618
|
+
* Claims accumulated relay fees as a private shielded note.
|
|
1997
1619
|
*
|
|
1998
|
-
*
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
/**
|
|
2002
|
-
* Rejects a pending disclosure request.
|
|
1620
|
+
* This extrinsic is for **validators/relayers** who have accrued fees in
|
|
1621
|
+
* `pallet-relayer` and want to receive them privately inside the shielded pool
|
|
1622
|
+
* instead of as a public balance credit.
|
|
2003
1623
|
*
|
|
2004
|
-
* The
|
|
1624
|
+
* The ZK `value_proof` binds `commitment` to `(amount, assetId, ownerPk, blinding)`
|
|
1625
|
+
* so the runtime can verify the note encodes exactly the claimed fee amount,
|
|
1626
|
+
* preventing a malicious relayer from inflating the withdrawal.
|
|
2005
1627
|
*
|
|
2006
|
-
*
|
|
2007
|
-
|
|
2008
|
-
rejectDisclosure(params: RejectDisclosureParams, signer: EvmSigner): Promise<string>;
|
|
2009
|
-
/**
|
|
2010
|
-
* Returns the ABI-encoded calldata for `pruneExpiredRequest(bytes32,bytes32,bytes32)`.
|
|
1628
|
+
* The `msg.sender` EVM address is used as the validator identity; it must match
|
|
1629
|
+
* the address that has pending relay fees in `pallet-relayer`.
|
|
2011
1630
|
*
|
|
2012
|
-
*
|
|
1631
|
+
* Extrinsic: `shieldedPool.claim_shielded_fees(commitment, amount, assetId, memo, proof, publicSignals)`
|
|
2013
1632
|
*/
|
|
2014
|
-
|
|
1633
|
+
claimShieldedFees(params: ClaimShieldedFeesParams, signer: EvmSigner): Promise<string>;
|
|
2015
1634
|
/**
|
|
2016
|
-
*
|
|
2017
|
-
*
|
|
2018
|
-
* Permissionless: any EVM account can call this once `expires_at` has passed.
|
|
2019
|
-
*
|
|
2020
|
-
* Extrinsic: `shieldedPool.pruneExpiredRequest(target, auditor, commitment)`
|
|
1635
|
+
* Estimates the EVM gas for a `claimShieldedFees` call.
|
|
2021
1636
|
*/
|
|
2022
|
-
|
|
1637
|
+
estimateClaimShieldedFeesGas(params: ClaimShieldedFeesParams, from: string): Promise<bigint>;
|
|
2023
1638
|
}
|
|
2024
1639
|
|
|
2025
1640
|
/**
|
|
@@ -2295,6 +1910,8 @@ declare class OrbinumClient {
|
|
|
2295
1910
|
readonly accountMapping: AccountMappingModule;
|
|
2296
1911
|
/** Typed access to `privacy_*` custom RPC endpoints. */
|
|
2297
1912
|
readonly privacy: PrivacyModule;
|
|
1913
|
+
/** Typed access to general chain state via `chain_*` custom RPC endpoints. */
|
|
1914
|
+
readonly chain: ChainModule;
|
|
2298
1915
|
/** Typed access to `zkVerifier_*` custom RPC endpoints. */
|
|
2299
1916
|
readonly zkVerifier: ZkVerifierModule;
|
|
2300
1917
|
/** Typed access to `relayer_*` RPC endpoints (registry lookup and pending fee queries). */
|
|
@@ -2654,6 +2271,71 @@ declare function tryDecryptNoteVerbose(commitment: ScanCommitment, viewingSecret
|
|
|
2654
2271
|
reason?: string;
|
|
2655
2272
|
};
|
|
2656
2273
|
|
|
2274
|
+
/**
|
|
2275
|
+
* NoteDisclosure
|
|
2276
|
+
*
|
|
2277
|
+
* Utilities for creating and decoding single-note disclosure keys.
|
|
2278
|
+
* A disclosure key is a compact, shareable string encoding the plaintext
|
|
2279
|
+
* preimage of one specific note commitment. Anyone with the key can verify
|
|
2280
|
+
* the note's value and asset — without gaining any spending capability.
|
|
2281
|
+
*
|
|
2282
|
+
* Format: "orbdisc:<base64url(JSON)>"
|
|
2283
|
+
*
|
|
2284
|
+
* Revealed by the key:
|
|
2285
|
+
* - value, assetId, ownerPk (BJJ Ax — not linked to EVM address), blinding
|
|
2286
|
+
* - commitment (cryptographically verified via Poseidon4)
|
|
2287
|
+
*
|
|
2288
|
+
* NOT revealed by the key:
|
|
2289
|
+
* - spendingKey, nullifier, viewingSecretKey
|
|
2290
|
+
* - any other note belonging to the same user
|
|
2291
|
+
*
|
|
2292
|
+
* Security: the commitment verification in decodeNoteDisclosureKey is a
|
|
2293
|
+
* cryptographic proof-of-knowledge of the preimage. A forged key (mismatched
|
|
2294
|
+
* preimage) will fail verification and return null.
|
|
2295
|
+
*/
|
|
2296
|
+
|
|
2297
|
+
/**
|
|
2298
|
+
* Decoded and cryptographically verified contents of a note disclosure key.
|
|
2299
|
+
*
|
|
2300
|
+
* The `commitment` field is guaranteed to equal Poseidon4(value, assetId, ownerPk, blinding)
|
|
2301
|
+
* — this is verified by decodeNoteDisclosureKey before returning.
|
|
2302
|
+
*/
|
|
2303
|
+
interface NoteDisclosure {
|
|
2304
|
+
/** Poseidon4(value, assetId, ownerPk, blinding) — matches the on-chain commitment. */
|
|
2305
|
+
commitment: bigint;
|
|
2306
|
+
/** Note value in the smallest unit (e.g. attoORB). */
|
|
2307
|
+
value: bigint;
|
|
2308
|
+
/** Asset ID as registered in the shielded pool. */
|
|
2309
|
+
assetId: bigint;
|
|
2310
|
+
/** BabyJubJub Ax coordinate of the note owner (not directly linkable to an EVM address). */
|
|
2311
|
+
ownerPk: bigint;
|
|
2312
|
+
/** Random blinding scalar chosen at note creation. */
|
|
2313
|
+
blinding: bigint;
|
|
2314
|
+
}
|
|
2315
|
+
/**
|
|
2316
|
+
* Encodes a single ZkNote's plaintext preimage into a shareable disclosure key.
|
|
2317
|
+
*
|
|
2318
|
+
* The key does NOT include the spendingKey or nullifier. It is safe to share
|
|
2319
|
+
* with any party that should be able to verify the note's value and asset
|
|
2320
|
+
* without being able to spend it.
|
|
2321
|
+
*
|
|
2322
|
+
* @param note A fully populated ZkNote (as returned by the vault / rescan).
|
|
2323
|
+
* @returns A "orbdisc:…" string suitable for copy-paste or QR encoding.
|
|
2324
|
+
*/
|
|
2325
|
+
declare function createNoteDisclosureKey(note: ZkNote): string;
|
|
2326
|
+
/**
|
|
2327
|
+
* Decodes and cryptographically verifies a note disclosure key.
|
|
2328
|
+
*
|
|
2329
|
+
* Verification: recomputes Poseidon4(value, assetId, ownerPk, blinding) and
|
|
2330
|
+
* asserts it equals the embedded commitment. This ensures the preimage is
|
|
2331
|
+
* consistent and cannot be tampered with.
|
|
2332
|
+
*
|
|
2333
|
+
* @param key A "orbdisc:…" string produced by createNoteDisclosureKey.
|
|
2334
|
+
* @returns The verified NoteDisclosure, or null if the key is malformed,
|
|
2335
|
+
* has an unknown version, or fails Poseidon4 verification.
|
|
2336
|
+
*/
|
|
2337
|
+
declare function decodeNoteDisclosureKey(key: string): NoteDisclosure | null;
|
|
2338
|
+
|
|
2657
2339
|
/** A single input note for a private transfer. */
|
|
2658
2340
|
interface TransferInputNote {
|
|
2659
2341
|
nullifier: bigint;
|
|
@@ -2721,95 +2403,6 @@ declare function selectNotes(notes: ZkNote[], needed: bigint): [ZkNote, ZkNote |
|
|
|
2721
2403
|
*/
|
|
2722
2404
|
declare function buildDummyTransferInput(assetId: bigint): TransferInputNote;
|
|
2723
2405
|
|
|
2724
|
-
/**
|
|
2725
|
-
* Selective disclosure helpers for the Orbinum shielded pool (ECDH Baby Jubjub protocol).
|
|
2726
|
-
*
|
|
2727
|
-
* ## Public signals layout (256 bytes on-chain)
|
|
2728
|
-
* ```
|
|
2729
|
-
* [0..32] commitment — Poseidon4(value, asset_id, owner_pk, blinding) LE
|
|
2730
|
-
* [32..64] auditor_pk_x — Baby Jubjub pk_A.x LE
|
|
2731
|
-
* [64..96] auditor_pk_y — Baby Jubjub pk_A.y LE
|
|
2732
|
-
* [96..128] epk_x — r·G x-coordinate LE
|
|
2733
|
-
* [128..160] epk_y — r·G y-coordinate LE
|
|
2734
|
-
* [160..192] enc_value — masked_value + k0
|
|
2735
|
-
* [192..224] enc_asset_id — masked_asset_id + k1
|
|
2736
|
-
* [224..256] enc_owner_hash — masked_owner_hash + k2
|
|
2737
|
-
* ```
|
|
2738
|
-
*
|
|
2739
|
-
* The runtime verifies the Groth16 proof against the ciphertext.
|
|
2740
|
-
* It never decrypts. Decryption is off-chain with the auditor's BJJ sk.
|
|
2741
|
-
*/
|
|
2742
|
-
|
|
2743
|
-
/**
|
|
2744
|
-
* Derives a Baby Jubjub keypair deterministically from a Substrate signing key.
|
|
2745
|
-
*
|
|
2746
|
-
* ```
|
|
2747
|
-
* bjj_sk = Poseidon(substrate_signing_key) // one-way; does not expose the substrate key
|
|
2748
|
-
* bjj_pk = bjj_sk · G // Baby Jubjub base point
|
|
2749
|
-
* ```
|
|
2750
|
-
*
|
|
2751
|
-
* The `bjj_pk` is registered in `DisclosureRequest` on-chain so the note owner
|
|
2752
|
-
* knows which key to encrypt to.
|
|
2753
|
-
*
|
|
2754
|
-
* @param substrateSigningKey - Raw 32-byte Substrate signing key (sr25519 or ed25519).
|
|
2755
|
-
* @returns `{ sk, pkX, pkY }` — Baby Jubjub secret scalar and public key coordinates.
|
|
2756
|
-
*/
|
|
2757
|
-
declare function deriveBabyJubjubKeypair(substrateSigningKey: Uint8Array): {
|
|
2758
|
-
sk: bigint;
|
|
2759
|
-
pkX: bigint;
|
|
2760
|
-
pkY: bigint;
|
|
2761
|
-
};
|
|
2762
|
-
/**
|
|
2763
|
-
* Packs the 8 public signals into the 256-byte buffer for the `disclose` extrinsic.
|
|
2764
|
-
*
|
|
2765
|
-
* Layout:
|
|
2766
|
-
* ```
|
|
2767
|
-
* [0..32] commitment — 32-byte LE (0x-hex string)
|
|
2768
|
-
* [32..64] auditor_pk_x — 32-byte LE bigint
|
|
2769
|
-
* [64..96] auditor_pk_y — 32-byte LE bigint
|
|
2770
|
-
* [96..128] epk_x — from proofOutput.encryptedData.epkX
|
|
2771
|
-
* [128..160] epk_y — from proofOutput.encryptedData.epkY
|
|
2772
|
-
* [160..192] enc_value — from proofOutput.encryptedData.encValue
|
|
2773
|
-
* [192..224] enc_asset_id — from proofOutput.encryptedData.encAssetId
|
|
2774
|
-
* [224..256] enc_owner_hash — from proofOutput.encryptedData.encOwnerHash
|
|
2775
|
-
* ```
|
|
2776
|
-
*
|
|
2777
|
-
* @param commitment - 0x-prefixed 32-byte hex commitment.
|
|
2778
|
-
* @param auditorPkX - Auditor's Baby Jubjub pk x-coordinate (bigint LE).
|
|
2779
|
-
* @param auditorPkY - Auditor's Baby Jubjub pk y-coordinate (bigint LE).
|
|
2780
|
-
* @param proofOutput - Output of `generateDisclosureProof`.
|
|
2781
|
-
* @returns `number[]` — 256 bytes, SCALE-compatible.
|
|
2782
|
-
*/
|
|
2783
|
-
declare function buildDisclosurePublicSignals(commitment: string, auditorPkX: bigint, auditorPkY: bigint, proofOutput: DisclosureProofOutput): number[];
|
|
2784
|
-
/**
|
|
2785
|
-
* Decrypts encrypted disclosure signals using the auditor's Baby Jubjub secret key.
|
|
2786
|
-
*
|
|
2787
|
-
* ```
|
|
2788
|
-
* shared = sk_A · epk (ECDH — Baby Jubjub scalar mult)
|
|
2789
|
-
* k_i = Poseidon(shared.x, shared.y, i)
|
|
2790
|
-
* plaintext_i = (enc_i - k_i + BN254_R) % BN254_R
|
|
2791
|
-
* ```
|
|
2792
|
-
*
|
|
2793
|
-
* Only the intended auditor (holder of `auditorBjjSk`) can decrypt.
|
|
2794
|
-
* This runs entirely off-chain — the runtime never sees or derives `sk`.
|
|
2795
|
-
*
|
|
2796
|
-
* @param auditorBjjSk - Auditor's Baby Jubjub secret scalar (from `deriveBabyJubjubKeypair`).
|
|
2797
|
-
* @param enc - Encrypted signals from `DisclosureRecord.signals` (as bigints).
|
|
2798
|
-
* @returns `{ value, assetId, ownerHash }` — decrypted field elements.
|
|
2799
|
-
* If a field was not disclosed, its ciphertext is `k_i` and the plaintext decrypts to `0`.
|
|
2800
|
-
*/
|
|
2801
|
-
declare function decryptDisclosureSignals(auditorBjjSk: bigint, enc: {
|
|
2802
|
-
epkX: bigint;
|
|
2803
|
-
epkY: bigint;
|
|
2804
|
-
encValue: bigint;
|
|
2805
|
-
encAssetId: bigint;
|
|
2806
|
-
encOwnerHash: bigint;
|
|
2807
|
-
}): {
|
|
2808
|
-
value: bigint;
|
|
2809
|
-
assetId: bigint;
|
|
2810
|
-
ownerHash: bigint;
|
|
2811
|
-
};
|
|
2812
|
-
|
|
2813
2406
|
/**
|
|
2814
2407
|
* BN254 (alt_bn128) scalar field prime.
|
|
2815
2408
|
*
|
|
@@ -3262,7 +2855,7 @@ interface FeeClaimProofOutput {
|
|
|
3262
2855
|
publicSignals: number[];
|
|
3263
2856
|
}
|
|
3264
2857
|
/**
|
|
3265
|
-
* Generate a Groth16 fee-claim proof using the
|
|
2858
|
+
* Generate a Groth16 fee-claim proof using the value_proof circuit.
|
|
3266
2859
|
*
|
|
3267
2860
|
* The resulting proof convinces the pallet that:
|
|
3268
2861
|
* 1. The caller knows (amount, assetId, ownerPubkey, blinding) such that
|
|
@@ -3274,12 +2867,6 @@ interface FeeClaimProofOutput {
|
|
|
3274
2867
|
* @param options.provider - Override the artifact provider (default: CDN).
|
|
3275
2868
|
* @param options.verbose - Log proof generation steps to console.
|
|
3276
2869
|
*/
|
|
3277
|
-
/**
|
|
3278
|
-
* @deprecated Tech debt — `fees.rs` uses the OLD 76-byte plaintext disclosure layout,
|
|
3279
|
-
* but the disclosure circuit now uses ECDH encryption (256-byte layout).
|
|
3280
|
-
* This function compiles but the resulting proof WILL BE REJECTED by the pallet.
|
|
3281
|
-
* See `frame/shielded-pool/src/operations/fees.rs` comment for resolution options A/B/C.
|
|
3282
|
-
*/
|
|
3283
2870
|
declare function generateFeeClaimProof(inputs: FeeClaimProofInputs, options?: {
|
|
3284
2871
|
provider?: ArtifactProvider;
|
|
3285
2872
|
verbose?: boolean;
|
|
@@ -3412,72 +2999,6 @@ type MerkleRootUpdatedEvent = {
|
|
|
3412
2999
|
/** Total number of leaves after the update. */
|
|
3413
3000
|
treeSize: number;
|
|
3414
3001
|
};
|
|
3415
|
-
/**
|
|
3416
|
-
* Emitted by `set_audit_policy()` when an account sets or updates its audit policy.
|
|
3417
|
-
* Rust variant: `AuditPolicySet { account, version }`
|
|
3418
|
-
*/
|
|
3419
|
-
type AuditPolicySetEvent = {
|
|
3420
|
-
/** SS58 AccountId of the policy owner. */
|
|
3421
|
-
account: string;
|
|
3422
|
-
/** Policy version number (monotonically increasing). */
|
|
3423
|
-
version: number;
|
|
3424
|
-
};
|
|
3425
|
-
/**
|
|
3426
|
-
* Emitted by `disclose()` when a note is disclosed.
|
|
3427
|
-
* Rust variant: `Disclosed { who, commitment, auditor }`
|
|
3428
|
-
*/
|
|
3429
|
-
type DisclosedEvent = {
|
|
3430
|
-
/** SS58 AccountId of the discloser. */
|
|
3431
|
-
who: string;
|
|
3432
|
-
/** 0x-prefixed 32-byte commitment of the disclosed note. */
|
|
3433
|
-
commitment: string;
|
|
3434
|
-
/** SS58 AccountId of the auditor, or null for voluntary disclosure. */
|
|
3435
|
-
auditor: string | null;
|
|
3436
|
-
};
|
|
3437
|
-
/**
|
|
3438
|
-
* Emitted by `request_disclosure()` when an auditor requests a note disclosure.
|
|
3439
|
-
* Rust variant: `DisclosureRequested { target, auditor, reason }`
|
|
3440
|
-
*/
|
|
3441
|
-
type DisclosureRequestedEvent = {
|
|
3442
|
-
/** SS58 AccountId of the note owner (disclosure target). */
|
|
3443
|
-
target: string;
|
|
3444
|
-
/** SS58 AccountId of the requesting auditor. */
|
|
3445
|
-
auditor: string;
|
|
3446
|
-
/** Reason string (max 256 bytes, UTF-8). */
|
|
3447
|
-
reason: string;
|
|
3448
|
-
};
|
|
3449
|
-
/**
|
|
3450
|
-
* Emitted by `reject_disclosure()` when a note owner rejects a disclosure request.
|
|
3451
|
-
* Rust variant: `DisclosureRejected { target, auditor, reason }`
|
|
3452
|
-
*/
|
|
3453
|
-
type DisclosureRejectedEvent = {
|
|
3454
|
-
/** SS58 AccountId of the note owner. */
|
|
3455
|
-
target: string;
|
|
3456
|
-
/** SS58 AccountId of the auditor whose request was rejected. */
|
|
3457
|
-
auditor: string;
|
|
3458
|
-
/** Rejection reason string (max 256 bytes, UTF-8). */
|
|
3459
|
-
reason: string;
|
|
3460
|
-
};
|
|
3461
|
-
/**
|
|
3462
|
-
* Emitted when a pending disclosure request expires (on_finalize pruning).
|
|
3463
|
-
* Rust variant: `DisclosureRequestExpired { target, auditor }`
|
|
3464
|
-
*/
|
|
3465
|
-
type DisclosureRequestExpiredEvent = {
|
|
3466
|
-
/** SS58 AccountId of the note owner. */
|
|
3467
|
-
target: string;
|
|
3468
|
-
/** SS58 AccountId of the auditor. */
|
|
3469
|
-
auditor: string;
|
|
3470
|
-
};
|
|
3471
|
-
/**
|
|
3472
|
-
* Emitted by `revoke_disclosure_record()` when an account revokes a previous disclosure.
|
|
3473
|
-
* Rust variant: `DisclosureRecordRevoked { who, commitment }`
|
|
3474
|
-
*/
|
|
3475
|
-
type DisclosureRecordRevokedEvent = {
|
|
3476
|
-
/** SS58 AccountId of the note owner. */
|
|
3477
|
-
who: string;
|
|
3478
|
-
/** 0x-prefixed 32-byte commitment of the revoked note. */
|
|
3479
|
-
commitment: string;
|
|
3480
|
-
};
|
|
3481
3002
|
/**
|
|
3482
3003
|
* Emitted by `register_asset()` when a new asset is registered in the pool.
|
|
3483
3004
|
* Rust variant: `AssetRegistered { asset_id }`
|
|
@@ -3515,24 +3036,6 @@ type ShieldedPoolEvent = {
|
|
|
3515
3036
|
} | {
|
|
3516
3037
|
type: 'MerkleRootUpdated';
|
|
3517
3038
|
data: MerkleRootUpdatedEvent;
|
|
3518
|
-
} | {
|
|
3519
|
-
type: 'AuditPolicySet';
|
|
3520
|
-
data: AuditPolicySetEvent;
|
|
3521
|
-
} | {
|
|
3522
|
-
type: 'Disclosed';
|
|
3523
|
-
data: DisclosedEvent;
|
|
3524
|
-
} | {
|
|
3525
|
-
type: 'DisclosureRequested';
|
|
3526
|
-
data: DisclosureRequestedEvent;
|
|
3527
|
-
} | {
|
|
3528
|
-
type: 'DisclosureRejected';
|
|
3529
|
-
data: DisclosureRejectedEvent;
|
|
3530
|
-
} | {
|
|
3531
|
-
type: 'DisclosureRequestExpired';
|
|
3532
|
-
data: DisclosureRequestExpiredEvent;
|
|
3533
|
-
} | {
|
|
3534
|
-
type: 'DisclosureRecordRevoked';
|
|
3535
|
-
data: DisclosureRecordRevokedEvent;
|
|
3536
3039
|
} | {
|
|
3537
3040
|
type: 'AssetRegistered';
|
|
3538
3041
|
data: AssetRegisteredEvent;
|
|
@@ -3563,14 +3066,14 @@ type CircuitId = (typeof CircuitId)[keyof typeof CircuitId];
|
|
|
3563
3066
|
* |--------------|-------|---------------------------------|
|
|
3564
3067
|
* | Transfer | 1 | 2-in-2-out private transfer |
|
|
3565
3068
|
* | Unshield | 2 | Withdrawal from the pool |
|
|
3566
|
-
* |
|
|
3567
|
-
* | PrivateLink |
|
|
3069
|
+
* | ValueProof | 4 | Note value binding (fee-claim) |
|
|
3070
|
+
* | PrivateLink | 5 | Private chain-link proof |
|
|
3568
3071
|
*/
|
|
3569
3072
|
declare const CircuitId: {
|
|
3570
3073
|
readonly Transfer: 1;
|
|
3571
3074
|
readonly Unshield: 2;
|
|
3572
|
-
readonly
|
|
3573
|
-
readonly PrivateLink:
|
|
3075
|
+
readonly ValueProof: 4;
|
|
3076
|
+
readonly PrivateLink: 5;
|
|
3574
3077
|
};
|
|
3575
3078
|
/**
|
|
3576
3079
|
* A single verification key registration entry used in batch operations.
|
|
@@ -3625,7 +3128,7 @@ type VerifyProofArgs = {
|
|
|
3625
3128
|
* Number and meaning of inputs depends on the circuit:
|
|
3626
3129
|
* - Transfer: [merkle_root, nullifier_0, nullifier_1, commitment_0, commitment_1]
|
|
3627
3130
|
* - Unshield: [merkle_root, nullifier, amount_fe, recipient_hash, asset_id_fe]
|
|
3628
|
-
* -
|
|
3131
|
+
* - ValueProof: [commitment, value, asset_id, owner_hash]
|
|
3629
3132
|
* - PrivateLink: [commitment, call_hash_fe]
|
|
3630
3133
|
*/
|
|
3631
3134
|
publicInputs: number[][];
|
|
@@ -4195,6 +3698,172 @@ type AccountMappingEvent = {
|
|
|
4195
3698
|
data: PrivateLinkDispatchExecutedEvent;
|
|
4196
3699
|
};
|
|
4197
3700
|
|
|
3701
|
+
/**
|
|
3702
|
+
* TypeScript types for pallet-shielded-pool extrinsics and supporting structures.
|
|
3703
|
+
*
|
|
3704
|
+
* Conventions:
|
|
3705
|
+
* - Fixed/bounded byte arrays → `number[]` (SCALE-compatible)
|
|
3706
|
+
* - Balances (u128) → `bigint`
|
|
3707
|
+
* - AccountId → `string` (SS58 or 0x-prefixed 64-char hex)
|
|
3708
|
+
* - Block numbers → `number`
|
|
3709
|
+
* - Optional fields → `T | null`
|
|
3710
|
+
*/
|
|
3711
|
+
/**
|
|
3712
|
+
* 32-byte SCALE-encoded value (commitment, nullifier, Merkle root, etc.).
|
|
3713
|
+
* Stored as little-endian Poseidon field elements on-chain.
|
|
3714
|
+
*/
|
|
3715
|
+
type Bytes32 = number[];
|
|
3716
|
+
/**
|
|
3717
|
+
* 176-byte encrypted memo (ChaCha20-Poly1305 ECDH).
|
|
3718
|
+
* Layout: nonce(12) || ciphertext(132) || tag(16) || ephPk(32) = 176 bytes.
|
|
3719
|
+
*/
|
|
3720
|
+
type Bytes176 = number[];
|
|
3721
|
+
/**
|
|
3722
|
+
* A single shield operation for use in `shield_batch`.
|
|
3723
|
+
*/
|
|
3724
|
+
type ShieldOperation = {
|
|
3725
|
+
assetId: number;
|
|
3726
|
+
amount: bigint;
|
|
3727
|
+
/** 32-byte Poseidon commitment (LE). */
|
|
3728
|
+
commitment: Bytes32;
|
|
3729
|
+
/** Encrypted memo bytes — exactly 104 bytes. */
|
|
3730
|
+
encryptedMemo: number[];
|
|
3731
|
+
};
|
|
3732
|
+
/**
|
|
3733
|
+
* Call index 0 — `shield` (Signed origin)
|
|
3734
|
+
* Deposits a public token amount into the shielded pool.
|
|
3735
|
+
*/
|
|
3736
|
+
type ShieldArgs = {
|
|
3737
|
+
assetId: number;
|
|
3738
|
+
amount: bigint;
|
|
3739
|
+
/** 32-byte Poseidon commitment (LE). */
|
|
3740
|
+
commitment: Bytes32;
|
|
3741
|
+
/** Encrypted memo — exactly 104 bytes. */
|
|
3742
|
+
encryptedMemo: number[];
|
|
3743
|
+
};
|
|
3744
|
+
/**
|
|
3745
|
+
* Call index 12 — `shield_batch` (Signed origin)
|
|
3746
|
+
* Deposits multiple notes in a single extrinsic — max 20 operations.
|
|
3747
|
+
*/
|
|
3748
|
+
type ShieldBatchArgs = {
|
|
3749
|
+
operations: ShieldOperation[];
|
|
3750
|
+
};
|
|
3751
|
+
/** Input note consumed by a private transfer (SCALE wire format). */
|
|
3752
|
+
type RawTransferInput = {
|
|
3753
|
+
/** 32-byte Poseidon nullifier (LE). */
|
|
3754
|
+
nullifier: Bytes32;
|
|
3755
|
+
/** 32-byte Poseidon commitment (LE). */
|
|
3756
|
+
commitment: Bytes32;
|
|
3757
|
+
};
|
|
3758
|
+
/** Output note created by a private transfer (SCALE wire format). */
|
|
3759
|
+
type RawTransferOutput = {
|
|
3760
|
+
/** 32-byte Poseidon commitment (LE). */
|
|
3761
|
+
commitment: Bytes32;
|
|
3762
|
+
/** Encrypted memo — exactly 104 bytes. */
|
|
3763
|
+
memo: number[];
|
|
3764
|
+
};
|
|
3765
|
+
/**
|
|
3766
|
+
* Call index 1 — `private_transfer` (Unsigned/gasless origin)
|
|
3767
|
+
* Transfers value between notes without revealing sender, recipient or amount.
|
|
3768
|
+
* Fee is embedded in the ZK proof: input_sum == output_sum + fee.
|
|
3769
|
+
* The fee is paid to the block author (validator) by the pallet runtime.
|
|
3770
|
+
*/
|
|
3771
|
+
type PrivateTransferArgs = {
|
|
3772
|
+
/** Groth16 proof bytes — max 512 bytes. */
|
|
3773
|
+
proof: number[];
|
|
3774
|
+
/** 32-byte Merkle root (LE). */
|
|
3775
|
+
merkleRoot: Bytes32;
|
|
3776
|
+
nullifiers: RawTransferInput[];
|
|
3777
|
+
outputs: RawTransferOutput[];
|
|
3778
|
+
encryptedMemos: number[][];
|
|
3779
|
+
/** Asset ID being transferred (public input of the proof). */
|
|
3780
|
+
assetId: number;
|
|
3781
|
+
/** Gasless fee in planck. Paid to the block author (validator). */
|
|
3782
|
+
fee: bigint;
|
|
3783
|
+
};
|
|
3784
|
+
/**
|
|
3785
|
+
* Call index 2 — `unshield` (Unsigned/gasless origin)
|
|
3786
|
+
* Withdraws a note from the pool to a public account.
|
|
3787
|
+
* Fee is embedded in the ZK proof: note_value == amount + fee + changeValue.
|
|
3788
|
+
*/
|
|
3789
|
+
type UnshieldArgs = {
|
|
3790
|
+
/** Groth16 proof bytes — max 512 bytes. */
|
|
3791
|
+
proof: number[];
|
|
3792
|
+
/** 32-byte Merkle root (LE). */
|
|
3793
|
+
merkleRoot: Bytes32;
|
|
3794
|
+
/** 32-byte nullifier of the spent note (LE). */
|
|
3795
|
+
nullifier: Bytes32;
|
|
3796
|
+
assetId: number;
|
|
3797
|
+
/** Net amount recipient receives (planck). */
|
|
3798
|
+
amount: bigint;
|
|
3799
|
+
/** SS58 or 0x-prefixed AccountId of the recipient. */
|
|
3800
|
+
recipient: string;
|
|
3801
|
+
/** Gasless fee in planck. */
|
|
3802
|
+
fee: bigint;
|
|
3803
|
+
/**
|
|
3804
|
+
* 32-byte change note commitment (LE). All zeros for total unshield.
|
|
3805
|
+
* Must equal NoteCommitment(changeValue, assetId, changeOwnerPk, changeBlinding)
|
|
3806
|
+
* when changeValue > 0 — enforced by the ZK circuit.
|
|
3807
|
+
*/
|
|
3808
|
+
changeCommitment: Bytes32;
|
|
3809
|
+
/**
|
|
3810
|
+
* Encrypted memo for the change note (176 bytes, empty for total unshield).
|
|
3811
|
+
* Enables note recovery via blockchain scan for partial unshield.
|
|
3812
|
+
*/
|
|
3813
|
+
changeEncryptedMemo?: Bytes176;
|
|
3814
|
+
};
|
|
3815
|
+
/**
|
|
3816
|
+
* Call index 9 — `register_asset` (Root origin)
|
|
3817
|
+
* Registers a new asset in the shielded pool registry.
|
|
3818
|
+
*/
|
|
3819
|
+
type RegisterAssetArgs = {
|
|
3820
|
+
/** Asset name — max 64 bytes UTF-8. */
|
|
3821
|
+
name: string;
|
|
3822
|
+
/** Asset ticker symbol, e.g. "USDT" — max 16 bytes UTF-8. */
|
|
3823
|
+
symbol: string;
|
|
3824
|
+
/** Token decimal precision (e.g. 18 for ORB, 6 for USDT). */
|
|
3825
|
+
decimals: number;
|
|
3826
|
+
/** 20-byte EVM contract address for ERC-20 assets. Null = native asset. */
|
|
3827
|
+
contractAddress: number[] | null;
|
|
3828
|
+
};
|
|
3829
|
+
/**
|
|
3830
|
+
* Call index 10 — `verify_asset` (Root origin)
|
|
3831
|
+
* Marks a registered asset as verified, enabling shielding.
|
|
3832
|
+
*/
|
|
3833
|
+
type VerifyAssetArgs = {
|
|
3834
|
+
assetId: number;
|
|
3835
|
+
};
|
|
3836
|
+
/**
|
|
3837
|
+
* Call index 11 — `unverify_asset` (Root origin)
|
|
3838
|
+
* Removes the verified status from an asset, disabling new shield operations.
|
|
3839
|
+
*/
|
|
3840
|
+
type UnverifyAssetArgs = {
|
|
3841
|
+
assetId: number;
|
|
3842
|
+
};
|
|
3843
|
+
/** All pallet-shielded-pool calls as a discriminated union. */
|
|
3844
|
+
type ShieldedPoolCall = {
|
|
3845
|
+
type: 'shield';
|
|
3846
|
+
args: ShieldArgs;
|
|
3847
|
+
} | {
|
|
3848
|
+
type: 'shieldBatch';
|
|
3849
|
+
args: ShieldBatchArgs;
|
|
3850
|
+
} | {
|
|
3851
|
+
type: 'privateTransfer';
|
|
3852
|
+
args: PrivateTransferArgs;
|
|
3853
|
+
} | {
|
|
3854
|
+
type: 'unshield';
|
|
3855
|
+
args: UnshieldArgs;
|
|
3856
|
+
} | {
|
|
3857
|
+
type: 'registerAsset';
|
|
3858
|
+
args: RegisterAssetArgs;
|
|
3859
|
+
} | {
|
|
3860
|
+
type: 'verifyAsset';
|
|
3861
|
+
args: VerifyAssetArgs;
|
|
3862
|
+
} | {
|
|
3863
|
+
type: 'unverifyAsset';
|
|
3864
|
+
args: UnverifyAssetArgs;
|
|
3865
|
+
};
|
|
3866
|
+
|
|
4198
3867
|
/**
|
|
4199
3868
|
* Options for {@link formatBalance}.
|
|
4200
3869
|
*/
|
|
@@ -4497,30 +4166,6 @@ interface DecodedUnshieldArgs {
|
|
|
4497
4166
|
amount: string;
|
|
4498
4167
|
recipient: string;
|
|
4499
4168
|
}
|
|
4500
|
-
interface DecodedRequestDisclosureArgs {
|
|
4501
|
-
target: string;
|
|
4502
|
-
commitment: string;
|
|
4503
|
-
required_fields: {
|
|
4504
|
-
value: boolean;
|
|
4505
|
-
asset_id: boolean;
|
|
4506
|
-
owner: boolean;
|
|
4507
|
-
};
|
|
4508
|
-
reason: string;
|
|
4509
|
-
auditor_bjj_pk_x: string;
|
|
4510
|
-
auditor_bjj_pk_y: string;
|
|
4511
|
-
}
|
|
4512
|
-
interface DecodedRejectDisclosureArgs {
|
|
4513
|
-
auditor: string;
|
|
4514
|
-
commitment: string;
|
|
4515
|
-
reason: string;
|
|
4516
|
-
}
|
|
4517
|
-
interface DecodedSubmitDisclosureArgs {
|
|
4518
|
-
commitment: string;
|
|
4519
|
-
proof_bytes: string;
|
|
4520
|
-
/** 256-byte ECDH public signals (hex). */
|
|
4521
|
-
public_signals: string;
|
|
4522
|
-
auditor: string;
|
|
4523
|
-
}
|
|
4524
4169
|
interface DecodedTransferArgs {
|
|
4525
4170
|
dest: string;
|
|
4526
4171
|
value: string;
|
|
@@ -4621,35 +4266,6 @@ interface MerkleRootUpdatedData {
|
|
|
4621
4266
|
new_root: string;
|
|
4622
4267
|
size: number;
|
|
4623
4268
|
}
|
|
4624
|
-
interface DisclosureRequestedData {
|
|
4625
|
-
target: string;
|
|
4626
|
-
auditor: string;
|
|
4627
|
-
commitment: string;
|
|
4628
|
-
required_fields: {
|
|
4629
|
-
value: boolean;
|
|
4630
|
-
asset_id: boolean;
|
|
4631
|
-
owner: boolean;
|
|
4632
|
-
};
|
|
4633
|
-
auditor_bjj_pk_x: string;
|
|
4634
|
-
auditor_bjj_pk_y: string;
|
|
4635
|
-
}
|
|
4636
|
-
interface DisclosureRejectedData {
|
|
4637
|
-
target: string;
|
|
4638
|
-
auditor: string;
|
|
4639
|
-
commitment: string;
|
|
4640
|
-
reason: string;
|
|
4641
|
-
}
|
|
4642
|
-
interface DisclosureSubmittedData {
|
|
4643
|
-
who: string;
|
|
4644
|
-
commitment: string;
|
|
4645
|
-
proof_size: number;
|
|
4646
|
-
auditor: string;
|
|
4647
|
-
}
|
|
4648
|
-
interface DisclosureVerifiedData {
|
|
4649
|
-
who: string;
|
|
4650
|
-
commitment: string;
|
|
4651
|
-
verified: boolean;
|
|
4652
|
-
}
|
|
4653
4269
|
interface TransferEventData {
|
|
4654
4270
|
from: string;
|
|
4655
4271
|
to: string;
|
|
@@ -4720,4 +4336,4 @@ interface ExtrinsicFailedData {
|
|
|
4720
4336
|
dispatch_info: DispatchInfo;
|
|
4721
4337
|
}
|
|
4722
4338
|
|
|
4723
|
-
export { type AccountListing, type AccountMappedData, type AccountMappedEvent, type AccountMappingCall, type AccountMappingEvent, AccountMappingModule, AccountMappingPrecompile, type AccountMetadata, type AccountUnmappedEvent, type ActiveVersionSetEvent, type AddChainLinkArgs, type AddChainLinkParams, type AddSupportedChainArgs, type AliasFullIdentity, type AliasInfo, type AliasListedForSaleEvent, type AliasOnSaleData, type AliasRegisteredData, type AliasRegisteredEvent, type AliasReleasedEvent, type AliasSaleCancelledEvent, type AliasSoldData, type AliasSoldEvent, type AliasTransferredData, type AliasTransferredEvent, type AssetRegisteredEvent, type AssetUnverifiedEvent, type AssetVerifiedEvent,
|
|
4339
|
+
export { type AccountListing, type AccountMappedData, type AccountMappedEvent, type AccountMappingCall, type AccountMappingEvent, AccountMappingModule, AccountMappingPrecompile, type AccountMetadata, type AccountUnmappedEvent, type ActiveVersionSetEvent, type AddChainLinkArgs, type AddChainLinkParams, type AddSupportedChainArgs, type AliasFullIdentity, type AliasInfo, type AliasListedForSaleEvent, type AliasOnSaleData, type AliasRegisteredData, type AliasRegisteredEvent, type AliasReleasedEvent, type AliasSaleCancelledEvent, type AliasSoldData, type AliasSoldEvent, type AliasTransferredData, type AliasTransferredEvent, type AssetRegisteredEvent, type AssetUnverifiedEvent, type AssetVerifiedEvent, BABYJUB_SUBORDER, BN254_R, type BatchRegisterVerificationKeysArgs, type BatchVerificationKeysRegisteredEvent, type BlockInfo, type BuyAliasArgs, type Bytes32, type ChainInfo, type ChainLink, type ChainLinkAddedEvent, type ChainLinkRemovedEvent, CircuitId, CircuitId as CircuitIdType, type ClaimShieldedFeesParams, type ClientProviderConfig, type CommitmentsInsertedEvent, type CommitmentsInsertedEventData, type ConnectionStatus, CryptoPrecompiles, type DecodedAddChainLinkArgs, type DecodedBatchArgs, type DecodedDispatchAsPrivateLinkArgs, type DecodedEthereumTransactArgs, type DecodedEvmCallArgs, type DecodedPrecompile, type DecodedPrivateTransferArgs, type DecodedPutAliasForSaleArgs, type DecodedRegisterAliasArgs, type DecodedRemarkArgs, type DecodedRevealPrivateLinkArgs, type DecodedSetAccountMetadataArgs, type DecodedShieldArgs, type DecodedShieldBatchArgs, type DecodedShieldBatchOperation, type DecodedSudoArgs, type DecodedTransferAllArgs, type DecodedTransferArgs, type DecodedTransferKeepAliveArgs, type DecodedUnshieldArgs, type DecryptedMemo, type DispatchAsLinkedAccountArgs, type DispatchAsLinkedParams, type DispatchAsPrivateLinkArgs, type DispatchError, type DispatchInfo, type DynamicBuilder, ENCRYPTED_MEMO_SIZE, EncryptedMemo, type EncryptedNoteRecord, type EndowedEventData, type EthereumExecutedData, type EventData, type EventPhase, type EventRecord, type EvmAddressInfo, type EvmBlock, EvmClient, type EvmExecutedData, type EvmExitReason, EvmExplorer, type EvmLog, type EvmSigner, type EvmTransaction, type EvmTxRequest, type EvmTxSummary, type ExtrinsicDecoder, type ExtrinsicFailedData, type ExtrinsicSuccessData, type FeeClaimProofInputs, type FormatOptions, type IndexedBlock, type IndexedEvmTx, type IndexedExtrinsic, IndexerClient, type IndexerClientConfig, type IndexerStats, KNOWN_PRECOMPILES, type KnownPrecompileInfo, type ListingInfo, type MerkleRoot, type MerkleRootUpdatedData, type MerkleRootUpdatedEvent, type MerkleTreeInfo, type MetadataUpdatedEvent, NoteBuilder, type NoteDisclosure, type NoteInput, type NoteStatusUpdate, type NullifierStatusResult, type NullifiersSpentEvent, type NullifiersSpentEventData, OrbinumClient, type OrbinumClientConfig, OrbinumClientProvider, PRECOMPILE_ADDR, type PaginatedResult, PrivacyKeyManager, type PrivacyMerkleProof, PrivacyModule, type PrivateChainLinkAddedEvent, type PrivateChainLinkRemovedEvent, type PrivateChainLinkRevealedEvent, type PrivateLink, type PrivateLinkDispatchExecutedEvent, type PrivateTransferArgs, type PrivateTransferInput, type PrivateTransferOutput, type PrivateTransferParams, type PrivateTransferProofInputs, type PrivateTransferTimestamp, type ProofVerificationFailedEvent, type ProofVerifiedEvent, type ProxyCallExecutedEvent, type PutAliasOnSaleArgs, type PutOnSaleParams, type RawBlock, type RawBlockHeader, type RawTransferInput, type RawTransferOutput, type RegisterAliasArgs, type RegisterAssetArgs, type RegisterPrivateLinkArgs, type RegisterVerificationKeyArgs, type RegisteredAsset, type RelayFeeEvent, type RelayFeeSummaryEntry, type Relayer, type RelayerInfo, RelayerStatusModule, type RemoveChainLinkArgs, type RemovePrivateLinkArgs, type RemoveSupportedChainArgs, type RemoveVerificationKeyArgs, type ReservedEventData, type ResolvedAlias, type RevealPrivateLinkArgs, type RpcV2MerkleProof, type RpcV2NullifierStatus, type RpcV2PoolAssetBalance, type RpcV2PoolStats, SLIP0044_NAMESPACE, type ScanCommitment, type SetAccountMetadataArgs, type SetActiveVersionArgs, type SetMetadataParams, type ShieldArgs, type ShieldBatchArgs, type ShieldBatchItem, type ShieldBatchParams, type ShieldOperation, type ShieldParams, type ShieldedAddressEvent, type ShieldedCommitment, type ShieldedEvent, type ShieldedEventData, type ShieldedPoolCall, type ShieldedPoolEvent, ShieldedPoolModule, ShieldedPoolPrecompile, SignatureScheme, type SpentNullifier, type StatusChangeEvent, type StatusListener, type StealthScanHint, SubstrateClient, type SupportedChain, type SupportedChainAddedEvent, type SupportedChainRemovedEvent, type SystemHealth, type TokenInfo, type TokenTransfer, type TransferAliasArgs, type TransferEventData, type TransferInputNote, type TransferOutputNote, type TxResult, type UnsafeTxOptions, type Unshield, type UnshieldArgs, type UnshieldParams, type UnshieldProofInputs, type UnshieldedEvent, type UnshieldedEventData, type UnverifyAssetArgs, VaultLockedError, type VerificationKeyRegisteredEvent, type VerificationKeyRemovedEvent, type VerifyAssetArgs, type VerifyProofArgs, type VkEntry, type ZkNote, type ZkVerifierCall, type ZkVerifierCircuitVersionInfo, type ZkVerifierEvent, type ZkVerifierHistoricalVersion, ZkVerifierModule, type ZkVerifierVersionStats, type ZkVerifierVkHash, accountIdHexToSs58, addressToAccountIdHex, applyNoteStatus, bigintTo32Be, bigintTo32Le, bigintTo32LeArr, buildDummyTransferInput, bytesToBigintLE, computeNullifier, computePathIndices, createNoteDisclosureKey, decodeNoteDisclosureKey, decodePrecompileCalldata, decryptJson, decryptNoteRecord, deriveMasterKeyBytes, deriveOwnerPk, deriveSpendingKeyFromSignature, deriveSpendingKeyMessage, deriveStealthOwnerPk, deriveStealthSk, deriveVaultKey, deriveViewingPublicKey, deriveViewingSecretKey, encryptJson, encryptNote, ensureHexPrefix, evmAddressToAccountId, evmToImplicitSubstrate, evmToMappedAccountHex, evmToSubstrate, formatBalance, formatORB, fromBase64, fromHex, generateFeeClaimProof, generateTransferProof, generateUnshieldProof, getPrecompileLabel, hexToBigint, hexToNumber, implicitSubstrateToEvm, isEvmAddress, isImplicitEvmAccount, isSs58, isSubstrateAddress, isUnifiedAddress, leHexToBigint, mapExtrinsicArgs, mapZkEventData, normalizeEvmAddress, randomBlinding, recoverOwnerPkPoint, selectNotes, shortHash, substrateSs58ToAccountIdHex, substrateToEvm, toBase64, toHex, toTxResult, truncateMiddle, tryDecryptNote, tryDecryptNoteVerbose, vaultReplacer, vaultReviver };
|