@cheqd/sdk-esm 5.3.7-develop.1 → 5.4.0-develop.1
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/build/cjs/src/index.d.ts +142 -0
- package/build/cjs/src/index.d.ts.map +1 -0
- package/build/cjs/src/index.js +184 -0
- package/build/cjs/src/index.js.map +1 -0
- package/build/cjs/src/modules/_.d.ts +81 -0
- package/build/cjs/src/modules/_.d.ts.map +1 -0
- package/build/cjs/src/modules/_.js +93 -0
- package/build/cjs/src/modules/_.js.map +1 -0
- package/build/cjs/src/modules/did.d.ts +488 -0
- package/build/cjs/src/modules/did.d.ts.map +1 -0
- package/build/cjs/src/modules/did.js +1249 -0
- package/build/cjs/src/modules/did.js.map +1 -0
- package/build/cjs/src/modules/feeabstraction.d.ts +429 -0
- package/build/cjs/src/modules/feeabstraction.d.ts.map +1 -0
- package/build/cjs/src/modules/feeabstraction.js +474 -0
- package/build/cjs/src/modules/feeabstraction.js.map +1 -0
- package/build/cjs/src/modules/feemarket.d.ts +244 -0
- package/build/cjs/src/modules/feemarket.d.ts.map +1 -0
- package/build/cjs/src/modules/feemarket.js +297 -0
- package/build/cjs/src/modules/feemarket.js.map +1 -0
- package/build/cjs/src/modules/oracle.d.ts +563 -0
- package/build/cjs/src/modules/oracle.d.ts.map +1 -0
- package/build/cjs/src/modules/oracle.js +784 -0
- package/build/cjs/src/modules/oracle.js.map +1 -0
- package/build/cjs/src/modules/resource.d.ts +330 -0
- package/build/cjs/src/modules/resource.d.ts.map +1 -0
- package/build/cjs/src/modules/resource.js +556 -0
- package/build/cjs/src/modules/resource.js.map +1 -0
- package/build/cjs/src/querier.d.ts +62 -0
- package/build/cjs/src/querier.d.ts.map +1 -0
- package/build/cjs/src/querier.js +87 -0
- package/build/cjs/src/querier.js.map +1 -0
- package/build/cjs/src/registry.d.ts +18 -0
- package/build/cjs/src/registry.d.ts.map +1 -0
- package/build/cjs/src/registry.js +23 -0
- package/build/cjs/src/registry.js.map +1 -0
- package/build/cjs/src/signer.d.ts +250 -0
- package/build/cjs/src/signer.d.ts.map +1 -0
- package/build/cjs/src/signer.js +617 -0
- package/build/cjs/src/signer.js.map +1 -0
- package/build/cjs/src/types.d.ts +221 -0
- package/build/cjs/src/types.d.ts.map +1 -0
- package/build/cjs/src/types.js.map +1 -0
- package/build/cjs/src/utils.d.ts +233 -0
- package/build/cjs/src/utils.d.ts.map +1 -0
- package/build/cjs/src/utils.js +571 -0
- package/build/cjs/src/utils.js.map +1 -0
- package/build/{index.d.ts → esm/src/index.d.ts} +7 -3
- package/build/esm/src/index.d.ts.map +1 -0
- package/build/{index.js → esm/src/index.js} +3 -1
- package/build/esm/src/index.js.map +1 -0
- package/build/esm/src/modules/_.d.ts.map +1 -0
- package/build/esm/src/modules/_.js.map +1 -0
- package/build/{modules → esm/src/modules}/did.d.ts +109 -7
- package/build/esm/src/modules/did.d.ts.map +1 -0
- package/build/{modules → esm/src/modules}/did.js +212 -6
- package/build/esm/src/modules/did.js.map +1 -0
- package/build/esm/src/modules/feeabstraction.d.ts.map +1 -0
- package/build/esm/src/modules/feeabstraction.js.map +1 -0
- package/build/esm/src/modules/feemarket.d.ts.map +1 -0
- package/build/esm/src/modules/feemarket.js.map +1 -0
- package/build/esm/src/modules/oracle.d.ts +563 -0
- package/build/esm/src/modules/oracle.d.ts.map +1 -0
- package/build/esm/src/modules/oracle.js +784 -0
- package/build/esm/src/modules/oracle.js.map +1 -0
- package/build/{modules → esm/src/modules}/resource.d.ts +132 -6
- package/build/esm/src/modules/resource.d.ts.map +1 -0
- package/build/esm/src/modules/resource.js +556 -0
- package/build/esm/src/modules/resource.js.map +1 -0
- package/build/esm/src/querier.d.ts.map +1 -0
- package/build/esm/src/querier.js.map +1 -0
- package/build/esm/src/registry.d.ts.map +1 -0
- package/build/esm/src/registry.js.map +1 -0
- package/build/esm/src/signer.d.ts.map +1 -0
- package/build/esm/src/signer.js.map +1 -0
- package/build/{types → esm/src}/types.d.ts +27 -1
- package/build/esm/src/types.d.ts.map +1 -0
- package/build/esm/src/types.js +43 -0
- package/build/esm/src/types.js.map +1 -0
- package/build/esm/src/utils.d.ts.map +1 -0
- package/build/esm/src/utils.js.map +1 -0
- package/build/types/cjs/src/index.d.ts +142 -0
- package/build/types/cjs/src/index.d.ts.map +1 -0
- package/build/types/cjs/src/modules/_.d.ts +81 -0
- package/build/types/cjs/src/modules/_.d.ts.map +1 -0
- package/build/types/cjs/src/modules/did.d.ts +488 -0
- package/build/types/cjs/src/modules/did.d.ts.map +1 -0
- package/build/types/cjs/src/modules/feeabstraction.d.ts +429 -0
- package/build/types/cjs/src/modules/feeabstraction.d.ts.map +1 -0
- package/build/types/cjs/src/modules/feemarket.d.ts +244 -0
- package/build/types/cjs/src/modules/feemarket.d.ts.map +1 -0
- package/build/types/cjs/src/modules/oracle.d.ts +563 -0
- package/build/types/cjs/src/modules/oracle.d.ts.map +1 -0
- package/build/types/cjs/src/modules/resource.d.ts +330 -0
- package/build/types/cjs/src/modules/resource.d.ts.map +1 -0
- package/build/types/cjs/src/querier.d.ts +62 -0
- package/build/types/cjs/src/querier.d.ts.map +1 -0
- package/build/types/cjs/src/registry.d.ts +18 -0
- package/build/types/cjs/src/registry.d.ts.map +1 -0
- package/build/types/cjs/src/signer.d.ts +250 -0
- package/build/types/cjs/src/signer.d.ts.map +1 -0
- package/build/types/cjs/src/types.d.ts +221 -0
- package/build/types/cjs/src/types.d.ts.map +1 -0
- package/build/types/cjs/src/utils.d.ts +233 -0
- package/build/types/cjs/src/utils.d.ts.map +1 -0
- package/build/types/{index.d.ts → esm/src/index.d.ts} +7 -3
- package/build/types/esm/src/index.d.ts.map +1 -0
- package/build/types/esm/src/modules/_.d.ts.map +1 -0
- package/build/types/{modules → esm/src/modules}/did.d.ts +109 -7
- package/build/types/esm/src/modules/did.d.ts.map +1 -0
- package/build/types/esm/src/modules/feeabstraction.d.ts.map +1 -0
- package/build/types/esm/src/modules/feemarket.d.ts.map +1 -0
- package/build/types/esm/src/modules/oracle.d.ts +563 -0
- package/build/types/esm/src/modules/oracle.d.ts.map +1 -0
- package/build/types/{modules → esm/src/modules}/resource.d.ts +132 -6
- package/build/types/esm/src/modules/resource.d.ts.map +1 -0
- package/build/types/esm/src/querier.d.ts.map +1 -0
- package/build/types/esm/src/registry.d.ts.map +1 -0
- package/build/types/esm/src/signer.d.ts.map +1 -0
- package/build/{types.d.ts → types/esm/src/types.d.ts} +27 -1
- package/build/types/esm/src/types.d.ts.map +1 -0
- package/build/types/esm/src/utils.d.ts.map +1 -0
- package/package.json +2 -2
- package/build/index.d.ts.map +0 -1
- package/build/index.js.map +0 -1
- package/build/modules/_.d.ts.map +0 -1
- package/build/modules/_.js.map +0 -1
- package/build/modules/did.d.ts.map +0 -1
- package/build/modules/did.js.map +0 -1
- package/build/modules/feeabstraction.d.ts.map +0 -1
- package/build/modules/feeabstraction.js.map +0 -1
- package/build/modules/feemarket.d.ts.map +0 -1
- package/build/modules/feemarket.js.map +0 -1
- package/build/modules/resource.d.ts.map +0 -1
- package/build/modules/resource.js +0 -297
- package/build/modules/resource.js.map +0 -1
- package/build/querier.d.ts.map +0 -1
- package/build/querier.js.map +0 -1
- package/build/registry.d.ts.map +0 -1
- package/build/registry.js.map +0 -1
- package/build/signer.d.ts.map +0 -1
- package/build/signer.js.map +0 -1
- package/build/types/index.d.ts.map +0 -1
- package/build/types/modules/_.d.ts.map +0 -1
- package/build/types/modules/did.d.ts.map +0 -1
- package/build/types/modules/feeabstraction.d.ts.map +0 -1
- package/build/types/modules/feemarket.d.ts.map +0 -1
- package/build/types/modules/resource.d.ts.map +0 -1
- package/build/types/querier.d.ts.map +0 -1
- package/build/types/registry.d.ts.map +0 -1
- package/build/types/signer.d.ts.map +0 -1
- package/build/types/types.d.ts.map +0 -1
- package/build/types/utils.d.ts.map +0 -1
- package/build/types.d.ts.map +0 -1
- package/build/types.js.map +0 -1
- package/build/utils.d.ts.map +0 -1
- package/build/utils.js.map +0 -1
- /package/build/{types.js → cjs/src/types.js} +0 -0
- /package/build/{modules → esm/src/modules}/_.d.ts +0 -0
- /package/build/{modules → esm/src/modules}/_.js +0 -0
- /package/build/{modules → esm/src/modules}/feeabstraction.d.ts +0 -0
- /package/build/{modules → esm/src/modules}/feeabstraction.js +0 -0
- /package/build/{modules → esm/src/modules}/feemarket.d.ts +0 -0
- /package/build/{modules → esm/src/modules}/feemarket.js +0 -0
- /package/build/{querier.d.ts → esm/src/querier.d.ts} +0 -0
- /package/build/{querier.js → esm/src/querier.js} +0 -0
- /package/build/{registry.d.ts → esm/src/registry.d.ts} +0 -0
- /package/build/{registry.js → esm/src/registry.js} +0 -0
- /package/build/{signer.d.ts → esm/src/signer.d.ts} +0 -0
- /package/build/{signer.js → esm/src/signer.js} +0 -0
- /package/build/{types → esm/src}/utils.d.ts +0 -0
- /package/build/{utils.js → esm/src/utils.js} +0 -0
- /package/build/types/{modules → esm/src/modules}/_.d.ts +0 -0
- /package/build/types/{modules → esm/src/modules}/feeabstraction.d.ts +0 -0
- /package/build/types/{modules → esm/src/modules}/feemarket.d.ts +0 -0
- /package/build/types/{querier.d.ts → esm/src/querier.d.ts} +0 -0
- /package/build/types/{registry.d.ts → esm/src/registry.d.ts} +0 -0
- /package/build/types/{signer.d.ts → esm/src/signer.d.ts} +0 -0
- /package/build/{utils.d.ts → types/esm/src/utils.d.ts} +0 -0
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
import { VerificationMethods, MethodSpecificIdAlgo, CheqdNetwork, ServiceType, } from './types';
|
|
2
|
+
import { fromString, toString } from 'uint8arrays-cjs';
|
|
3
|
+
import { bases } from 'multiformats-cjs/basics';
|
|
4
|
+
import { base64ToBytes } from 'did-jwt-cjs';
|
|
5
|
+
import { generateKeyPair, generateKeyPairFromSeed } from '@stablelib/ed25519-cjs';
|
|
6
|
+
import { DirectSecp256k1HdWallet, DirectSecp256k1Wallet } from '@cosmjs/proto-signing-cjs';
|
|
7
|
+
import { EnglishMnemonic as _, sha256 } from '@cosmjs/crypto-cjs';
|
|
8
|
+
import { rawSecp256k1PubkeyToRawAddress } from '@cosmjs/amino-cjs';
|
|
9
|
+
import pkg from 'secp256k1-cjs';
|
|
10
|
+
import { v4 } from 'uuid-cjs';
|
|
11
|
+
import { VerificationMethod as ProtoVerificationMethod, Service as ProtoService, MsgCreateDidDocPayload, MsgDeactivateDidDocPayload, } from '@cheqd/ts-proto-cjs/cheqd/did/v2';
|
|
12
|
+
import { contexts, DIDModule } from './modules/did';
|
|
13
|
+
import { MsgCreateResourcePayload } from '@cheqd/ts-proto-cjs/cheqd/resource/v2';
|
|
14
|
+
import { toBech32 } from '@cosmjs/encoding-cjs';
|
|
15
|
+
import { StargateClient } from '@cosmjs/stargate-cjs';
|
|
16
|
+
import { backOff } from 'exponential-backoff-cjs';
|
|
17
|
+
/**
|
|
18
|
+
* Utility object for validating TImportableEd25519Key objects.
|
|
19
|
+
* Provides type guard functionality to ensure key structure integrity.
|
|
20
|
+
*/
|
|
21
|
+
export const TImportableEd25519Key = {
|
|
22
|
+
/**
|
|
23
|
+
* Type guard to validate if an object is a valid TImportableEd25519Key.
|
|
24
|
+
*
|
|
25
|
+
* @param key - Object to validate
|
|
26
|
+
* @returns True if the object is a valid TImportableEd25519Key
|
|
27
|
+
*/
|
|
28
|
+
isValid(key) {
|
|
29
|
+
return (typeof key === 'object' &&
|
|
30
|
+
key !== null &&
|
|
31
|
+
typeof key.publicKeyHex === 'string' &&
|
|
32
|
+
isHex(key.publicKeyHex) &&
|
|
33
|
+
typeof key.privateKeyHex === 'string' &&
|
|
34
|
+
isHex(key.privateKeyHex) &&
|
|
35
|
+
typeof key.kid === 'string' &&
|
|
36
|
+
key.type === 'Ed25519');
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
/** Multicodec header for Ed25519 public keys */
|
|
40
|
+
const MULTICODEC_ED25519_HEADER = new Uint8Array([0xed, 0x01]);
|
|
41
|
+
/**
|
|
42
|
+
* Compares two arrays of key-value pairs for equality.
|
|
43
|
+
*
|
|
44
|
+
* @param kv1 - First array of key-value pairs
|
|
45
|
+
* @param kv2 - Second array of key-value pairs
|
|
46
|
+
* @returns True if both arrays contain identical key-value pairs in the same order
|
|
47
|
+
*/
|
|
48
|
+
export function isEqualKeyValuePair(kv1, kv2) {
|
|
49
|
+
return kv1.every((item, index) => item.key === kv2[index].key && item.value === kv2[index].value);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extended English mnemonic class with additional validation patterns.
|
|
53
|
+
* Provides regex pattern matching for mnemonic phrase validation.
|
|
54
|
+
*/
|
|
55
|
+
export class EnglishMnemonic extends _ {
|
|
56
|
+
/** Regular expression pattern for validating English mnemonic phrases */
|
|
57
|
+
static _mnemonicMatcher = /^[a-z]+( [a-z]+)*$/;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Creates signing inputs from an importable Ed25519 key by matching it with verification methods.
|
|
61
|
+
* Supports multiple verification method types and key formats.
|
|
62
|
+
*
|
|
63
|
+
* @param key - The Ed25519 key to create signing inputs from
|
|
64
|
+
* @param verificationMethod - Array of verification methods to match against
|
|
65
|
+
* @returns Signing inputs containing verification method ID and private key
|
|
66
|
+
* @throws Error if key validation fails or no matching verification method is found
|
|
67
|
+
*/
|
|
68
|
+
export function createSignInputsFromImportableEd25519Key(key, verificationMethod) {
|
|
69
|
+
if (!TImportableEd25519Key.isValid(key))
|
|
70
|
+
throw new Error(`Key validation failed. Expected ${Object.values(TImportableEd25519Key).join(', ')}`);
|
|
71
|
+
const publicKey = fromString(key.publicKeyHex, 'hex');
|
|
72
|
+
for (const method of verificationMethod) {
|
|
73
|
+
switch (method.type) {
|
|
74
|
+
case VerificationMethods.Ed255192020:
|
|
75
|
+
const publicKeyMultibase = toMultibaseRaw(publicKey);
|
|
76
|
+
if (method.publicKeyMultibase === publicKeyMultibase) {
|
|
77
|
+
return {
|
|
78
|
+
verificationMethodId: method.id,
|
|
79
|
+
privateKeyHex: key.privateKeyHex,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
case VerificationMethods.Ed255192018:
|
|
83
|
+
const publicKeyBase58 = bases['base58btc'].encode(publicKey).slice(1);
|
|
84
|
+
if (method.publicKeyBase58 === publicKeyBase58) {
|
|
85
|
+
return {
|
|
86
|
+
verificationMethodId: method.id,
|
|
87
|
+
privateKeyHex: key.privateKeyHex,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
case VerificationMethods.JWK:
|
|
91
|
+
const publicKeyJwk = {
|
|
92
|
+
crv: 'Ed25519',
|
|
93
|
+
kty: 'OKP',
|
|
94
|
+
x: toString(publicKey, 'base64url'),
|
|
95
|
+
};
|
|
96
|
+
if (JSON.stringify(method.publicKeyJwk) === JSON.stringify(publicKeyJwk)) {
|
|
97
|
+
return {
|
|
98
|
+
verificationMethodId: method.id,
|
|
99
|
+
privateKeyHex: key.privateKeyHex,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`Unsupported verification method type: ${method.type}. Expected one of: ${Object.values(VerificationMethods).join(', ')}`);
|
|
104
|
+
}
|
|
105
|
+
throw new Error(`No verification method type provided. Expected one of: ${Object.values(VerificationMethods).join(', ')}`);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Creates a raw Ed25519 key pair using the StableLib library.
|
|
109
|
+
*
|
|
110
|
+
* @param seed - Optional seed string for deterministic key generation
|
|
111
|
+
* @returns Raw KeyPair object with publicKey and secretKey as Uint8Arrays
|
|
112
|
+
*/
|
|
113
|
+
export function createKeyPairRaw(seed) {
|
|
114
|
+
return seed ? generateKeyPairFromSeed(fromString(seed)) : generateKeyPair();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Creates an Ed25519 key pair with Base64-encoded keys.
|
|
118
|
+
*
|
|
119
|
+
* @param seed - Optional seed string for deterministic key generation
|
|
120
|
+
* @returns Key pair with Base64-encoded public and private keys
|
|
121
|
+
*/
|
|
122
|
+
export function createKeyPairBase64(seed) {
|
|
123
|
+
const keyPair = seed ? generateKeyPairFromSeed(fromString(seed)) : generateKeyPair();
|
|
124
|
+
return {
|
|
125
|
+
publicKey: toString(keyPair.publicKey, 'base64'),
|
|
126
|
+
privateKey: toString(keyPair.secretKey, 'base64'),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Creates an Ed25519 key pair with hexadecimal-encoded keys.
|
|
131
|
+
*
|
|
132
|
+
* @param seed - Optional seed string for deterministic key generation
|
|
133
|
+
* @returns Key pair with hexadecimal-encoded public and private keys
|
|
134
|
+
*/
|
|
135
|
+
export function createKeyPairHex(seed) {
|
|
136
|
+
const keyPair = createKeyPairRaw(seed);
|
|
137
|
+
return {
|
|
138
|
+
publicKey: toString(keyPair.publicKey, 'hex'),
|
|
139
|
+
privateKey: toString(keyPair.secretKey, 'hex'),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Creates verification keys structure with DID URLs and key identifiers.
|
|
144
|
+
* Supports multiple algorithm types and network configurations.
|
|
145
|
+
*
|
|
146
|
+
* @param publicKey - Public key in base64 or hex format
|
|
147
|
+
* @param algo - Algorithm for method-specific ID generation
|
|
148
|
+
* @param keyFragment - Key fragment for the verification key identifier
|
|
149
|
+
* @param network - Cheqd network (defaults to Testnet)
|
|
150
|
+
* @param methodSpecificId - Optional pre-computed method-specific ID
|
|
151
|
+
* @param didUrl - Optional pre-computed DID URL
|
|
152
|
+
* @returns Verification keys structure with all identifiers
|
|
153
|
+
* @throws Error if public key format is invalid
|
|
154
|
+
*/
|
|
155
|
+
export function createVerificationKeys(publicKey, algo, keyFragment, network = CheqdNetwork.Testnet, methodSpecificId, didUrl) {
|
|
156
|
+
if (isHex(publicKey)) {
|
|
157
|
+
publicKey = toString(fromString(publicKey, 'hex'), 'base64');
|
|
158
|
+
}
|
|
159
|
+
else if (!isBase64(publicKey)) {
|
|
160
|
+
throw new Error('publicKey validation failed. PublicKey should be in base64 or hex format');
|
|
161
|
+
}
|
|
162
|
+
switch (algo) {
|
|
163
|
+
case MethodSpecificIdAlgo.Base58:
|
|
164
|
+
methodSpecificId ||= bases['base58btc'].encode(base64ToBytes(publicKey));
|
|
165
|
+
didUrl ||= `did:cheqd:${network}:${bases['base58btc']
|
|
166
|
+
.encode(sha256(base64ToBytes(publicKey)).slice(0, 16))
|
|
167
|
+
.slice(1)}`;
|
|
168
|
+
return {
|
|
169
|
+
methodSpecificId,
|
|
170
|
+
didUrl,
|
|
171
|
+
keyId: `${didUrl}#${keyFragment}`,
|
|
172
|
+
publicKey,
|
|
173
|
+
};
|
|
174
|
+
case MethodSpecificIdAlgo.Uuid:
|
|
175
|
+
methodSpecificId ||= v4();
|
|
176
|
+
didUrl ||= `did:cheqd:${network}:${methodSpecificId}`;
|
|
177
|
+
return {
|
|
178
|
+
methodSpecificId,
|
|
179
|
+
didUrl,
|
|
180
|
+
keyId: `${didUrl}#${keyFragment}`,
|
|
181
|
+
publicKey,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Creates DID verification methods from verification method types and keys.
|
|
187
|
+
* Supports Ed25519 keys in multiple formats (multibase, base58, JWK).
|
|
188
|
+
*
|
|
189
|
+
* @param verificationMethodTypes - Array of verification method types to create
|
|
190
|
+
* @param verificationKeys - Array of verification keys corresponding to each type
|
|
191
|
+
* @returns Array of formatted verification methods for DID documents
|
|
192
|
+
*/
|
|
193
|
+
export function createDidVerificationMethod(verificationMethodTypes, verificationKeys) {
|
|
194
|
+
return (verificationMethodTypes.map((type, _) => {
|
|
195
|
+
switch (type) {
|
|
196
|
+
case VerificationMethods.Ed255192020:
|
|
197
|
+
return {
|
|
198
|
+
id: verificationKeys[_].keyId,
|
|
199
|
+
type,
|
|
200
|
+
controller: verificationKeys[_].didUrl,
|
|
201
|
+
publicKeyMultibase: toMultibaseRaw(base64ToBytes(verificationKeys[_].publicKey)),
|
|
202
|
+
};
|
|
203
|
+
case VerificationMethods.Ed255192018:
|
|
204
|
+
return {
|
|
205
|
+
id: verificationKeys[_].keyId,
|
|
206
|
+
type,
|
|
207
|
+
controller: verificationKeys[_].didUrl,
|
|
208
|
+
publicKeyBase58: bases['base58btc']
|
|
209
|
+
.encode(base64ToBytes(verificationKeys[_].publicKey))
|
|
210
|
+
.slice(1),
|
|
211
|
+
};
|
|
212
|
+
case VerificationMethods.JWK:
|
|
213
|
+
return {
|
|
214
|
+
id: verificationKeys[_].keyId,
|
|
215
|
+
type,
|
|
216
|
+
controller: verificationKeys[_].didUrl,
|
|
217
|
+
publicKeyJwk: {
|
|
218
|
+
crv: 'Ed25519',
|
|
219
|
+
kty: 'OKP',
|
|
220
|
+
x: toString(fromString(verificationKeys[_].publicKey, 'base64pad'), 'base64url'),
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}) ?? []);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Creates a complete DID document payload with verification methods and controllers.
|
|
228
|
+
*
|
|
229
|
+
* @param verificationMethods - Array of verification methods for the DID
|
|
230
|
+
* @param verificationKeys - Array of verification keys for authentication
|
|
231
|
+
* @param controller - Optional array of controller DIDs (defaults to self-controlled)
|
|
232
|
+
* @returns Complete DID document with all required fields
|
|
233
|
+
* @throws Error if verification methods or keys are missing
|
|
234
|
+
*/
|
|
235
|
+
export function createDidPayload(verificationMethods, verificationKeys, controller = []) {
|
|
236
|
+
if (!verificationMethods || verificationMethods.length === 0)
|
|
237
|
+
throw new Error('No verification methods provided');
|
|
238
|
+
if (!verificationKeys || verificationKeys.length === 0)
|
|
239
|
+
throw new Error('No verification keys provided');
|
|
240
|
+
const did = verificationKeys[0].didUrl;
|
|
241
|
+
return {
|
|
242
|
+
id: did,
|
|
243
|
+
controller: controller.length ? controller : Array.from(new Set(verificationKeys.map((key) => key.didUrl))),
|
|
244
|
+
verificationMethod: verificationMethods,
|
|
245
|
+
authentication: verificationKeys.map((key) => key.keyId),
|
|
246
|
+
assertionMethod: verificationKeys.map((key) => key.keyId),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Validates a DID document against the Cheqd specification and converts to protobuf format.
|
|
251
|
+
* Ensures all required fields are present and verification methods are supported.
|
|
252
|
+
*
|
|
253
|
+
* @param didDocument - DID document to validate
|
|
254
|
+
* @returns Validation result with protobuf conversion or error details
|
|
255
|
+
*/
|
|
256
|
+
export function validateSpecCompliantPayload(didDocument) {
|
|
257
|
+
// id is required, validated on both compile and runtime
|
|
258
|
+
if (!didDocument?.id)
|
|
259
|
+
return { valid: false, error: 'id is required' };
|
|
260
|
+
// verificationMethod is required
|
|
261
|
+
if (!didDocument?.verificationMethod)
|
|
262
|
+
return { valid: false, error: 'verificationMethod is required' };
|
|
263
|
+
// verificationMethod must be an array
|
|
264
|
+
if (!Array.isArray(didDocument?.verificationMethod))
|
|
265
|
+
return { valid: false, error: 'verificationMethod must be an array' };
|
|
266
|
+
// verificationMethod types must be supported
|
|
267
|
+
const protoVerificationMethod = didDocument.verificationMethod.map((vm) => {
|
|
268
|
+
switch (vm?.type) {
|
|
269
|
+
case VerificationMethods.Ed255192020:
|
|
270
|
+
if (!vm.publicKeyMultibase)
|
|
271
|
+
throw new Error('publicKeyMultibase is required');
|
|
272
|
+
return ProtoVerificationMethod.fromPartial({
|
|
273
|
+
id: vm.id,
|
|
274
|
+
controller: vm.controller,
|
|
275
|
+
verificationMethodType: VerificationMethods.Ed255192020,
|
|
276
|
+
verificationMaterial: vm.publicKeyMultibase,
|
|
277
|
+
});
|
|
278
|
+
case VerificationMethods.JWK:
|
|
279
|
+
if (!vm.publicKeyJwk)
|
|
280
|
+
throw new Error('publicKeyJwk is required');
|
|
281
|
+
return ProtoVerificationMethod.fromPartial({
|
|
282
|
+
id: vm.id,
|
|
283
|
+
controller: vm.controller,
|
|
284
|
+
verificationMethodType: VerificationMethods.JWK,
|
|
285
|
+
verificationMaterial: JSON.stringify(vm.publicKeyJwk),
|
|
286
|
+
});
|
|
287
|
+
case VerificationMethods.Ed255192018:
|
|
288
|
+
if (!vm.publicKeyBase58)
|
|
289
|
+
throw new Error('publicKeyBase58 is required');
|
|
290
|
+
return ProtoVerificationMethod.fromPartial({
|
|
291
|
+
id: vm.id,
|
|
292
|
+
controller: vm.controller,
|
|
293
|
+
verificationMethodType: VerificationMethods.Ed255192018,
|
|
294
|
+
verificationMaterial: vm.publicKeyBase58,
|
|
295
|
+
});
|
|
296
|
+
default:
|
|
297
|
+
throw new Error(`Unsupported verificationMethod type: ${vm?.type}`);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
const protoService = normalizeService(didDocument);
|
|
301
|
+
return {
|
|
302
|
+
valid: true,
|
|
303
|
+
protobufVerificationMethod: protoVerificationMethod,
|
|
304
|
+
protobufService: protoService,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Creates a Cosmos wallet from a seed phrase or private key.
|
|
309
|
+
* Automatically detects whether the input is a mnemonic phrase or hex-encoded private key.
|
|
310
|
+
*
|
|
311
|
+
* @param cosmosPayerSeed - Mnemonic phrase or hexadecimal private key
|
|
312
|
+
* @returns Promise resolving to DirectSecp256k1HdWallet or DirectSecp256k1Wallet
|
|
313
|
+
*/
|
|
314
|
+
export function createCosmosPayerWallet(cosmosPayerSeed) {
|
|
315
|
+
return EnglishMnemonic._mnemonicMatcher.test(cosmosPayerSeed)
|
|
316
|
+
? DirectSecp256k1HdWallet.fromMnemonic(cosmosPayerSeed, { prefix: 'cheqd' })
|
|
317
|
+
: DirectSecp256k1Wallet.fromKey(fromString(cosmosPayerSeed.replace(/^0x/, ''), 'hex'), 'cheqd');
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Converts a raw Ed25519 public key to multibase format with proper multicodec header.
|
|
321
|
+
*
|
|
322
|
+
* @param key - Raw Ed25519 public key as Uint8Array
|
|
323
|
+
* @returns Multibase-encoded string with Ed25519 multicodec prefix
|
|
324
|
+
*/
|
|
325
|
+
export function toMultibaseRaw(key) {
|
|
326
|
+
const multibase = new Uint8Array(MULTICODEC_ED25519_HEADER.length + key.length);
|
|
327
|
+
multibase.set(MULTICODEC_ED25519_HEADER);
|
|
328
|
+
multibase.set(key, MULTICODEC_ED25519_HEADER.length);
|
|
329
|
+
return bases['base58btc'].encode(multibase);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Creates a MsgCreateDidDoc payload ready for signing.
|
|
333
|
+
* Validates the DID document and converts it to protobuf format.
|
|
334
|
+
*
|
|
335
|
+
* @param didPayload - DID document to create message payload from
|
|
336
|
+
* @param versionId - Version identifier for the DID document
|
|
337
|
+
* @returns Encoded message payload bytes ready for signing
|
|
338
|
+
*/
|
|
339
|
+
export async function createMsgCreateDidDocPayloadToSign(didPayload, versionId) {
|
|
340
|
+
const { protobufVerificationMethod, protobufService } = await DIDModule.validateSpecCompliantPayload(didPayload);
|
|
341
|
+
return MsgCreateDidDocPayload.encode(MsgCreateDidDocPayload.fromPartial({
|
|
342
|
+
context: didPayload?.['@context'],
|
|
343
|
+
id: didPayload.id,
|
|
344
|
+
controller: didPayload.controller,
|
|
345
|
+
verificationMethod: protobufVerificationMethod,
|
|
346
|
+
authentication: didPayload.authentication,
|
|
347
|
+
assertionMethod: didPayload.assertionMethod,
|
|
348
|
+
capabilityInvocation: didPayload.capabilityInvocation,
|
|
349
|
+
capabilityDelegation: didPayload.capabilityDelegation,
|
|
350
|
+
keyAgreement: didPayload.keyAgreement,
|
|
351
|
+
service: protobufService,
|
|
352
|
+
alsoKnownAs: didPayload.alsoKnownAs,
|
|
353
|
+
versionId,
|
|
354
|
+
})).finish();
|
|
355
|
+
}
|
|
356
|
+
/** Alias for createMsgCreateDidDocPayloadToSign - used for DID document updates */
|
|
357
|
+
export const createMsgUpdateDidDocPayloadToSign = createMsgCreateDidDocPayloadToSign;
|
|
358
|
+
/**
|
|
359
|
+
* Creates a MsgDeactivateDidDoc payload ready for signing.
|
|
360
|
+
*
|
|
361
|
+
* @param didPayload - DID document containing the ID to deactivate
|
|
362
|
+
* @param versionId - Optional version identifier for the deactivation
|
|
363
|
+
* @returns Encoded deactivation message payload bytes ready for signing
|
|
364
|
+
*/
|
|
365
|
+
export function createMsgDeactivateDidDocPayloadToSign(didPayload, versionId) {
|
|
366
|
+
return MsgDeactivateDidDocPayload.encode(MsgDeactivateDidDocPayload.fromPartial({
|
|
367
|
+
id: didPayload.id,
|
|
368
|
+
versionId,
|
|
369
|
+
})).finish();
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Creates a MsgCreateResource payload ready for signing.
|
|
373
|
+
*
|
|
374
|
+
* @param payload - Resource creation payload (partial or complete)
|
|
375
|
+
* @returns Encoded resource creation message payload bytes ready for signing
|
|
376
|
+
*/
|
|
377
|
+
export function createMsgResourcePayloadToSign(payload) {
|
|
378
|
+
return MsgCreateResourcePayload.encode(MsgCreateResourcePayload.fromPartial(payload)).finish();
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Derives a Cosmos account address from a hexadecimal public key.
|
|
382
|
+
* Converts the public key to the appropriate format and generates a bech32 address.
|
|
383
|
+
*
|
|
384
|
+
* @param publicKeyHex - Secp256k1 public key in hexadecimal format
|
|
385
|
+
* @returns Bech32-encoded Cheqd account address
|
|
386
|
+
*/
|
|
387
|
+
export function getCosmosAccount(publicKeyHex) {
|
|
388
|
+
const { publicKeyConvert } = pkg;
|
|
389
|
+
return toBech32('cheqd', rawSecp256k1PubkeyToRawAddress(publicKeyConvert(fromString(publicKeyHex, 'hex'), true)));
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Checks the balance of all coins for a given address on the blockchain.
|
|
393
|
+
*
|
|
394
|
+
* @param address - Bech32-encoded account address to check balance for
|
|
395
|
+
* @param rpcAddress - RPC endpoint URL of the blockchain node
|
|
396
|
+
* @returns Promise resolving to array of coin balances
|
|
397
|
+
*/
|
|
398
|
+
export async function checkBalance(address, rpcAddress) {
|
|
399
|
+
const client = await StargateClient.connect(rpcAddress);
|
|
400
|
+
return await client.getAllBalances(address);
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Checks if a given input is valid JSON.
|
|
404
|
+
*
|
|
405
|
+
* @param input - Input to validate as JSON
|
|
406
|
+
* @returns True if the input is a valid JSON string
|
|
407
|
+
*/
|
|
408
|
+
export function isJSON(input) {
|
|
409
|
+
if (typeof input !== 'string')
|
|
410
|
+
return false;
|
|
411
|
+
try {
|
|
412
|
+
JSON.parse(input);
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
catch (e) {
|
|
416
|
+
return false;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/** Default configuration options for exponential backoff retry logic */
|
|
420
|
+
export const DefaultBackoffOptions = {
|
|
421
|
+
jitter: 'full',
|
|
422
|
+
timeMultiple: 1,
|
|
423
|
+
delayFirstAttempt: false,
|
|
424
|
+
maxDelay: 100,
|
|
425
|
+
startingDelay: 100,
|
|
426
|
+
numOfAttempts: 3,
|
|
427
|
+
};
|
|
428
|
+
/**
|
|
429
|
+
* Retries a function with exponential backoff strategy.
|
|
430
|
+
* Provides configurable retry logic with jitter and delay options.
|
|
431
|
+
*
|
|
432
|
+
* @template T - Return type of the function being retried
|
|
433
|
+
* @param fn - Async function to retry
|
|
434
|
+
* @param options - Optional backoff configuration (uses defaults if not provided)
|
|
435
|
+
* @returns Promise resolving to the function result or undefined if all retries fail
|
|
436
|
+
*/
|
|
437
|
+
export async function retry(fn, options) {
|
|
438
|
+
// set default options
|
|
439
|
+
if (!options) {
|
|
440
|
+
options = DefaultBackoffOptions;
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
// overwrite defaults with user supplied options
|
|
444
|
+
options = { ...DefaultBackoffOptions, ...options };
|
|
445
|
+
}
|
|
446
|
+
let result;
|
|
447
|
+
try {
|
|
448
|
+
result = await backOff(fn, options);
|
|
449
|
+
}
|
|
450
|
+
catch (e) {
|
|
451
|
+
console.error(e);
|
|
452
|
+
}
|
|
453
|
+
return result;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Validates if a string is properly formatted Base64.
|
|
457
|
+
* Performs pattern matching and encoding validation.
|
|
458
|
+
*
|
|
459
|
+
* @param str - String to validate as Base64
|
|
460
|
+
* @returns True if the string is valid Base64
|
|
461
|
+
*/
|
|
462
|
+
function isBase64(str) {
|
|
463
|
+
// Quick pattern check to filter obvious non-base64 strings
|
|
464
|
+
const base64Pattern = /^[A-Za-z0-9+/]*={0,3}$/;
|
|
465
|
+
if (!base64Pattern.test(str)) {
|
|
466
|
+
return false;
|
|
467
|
+
}
|
|
468
|
+
try {
|
|
469
|
+
return toString(fromString(str, 'base64'), 'base64') === str;
|
|
470
|
+
}
|
|
471
|
+
catch (e) {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Validates if a string is properly formatted hexadecimal.
|
|
477
|
+
* Performs pattern matching and encoding validation.
|
|
478
|
+
*
|
|
479
|
+
* @param str - String to validate as hexadecimal
|
|
480
|
+
* @returns True if the string is valid hexadecimal
|
|
481
|
+
*/
|
|
482
|
+
function isHex(str) {
|
|
483
|
+
// Quick pattern check to filter obvious non-hex strings
|
|
484
|
+
const hexPattern = /^[0-9a-fA-F]*$/;
|
|
485
|
+
if (!hexPattern.test(str)) {
|
|
486
|
+
return false;
|
|
487
|
+
}
|
|
488
|
+
try {
|
|
489
|
+
return toString(fromString(str, 'hex'), 'hex') === str;
|
|
490
|
+
}
|
|
491
|
+
catch {
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Normalizes the authentication property of a DID document to an array of strings.
|
|
497
|
+
* Handles both string references and embedded verification method objects.
|
|
498
|
+
*
|
|
499
|
+
* @param didDocument - DID document to normalize authentication for
|
|
500
|
+
* @returns Array of authentication method identifiers
|
|
501
|
+
* @throws Error if authentication section is missing
|
|
502
|
+
*/
|
|
503
|
+
export function normalizeAuthentication(didDocument) {
|
|
504
|
+
if (!didDocument.authentication)
|
|
505
|
+
throw new Error('Invalid DID Document: Authentication section is required in DID Document');
|
|
506
|
+
const authArray = Array.isArray(didDocument.authentication)
|
|
507
|
+
? didDocument.authentication
|
|
508
|
+
: [didDocument.authentication];
|
|
509
|
+
return authArray.map((a) => (typeof a === 'string' ? a : a.id));
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Normalizes the controller property of a DID document to an array of strings.
|
|
513
|
+
* Defaults to self-controlled if no controller is specified.
|
|
514
|
+
*
|
|
515
|
+
* @param didDocument - DID document to normalize controller for
|
|
516
|
+
* @returns Array of controller DID identifiers
|
|
517
|
+
*/
|
|
518
|
+
export function normalizeController(didDocument) {
|
|
519
|
+
if (!didDocument.controller)
|
|
520
|
+
return [didDocument.id];
|
|
521
|
+
return Array.isArray(didDocument.controller) ? didDocument.controller : [didDocument.controller];
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Normalizes DID document services to protobuf format.
|
|
525
|
+
* Converts service endpoints to arrays and includes optional properties.
|
|
526
|
+
*
|
|
527
|
+
* @param didDocument - DID document containing services to normalize
|
|
528
|
+
* @returns Array of protobuf-formatted services or undefined if no services
|
|
529
|
+
*/
|
|
530
|
+
export function normalizeService(didDocument) {
|
|
531
|
+
return didDocument.service?.map((s) => {
|
|
532
|
+
return ProtoService.fromPartial({
|
|
533
|
+
id: s?.id,
|
|
534
|
+
serviceType: s?.type,
|
|
535
|
+
serviceEndpoint: s ? (Array.isArray(s.serviceEndpoint) ? s.serviceEndpoint : [s.serviceEndpoint]) : [],
|
|
536
|
+
...(s?.recipientKeys && { recipientKeys: s.recipientKeys }),
|
|
537
|
+
...(s?.routingKeys && { routingKeys: s.routingKeys }),
|
|
538
|
+
...(s?.accept && { accept: s.accept }),
|
|
539
|
+
...(s?.priority !== undefined && { priority: s.priority }),
|
|
540
|
+
});
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Converts protobuf services back to standard DID document service format.
|
|
545
|
+
* Handles special context requirements for LinkedDomains services.
|
|
546
|
+
*
|
|
547
|
+
* @param didDocument - Protobuf DID document containing services to denormalize
|
|
548
|
+
* @returns Array of standard DID document services
|
|
549
|
+
*/
|
|
550
|
+
export function denormalizeService(didDocument) {
|
|
551
|
+
return didDocument.service.map((s) => {
|
|
552
|
+
if (s.serviceType === ServiceType.LinkedDomains) {
|
|
553
|
+
const updatedContext = [...didDocument.context, contexts.LinkedDomainsContext];
|
|
554
|
+
didDocument = { ...didDocument, context: updatedContext };
|
|
555
|
+
}
|
|
556
|
+
return {
|
|
557
|
+
id: s.id,
|
|
558
|
+
type: s.serviceType,
|
|
559
|
+
serviceEndpoint: Array.isArray(s?.serviceEndpoint)
|
|
560
|
+
? s.serviceEndpoint.length === 1
|
|
561
|
+
? s.serviceEndpoint[0]
|
|
562
|
+
: s.serviceEndpoint
|
|
563
|
+
: s?.serviceEndpoint,
|
|
564
|
+
...(s.recipientKeys && { recipientKeys: s.recipientKeys }),
|
|
565
|
+
...(s.routingKeys && { routingKeys: s.routingKeys }),
|
|
566
|
+
...(s.accept && { accept: s.accept }),
|
|
567
|
+
...(s.priority !== undefined && { priority: s.priority }),
|
|
568
|
+
};
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../cjs/src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@ import { CheqdNetwork, IModuleMethodMap } from './types.js';
|
|
|
8
8
|
import { GasPrice } from '@cosmjs/stargate';
|
|
9
9
|
import { CheqdQuerier } from './querier.js';
|
|
10
10
|
import { FeeabstractionExtension, FeeabstractionModule, MinimalImportableFeeabstractionModule } from './modules/feeabstraction.js';
|
|
11
|
+
import { OracleExtension } from './modules/oracle.js';
|
|
12
|
+
import { MinimalImportableOracleModule } from './modules/oracle';
|
|
13
|
+
import { OracleModule } from '../../cjs/src/modules/oracle';
|
|
11
14
|
/**
|
|
12
15
|
* Configuration options for initializing the CheqdSDK
|
|
13
16
|
*/
|
|
@@ -30,7 +33,7 @@ export interface ICheqdSDKOptions {
|
|
|
30
33
|
/**
|
|
31
34
|
* Default SDK modules that provide core functionality for DID, Resource, Feemarket, and Fee abstraction operations
|
|
32
35
|
*/
|
|
33
|
-
export type DefaultCheqdSDKModules = MinimalImportableDIDModule & MinimalImportableResourceModule & MinimalImportableFeemarketModule & MinimalImportableFeeabstractionModule;
|
|
36
|
+
export type DefaultCheqdSDKModules = MinimalImportableDIDModule & MinimalImportableResourceModule & MinimalImportableFeemarketModule & MinimalImportableFeeabstractionModule & MinimalImportableOracleModule;
|
|
34
37
|
/**
|
|
35
38
|
* Main CheqdSDK class that provides a comprehensive interface for interacting with the Cheqd blockchain.
|
|
36
39
|
* This class orchestrates modules for DID operations, resource management, fee market interactions,
|
|
@@ -49,7 +52,7 @@ export declare class CheqdSDK {
|
|
|
49
52
|
/** Signing client for executing transactions on the blockchain */
|
|
50
53
|
signer: CheqdSigningStargateClient;
|
|
51
54
|
/** Query client with extensions for reading blockchain data */
|
|
52
|
-
querier: CheqdQuerier & DidExtension & ResourceExtension & FeemarketExtension & FeeabstractionExtension;
|
|
55
|
+
querier: CheqdQuerier & DidExtension & ResourceExtension & FeemarketExtension & FeeabstractionExtension & OracleExtension;
|
|
53
56
|
/** Configuration options passed during SDK initialization */
|
|
54
57
|
options: ICheqdSDKOptions;
|
|
55
58
|
/** List of method names that are protected from external access */
|
|
@@ -126,12 +129,13 @@ export declare function filterUnauthorizedMethods(methods: IModuleMethodMap, aut
|
|
|
126
129
|
* @returns Promise resolving to a fully initialized and ready-to-use CheqdSDK instance
|
|
127
130
|
*/
|
|
128
131
|
export declare function createCheqdSDK(options: ICheqdSDKOptions): Promise<CheqdSDK>;
|
|
129
|
-
export { DIDModule, ResourceModule, FeemarketModule, FeeabstractionModule };
|
|
132
|
+
export { DIDModule, ResourceModule, FeemarketModule, FeeabstractionModule, OracleModule };
|
|
130
133
|
export { AbstractCheqdSDKModule, applyMixins } from './modules/_.js';
|
|
131
134
|
export { DidExtension, MinimalImportableDIDModule, MsgCreateDidDocEncodeObject, MsgCreateDidDocResponseEncodeObject, MsgUpdateDidDocEncodeObject, MsgUpdateDidDocResponseEncodeObject, MsgDeactivateDidDocEncodeObject, MsgDeactivateDidDocResponseEncodeObject, contexts, defaultDidExtensionKey, protobufLiterals as protobufLiteralsDid, typeUrlMsgCreateDidDoc, typeUrlMsgCreateDidDocResponse, typeUrlMsgUpdateDidDoc, typeUrlMsgUpdateDidDocResponse, typeUrlMsgDeactivateDidDoc, typeUrlMsgDeactivateDidDocResponse, setupDidExtension, isMsgCreateDidDocEncodeObject, isMsgUpdateDidDocEncodeObject, isMsgDeactivateDidDocEncodeObject, } from './modules/did.js';
|
|
132
135
|
export { ResourceExtension, MinimalImportableResourceModule, defaultResourceExtensionKey, protobufLiterals as protobufLiteralsResource, typeUrlMsgCreateResource, typeUrlMsgCreateResourceResponse, setupResourceExtension, isMsgCreateResourceEncodeObject, } from './modules/resource.js';
|
|
133
136
|
export { FeemarketExtension, MinimalImportableFeemarketModule, DefaultGasPriceTiers, defaultFeemarketExtensionKey, defaultGasPriceTiers, protobufLiterals as protobufLiteralsFeemarket, typeUrlGasPriceResponse, typeUrlGasPricesResponse, typeUrlParamsResponse, setupFeemarketExtension, isGasPriceEncodeObject, isGasPricesEncodeObject, isParamsEncodeObject, } from './modules/feemarket.js';
|
|
134
137
|
export { FeeabstractionExtension, MinimalImportableFeeabstractionModule, defaultFeeabstractionExtensionKey, protobufLiterals as protobufLiteralsFeeabstraction, typeUrlMsgAddHostZone, typeUrlMsgAddHostZoneResponse, typeUrlMsgFundFeeAbsModuleAccount, typeUrlMsgFundFeeAbsModuleAccountResponse, typeUrlMsgRemoveHostZone, typeUrlMsgRemoveHostZoneResponse, typeUrlMsgUpdateHostZone, typeUrlMsgUpdateHostZoneResponse, typeUrlMsgSendQueryIbcDenomTWAP, typeUrlMsgSendQueryIbcDenomTWAPResponse, typeUrlMsgSwapCrossChain, typeUrlMsgSwapCrossChainResponse, typeUrlMsgUpdateParams, typeUrlMsgUpdateParamsResponse, setupFeeabstractionExtension, isMsgAddHostZoneEncodeObject, isMsgAddHostZoneResponseEncodeObject, isMsgFundFeeAbsModuleAccountEncodeObject, isMsgFundFeeAbsModuleAccountResponseEncodeObject, isMsgRemoveHostZoneEncodeObject, isMsgRemoveHostZoneResponseEncodeObject, isMsgUpdateHostZoneEncodeObject, isMsgUpdateHostZoneResponseEncodeObject, isMsgSendQueryIbcDenomTWAPEncodeObject, isMsgSendQueryIbcDenomTWAPResponseEncodeObject, isMsgSwapCrossChainEncodeObject, isMsgSwapCrossChainResponseEncodeObject, isMsgUpdateParamsEncodeObject, isMsgUpdateParamsResponseEncodeObject, } from './modules/feeabstraction.js';
|
|
138
|
+
export { OracleExtension, MinimalImportableOracleModule, OracleGovProposalOptions, MsgAggregateExchangeRatePrevoteEncodeObject, MsgAggregateExchangeRateVoteEncodeObject, MsgDelegateFeedConsentEncodeObject, MsgLegacyGovUpdateParamsEncodeObject, MsgGovUpdateParamsEncodeObject, MsgGovAddDenomsEncodeObject, MsgGovRemoveCurrencyPairProvidersEncodeObject, MsgGovRemoveCurrencyDeviationThresholdsEncodeObject, MsgGovCancelUpdateParamPlanEncodeObject, defaultOracleExtensionKey, protobufLiterals as protobufLiteralsOracle, typeUrlMsgAggregateExchangeRatePrevote, typeUrlMsgAggregateExchangeRatePrevoteResponse, typeUrlMsgAggregateExchangeRateVote, typeUrlMsgAggregateExchangeRateVoteResponse, typeUrlMsgDelegateFeedConsent, typeUrlMsgDelegateFeedConsentResponse, typeUrlMsgLegacyGovUpdateParams, typeUrlMsgLegacyGovUpdateParamsResponse, typeUrlMsgGovUpdateParams, typeUrlMsgGovUpdateParamsResponse, typeUrlMsgGovAddDenoms, typeUrlMsgGovAddDenomsResponse, typeUrlMsgGovRemoveCurrencyPairProviders, typeUrlMsgGovRemoveCurrencyPairProvidersResponse, typeUrlMsgGovRemoveCurrencyDeviationThresholds, typeUrlMsgGovRemoveCurrencyDeviationThresholdsResponse, typeUrlMsgGovCancelUpdateParamPlan, typeUrlMsgGovCancelUpdateParamPlanResponse, isMsgAggregateExchangeRatePrevoteEncodeObject, isMsgAggregateExchangeRateVoteEncodeObject, isMsgDelegateFeedConsentEncodeObject, isMsgLegacyGovUpdateParamsEncodeObject, isMsgGovUpdateParamsEncodeObject, isMsgGovAddDenomsEncodeObject, isMsgGovRemoveCurrencyPairProvidersEncodeObject, isMsgGovRemoveCurrencyDeviationThresholdsEncodeObject, isMsgGovCancelUpdateParamPlanEncodeObject, setupOracleExtension, } from './modules/oracle.js';
|
|
135
139
|
export * from './signer.js';
|
|
136
140
|
export * from './querier.js';
|
|
137
141
|
export * from './registry.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|