@keplr-wallet/types 0.12.131 → 0.12.133-rc.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.
@@ -1,4 +1,4 @@
1
- import { Currency, AppCurrency, FeeCurrency } from "./currency";
1
+ import { Currency, AppCurrency, FeeCurrency, ERC20Currency } from "./currency";
2
2
  import { BIP44 } from "./bip44";
3
3
  import { Bech32Config } from "./bech32";
4
4
  import { EVMInfo } from "./ethereum";
@@ -51,3 +51,22 @@ export type ChainInfoWithoutEndpoints = Omit<ChainInfo, "rest" | "rpc" | "nodePr
51
51
  readonly rpc: undefined;
52
52
  };
53
53
  };
54
+ export interface StarknetChainInfo {
55
+ readonly chainId: string;
56
+ readonly rpc: string;
57
+ readonly currencies: ERC20Currency[];
58
+ readonly ethContractAddress: string;
59
+ readonly strkContractAddress: string;
60
+ }
61
+ export type ChainInfoModule = "cosmos" | "starknet";
62
+ export type ModularChainInfo = {
63
+ readonly chainId: string;
64
+ readonly chainName: string;
65
+ readonly chainSymbolImageUrl?: string;
66
+ readonly cosmos: ChainInfo;
67
+ } | {
68
+ readonly chainId: string;
69
+ readonly chainName: string;
70
+ readonly chainSymbolImageUrl?: string;
71
+ readonly starknet: StarknetChainInfo;
72
+ };
@@ -1,4 +1,4 @@
1
- import { IEthereumProvider } from "./keplr";
1
+ import { IEthereumProvider } from "./ethereum";
2
2
  export declare enum EIP6963EventNames {
3
3
  Announce = "eip6963:announceProvider",
4
4
  Request = "eip6963:requestProvider"
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import EventEmitter from "events";
3
+ export interface IEthereumProvider extends EventEmitter {
4
+ readonly chainId: string | null;
5
+ readonly networkVersion: string | null;
6
+ readonly selectedAddress: string | null;
7
+ readonly isKeplr: boolean;
8
+ readonly isMetaMask: boolean;
9
+ isConnected(): boolean;
10
+ request<T = unknown>({ method, params, chainId, }: {
11
+ method: string;
12
+ params?: readonly unknown[] | Record<string, unknown>;
13
+ chainId?: string;
14
+ }): Promise<T>;
15
+ enable(): Promise<string[]>;
16
+ net_version(): Promise<string>;
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ethereum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.js","sourceRoot":"","sources":["../../src/wallet/ethereum.ts"],"names":[],"mappings":""}
@@ -1,2 +1,4 @@
1
1
  export * from "./keplr";
2
2
  export * from "./eip6963";
3
+ export * from "./ethereum";
4
+ export * from "./starknet";
@@ -16,4 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./keplr"), exports);
18
18
  __exportStar(require("./eip6963"), exports);
19
+ __exportStar(require("./ethereum"), exports);
20
+ __exportStar(require("./starknet"), exports);
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,6CAA2B;AAC3B,6CAA2B"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { ChainInfo, ChainInfoWithoutEndpoints } from "../chain-info";
3
2
  import { EthSignType } from "../ethereum";
4
3
  import { BroadcastMode, AminoSignResponse, StdSignDoc, OfflineAminoSigner, StdSignature, DirectSignResponse, OfflineDirectSigner } from "../cosmjs";
@@ -6,7 +5,9 @@ import { SecretUtils } from "../secretjs";
6
5
  import Long from "long";
7
6
  import { SettledResponses } from "../settled";
8
7
  import { DirectAuxSignResponse } from "../cosmjs-alt";
9
- import EventEmitter from "events";
8
+ import { IEthereumProvider } from "./ethereum";
9
+ import { IStarknetProvider } from "./starknet";
10
+ import { Call, DeployAccountSignerDetails, InvocationsSignerDetails } from "starknet";
10
11
  export interface Key {
11
12
  readonly name: string;
12
13
  readonly algo: string;
@@ -130,20 +131,27 @@ export interface Keplr {
130
131
  }): Promise<string>;
131
132
  sendEthereumTx(chainId: string, tx: Uint8Array): Promise<string>;
132
133
  suggestERC20(chainId: string, contractAddress: string): Promise<void>;
134
+ getStarknetKey(chainId: string): Promise<{
135
+ name: string;
136
+ hexAddress: string;
137
+ pubKey: Uint8Array;
138
+ address: Uint8Array;
139
+ }>;
140
+ getStarknetKeysSettled(chainIds: string[]): Promise<SettledResponses<{
141
+ name: string;
142
+ hexAddress: string;
143
+ pubKey: Uint8Array;
144
+ address: Uint8Array;
145
+ }>>;
146
+ signStarknetDeployAccountTransaction(chainId: string, transaction: DeployAccountSignerDetails): Promise<{
147
+ transaction: DeployAccountSignerDetails;
148
+ signature: string[];
149
+ }>;
150
+ signStarknetTx(chainId: string, transactions: Call[], details: InvocationsSignerDetails): Promise<{
151
+ transactions: Call[];
152
+ details: InvocationsSignerDetails;
153
+ signature: string[];
154
+ }>;
133
155
  readonly ethereum: IEthereumProvider;
134
- }
135
- export interface IEthereumProvider extends EventEmitter {
136
- readonly chainId: string | null;
137
- readonly networkVersion: string | null;
138
- readonly selectedAddress: string | null;
139
- readonly isKeplr: boolean;
140
- readonly isMetaMask: boolean;
141
- isConnected(): boolean;
142
- request<T = unknown>({ method, params, chainId, }: {
143
- method: string;
144
- params?: readonly unknown[] | Record<string, unknown>;
145
- chainId?: string;
146
- }): Promise<T>;
147
- enable(): Promise<string[]>;
148
- net_version(): Promise<string>;
156
+ readonly starknet: IStarknetProvider;
149
157
  }
@@ -0,0 +1,59 @@
1
+ import { AccountInterface, ProviderInterface } from "starknet";
2
+ export type AccountChangeEventHandler = (accounts: string[]) => void;
3
+ export type NetworkChangeEventHandler = (network?: string) => void;
4
+ export type WalletEvents = {
5
+ type: "accountsChanged";
6
+ handler: AccountChangeEventHandler;
7
+ } | {
8
+ type: "networkChanged";
9
+ handler: NetworkChangeEventHandler;
10
+ };
11
+ export interface WatchAssetParameters {
12
+ type: "ERC20";
13
+ options: {
14
+ address: string;
15
+ symbol?: string;
16
+ decimals?: number;
17
+ image?: string;
18
+ name?: string;
19
+ };
20
+ }
21
+ export interface AddStarknetChainParameters {
22
+ id: string;
23
+ chainId: string;
24
+ chainName: string;
25
+ baseUrl: string;
26
+ rpcUrls?: string[];
27
+ blockExplorerUrls?: string[];
28
+ nativeCurrency?: {
29
+ address: string;
30
+ name: string;
31
+ symbol: string;
32
+ decimals: number;
33
+ };
34
+ iconUrls?: string[];
35
+ }
36
+ export interface SwitchStarknetChainParameter {
37
+ chainId: string;
38
+ }
39
+ export interface IStarknetProvider {
40
+ id: string;
41
+ name: string;
42
+ version: string;
43
+ icon: string;
44
+ isConnected: boolean;
45
+ account?: AccountInterface;
46
+ provider?: ProviderInterface;
47
+ selectedAddress?: string;
48
+ chainId?: string;
49
+ request<T = unknown>({ type, params, }: {
50
+ type: string;
51
+ params?: any;
52
+ }): Promise<T>;
53
+ enable(options?: {
54
+ starknetVersion?: "v4" | "v5";
55
+ }): Promise<string[]>;
56
+ isPreauthorized(): Promise<boolean>;
57
+ on<E extends WalletEvents>(event: E["type"], handleEvent: E["handler"]): void;
58
+ off<E extends WalletEvents>(event: E["type"], handleEvent: E["handler"]): void;
59
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=starknet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starknet.js","sourceRoot":"","sources":["../../src/wallet/starknet.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/types",
3
- "version": "0.12.131",
3
+ "version": "0.12.133-rc.0",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -18,5 +18,8 @@
18
18
  "dependencies": {
19
19
  "long": "^4.0.0"
20
20
  },
21
- "gitHead": "e4058df9a26bb4a45e344d166d105e391e15e225"
21
+ "peerDependencies": {
22
+ "starknet": "^6"
23
+ },
24
+ "gitHead": "6496cf28fc619e718b4e2e9e347755730292745b"
22
25
  }
package/src/chain-info.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Currency, AppCurrency, FeeCurrency } from "./currency";
1
+ import { Currency, AppCurrency, FeeCurrency, ERC20Currency } from "./currency";
2
2
  import { BIP44 } from "./bip44";
