@interchainjs/injective
Version:
<p align="center"> <img src="https://user-images.githubusercontent.com/545047/188804067-28e67e5e-0214-4449-ab04-2e0c564a6885.svg" width="80"> </p>
162 lines (161 loc) • 4.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultEip712Types = exports.defaultDomainOptions = exports.defaultTimeoutHeight = exports.defaultWalletOptions = exports.defaultSignerOptions = exports.defaultAccountParser = exports.defaultEncodePublicKey = exports.defaultPublicKeyConfig = void 0;
const defaults_1 = require("@interchainjs/cosmos/defaults");
const utils_1 = require("@interchainjs/cosmos/utils");
const keys_1 = require("@interchainjs/cosmos-types/cosmos/crypto/secp256k1/keys");
const account_1 = require("@interchainjs/cosmos-types/injective/types/v1beta1/account");
const types_1 = require("./types");
const utils_2 = require("@noble/hashes/utils");
const sha3_1 = require("@noble/hashes/sha3");
const transactions_1 = require("@ethersproject/transactions");
const utils_3 = require("@interchainjs/utils");
const inj_account_1 = require("./accounts/inj-account");
const ethSecp256k1_1 = require("@interchainjs/auth/ethSecp256k1");
exports.defaultPublicKeyConfig = {
isCompressed: defaults_1.defaultSignerConfig.publicKey.isCompressed,
hash: (publicKey) => utils_3.Key.fromHex((0, transactions_1.computeAddress)(publicKey.value))
};
const defaultEncodePublicKey = (key) => {
return {
typeUrl: '/injective.crypto.v1beta1.ethsecp256k1.PubKey',
value: keys_1.PubKey.encode(keys_1.PubKey.fromPartial({ key: key.value })).finish(),
};
};
exports.defaultEncodePublicKey = defaultEncodePublicKey;
const defaultAccountParser = (encodedAccount) => {
try {
return (0, defaults_1.defaultAccountParser)(encodedAccount);
}
catch (error) {
const decoder = (0, utils_1.toDecoder)(account_1.EthAccount);
const account = decoder.fromPartial(decoder.decode(encodedAccount.value));
return account.baseAccount;
}
};
exports.defaultAccountParser = defaultAccountParser;
exports.defaultSignerOptions = {
Cosmos: {
...defaults_1.defaultSignerConfig,
message: {
...defaults_1.defaultSignerConfig.message,
hash: (message) => {
const hashed = (0, sha3_1.keccak_256)(message);
(0, utils_2.bytesToHex)(hashed);
return hashed;
},
},
publicKey: exports.defaultPublicKeyConfig,
encodePublicKey: exports.defaultEncodePublicKey,
parseAccount: exports.defaultAccountParser,
createAccount: inj_account_1.InjAccount,
prefix: 'inj',
},
};
exports.defaultWalletOptions = {
bip39Password: undefined,
createAuthsFromMnemonic: ethSecp256k1_1.EthSecp256k1Auth.fromMnemonic,
signerConfig: exports.defaultSignerOptions.Cosmos,
};
exports.defaultTimeoutHeight = {
type: 'relative',
value: 90n,
};
exports.defaultDomainOptions = {
name: 'Injective Web3',
version: '1.0.0',
ethereumChainId: types_1.EthereumChainId.Injective,
salt: '0',
verifyingContract: 'cosmos',
};
exports.defaultEip712Types = {
primaryType: 'Tx',
types: {
EIP712Domain: [
{
name: 'name',
type: 'string',
},
{
name: 'version',
type: 'string',
},
{
name: 'chainId',
type: 'uint256',
},
{
name: 'verifyingContract',
type: 'string',
},
{
name: 'salt',
type: 'string',
},
],
Tx: [
{
name: 'account_number',
type: 'string',
},
{
name: 'chain_id',
type: 'string',
},
{
name: 'fee',
type: 'Fee',
},
{
name: 'memo',
type: 'string',
},
{
name: 'msgs',
type: 'Msg[]',
},
{
name: 'sequence',
type: 'string',
},
{
name: 'timeout_height',
type: 'string',
},
],
Fee: [
{
name: 'feePayer',
type: 'string',
},
{
name: 'amount',
type: 'Coin[]',
},
{
name: 'gas',
type: 'string',
},
],
Coin: [
{
name: 'denom',
type: 'string',
},
{
name: 'amount',
type: 'string',
},
],
Msg: [
{
name: 'type',
type: 'string',
},
{
name: 'value',
type: 'MsgValue',
},
],
},
};