Refactor bridge-sdk library (#104)

* moved bridge interaction to bridge-sdk library

* typo
This commit is contained in:
Juan Diego García 2021-04-30 18:50:27 -05:00 committed by GitHub
parent 39b1fa63ef
commit 9f2ceaafb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
58 changed files with 97 additions and 78 deletions

View File

@ -1,16 +1,30 @@
{
"name": "@solana/bridge-sdk",
"version": "0.0.1",
"description": "Bridge common sdk utilities",
"main": "dist/lib/index.js",
"types": "dist/lib/index.d.ts",
"exports": {
".": "./dist/lib/"
},
"license": "Apache-2.0",
"publishConfig": {
"access": "public"
},
"engines": {
"node": ">=10"
},
"dependencies": {
"@solana/wallet-base": "0.0.1",
"@solana/wallet-ledger": "0.0.1",
"@babel/preset-typescript": "^7.13.0",
"@oyster/common": "0.0.1",
"@solana/spl-token": "0.0.13",
"@solana/spl-token-swap": "0.1.0",
"@solana/wallet-base": "0.0.1",
"@solana/wallet-ledger": "0.0.1",
"@solana/web3.js": "^1.5.0",
"bn.js": "^5.1.3",
"bs58": "^4.0.1",
"buffer-layout": "^1.2.0",
"buffer-layout": "^1.2.1",
"ethers": "^4.0.48",
"eventemitter3": "^4.0.7",
"lodash": "^4.17.20",
@ -18,9 +32,20 @@
"web3": "^1.3.0"
},
"scripts": {
"build": "tsc",
"start": "npm-run-all --parallel watch watch-css watch-css-src",
"watch-css": "less-watch-compiler src/ dist/lib/",
"watch-css-src": "less-watch-compiler src/ src/",
"watch": "tsc --watch",
"test": "jest test",
"clean": "rm -rf dist",
"prepare": "run-s clean build",
"format:fix": "prettier --write \"**/*.+(js|jsx|ts|tsx|json|css|md)\"",
"ethers": "typechain --target ethers-v4 --outDir src/contracts 'contracts/*.json'"
},
"files": [
"dist"
],
"browserslist": {
"production": [
">0.2%",
@ -37,6 +62,14 @@
"type": "git",
"url": "https://github.com/solana-labs/oyster"
},
"peerDependencies": {
"react": "*",
"react-dom": "*"
},
"resolutions": {
"react": "16.13.1",
"react-dom": "16.13.1"
},
"homepage": ".",
"devDependencies": {
"@typechain/ethers-v4": "^1.0.0",

View File

@ -1,10 +1,10 @@
// 44 - bridge config
import { Layout } from '@oyster/common';
import { publicKey } from '@oyster/common/dist/lib/utils/layout';
import * as BufferLayout from 'buffer-layout';
export const BridgeLayout: typeof BufferLayout.Structure = BufferLayout.struct([
export const BridgeLayout = BufferLayout.struct([
BufferLayout.u32('guardianSetIndex'),
BufferLayout.u8('guardianSetExpirationTime'),
Layout.publicKey('tokenProgram'),
publicKey('tokenProgram'),
BufferLayout.u8('isInitialized'),
]);

View File

@ -1,7 +1,7 @@
import { programIds, sendTransactionWithRetry } from '@oyster/common';
import { WalletAdapter } from '@solana/wallet-base';
import { ethers } from 'ethers';
import { WormholeFactory } from '../../../contracts/WormholeFactory';
import { WormholeFactory } from '../../contracts/WormholeFactory';
import { bridgeAuthorityKey } from './../helpers';
import { Connection, PublicKey, SystemProgram } from '@solana/web3.js';
import { Token } from '@solana/spl-token';
@ -9,7 +9,7 @@ import { ProgressUpdate, TransferRequest } from './interface';
import BN from 'bn.js';
import { createLockAssetInstruction } from '../lock';
import { TransferOutProposalLayout } from '../transferOutProposal';
import { SolanaBridge } from '../../../core';
import { SolanaBridge } from '../../core';
export const fromSolana = async (
connection: Connection,

View File

@ -1,5 +1,3 @@
import BN from 'bn.js';
import { ethers } from 'ethers';
import { BigNumber } from 'ethers/utils';
import { ASSET_CHAIN } from '../constants';

View File

@ -8,8 +8,8 @@ import {
createAssociatedTokenAccountInstruction,
} from '@oyster/common';
import { ethers } from 'ethers';
import { ERC20Factory } from '../../../contracts/ERC20Factory';
import { WormholeFactory } from '../../../contracts/WormholeFactory';
import { ERC20Factory } from '../../contracts/ERC20Factory';
import { WormholeFactory } from '../../contracts/WormholeFactory';
import { AssetMeta, createWrappedAssetInstruction } from './../meta';
import { bridgeAuthorityKey, wrappedAssetMintKey } from './../helpers';
import {

View File

@ -5,7 +5,7 @@ import assert from 'assert';
// @ts-ignore
import * as BufferLayout from 'buffer-layout';
import * as bs58 from 'bs58';
import { AssetMeta } from '../models/bridge';
import { AssetMeta } from '../bridge';
export interface Lockup {
lockupAddress: PublicKey;

View File

@ -1 +1,10 @@
// TODO: move bridge interaction code to this library
export * as bridge from './bridge';
export * from './bridge';
export * as core from './core';
export * from './core';
export * from './contracts/ERC20Factory';
export * from './contracts/IERC20Factory';
export * from './contracts/WETHFactory';
export * from './contracts/WormholeFactory';
export * from './contracts/WrappedAssetFactory';

View File

@ -0,0 +1,4 @@
declare module 'buffer-layout' {
const bl: any;
export = bl;
}

View File

@ -1,22 +1,23 @@
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"module": "commonjs",
"target": "es2019",
"moduleResolution": "node",
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"allowJs": true,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"downlevelIteration": true,
"noEmit": true,
"jsx": "react",
"typeRoots": ["types", "../../types", "../../node_modules/@types"]
"typeRoots": ["types", "../../types", "../../node_modules/@types"],
"outDir": "./dist/lib",
"rootDir": "./src",
"composite": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true
},
"include": ["src"]
"include": ["src/**/*"]
}

View File

@ -14,6 +14,7 @@
"@solana/spl-token-swap": "0.1.0",
"@solana/wallet-base": "0.0.1",
"@solana/wallet-ledger": "0.0.1",
"@solana/bridge-sdk": "0.0.1",
"@solana/web3.js": "^1.5.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",

View File

@ -8,9 +8,8 @@ import {
useWallet,
} from '@oyster/common';
import './style.less';
import { ASSET_CHAIN } from '../../models/bridge/constants';
import { TokenSelectModal } from '../TokenSelectModal';
import { chainToName } from '../../utils/assets';
import { ASSET_CHAIN, chainToName } from '../../utils/assets';
import { TokenChain } from '../TokenDisplay/tokenChain';
import { EthereumConnect } from '../EthereumConnect';
import { CurrentUserWalletBadge } from '../CurrentUserWalletBadge';

View File

@ -21,8 +21,8 @@ import { TokenChain } from '../TokenDisplay/tokenChain';
import bs58 from 'bs58';
import { SyncOutlined } from '@ant-design/icons';
import { typeToIcon } from '../Transfer';
import { ProgressUpdate } from '../../models/bridge';
import { WormholeFactory } from '../../contracts/WormholeFactory';
import { ProgressUpdate } from '@solana/bridge-sdk';
import { WormholeFactory } from '@solana/bridge-sdk';
import { useEthereum } from '../../contexts';
import { useBridge } from '../../contexts/bridge';

View File

@ -3,7 +3,7 @@ import { TokenInfo } from '@solana/spl-token-registry';
import { debug } from 'console';
import React from 'react';
import { useEthereum } from '../../contexts';
import { ASSET_CHAIN } from '../../models/bridge/constants';
import { ASSET_CHAIN } from '../../utils/assets';
import './style.less';
import { TokenChain } from './tokenChain';

View File

@ -1,5 +1,5 @@
import React from 'react';
import { ASSET_CHAIN } from '../../models/bridge/constants';
import { ASSET_CHAIN } from '../../utils/assets';
export const TokenChain = (props: {
chain?: ASSET_CHAIN;

View File

@ -6,7 +6,7 @@ import './style.less';
import { Input, Modal } from 'antd';
import { useEthereum } from '../../contexts';
import { TokenDisplay } from '../TokenDisplay';
import { ASSET_CHAIN } from '../../models/bridge/constants';
import { ASSET_CHAIN } from '../../utils/assets';
import { useConnectionConfig } from '@oyster/common';
import { filterModalEthTokens, filterModalSolTokens } from '../../utils/assets';

View File

@ -11,7 +11,7 @@ import {
ProgressUpdate,
toSolana,
TransferRequest,
} from '../../models/bridge';
} from '@solana/bridge-sdk';
import { useEthereum } from '../../contexts';
import { TokenDisplay } from '../TokenDisplay';
import { useTokenChainPairState } from '../../contexts/chainPair';

View File

@ -1,5 +1,5 @@
import React, { createContext, FunctionComponent, useContext } from 'react';
import { SolanaBridge } from '../core';
import { SolanaBridge } from '@solana/bridge-sdk';
import {
useConnection,
useConnectionConfig,

View File

@ -21,13 +21,13 @@ import {
} from '../utils/assets';
import { useEthereum } from './ethereum';
import { BigNumber } from 'ethers/utils';
import { WrappedAssetFactory } from '../contracts/WrappedAssetFactory';
import { WormholeFactory } from '../contracts/WormholeFactory';
import { WrappedAssetFactory } from '@solana/bridge-sdk';
import { WormholeFactory } from '@solana/bridge-sdk';
import {
bridgeAuthorityKey,
TransferRequestInfo,
wrappedAssetMintKey,
} from '../models/bridge';
} from '@solana/bridge-sdk';
import { useBridge } from './bridge';
import { PublicKey } from '@solana/web3.js';

View File

@ -1,30 +0,0 @@
import { useCallback, useEffect, useRef, useState } from 'react';
import {
useConnection,
useConnectionConfig,
MintParser,
cache,
getMultipleAccounts,
ParsedAccount,
TokenAccountParser,
} from '@oyster/common';
import { WORMHOLE_PROGRAM_ID } from '../utils/ids';
import { ASSET_CHAIN } from '../utils/assets';
import { useEthereum } from '../contexts';
import { Connection, PublicKey } from '@solana/web3.js';
import { models } from '@oyster/common';
import { AccountInfo, MintInfo, TOKEN_PROGRAM_ID } from '@solana/spl-token';
import { WrappedMetaLayout } from './../models/bridge';
import bs58 from 'bs58';
import {
COINGECKO_COIN_PRICE_API,
COINGECKO_POOL_INTERVAL,
useCoingecko,
} from '../contexts/coingecko';
export const useEthUserAccount = () => {
const [address, setAddress] = useState('');
// const { web3 } = useEthereum();
return address;
};

View File

@ -20,7 +20,7 @@ import {
bridgeAuthorityKey,
wrappedAssetMintKey,
WrappedMetaLayout,
} from './../models/bridge';
} from '@solana/bridge-sdk';
import bs58 from 'bs58';
import {

View File

@ -21,7 +21,7 @@ import {
import {
bridgeAuthorityKey,
TransferOutProposalLayout,
} from './../models/bridge';
} from '@solana/bridge-sdk';
import bs58 from 'bs58';
import {
@ -30,17 +30,16 @@ import {
useCoingecko,
} from '../contexts/coingecko';
import { BN } from 'bn.js';
import { WormholeFactory } from '../contracts/WormholeFactory';
import { WormholeFactory } from '@solana/bridge-sdk';
import { ethers } from 'ethers';
import { useBridge } from '../contexts/bridge';
import { SolanaBridge } from '../core';
import { SolanaBridge } from '@solana/bridge-sdk';
type WrappedTransferMeta = {
chain: number;
decimals: number;
address: string;
publicKey: PublicKey;
coinId?: string;
price?: number;
explorer?: any;

View File

@ -1,6 +1,7 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"target": "es2019",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
@ -9,14 +10,13 @@
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"downlevelIteration": true,
"noEmit": true,
"jsx": "react",
"typeRoots": ["types", "../../types", "../../node_modules/@types"]
"typeRoots": ["types", "../../types", "../../node_modules/@types"],
"moduleResolution": "node"
},
"include": ["src"]
}

View File

@ -1185,7 +1185,7 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-transform-typescript" "^7.9.0"
"@babel/preset-typescript@^7.12.13":
"@babel/preset-typescript@^7.12.13", "@babel/preset-typescript@^7.13.0":
version "7.13.0"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a"
integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw==
@ -6417,6 +6417,11 @@ buffer-layout@^1.2.0:
resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.0.tgz#ee1f5ef05a8afd5db6b3a8fe2056c111bc69c737"
integrity sha512-iiyRoho/ERzBUv6kFvfsrLNgTlVwOkqQcSQN7WrO3Y+c5SeuEhCn6+y1KwhM0V3ndptF5mI/RI44zkw0qcR5Jg==
buffer-layout@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.1.tgz#17b6db7abea303cab35eebd77919b89de026297d"
integrity sha512-RUTGEYG1vX0Zp1dStQFl8yeU/LEBPXVtHwzzDbPWkE5zq+Prt9fkFLKNiwmaeHg6BBiRMcQAgj4cynazO6eekw==
buffer-to-arraybuffer@^0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a"