3
3
  import { Bech32Config } from "./bech32";
4
4
  import { EVMInfo } from "./ethereum";
@@ -62,3 +62,27 @@ export type ChainInfoWithoutEndpoints = Omit<
62
62
  readonly rpc: undefined;
63
63
  };
64
64
  };
65
+
66
+ export interface StarknetChainInfo {
67
+ readonly chainId: string;
68
+ readonly rpc: string;
69
+ readonly currencies: ERC20Currency[];
70
+ readonly ethContractAddress: string;
71
+ readonly strkContractAddress: string;
72
+ }
73
+
74
+ export type ChainInfoModule = "cosmos" | "starknet";
75
+
76
+ export type ModularChainInfo =
77
+ | {
78
+ readonly chainId: string;
79
+ readonly chainName: string;
80
+ readonly chainSymbolImageUrl?: string;
81
+ readonly cosmos: ChainInfo;
82
+ }
83
+ | {
84
+ readonly chainId: string;
85
+ readonly chainName: string;
86
+ readonly chainSymbolImageUrl?: string;
87
+ readonly starknet: StarknetChainInfo;
88
+ };
@@ -1,4 +1,4 @@
1
- import { IEthereumProvider } from "./keplr";
1
+ import { IEthereumProvider } from "./ethereum";
2
2
 
