51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { contracts } from '@nymproject/contract-clients';
|
|
import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate';
|
|
import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing';
|
|
import { GasPrice } from '@cosmjs/stargate';
|
|
import { settings } from '../../client';
|
|
|
|
export const signerAccount = async (mnemonic: string) => {
|
|
// create a wallet to sign transactions with the mnemonic
|
|
const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, {
|
|
prefix: 'n',
|
|
});
|
|
|
|
return signer;
|
|
};
|
|
|
|
export const fetchSignerCosmosWasmClient = async (mnemonic: string) => {
|
|
const signer = await signerAccount(mnemonic);
|
|
|
|
// create a signing client we don't need to set the gas price conversion for queries
|
|
const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, {
|
|
gasPrice: GasPrice.fromString('0.025unym'),
|
|
});
|
|
|
|
return cosmWasmClient;
|
|
};
|
|
|
|
export const fetchSignerClient = async (mnemonic: string) => {
|
|
const signer = await signerAccount(mnemonic);
|
|
|
|
// create a signing client we don't need to set the gas price conversion for queries
|
|
// if you want to connect without signer you'd write ".connect" and "url" as param
|
|
const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, {
|
|
gasPrice: GasPrice.fromString('0.025unym'),
|
|
});
|
|
|
|
/** create a mixnet contract client
|
|
* @param cosmWasmClient the client to use for signing and querying
|
|
* @param settings.address the bech32 address prefix (human readable part)
|
|
* @param settings.mixnetContractAddress the bech32 address prefix (human readable part)
|
|
* @returns the client in MixnetClient form
|
|
*/
|
|
|
|
const mixnetClient = new contracts.Mixnet.MixnetClient(
|
|
cosmWasmClient,
|
|
settings.address, // sender (that account of the signer)
|
|
settings.mixnetContractAddress, // contract address (different on mainnet, QA, etc)
|
|
);
|
|
|
|
return mixnetClient;
|
|
};
|