@dynamic-labs-sdk/starknet 0.0.0 → 0.5.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/README.md +15 -0
- package/dist/StarknetNetworkProvider.types.d.ts +8 -0
- package/dist/StarknetNetworkProvider.types.d.ts.map +1 -0
- package/dist/StarknetWalletAccount.types.d.ts +8 -0
- package/dist/StarknetWalletAccount.types.d.ts.map +1 -0
- package/dist/StarknetWalletProvider.types.d.ts +12 -0
- package/dist/StarknetWalletProvider.types.d.ts.map +1 -0
- package/dist/addStarknetExtension/addStarknetExtension.d.ts +10 -0
- package/dist/addStarknetExtension/addStarknetExtension.d.ts.map +1 -0
- package/dist/addStarknetExtension/index.d.ts +2 -0
- package/dist/addStarknetExtension/index.d.ts.map +1 -0
- package/dist/addStarknetInjectedWalletsExtension-Bn4EkQTD.cjs.js +582 -0
- package/dist/addStarknetInjectedWalletsExtension-Bn4EkQTD.cjs.js.map +1 -0
- package/dist/addStarknetInjectedWalletsExtension-MvZK-pn0.esm.js +513 -0
- package/dist/addStarknetInjectedWalletsExtension-MvZK-pn0.esm.js.map +1 -0
- package/dist/errors/NotStarknetProviderError/NotStarknetProviderError.d.ts +8 -0
- package/dist/errors/NotStarknetProviderError/NotStarknetProviderError.d.ts.map +1 -0
- package/dist/errors/NotStarknetProviderError/index.d.ts +2 -0
- package/dist/errors/NotStarknetProviderError/index.d.ts.map +1 -0
- package/dist/exports/index.d.ts +9 -0
- package/dist/exports/index.d.ts.map +1 -0
- package/dist/exports/injected.d.ts +2 -0
- package/dist/exports/injected.d.ts.map +1 -0
- package/dist/getStarknetAccount/getStarknetAccount.d.ts +9 -0
- package/dist/getStarknetAccount/getStarknetAccount.d.ts.map +1 -0
- package/dist/getStarknetAccount/index.d.ts +2 -0
- package/dist/getStarknetAccount/index.d.ts.map +1 -0
- package/dist/index.cjs.js +70 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +63 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.d.ts +10 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.d.ts.map +1 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/index.d.ts +2 -0
- package/dist/injected/addStarknetInjectedWalletsExtension/index.d.ts.map +1 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts +10 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.d.ts.map +1 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/index.d.ts +2 -0
- package/dist/injected/utils/createWalletProviderFromStarknetWallet/index.d.ts.map +1 -0
- package/dist/injected.cjs.js +9 -0
- package/dist/injected.cjs.js.map +1 -0
- package/dist/injected.esm.js +9 -0
- package/dist/injected.esm.js.map +1 -0
- package/dist/isStarknetNetworkProvider/index.d.ts +2 -0
- package/dist/isStarknetNetworkProvider/index.d.ts.map +1 -0
- package/dist/isStarknetNetworkProvider/isStarknetNetworkProvider.d.ts +4 -0
- package/dist/isStarknetNetworkProvider/isStarknetNetworkProvider.d.ts.map +1 -0
- package/dist/isStarknetWalletAccount/index.d.ts +2 -0
- package/dist/isStarknetWalletAccount/index.d.ts.map +1 -0
- package/dist/isStarknetWalletAccount/isStarknetWalletAccount.d.ts +4 -0
- package/dist/isStarknetWalletAccount/isStarknetWalletAccount.d.ts.map +1 -0
- package/dist/isStarknetWalletProvider/index.d.ts +2 -0
- package/dist/isStarknetWalletProvider/index.d.ts.map +1 -0
- package/dist/isStarknetWalletProvider/isStarknetWalletProvider.d.ts +4 -0
- package/dist/isStarknetWalletProvider/isStarknetWalletProvider.d.ts.map +1 -0
- package/dist/registerStarknetNetworkProviderBuilder/index.d.ts +2 -0
- package/dist/registerStarknetNetworkProviderBuilder/index.d.ts.map +1 -0
- package/dist/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.d.ts +3 -0
- package/dist/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.d.ts.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/utils/constants.d.ts +5 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.d.ts +4 -0
- package/dist/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.d.ts.map +1 -0
- package/dist/utils/createStarknetNetworkProvider/index.d.ts +2 -0
- package/dist/utils/createStarknetNetworkProvider/index.d.ts.map +1 -0
- package/dist/utils/fetchStarknetBalance/fetchStarknetBalance.d.ts +8 -0
- package/dist/utils/fetchStarknetBalance/fetchStarknetBalance.d.ts.map +1 -0
- package/dist/utils/fetchStarknetBalance/index.d.ts +2 -0
- package/dist/utils/fetchStarknetBalance/index.d.ts.map +1 -0
- package/dist/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.d.ts +8 -0
- package/dist/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.d.ts.map +1 -0
- package/dist/utils/formatStarknetTypedDataMessage/index.d.ts +2 -0
- package/dist/utils/formatStarknetTypedDataMessage/index.d.ts.map +1 -0
- package/package.json +43 -1
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @dynamic-labs-sdk/starknet
|
|
2
|
+
|
|
3
|
+
This package contains the Starknet integration for the Dynamic SDK.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { addStarknetExtension } from '@dynamic-labs-sdk/starknet';
|
|
9
|
+
import { createDynamicClient } from '@dynamic-labs-sdk/client';
|
|
10
|
+
|
|
11
|
+
const dynamicClient = createDynamicClient({
|
|
12
|
+
environmentId: '123',
|
|
13
|
+
});
|
|
14
|
+
addStarknetExtension(dynamicClient);
|
|
15
|
+
```
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BaseNetworkProvider } from '@dynamic-labs-sdk/client/core';
|
|
2
|
+
export type StarknetNetworkProvider = BaseNetworkProvider<'STARK'>;
|
|
3
|
+
declare global {
|
|
4
|
+
interface NetworkProviderMap {
|
|
5
|
+
STARK: StarknetNetworkProvider;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=StarknetNetworkProvider.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StarknetNetworkProvider.types.d.ts","sourceRoot":"","sources":["../src/StarknetNetworkProvider.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAEnE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,kBAAkB;QAC1B,KAAK,EAAE,uBAAuB,CAAC;KAChC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BaseWalletAccount } from '@dynamic-labs-sdk/client/core';
|
|
2
|
+
export type StarknetWalletAccount = BaseWalletAccount<'STARK'>;
|
|
3
|
+
declare global {
|
|
4
|
+
interface WalletAccountMap {
|
|
5
|
+
STARK: StarknetWalletAccount;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=StarknetWalletAccount.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StarknetWalletAccount.types.d.ts","sourceRoot":"","sources":["../src/StarknetWalletAccount.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAE/D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,gBAAgB;QACxB,KAAK,EAAE,qBAAqB,CAAC;KAC9B;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WalletProvider } from '@dynamic-labs-sdk/client/core';
|
|
2
|
+
import type { WalletAccount } from 'starknet';
|
|
3
|
+
import type { StarknetWalletAccount } from './StarknetWalletAccount.types';
|
|
4
|
+
export type StarknetWalletProvider = WalletProvider & {
|
|
5
|
+
chain: 'STARK';
|
|
6
|
+
getStarknetAccount: (args: {
|
|
7
|
+
walletAccount: StarknetWalletAccount;
|
|
8
|
+
}) => Promise<{
|
|
9
|
+
account: WalletAccount;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=StarknetWalletProvider.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StarknetWalletProvider.types.d.ts","sourceRoot":"","sources":["../src/StarknetWalletProvider.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,CAAC,IAAI,EAAE;QACzB,aAAa,EAAE,qBAAqB,CAAC;KACtC,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CAC3C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds the Starknet extension to the Dynamic client.
|
|
3
|
+
*
|
|
4
|
+
* This is a convenience function that adds support for a variety of Starknet wallets,
|
|
5
|
+
* like Braavos, Ready and more.
|
|
6
|
+
*
|
|
7
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
8
|
+
*/
|
|
9
|
+
export declare const addStarknetExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
|
|
10
|
+
//# sourceMappingURL=addStarknetExtension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addStarknetExtension.d.ts","sourceRoot":"","sources":["../../src/addStarknetExtension/addStarknetExtension.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,eAAO,MAAM,oBAAoB,iEAAkC,IAElE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addStarknetExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: ((k) => from[k]).bind(null, key),
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
29
|
+
let _starknet_io_get_starknet_core = require("@starknet-io/get-starknet-core");
|
|
30
|
+
_starknet_io_get_starknet_core = __toESM(_starknet_io_get_starknet_core);
|
|
31
|
+
let starknet = require("starknet");
|
|
32
|
+
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
33
|
+
let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
|
|
34
|
+
|
|
35
|
+
//#region package.json
|
|
36
|
+
var name = "@dynamic-labs-sdk/starknet";
|
|
37
|
+
var version = "0.5.0";
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/utils/constants.ts
|
|
41
|
+
const WEI_PER_ETH = 0xde0b6b3a7640000;
|
|
42
|
+
const ETH_STARKNET_ADDRESS = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
|
|
43
|
+
const ETH_CONTRACT_ABI = [
|
|
44
|
+
{
|
|
45
|
+
members: [{
|
|
46
|
+
name: "low",
|
|
47
|
+
offset: 0,
|
|
48
|
+
type: "felt"
|
|
49
|
+
}, {
|
|
50
|
+
name: "high",
|
|
51
|
+
offset: 1,
|
|
52
|
+
type: "felt"
|
|
53
|
+
}],
|
|
54
|
+
name: "Uint256",
|
|
55
|
+
size: 2,
|
|
56
|
+
type: "struct"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
data: [
|
|
60
|
+
{
|
|
61
|
+
name: "from_",
|
|
62
|
+
type: "felt"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "to",
|
|
66
|
+
type: "felt"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "value",
|
|
70
|
+
type: "Uint256"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
keys: [],
|
|
74
|
+
name: "Transfer",
|
|
75
|
+
type: "event"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
data: [
|
|
79
|
+
{
|
|
80
|
+
name: "owner",
|
|
81
|
+
type: "felt"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "spender",
|
|
85
|
+
type: "felt"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: "value",
|
|
89
|
+
type: "Uint256"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
keys: [],
|
|
93
|
+
name: "Approval",
|
|
94
|
+
type: "event"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
inputs: [],
|
|
98
|
+
name: "name",
|
|
99
|
+
outputs: [{
|
|
100
|
+
name: "name",
|
|
101
|
+
type: "felt"
|
|
102
|
+
}],
|
|
103
|
+
stateMutability: "view",
|
|
104
|
+
type: "function"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
inputs: [],
|
|
108
|
+
name: "symbol",
|
|
109
|
+
outputs: [{
|
|
110
|
+
name: "symbol",
|
|
111
|
+
type: "felt"
|
|
112
|
+
}],
|
|
113
|
+
stateMutability: "view",
|
|
114
|
+
type: "function"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
inputs: [],
|
|
118
|
+
name: "totalSupply",
|
|
119
|
+
outputs: [{
|
|
120
|
+
name: "totalSupply",
|
|
121
|
+
type: "Uint256"
|
|
122
|
+
}],
|
|
123
|
+
stateMutability: "view",
|
|
124
|
+
type: "function"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
inputs: [],
|
|
128
|
+
name: "decimals",
|
|
129
|
+
outputs: [{
|
|
130
|
+
name: "decimals",
|
|
131
|
+
type: "felt"
|
|
132
|
+
}],
|
|
133
|
+
stateMutability: "view",
|
|
134
|
+
type: "function"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
inputs: [{
|
|
138
|
+
name: "account",
|
|
139
|
+
type: "felt"
|
|
140
|
+
}],
|
|
141
|
+
name: "balanceOf",
|
|
142
|
+
outputs: [{
|
|
143
|
+
name: "balance",
|
|
144
|
+
type: "Uint256"
|
|
145
|
+
}],
|
|
146
|
+
stateMutability: "view",
|
|
147
|
+
type: "function"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
inputs: [{
|
|
151
|
+
name: "owner",
|
|
152
|
+
type: "felt"
|
|
153
|
+
}, {
|
|
154
|
+
name: "spender",
|
|
155
|
+
type: "felt"
|
|
156
|
+
}],
|
|
157
|
+
name: "allowance",
|
|
158
|
+
outputs: [{
|
|
159
|
+
name: "remaining",
|
|
160
|
+
type: "Uint256"
|
|
161
|
+
}],
|
|
162
|
+
stateMutability: "view",
|
|
163
|
+
type: "function"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
inputs: [],
|
|
167
|
+
name: "permittedMinter",
|
|
168
|
+
outputs: [{
|
|
169
|
+
name: "minter",
|
|
170
|
+
type: "felt"
|
|
171
|
+
}],
|
|
172
|
+
stateMutability: "view",
|
|
173
|
+
type: "function"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
inputs: [],
|
|
177
|
+
name: "initialized",
|
|
178
|
+
outputs: [{
|
|
179
|
+
name: "res",
|
|
180
|
+
type: "felt"
|
|
181
|
+
}],
|
|
182
|
+
stateMutability: "view",
|
|
183
|
+
type: "function"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
inputs: [],
|
|
187
|
+
name: "get_version",
|
|
188
|
+
outputs: [{
|
|
189
|
+
name: "version",
|
|
190
|
+
type: "felt"
|
|
191
|
+
}],
|
|
192
|
+
stateMutability: "view",
|
|
193
|
+
type: "function"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
inputs: [],
|
|
197
|
+
name: "get_identity",
|
|
198
|
+
outputs: [{
|
|
199
|
+
name: "identity",
|
|
200
|
+
type: "felt"
|
|
201
|
+
}],
|
|
202
|
+
stateMutability: "view",
|
|
203
|
+
type: "function"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
inputs: [{
|
|
207
|
+
name: "init_vector_len",
|
|
208
|
+
type: "felt"
|
|
209
|
+
}, {
|
|
210
|
+
name: "init_vector",
|
|
211
|
+
type: "felt*"
|
|
212
|
+
}],
|
|
213
|
+
name: "initialize",
|
|
214
|
+
outputs: [],
|
|
215
|
+
type: "function"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
inputs: [{
|
|
219
|
+
name: "recipient",
|
|
220
|
+
type: "felt"
|
|
221
|
+
}, {
|
|
222
|
+
name: "amount",
|
|
223
|
+
type: "Uint256"
|
|
224
|
+
}],
|
|
225
|
+
name: "transfer",
|
|
226
|
+
outputs: [{
|
|
227
|
+
name: "success",
|
|
228
|
+
type: "felt"
|
|
229
|
+
}],
|
|
230
|
+
type: "function"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
inputs: [
|
|
234
|
+
{
|
|
235
|
+
name: "sender",
|
|
236
|
+
type: "felt"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: "recipient",
|
|
240
|
+
type: "felt"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: "amount",
|
|
244
|
+
type: "Uint256"
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
name: "transferFrom",
|
|
248
|
+
outputs: [{
|
|
249
|
+
name: "success",
|
|
250
|
+
type: "felt"
|
|
251
|
+
}],
|
|
252
|
+
type: "function"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
inputs: [{
|
|
256
|
+
name: "spender",
|
|
257
|
+
type: "felt"
|
|
258
|
+
}, {
|
|
259
|
+
name: "amount",
|
|
260
|
+
type: "Uint256"
|
|
261
|
+
}],
|
|
262
|
+
name: "approve",
|
|
263
|
+
outputs: [{
|
|
264
|
+
name: "success",
|
|
265
|
+
type: "felt"
|
|
266
|
+
}],
|
|
267
|
+
type: "function"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
inputs: [{
|
|
271
|
+
name: "spender",
|
|
272
|
+
type: "felt"
|
|
273
|
+
}, {
|
|
274
|
+
name: "added_value",
|
|
275
|
+
type: "Uint256"
|
|
276
|
+
}],
|
|
277
|
+
name: "increaseAllowance",
|
|
278
|
+
outputs: [{
|
|
279
|
+
name: "success",
|
|
280
|
+
type: "felt"
|
|
281
|
+
}],
|
|
282
|
+
type: "function"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
inputs: [{
|
|
286
|
+
name: "spender",
|
|
287
|
+
type: "felt"
|
|
288
|
+
}, {
|
|
289
|
+
name: "subtracted_value",
|
|
290
|
+
type: "Uint256"
|
|
291
|
+
}],
|
|
292
|
+
name: "decreaseAllowance",
|
|
293
|
+
outputs: [{
|
|
294
|
+
name: "success",
|
|
295
|
+
type: "felt"
|
|
296
|
+
}],
|
|
297
|
+
type: "function"
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
inputs: [{
|
|
301
|
+
name: "recipient",
|
|
302
|
+
type: "felt"
|
|
303
|
+
}, {
|
|
304
|
+
name: "amount",
|
|
305
|
+
type: "Uint256"
|
|
306
|
+
}],
|
|
307
|
+
name: "permissionedMint",
|
|
308
|
+
outputs: [],
|
|
309
|
+
type: "function"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
inputs: [{
|
|
313
|
+
name: "account",
|
|
314
|
+
type: "felt"
|
|
315
|
+
}, {
|
|
316
|
+
name: "amount",
|
|
317
|
+
type: "Uint256"
|
|
318
|
+
}],
|
|
319
|
+
name: "permissionedBurn",
|
|
320
|
+
outputs: [],
|
|
321
|
+
type: "function"
|
|
322
|
+
}
|
|
323
|
+
];
|
|
324
|
+
|
|
325
|
+
//#endregion
|
|
326
|
+
//#region src/utils/fetchStarknetBalance/fetchStarknetBalance.ts
|
|
327
|
+
const fetchStarknetBalance = async ({ address, networkData }) => {
|
|
328
|
+
const { balance } = await new starknet.Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, new starknet.RpcProvider({ nodeUrl: networkData.rpcUrls.http[0] })).balanceOf(address);
|
|
329
|
+
return (Number(starknet.cairo.uint256(balance.low).low) / WEI_PER_ETH).toFixed(6);
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
//#endregion
|
|
333
|
+
//#region src/utils/createStarknetNetworkProvider/createStarknetNetworkProvider.ts
|
|
334
|
+
const createStarknetNetworkProvider = (networkData) => ({
|
|
335
|
+
...(0, _dynamic_labs_sdk_client_core.createBaseNetworkProvider)("STARK", networkData),
|
|
336
|
+
getBalance: async ({ address }) => ({ balance: await fetchStarknetBalance({
|
|
337
|
+
address,
|
|
338
|
+
networkData
|
|
339
|
+
}) })
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
//#endregion
|
|
343
|
+
//#region src/registerStarknetNetworkProviderBuilder/registerStarknetNetworkProviderBuilder.ts
|
|
344
|
+
const registerStarknetNetworkProviderBuilder = (client) => {
|
|
345
|
+
const networkProviderBuilderRegistry = (0, _dynamic_labs_sdk_client_core.getNetworkProviderBuilderRegistry)(client);
|
|
346
|
+
if (networkProviderBuilderRegistry.get().get("STARK")) return;
|
|
347
|
+
networkProviderBuilderRegistry.register({
|
|
348
|
+
builder: createStarknetNetworkProvider,
|
|
349
|
+
chain: "STARK"
|
|
350
|
+
});
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
//#endregion
|
|
354
|
+
//#region src/utils/formatStarknetTypedDataMessage/formatStarknetTypedDataMessage.ts
|
|
355
|
+
const defaultTypedData = {
|
|
356
|
+
primaryType: "Message",
|
|
357
|
+
types: {
|
|
358
|
+
Message: [{
|
|
359
|
+
name: "message",
|
|
360
|
+
type: "felt"
|
|
361
|
+
}],
|
|
362
|
+
StarkNetDomain: [
|
|
363
|
+
{
|
|
364
|
+
name: "name",
|
|
365
|
+
type: "felt"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
name: "chainId",
|
|
369
|
+
type: "felt"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
name: "version",
|
|
373
|
+
type: "felt"
|
|
374
|
+
}
|
|
375
|
+
]
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
const formatStarknetTypedDataMessage = ({ inputMessage, chainId }) => {
|
|
379
|
+
let nonce, domain;
|
|
380
|
+
try {
|
|
381
|
+
const { nonce: parsedNonce, domain: parsedDomain } = JSON.parse(inputMessage);
|
|
382
|
+
nonce = parsedNonce;
|
|
383
|
+
domain = parsedDomain;
|
|
384
|
+
} catch {
|
|
385
|
+
nonce = inputMessage;
|
|
386
|
+
domain = "domain";
|
|
387
|
+
}
|
|
388
|
+
const message = { message: nonce.substring(0, 31) };
|
|
389
|
+
return {
|
|
390
|
+
...defaultTypedData,
|
|
391
|
+
domain: {
|
|
392
|
+
chainId,
|
|
393
|
+
name: domain.substring(0, 31),
|
|
394
|
+
version: "0.0.1"
|
|
395
|
+
},
|
|
396
|
+
message
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
//#endregion
|
|
401
|
+
//#region src/injected/utils/createWalletProviderFromStarknetWallet/createWalletProviderFromStarknetWallet.ts
|
|
402
|
+
const createWalletProviderFromStarknetWallet = ({ dynamicClient, starknetWindowProvider }) => {
|
|
403
|
+
const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.BrowserExtension;
|
|
404
|
+
const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
|
|
405
|
+
chain: "STARK",
|
|
406
|
+
displayName: starknetWindowProvider.name,
|
|
407
|
+
walletProviderType
|
|
408
|
+
});
|
|
409
|
+
const connect = async () => {
|
|
410
|
+
return { addresses: (await starknetWindowProvider.request({ type: "wallet_requestAccounts" })).map((address) => ({ address })) };
|
|
411
|
+
};
|
|
412
|
+
const disconnect = async () => {
|
|
413
|
+
try {
|
|
414
|
+
await starknetWindowProvider.request({ type: "wallet_disconnect" });
|
|
415
|
+
} catch {}
|
|
416
|
+
await _starknet_io_get_starknet_core.default.disconnect();
|
|
417
|
+
};
|
|
418
|
+
const getActiveNetworkId = async () => {
|
|
419
|
+
return { networkId: await starknetWindowProvider.request({ type: "wallet_requestChainId" }) };
|
|
420
|
+
};
|
|
421
|
+
const getConnectedAddresses = async () => {
|
|
422
|
+
return { addresses: await starknetWindowProvider.request({
|
|
423
|
+
params: { silent_mode: true },
|
|
424
|
+
type: "wallet_requestAccounts"
|
|
425
|
+
}) };
|
|
426
|
+
};
|
|
427
|
+
const getStarknetAccount = async ({ walletAccount }) => {
|
|
428
|
+
await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
|
|
429
|
+
const { networkData } = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, dynamicClient);
|
|
430
|
+
(0, _dynamic_labs_sdk_client_core.assertDefined)(networkData, "No active network data found");
|
|
431
|
+
const rpcProvider = new starknet.RpcProvider({ nodeUrl: networkData.rpcUrls.http[0] });
|
|
432
|
+
return { account: await starknet.WalletAccount.connectSilent(rpcProvider, starknetWindowProvider) };
|
|
433
|
+
};
|
|
434
|
+
const signMessage = async ({ message, walletAccount }) => {
|
|
435
|
+
(0, _dynamic_labs_sdk_client_core.assertDefined)(walletAccount, "Wallet account not found");
|
|
436
|
+
await (0, _dynamic_labs_sdk_client.assertWalletAccountSigningAvailability)({ walletAccount }, dynamicClient);
|
|
437
|
+
const { networkId } = await getActiveNetworkId();
|
|
438
|
+
const encodedMessage = formatStarknetTypedDataMessage({
|
|
439
|
+
chainId: networkId,
|
|
440
|
+
inputMessage: message
|
|
441
|
+
});
|
|
442
|
+
return { signature: (await starknetWindowProvider.request({
|
|
443
|
+
params: encodedMessage,
|
|
444
|
+
type: "wallet_signTypedData"
|
|
445
|
+
})).join(",") };
|
|
446
|
+
};
|
|
447
|
+
const switchActiveNetwork = async ({ networkId }) => {
|
|
448
|
+
await starknetWindowProvider.request({
|
|
449
|
+
params: { chainId: networkId },
|
|
450
|
+
type: "wallet_switchStarknetChain"
|
|
451
|
+
});
|
|
452
|
+
};
|
|
453
|
+
const { getEventEmitter, cleanupEventEmitter } = (0, _dynamic_labs_sdk_client_core.createWalletProviderEventEmitter)({
|
|
454
|
+
removeEventListeners: ({ setupReturnValue }) => {
|
|
455
|
+
(0, _dynamic_labs_sdk_client_core.assertDefined)(setupReturnValue, "Setup return value not defined");
|
|
456
|
+
setupReturnValue.removeNetworkChangeListener();
|
|
457
|
+
setupReturnValue.removeAccountChangeListener();
|
|
458
|
+
},
|
|
459
|
+
setupEventListeners: ({ handleAccountsChanged, handleNetworkChanged }) => {
|
|
460
|
+
const onAccountsChanged = (accounts) => {
|
|
461
|
+
handleAccountsChanged({ addresses: accounts ?? [] });
|
|
462
|
+
};
|
|
463
|
+
starknetWindowProvider.on("accountsChanged", onAccountsChanged);
|
|
464
|
+
const removeAccountChangeListener = () => {
|
|
465
|
+
starknetWindowProvider.off("accountsChanged", onAccountsChanged);
|
|
466
|
+
};
|
|
467
|
+
const onNetworkChanged = (network) => {
|
|
468
|
+
if (!network) return;
|
|
469
|
+
handleNetworkChanged({ networkId: network.toString() });
|
|
470
|
+
};
|
|
471
|
+
starknetWindowProvider.on("networkChanged", onNetworkChanged);
|
|
472
|
+
const removeNetworkChangeListener = () => {
|
|
473
|
+
starknetWindowProvider.off("networkChanged", onNetworkChanged);
|
|
474
|
+
};
|
|
475
|
+
return {
|
|
476
|
+
removeAccountChangeListener,
|
|
477
|
+
removeNetworkChangeListener
|
|
478
|
+
};
|
|
479
|
+
},
|
|
480
|
+
supportedEvents: ["accountsChanged", "networkChanged"]
|
|
481
|
+
});
|
|
482
|
+
const terminate = async () => {
|
|
483
|
+
cleanupEventEmitter();
|
|
484
|
+
};
|
|
485
|
+
return {
|
|
486
|
+
chain: "STARK",
|
|
487
|
+
connect,
|
|
488
|
+
disconnect,
|
|
489
|
+
get events() {
|
|
490
|
+
return getEventEmitter();
|
|
491
|
+
},
|
|
492
|
+
getActiveNetworkId,
|
|
493
|
+
getConnectedAddresses,
|
|
494
|
+
getStarknetAccount,
|
|
495
|
+
groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(starknetWindowProvider.name),
|
|
496
|
+
key,
|
|
497
|
+
metadata: {
|
|
498
|
+
displayName: starknetWindowProvider.name,
|
|
499
|
+
icon: typeof starknetWindowProvider.icon === "string" ? starknetWindowProvider.icon : starknetWindowProvider.icon.light
|
|
500
|
+
},
|
|
501
|
+
signMessage,
|
|
502
|
+
switchActiveNetwork,
|
|
503
|
+
terminate,
|
|
504
|
+
walletProviderType
|
|
505
|
+
};
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
//#endregion
|
|
509
|
+
//#region src/injected/addStarknetInjectedWalletsExtension/addStarknetInjectedWalletsExtension.ts
|
|
510
|
+
const STARKNET_INJECTED_WALLETS_EXTENSION_KEY = "starknetInjectedWallets";
|
|
511
|
+
/**
|
|
512
|
+
* Adds the Starknet Injected Wallets extension to the Dynamic client.
|
|
513
|
+
*
|
|
514
|
+
* This extension enables integration with many Starknet wallets, like Braavos, Ready and Xverse.
|
|
515
|
+
*
|
|
516
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
517
|
+
*/
|
|
518
|
+
const addStarknetInjectedWalletsExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
519
|
+
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY }, client)) return;
|
|
520
|
+
(0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: STARKNET_INJECTED_WALLETS_EXTENSION_KEY }, client);
|
|
521
|
+
registerStarknetNetworkProviderBuilder(client);
|
|
522
|
+
const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
|
|
523
|
+
_starknet_io_get_starknet_core.default.getAvailableWallets().then((starknetWindowProviders) => {
|
|
524
|
+
starknetWindowProviders.forEach((starknetWindowProvider) => {
|
|
525
|
+
const walletProvider = createWalletProviderFromStarknetWallet({
|
|
526
|
+
dynamicClient: client,
|
|
527
|
+
starknetWindowProvider
|
|
528
|
+
});
|
|
529
|
+
walletProviderRegistry.register({
|
|
530
|
+
priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WINDOW_INJECT,
|
|
531
|
+
walletProvider
|
|
532
|
+
});
|
|
533
|
+
});
|
|
534
|
+
}).catch((error) => {
|
|
535
|
+
(0, _dynamic_labs_sdk_client_core.getCore)(client).logger.error("Error getting available starknet wallets", error);
|
|
536
|
+
});
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
//#endregion
|
|
540
|
+
Object.defineProperty(exports, 'ETH_CONTRACT_ABI', {
|
|
541
|
+
enumerable: true,
|
|
542
|
+
get: function () {
|
|
543
|
+
return ETH_CONTRACT_ABI;
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
Object.defineProperty(exports, 'ETH_STARKNET_ADDRESS', {
|
|
547
|
+
enumerable: true,
|
|
548
|
+
get: function () {
|
|
549
|
+
return ETH_STARKNET_ADDRESS;
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
Object.defineProperty(exports, 'WEI_PER_ETH', {
|
|
553
|
+
enumerable: true,
|
|
554
|
+
get: function () {
|
|
555
|
+
return WEI_PER_ETH;
|
|
556
|
+
}
|
|
557
|
+
});
|
|
558
|
+
Object.defineProperty(exports, '__toESM', {
|
|
559
|
+
enumerable: true,
|
|
560
|
+
get: function () {
|
|
561
|
+
return __toESM;
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
Object.defineProperty(exports, 'addStarknetInjectedWalletsExtension', {
|
|
565
|
+
enumerable: true,
|
|
566
|
+
get: function () {
|
|
567
|
+
return addStarknetInjectedWalletsExtension;
|
|
568
|
+
}
|
|
569
|
+
});
|
|
570
|
+
Object.defineProperty(exports, 'name', {
|
|
571
|
+
enumerable: true,
|
|
572
|
+
get: function () {
|
|
573
|
+
return name;
|
|
574
|
+
}
|
|
575
|
+
});
|
|
576
|
+
Object.defineProperty(exports, 'version', {
|
|
577
|
+
enumerable: true,
|
|
578
|
+
get: function () {
|
|
579
|
+
return version;
|
|
580
|
+
}
|
|
581
|
+
});
|
|
582
|
+
//# sourceMappingURL=addStarknetInjectedWalletsExtension-Bn4EkQTD.cjs.js.map
|