3
3
  export enum EIP6963EventNames {
4
4
  Announce = "eip6963:announceProvider",
@@ -0,0 +1,28 @@
1
+ import EventEmitter from "events";
2
+
3
+ export interface IEthereumProvider extends EventEmitter {
4
+ // It must be in the hexadecimal format used in EVM-based chains, not the format used in Tendermint nodes.
5
+ readonly chainId: string | null;
6
+ // It must be in the decimal format of chainId.
7
+ readonly networkVersion: string | null;
8
+
9
+ readonly selectedAddress: string | null;
10
+
11
+ readonly isKeplr: boolean;
12
+ readonly isMetaMask: boolean;
13
+
14
+ isConnected(): boolean;
15
+
16
+ request<T = unknown>({
17
+ method,
18
+ params,
19
+ chainId,
20
+ }: {
21
+ method: string;
22
+ params?: readonly unknown[] | Record<string, unknown>;
23
+ chainId?: string;
24
+ }): Promise<T>;
25
+
26
+ enable(): Promise<string[]>;
27
+ net_version(): Promise<string>;
28
+ }
@@ -1,2 +1,4 @@
1
1
  export * from "./keplr";
2
2
  export * from "./eip6963";
3
+ export * from "./ethereum";
4
+ export * from "./starknet";
@@ -13,7 +13,13 @@ import { SecretUtils } from "../secretjs";
13
13
  import Long from "long";
14
14
  import { SettledResponses } from "../settled";
15
15
  import { DirectAuxSignResponse } from "../cosmjs-alt";
16
- import EventEmitter from "events";
16
+ import { IEthereumProvider } from "./ethereum";
17
+ import { IStarknetProvider } from "./starknet";
18
+ import {
19
+ Call,
20
+ DeployAccountSignerDetails,
21
+ InvocationsSignerDetails,
22
+ } from "starknet";
17
23
 
18
24
  export interface Key {
19
25
  // Name of the selected key store.
@@ -243,32 +249,38 @@ export interface Keplr {
243
249
 
244
250
  suggestERC20(chainId: string, contractAddress: string): Promise<void>;
245
251
 
246
- readonly ethereum: IEthereumProvider;
247
- }
248
-
249
- export interface IEthereumProvider extends EventEmitter {
250
- // It must be in the hexadecimal format used in EVM-based chains, not the format used in Tendermint nodes.
251
- readonly chainId: string | null;
252
- // It must be in the decimal format of chainId.
253
- readonly networkVersion: string | null;
254
-
255
- readonly selectedAddress: string | null;
256
-
257
- readonly isKeplr: boolean;
258
- readonly isMetaMask: boolean;
259
-
260
- isConnected(): boolean;
252
+ getStarknetKey(chainId: string): Promise<{
253
+ name: string;
254
+ hexAddress: string;
255
+ pubKey: Uint8Array;
256
+ address: Uint8Array;
257
+ }>;
258
+ getStarknetKeysSettled(chainIds: string[]): Promise<
259
+ SettledResponses<{
260
+ name: string;
261
+ hexAddress: string;
262
+ pubKey: Uint8Array;
263
+ address: Uint8Array;
264
+ }>
265
+ >;
266
+ signStarknetDeployAccountTransaction(
267
+ chainId: string,
268
+ transaction: DeployAccountSignerDetails
269
+ ): Promise<{
270
+ transaction: DeployAccountSignerDetails;
271
+ signature: string[];
272
+ }>;
273
+ signStarknetTx(
274
+ chainId: string,
275
+ transactions: Call[],
276
+ details: InvocationsSignerDetails
277
+ ): Promise<{
278
+ transactions: Call[];
279
+ details: InvocationsSignerDetails;
280
+ signature: string[];
281
+ }>;
261
282
 
262
- request<T = unknown>({
263
- method,
264
- params,
265
- chainId,
266
- }: {
267
- method: string;
268
- params?: readonly unknown[] | Record<string, unknown>;
269
- chainId?: string;
270
- }): Promise<T>;
283
+ readonly ethereum: IEthereumProvider;
271
284
 
272
- enable(): Promise<string[]>;
273
- net_version(): Promise<string>;
285
+ readonly starknet: IStarknetProvider;
274
286
  }
@@ -0,0 +1,75 @@
1
+ import { AccountInterface, ProviderInterface } from "starknet";
2
+
3
+ export type AccountChangeEventHandler = (accounts: string[]) => void;
4
+
5
+ export type NetworkChangeEventHandler = (network?: string) => void;
6
+
7
+ export type WalletEvents =
8
+ | {
9
+ type: "accountsChanged";
10
+ handler: AccountChangeEventHandler;
11
+ }
12
+ | {
13
+ type: "networkChanged";
14
+ handler: NetworkChangeEventHandler;
15
+ };
16
+
17
+ export interface WatchAssetParameters {
18
+ type: "ERC20";
19
+ options: {
20
+ address: string;
21
+ symbol?: string;
22
+ decimals?: number;
23
+ image?: string;
24
+ name?: string;
25
+ };
26
+ }
27
+
28
+ export interface AddStarknetChainParameters {
29
+ id: string;
30
+ chainId: string;
31
+ chainName: string;
32
+ baseUrl: string;
33
+ rpcUrls?: string[];
34
+ blockExplorerUrls?: string[];
35
+ nativeCurrency?: {
36
+ address: string;
37
+ name: string;
38
+ symbol: string;
39
+ decimals: number;
40
+ };
41
+ iconUrls?: string[];
42
+ }
43
+
44
+ export interface SwitchStarknetChainParameter {
45
+ chainId: string; // A 0x-prefixed hexadecimal string
46
+ }
47
+
48
+ export interface IStarknetProvider {
49
+ id: string;
50
+ name: string;
51
+ version: string;
52
+ icon: string;
53
+
54
+ isConnected: boolean;
55
+
56
+ account?: AccountInterface;
57
+ provider?: ProviderInterface;
58
+ selectedAddress?: string;
59
+ chainId?: string;
60
+
61
+ request<T = unknown>({
62
+ type,
63
+ params,
64
+ }: {
65
+ type: string;
66
+ params?: any;
67
+ }): Promise<T>;
68
+ enable(options?: { starknetVersion?: "v4" | "v5" }): Promise<string[]>;
69
+ isPreauthorized(): Promise<boolean>;
70
+ on<E extends WalletEvents>(event: E["type"], handleEvent: E["handler"]): void;
71
+ off<E extends WalletEvents>(
72
+ event: E["type"],
73
+ handleEvent: E["handler"]
74
+ ): void;
75
+ }