Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions wallets/provider-all/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
"@rango-dev/provider-bitget": "^0.52.1-next.2",
"@rango-dev/provider-braavos": "^0.49.1-next.2",
"@rango-dev/provider-brave": "^0.57.1-next.2",
"@rango-dev/provider-clover": "^0.57.0",
"@rango-dev/provider-coin98": "^0.57.1-next.2",
"@rango-dev/provider-coinbase": "^0.56.1-next.2",
"@rango-dev/provider-cosmostation": "^0.55.1-next.2",
Expand Down Expand Up @@ -64,4 +63,4 @@
"publishConfig": {
"access": "public"
}
}
}
4 changes: 2 additions & 2 deletions wallets/provider-all/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import { versions as metamask } from '@rango-dev/provider-metamask';
import { versions as okx } from '@rango-dev/provider-okx';
import { versions as phantom } from '@rango-dev/provider-phantom';
import { versions as rabby } from '@rango-dev/provider-rabby';
import * as ready from '@rango-dev/provider-ready';
import { versions as ready } from '@rango-dev/provider-ready';
import * as safe from '@rango-dev/provider-safe';
import { versions as safepal } from '@rango-dev/provider-safepal';
import { versions as slush } from '@rango-dev/provider-slush';
Expand Down Expand Up @@ -104,7 +104,7 @@ export const allProviders = (
lazyProvider(legacyProviderImportsToVersionsInterface(tonconnect)),
lazyProvider(legacyProviderImportsToVersionsInterface(keplr)),
phantom,
lazyProvider(legacyProviderImportsToVersionsInterface(ready)),
ready,
lazyProvider(legacyProviderImportsToVersionsInterface(tronLink)),
trustwallet,
enkrypt,
Expand Down
17 changes: 7 additions & 10 deletions wallets/provider-ready/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,14 @@
"version": "0.55.1-next.2",
"license": "MIT",
"type": "module",
"source": "./src/index.ts",
"main": "./dist/index.js",
"source": "./src/mod.ts",
"main": "./dist/mod.js",
"exports": {
".": "./dist/index.js"
".": "./dist/mod.js"
},
"typings": "dist/index.d.ts",
"files": [
"dist",
"src"
],
"typings": "dist/mod.d.ts",
"scripts": {
"build": "node ../../scripts/build/command.mjs --path wallets/provider-ready",
"build": "node ../../scripts/build/command.mjs --path wallets/provider-ready --inputs src/mod.ts",
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
"clean": "rimraf dist",
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
Expand All @@ -23,9 +19,10 @@
"dependencies": {
"@rango-dev/signer-starknet": "^0.40.0",
"@rango-dev/wallets-shared": "^0.55.1-next.2",
"@rango-dev/wallets-core": "^0.54.1-next.1",
"rango-types": "^0.1.89"
},
"publishConfig": {
"access": "public"
}
}
}
15 changes: 14 additions & 1 deletion wallets/provider-ready/readme.md
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
# @rango-dev/provider-ready
# Ready (formerly Argent X)
Ready Wallet integration for hub.
[Homepage](https://www.ready.tech/) | [Docs](https://docs.ready.tech/)

More about implementation status can be found [here](../readme.md).

## Implementation notes/limitations

### Feature
All features are currently supported, and **no limitations** have been identified in this integration.

---

More wallet information can be found in [readme.md](../readme.md).
33 changes: 33 additions & 0 deletions wallets/provider-ready/src/actions/starknet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type { Context, FunctionWithContext } from '@rango-dev/wallets-core';

import {
CAIP_STARKNET_CHAIN_ID,
type ProviderAPI,
type StarknetActions,
utils,
} from '@rango-dev/wallets-core/namespaces/starknet';

export function connect(
instance: () => ProviderAPI
): FunctionWithContext<StarknetActions['connect'], Context> {
return async () => {
const starknetInstance = instance();

const connectResult = await starknetInstance?.enable();
if (
!connectResult ||
!starknetInstance.isConnected ||
!connectResult?.length
) {
throw new Error('Error during connection');
}
if (starknetInstance?.chainId !== CAIP_STARKNET_CHAIN_ID) {
throw new Error(
`Please switch to Mainnet, current network is ${starknetInstance?.chainId}`
);
}

return utils.formatAccountsToCAIP(connectResult);
};
}
export const starknetActions = { connect };
26 changes: 26 additions & 0 deletions wallets/provider-ready/src/builders/starknet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import type {
ProviderAPI,
StarknetActions,
} from '@rango-dev/wallets-core/namespaces/starknet';

import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
import { utils } from '@rango-dev/wallets-core/namespaces/starknet';
// Hooks
export const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>
new ChangeAccountSubscriberBuilder<string[], ProviderAPI, StarknetActions>()
.getInstance(getInstance)

.onSwitchAccount((event) => {
if (!event.payload.length) {
event.preventDefault();
}
})
.format(async (_, accounts) => utils.formatAccountsToCAIP(accounts))
.addEventListener((instance, callback) => {
instance.on('accountsChanged', callback);
})
.removeEventListener((instance, callback) => {
instance.off('accountsChanged', callback);
});

export const starknetBuilders = { changeAccountSubscriber };
40 changes: 40 additions & 0 deletions wallets/provider-ready/src/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { type ProviderMetadata } from '@rango-dev/wallets-core';
import { type BlockchainMeta, starknetBlockchain } from 'rango-types';

import getSigners from './signer.js';
import { getInstanceOrThrow } from './utils.js';

export const WALLET_ID = 'ready';
export const metadata: ProviderMetadata = {
name: 'Ready',
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/argentx/icon.svg',
extensions: {
chrome:
'https://chromewebstore.google.com/detail/ready-wallet-formerly-arg/dlcobpjiigpikoobohmabehhmhfoodbb',
brave:
'https://chromewebstore.google.com/detail/ready-wallet-formerly-arg/dlcobpjiigpikoobohmabehhmhfoodbb',
firefox: 'https://addons.mozilla.org/en-GB/firefox/addon/argent-x',
homepage: 'https://www.ready.co/',
},
properties: [
{
name: 'namespaces',
value: {
selection: 'multiple',
data: [
{
label: 'Ready',
value: 'Starknet',
id: 'STARKNET',
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
starknetBlockchain(allBlockchains),
},
],
},
},
{
name: 'signers',
value: { getSigners: async () => getSigners(getInstanceOrThrow()) },
},
],
};
9 changes: 0 additions & 9 deletions wallets/provider-ready/src/helpers.ts

This file was deleted.

93 changes: 0 additions & 93 deletions wallets/provider-ready/src/index.ts

This file was deleted.

8 changes: 8 additions & 0 deletions wallets/provider-ready/src/mod.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { defineVersions } from '@rango-dev/wallets-core/utils';

import { buildProvider } from './provider.js';

const versions = () =>
defineVersions().version('1.0.0', buildProvider()).build();

export { versions };
42 changes: 42 additions & 0 deletions wallets/provider-ready/src/namespaces/starknet.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import type { StarknetActions } from '@rango-dev/wallets-core/namespaces/starknet';

import { NamespaceBuilder } from '@rango-dev/wallets-core';
import {
builders as commonBuilders,
standardizeAndThrowError,
} from '@rango-dev/wallets-core/namespaces/common';
import { actions, builders } from '@rango-dev/wallets-core/namespaces/starknet';

import { starknetActions } from '../actions/starknet.js';
import { starknetBuilders } from '../builders/starknet.js';
import { WALLET_ID } from '../constants.js';
import { starknetReady } from '../utils.js';

const [changeAccountSubscriber, changeAccountCleanup] = starknetBuilders
.changeAccountSubscriber(starknetReady)
.build();
const connect = builders
.connect()
.action(starknetActions.connect(starknetReady))
.before(changeAccountSubscriber)
.or(changeAccountCleanup)
.or(standardizeAndThrowError)
.build();

const disconnect = commonBuilders
.disconnect<StarknetActions>()
.after(changeAccountCleanup)
.build();

const canEagerConnect = builders
.canEagerConnect()
.action(actions.canEagerConnect(starknetReady))
.build();

const starknet = new NamespaceBuilder<StarknetActions>('Starknet', WALLET_ID)
.action(connect)
.action(disconnect)
.action(canEagerConnect)
.build();

export { starknet };
21 changes: 21 additions & 0 deletions wallets/provider-ready/src/provider.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { ProviderBuilder } from '@rango-dev/wallets-core';

import { metadata, WALLET_ID } from './constants.js';
import { starknet } from './namespaces/starknet.js';
import { ready } from './utils.js';

const buildProvider = () =>
new ProviderBuilder(WALLET_ID)
.init(function (context) {
const [, setState] = context.state();

if (ready()) {
setState('installed', true);
console.debug('[ready] instance detected.', context);
}
})
.config('metadata', metadata)
.add('starknet', starknet)
.build();

export { buildProvider };
25 changes: 20 additions & 5 deletions wallets/provider-ready/src/signer.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
import type { StarknetProviderAPI } from './helpers.js';
import type { Provider } from './types.js';
import type { SignerFactory } from 'rango-types';

import { DefaultStarknetSigner } from '@rango-dev/signer-starknet';
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
import {
dynamicImportWithRefinedError,
getNetworkInstance,
} from '@rango-dev/wallets-shared';
import { DefaultSignerFactory, TransactionType } from 'rango-types';

export default async function getSigners(
provider: StarknetProviderAPI
provider: Provider
): Promise<SignerFactory> {
const signers = new DefaultSignerFactory();
signers.registerSigner(TxType.STARKNET, new DefaultStarknetSigner(provider));
const starknetProvider = getNetworkInstance(
provider,
LegacyNetworks.STARKNET
);

const { DefaultStarknetSigner } = await dynamicImportWithRefinedError(
async () => await import('@rango-dev/signer-starknet')
);
signers.registerSigner(
TransactionType.STARKNET,
new DefaultStarknetSigner(starknetProvider)
);
return signers;
}
Loading