@dstoken-solana/rwa-token-sdk
Version:
RWA Token SDK for the development of permissioned tokens on SVM blockchains.
3,695 lines (3,690 loc) • 153 kB
JavaScript
import { AnchorProvider, Program, utils, BN } from '@coral-xyz/anchor';
import { Connection, PublicKey, SystemProgram, TransactionInstruction, Keypair, ComputeBudgetProgram } from '@solana/web3.js';
import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, getAccount, getMemoTransfer, createAssociatedTokenAccountInstruction, createTransferCheckedInstruction } from '@solana/spl-token';
var address$2 = "7tXjmbkZVY3Gmg9kDBebcNXT1yC5pyoxxXVLwdbv9tvP";
var metadata$2 = {
name: "asset_controller",
version: "0.0.1",
spec: "0.1.0",
description: "The Asset Controller Program (ACP) enables core asset management functionality for newly issued assets, including transfer controls and transaction privacy."
};
var instructions$2 = [
{
name: "create_asset_controller",
docs: [
"create an rwa asset"
],
discriminator: [
97,
185,
6,
250,
248,
242,
68,
105
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "authority"
},
{
name: "asset_controller",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "asset_mint",
writable: true,
signer: true
},
{
name: "extra_metas_account",
writable: true
},
{
name: "policy_engine_account",
writable: true
},
{
name: "identity_registry_account",
writable: true
},
{
name: "policy_engine",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "identity_registry",
address: "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA"
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "args",
type: {
defined: {
name: "CreateAssetControllerArgs"
}
}
}
]
},
{
name: "disable_memo_transfer",
docs: [
"memo transfer disable"
],
discriminator: [
68,
156,
197,
9,
43,
91,
114,
19
],
accounts: [
{
name: "owner",
signer: true
},
{
name: "authority",
signer: true
},
{
name: "asset_mint"
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "token_account",
writable: true
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
]
},
{
name: "enable_memo_transfer",
docs: [
"memo transfer enable"
],
discriminator: [
186,
78,
97,
172,
71,
172,
99,
0
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "owner",
signer: true
},
{
name: "authority",
signer: true
},
{
name: "asset_mint"
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "token_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "owner"
},
{
kind: "account",
path: "token_program"
},
{
kind: "account",
path: "asset_mint"
}
],
program: {
kind: "const",
value: [
140,
151,
37,
143,
78,
36,
137,
241,
187,
61,
16,
41,
20,
142,
13,
131,
11,
90,
19,
153,
218,
255,
16,
132,
4,
142,
123,
216,
219,
233,
248,
89
]
}
}
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "associated_token_program",
address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
]
},
{
name: "freeze_token_account",
docs: [
"freeze token account"
],
discriminator: [
138,
168,
178,
109,
205,
224,
209,
93
],
accounts: [
{
name: "authority",
signer: true
},
{
name: "asset_mint",
writable: true
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "token_account",
writable: true
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
}
],
args: [
]
},
{
name: "issue_tokens",
docs: [
"issue shares of the rwa asset"
],
discriminator: [
40,
207,
145,
106,
249,
54,
23,
179
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "authority",
writable: true,
signer: true
},
{
name: "asset_mint",
writable: true,
relations: [
"identity_registry",
"tracker_account"
]
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "to"
},
{
name: "token_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "to"
},
{
kind: "account",
path: "token_program"
},
{
kind: "account",
path: "asset_mint"
}
],
program: {
kind: "const",
value: [
140,
151,
37,
143,
78,
36,
137,
241,
187,
61,
16,
41,
20,
142,
13,
131,
11,
90,
19,
153,
218,
255,
16,
132,
4,
142,
123,
216,
219,
233,
248,
89
]
}
}
},
{
name: "identity_registry",
relations: [
"identity_account"
]
},
{
name: "identity_account",
relations: [
"wallet_identity_account"
]
},
{
name: "tracker_account",
writable: true
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "associated_token_program",
address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "policy_engine",
writable: true
},
{
name: "wallet_identity_account"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "amount",
type: "u64"
},
{
name: "issuance_timestamp",
type: "i64"
}
]
},
{
name: "revoke_tokens",
docs: [
"revoke shares of the rwa asset"
],
discriminator: [
215,
42,
15,
134,
173,
80,
33,
21
],
accounts: [
{
name: "authority",
writable: true,
signer: true
},
{
name: "asset_mint",
writable: true,
relations: [
"identity_registry",
"tracker_account"
]
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "revoke_token_account",
writable: true
},
{
name: "identity_registry",
relations: [
"identity_account"
]
},
{
name: "identity_account",
relations: [
"wallet_identity_account"
]
},
{
name: "tracker_account",
writable: true
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "policy_engine",
writable: true
},
{
name: "wallet_identity_account"
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "associated_token_program",
address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "amount",
type: "u64"
},
{
name: "reason",
type: "string"
}
]
},
{
name: "seize_tokens",
docs: [
"seize shares of the rwa asset"
],
discriminator: [
79,
30,
69,
54,
78,
1,
16,
23
],
accounts: [
{
name: "authority",
writable: true,
signer: true
},
{
name: "asset_mint"
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "destination_token_account",
writable: true
},
{
name: "source_token_account",
writable: true
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "amount",
type: "u64"
},
{
name: "reason",
type: "string"
}
]
},
{
name: "thaw_token_account",
docs: [
"thaw token account"
],
discriminator: [
199,
172,
96,
93,
244,
252,
137,
171
],
accounts: [
{
name: "authority",
signer: true
},
{
name: "asset_mint",
writable: true
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "token_account",
writable: true
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
}
],
args: [
]
},
{
name: "update_metadata",
docs: [
"edit metadata of the rwa asset"
],
discriminator: [
170,
182,
43,
239,
97,
78,
225,
186
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "authority",
writable: true,
signer: true
},
{
name: "asset_mint",
writable: true
},
{
name: "asset_controller",
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "token_program",
address: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "args",
type: {
defined: {
name: "UpdateAssetMetadataArgs"
}
}
}
]
}
];
var accounts$2 = [
{
name: "AssetControllerAccount",
discriminator: [
70,
136,
149,
138,
12,
87,
52,
105
]
},
{
name: "IdentityAccount",
discriminator: [
194,
90,
181,
160,
182,
206,
116,
158
]
},
{
name: "IdentityRegistryAccount",
discriminator: [
154,
254,
118,
4,
115,
36,
125,
78
]
},
{
name: "PolicyEngineAccount",
discriminator: [
124,
85,
205,
80,
2,
18,
26,
45
]
},
{
name: "TrackerAccount",
discriminator: [
83,
95,
166,
148,
57,
30,
90,
210
]
},
{
name: "WalletIdentity",
discriminator: [
101,
142,
55,
104,
168,
77,
57,
85
]
}
];
var events$2 = [
{
name: "AssetMetadataEvent",
discriminator: [
90,
19,
200,
229,
103,
82,
218,
16
]
},
{
name: "BurnEvent",
discriminator: [
33,
89,
47,
117,
82,
124,
238,
250
]
},
{
name: "ExtensionMetadataEvent",
discriminator: [
22,
198,
253,
69,
234,
122,
248,
117
]
},
{
name: "IssueEvent",
discriminator: [
220,
74,
136,
189,
186,
247,
253,
140
]
},
{
name: "RevokeEvent",
discriminator: [
87,
202,
67,
213,
43,
84,
177,
3
]
},
{
name: "SeizeEvent",
discriminator: [
100,
186,
127,
43,
145,
98,
208,
78
]
}
];
var errors$2 = [
{
code: 6000,
name: "TransferMintNotApproved",
msg: "Transfer hasnt been approved for the asset mint"
},
{
code: 6001,
name: "TransferFromNotApproved",
msg: "Transfer hasnt been approved for from account"
},
{
code: 6002,
name: "TransferToNotApproved",
msg: "Transfer hasnt been approved for to account"
},
{
code: 6003,
name: "TransferAmountNotApproved",
msg: "Transfer hasnt been approved for the specified amount"
},
{
code: 6004,
name: "InvalidPolicyAccount",
msg: "Invalid policy account passed"
},
{
code: 6005,
name: "TransferSlotNotApproved",
msg: "Invalid slot for approve account"
},
{
code: 6006,
name: "TransferHistoryFull",
msg: "Transfer history is full"
},
{
code: 6007,
name: "Unauthorized",
msg: "Unauthorized"
},
{
code: 6008,
name: "InvalidPdaPassedIn",
msg: "Pda passed in for transfer is wrong"
},
{
code: 6009,
name: "TokenAccountNotInitialized",
msg: "Token account is not initialized"
},
{
code: 6010,
name: "TokenAccountAlreadyInitialized",
msg: "Token account is already initialized"
},
{
code: 6011,
name: "InvalidIdentityAccounts",
msg: "Invalid identity accounts"
},
{
code: 6012,
name: "InvalidAuthority",
msg: "Invalid authority"
}
];
var types$2 = [
{
name: "AssetControllerAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
type: "u8"
},
{
name: "asset_mint",
docs: [
"mint pubkey"
],
type: "pubkey"
},
{
name: "authority",
docs: [
"authority has the ability to seize, freeze token accounts, etc."
],
type: "pubkey"
}
]
}
},
{
name: "AssetMetadataEvent",
type: {
kind: "struct",
fields: [
{
name: "mint",
type: "string"
},
{
name: "name",
type: {
option: "string"
}
},
{
name: "symbol",
type: {
option: "string"
}
},
{
name: "uri",
type: {
option: "string"
}
},
{
name: "decimals",
type: {
option: "u8"
}
}
]
}
},
{
name: "BurnEvent",
type: {
kind: "struct",
fields: [
{
name: "amount",
type: "u64"
},
{
name: "reason",
type: "string"
},
{
name: "wallet",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
}
]
}
},
{
name: "Counter",
type: {
kind: "struct",
fields: [
{
name: "value",
type: "u64"
},
{
name: "id",
type: "u8"
},
{
name: "identity_filter",
type: {
defined: {
name: "IdentityFilter"
}
}
}
]
}
},
{
name: "CounterLimit",
type: {
kind: "enum",
variants: [
{
name: "HoldersLimit",
fields: [
{
name: "max",
type: "u64"
},
{
name: "min",
type: "u64"
},
{
name: "counter_id",
type: "u8"
}
]
},
{
name: "GroupedHoldersLimit",
fields: [
{
name: "max",
type: "u64"
},
{
name: "min",
type: "u64"
},
{
name: "counters",
type: "bytes"
}
]
},
{
name: "PercentageLimit",
fields: [
{
name: "higher_counter_id",
type: "u8"
},
{
name: "lower_counter_id",
type: "u8"
},
{
name: "min_percentage",
type: "u8"
},
{
name: "max_percentage",
type: "u8"
}
]
}
]
}
},
{
name: "CreateAssetControllerArgs",
type: {
kind: "struct",
fields: [
{
name: "decimals",
type: "u8"
},
{
name: "name",
type: "string"
},
{
name: "symbol",
type: "string"
},
{
name: "uri",
type: "string"
}
]
}
},
{
name: "ExtensionMetadataEvent",
type: {
kind: "struct",
fields: [
{
name: "address",
type: "string"
},
{
name: "extension_type",
type: "u8"
},
{
name: "metadata",
type: "bytes"
}
]
}
},
{
name: "FilterComparison",
repr: {
kind: "rust"
},
type: {
kind: "enum",
variants: [
{
name: "Or"
},
{
name: "And"
}
]
}
},
{
name: "FilterData",
type: {
kind: "struct",
fields: [
{
name: "level",
type: {
defined: {
name: "FilterLevel"
}
}
},
{
name: "target",
type: {
defined: {
name: "FilterTarget"
}
}
},
{
name: "mode",
type: {
defined: {
name: "FilterMode"
}
}
}
]
}
},
{
name: "FilterInner",
repr: {
kind: "rust"
},
type: {
kind: "enum",
variants: [
{
name: "Single",
fields: [
{
defined: {
name: "FilterData"
}
}
]
},
{
name: "Tuple",
fields: [
{
defined: {
name: "FilterData"
}
},
{
defined: {
name: "FilterComparison"
}
},
{
defined: {
name: "FilterData"
}
}
]
},
{
name: "Multiple",
fields: [
{
defined: {
name: "FilterComparison"
}
},
{
vec: {
defined: {
name: "FilterData"
}
}
}
]
}
]
}
},
{
name: "FilterLevel",
type: {
kind: "enum",
variants: [
{
name: "Level",
fields: [
"u8"
]
},
{
name: "LevelMappingAny",
fields: [
"u8"
]
},
{
name: "LevelMapping",
fields: [
{
name: "source",
type: "u8"
},
{
name: "target",
type: "u8"
}
]
},
{
name: "Country",
fields: [
"u8"
]
},
{
name: "CountryMapping",
fields: [
"u8"
]
}
]
}
},
{
name: "FilterMode",
repr: {
kind: "rust"
},
type: {
kind: "enum",
variants: [
{
name: "Include"
},
{
name: "Exclude"
}
]
}
},
{
name: "FilterTarget",
repr: {
kind: "rust"
},
type: {
kind: "enum",
variants: [
{
name: "Sender"
},
{
name: "Receiver"
},
{
name: "BothAnd"
},
{
name: "BothOr"
}
]
}
},
{
name: "IdentityAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
docs: [
"version of the account"
],
type: "u8"
},
{
name: "identity_registry",
docs: [
"identity registry to which the account belongs"
],
type: "pubkey"
},
{
name: "owner",
docs: [
"owner of the identity account"
],
type: "pubkey"
},
{
name: "num_wallets",
docs: [
"number of wallets attached to this identity account"
],
type: "u16"
},
{
name: "country",
docs: [
"country code of the user"
],
type: "u8"
},
{
name: "levels",
type: {
vec: {
defined: {
name: "IdentityLevel"
}
}
}
}
]
}
},
{
name: "IdentityFilter",
repr: {
kind: "rust"
},
type: {
kind: "enum",
variants: [
{
name: "Simple",
fields: [
{
defined: {
name: "FilterInner"
}
}
]
},
{
name: "IfThen",
fields: [
{
defined: {
name: "FilterInner"
}
},
{
defined: {
name: "FilterInner"
}
}
]
}
]
}
},
{
name: "IdentityLevel",
type: {
kind: "struct",
fields: [
{
name: "level",
type: "u8"
},
{
name: "expiry",
type: "i64"
}
]
}
},
{
name: "IdentityRegistryAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
type: "u8"
},
{
name: "bump",
type: "u8"
},
{
name: "asset_mint",
docs: [
"corresponding asset mint"
],
type: "pubkey"
},
{
name: "authority",
docs: [
"authority to manage the registry"
],
type: "pubkey"
}
]
}
},
{
name: "Issuance",
type: {
kind: "struct",
fields: [
{
name: "amount",
type: "u64"
},
{
name: "issue_time",
type: "i64"
}
]
}
},
{
name: "IssuancePolicies",
type: {
kind: "struct",
fields: [
{
name: "disallow_backdating",
type: "bool"
},
{
name: "max_supply",
type: "u64"
},
{
name: "us_lock_period",
type: "i64"
},
{
name: "non_us_lock_period",
type: "i64"
}
]
}
},
{
name: "IssueEvent",
type: {
kind: "struct",
fields: [
{
name: "amount",
type: "u64"
},
{
name: "issuance_timestamp",
type: "i64"
},
{
name: "wallet",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
}
]
}
},
{
name: "Lock",
type: {
kind: "struct",
fields: [
{
name: "amount",
type: "u64"
},
{
name: "release_time",
type: "i64"
},
{
name: "reason",
type: "u64"
},
{
name: "reason_string",
type: "string"
}
]
}
},
{
name: "Policy",
type: {
kind: "struct",
fields: [
{
name: "hash",
type: "string"
},
{
name: "identity_filter",
type: {
defined: {
name: "IdentityFilter"
}
}
},
{
name: "policy_type",
type: {
defined: {
name: "PolicyType"
}
}
},
{
name: "custom_error",
type: "u8"
}
]
}
},
{
name: "PolicyEngineAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
docs: [
"version"
],
type: "u8"
},
{
name: "asset_mint",
docs: [
"asset mint"
],
type: "pubkey"
},
{
name: "authority",
docs: [
"authority of the registry"
],
type: "pubkey"
},
{
name: "mapping",
docs: [
"generic mapping for levels"
],
type: {
array: [
"u8",
256
]
}
},
{
name: "issuance_policies",
docs: [
"policies to apply on issuance",
"these are partially for storage only"
],
type: {
defined: {
name: "IssuancePolicies"
}
}
},
{
name: "policies",
docs: [
"policies to check on transfers or balance changes"
],
type: {
vec: {
defined: {
name: "Policy"
}
}
}
},
{
name: "counters",
docs: [
"counters to track the number of holders depending on filters"
],
type: {
vec: {
defined: {
name: "Counter"
}
}
}
},
{
name: "counter_limits",
docs: [
"limits to apply on existing counters"
],
type: {
vec: {
defined: {
name: "CounterLimit"
}
}
}
}
]
}
},
{
name: "PolicyType",
type: {
kind: "enum",
variants: [
{
name: "IdentityApproval"
},
{
name: "TransactionAmountLimit",
fields: [
{
name: "limit",
type: "u64"
}
]
},
{
name: "MaxBalance",
fields: [
{
name: "limit",
type: "u64"
}
]
},
{
name: "MinBalance",
fields: [
{
name: "limit",
type: "u64"
}
]
},
{
name: "MinMaxBalance",
fields: [
{
name: "min",
type: "u64"
},
{
name: "max",
type: "u64"
}
]
},
{
name: "TransferPause"
},
{
name: "ForbiddenIdentityGroup"
},
{
name: "ForceFullTransfer"
},
{
name: "BlockFlowbackEndTime",
fields: [
{
name: "time",
type: "i64"
}
]
}
]
}
},
{
name: "RevokeEvent",
type: {
kind: "struct",
fields: [
{
name: "amount",
type: "u64"
},
{
name: "reason",
type: "string"
},
{
name: "wallet",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
}
]
}
},
{
name: "SeizeEvent",
type: {
kind: "struct",
fields: [
{
name: "amount",
type: "u64"
},
{
name: "reason",
type: "string"
},
{
name: "wallet",
type: "pubkey"
},
{
name: "to_wallet",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
}
]
}
},
{
name: "TrackerAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
type: "u8"
},
{
name: "asset_mint",
type: "pubkey"
},
{
name: "identity_account",
type: "pubkey"
},
{
name: "total_amount",
type: "u64"
},
{
name: "issuances",
type: {
vec: {
defined: {
name: "Issuance"
}
}
}
},
{
name: "locks",
type: {
vec: {
defined: {
name: "Lock"
}
}
}
}
]
}
},
{
name: "UpdateAssetMetadataArgs",
type: {
kind: "struct",
fields: [
{
name: "name",
type: {
option: "string"
}
},
{
name: "symbol",
type: {
option: "string"
}
},
{
name: "uri",
type: {
option: "string"
}
}
]
}
},
{
name: "WalletIdentity",
type: {
kind: "struct",
fields: [
{
name: "identity_account",
type: "pubkey"
},
{
name: "wallet",
type: "pubkey"
}
]
}
}
];
var AssetController$1 = {
address: address$2,
metadata: metadata$2,
instructions: instructions$2,
accounts: accounts$2,
events: events$2,
errors: errors$2,
types: types$2
};
var AssetControllerIdl = /*#__PURE__*/Object.freeze({
__proto__: null,
address: address$2,
metadata: metadata$2,
instructions: instructions$2,
accounts: accounts$2,
events: events$2,
errors: errors$2,
types: types$2,
'default': AssetController$1
});
var address$1 = "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA";
var metadata$1 = {
name: "identity_registry",
version: "0.0.1",
spec: "0.1.0",
description: "The Identity Registry Program (IRP) manages the configurable issuance and tracking of on-chain identities to enable on-chain transaction permissioning.",
repository: "https://github.com/bridgesplit/rwa"
};
var instructions$1 = [
{
name: "add_level_to_identity_account",
docs: [
"add level to identity account"
],
discriminator: [
102,
204,
64,
169,
252,
177,
192,
232
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "signer",
signer: true
},
{
name: "identity_registry"
},
{
name: "identity_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "identity_registry"
},
{
kind: "account",
path: "identity_account.owner",
account: "IdentityAccount"
}
]
}
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "policy_engine",
writable: true
},
{
name: "tracker_account"
},
{
name: "asset_mint",
relations: [
"identity_registry"
]
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "levels",
type: "bytes"
},
{
name: "expiries",
type: {
vec: "i64"
}
},
{
name: "enforce_limits",
type: "bool"
}
]
},
{
name: "attach_wallet_to_identity",
docs: [
"attach token account to identity account"
],
discriminator: [
61,
129,
252,
190,
8,
202,
179,
90
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "authority",
signer: true
},
{
name: "identity_account",
writable: true
},
{
name: "identity_registry",
relations: [
"identity_account"
]
},
{
name: "asset_mint",
relations: [
"identity_registry"
]
},
{
name: "wallet_identity",
writable: true,
pda: {
seeds: [
{
kind: "arg",
path: "wallet"
},
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "wallet",
type: "pubkey"
}
]
},
{
name: "change_country",
discriminator: [
208,
227,
224,
246,
9,
254,
62,
179
],
accounts: [
{
name: "payer",
signer: true
},
{
name: "signer",
signer: true
},
{
name: "identity_registry"
},
{
name: "identity_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "identity_registry"
},
{
kind: "account",
path: "identity_account.owner",
account: "IdentityAccount"
}
]
}
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "policy_engine",
writable: true
},
{
name: "tracker_account"
},
{
name: "asset_mint",
relations: [
"identity_registry"
]
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "new_country",
type: "u8"
},
{
name: "enforce_limits",
type: "bool"
}
]
},
{
name: "create_identity_account",
docs: [
"identity functions",
"create identity account"
],
discriminator: [
82,
240,
35,
129,
113,
134,
116,
70
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "signer",
signer: true
},
{
name: "identity_registry"
},
{
name: "identity_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "identity_registry"
},
{
kind: "arg",
path: "owner"
}
]
}
},
{
name: "wallet_identity",
writable: true,
pda: {
seeds: [
{
kind: "arg",
path: "owner"
},
{
kind: "account",
path: "identity_registry.asset_mint",
account: "IdentityRegistryAccount"
}
]
}
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "tracker_account",
writable: true
},
{
name: "asset_mint"
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "owner",
type: "pubkey"
},
{
name: "level",
type: "u8"
},
{
name: "expiry",
type: "i64"
},
{
name: "country",
type: "u8"
}
]
},
{
name: "create_identity_registry",
docs: [
"registry functions",
"create identity registry"
],
discriminator: [
180,
3,
39,
22,
183,
212,
39,
209
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "signer",
signer: true
},
{
name: "asset_mint"
},
{
name: "identity_registry_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "asset_mint"
}
]
}
},
{
name: "system_program",
address: "11111111111111111111111111111111"
}
],
args: [
{
name: "authority",
type: "pubkey"
}
]
},
{
name: "detach_wallet_from_identity",
docs: [
"detach token account from identity account"
],
discriminator: [
166,
70,
236,
254,
166,
116,
201,
50
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "authority",
writable: true,
signer: true
},
{
name: "wallet_identity",
writable: true
},
{
name: "identity_account",
writable: true,
relations: [
"wallet_identity"
]
},
{
name: "identity_registry",
relations: [
"identity_account"
]
},
{
name: "token_account",
pda: {
seeds: [
{
kind: "account",
path: "wallet_identity.wallet",
account: "WalletIdentity"
},
{
kind: "const",
value: [
6,
221,
246,
225,
238,
117,
143,
222,
24,
66,
93,
188,
228,
108,
205,
218,
182,
26,
252,
77,
131,
185,
13,
39,
254,
189,
249,
40,
216,
161,
139,
252
]
},
{
kind: "account",
path: "asset_mint"
}
],
program: {
kind: "const",
value: [
140,
151,
37,
143,
78,
36,
137,
241,
187,
61,
16,
41,
20,
142,
13,
131,
11,
90,
19,
153,
218,
255,
16,
132,
4,
142,
123,
216,
219,
233,
248,
89
]
}
}
},
{
name: "asset_mint",
relations: [
"identity_registry"
]
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
]
},
{
name: "remove_level_from_identity_account",
docs: [
"remove level from identity account"
],
discriminator: [
194,
231,
187,
54,
197,
136,
170,
55
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "signer",
signer: true
},
{
name: "identity_registry"
},
{
name: "identity_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "identity_registry"
},
{
kind: "account",
path: "identity_account.owner",
account: "IdentityAccount"
}
]
}
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "policy_engine",
writable: true
},
{
name: "tracker_account"
},
{
name: "asset_mint"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "levels",
type: "bytes"
},
{
name: "enforce_limits",
type: "bool"
}
]
},
{
name: "revoke_identity_account",
docs: [
"revoke user identity account by closing account"
],
discriminator: [
77,
88,
182,
61,
235,
49,
2,
137
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "signer",
signer: true
},
{
name: "identity_registry",
pda: {
seeds: [
{
kind: "account",
path: "identity_registry.asset_mint",
account: "IdentityRegistryAccount"
}
]
}
},
{
name: "identity_account",
writable: true,
pda: {
seeds: [
{
kind: "account",
path: "identity_registry"
},
{
kind: "account",
path: "identity_account.owner",
account: "IdentityAccount"
}
]
},
relations: [
"wallet_identity"
]
},
{
name: "wallet_identity",
writable: true,
pda: {
seeds: [
{
kind: "arg",
path: "owner"
},
{
kind: "account",
path: "identity_registry.asset_mint",
account: "IdentityRegistryAccount"
}
]
}
},
{
name: "policy_engine_program",
address: "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2"
},
{
name: "tracker_account",
writable: true
},
{
name: "asset_mint"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "owner",
type: "pubkey"
}
]
}
];
var accounts$1 = [
{
name: "IdentityAccount",
discriminator: [
194,
90,
181,
160,
182,
206,
116,
158
]
},
{
name: "IdentityRegistryAccount",
discriminator: [
154,
254,
118,
4,
115,
36,
125,
78
]
},
{
name: "WalletIdentity",
discriminator: [
101,
142,
55,
104,
168,
77,
57,
85
]
}
];
var events$1 = [
{
name: "AddLevelsToIdentityEvent",
discriminator: [
106,
66,
2,
157,
98,
27,
247,
14
]
},
{
name: "AttachWalletToIdentityEvent",
discriminator: [
16,
40,
24,
145,
131,
77,
48,
72
]
},
{
name: "ChangeCountryEvent",
discriminator: [
157,
201,
26,
238,
229,
239,
123,
18
]
},
{
name: "CreatedIdentityEvent",
discriminator: [
86,
208,
163,
74,
106,
170,
105,
5
]
},
{
name: "DetachWalletFromIdentityEvent",
discriminator: [
198,
117,
190,
61,
34,
148,
12,
148
]
},
{
name: "RemoveLevelsFromIdentityEvent",
discriminator: [
41,
204,
239,
52,
86,
107,
45,
212
]
},
{
name: "RemovedIdentityEvent",
discriminator: [
210,
181,
206,
189,
126,
87,
18,
55
]
}
];
var errors$1 = [
{
code: 6000,
name: "LevelAlreadyPresent",
msg: "Identity level has already been attached to user"
},
{
code: 6001,
name: "MaxLevelsExceeded",
msg: "Number of levels that can be attached to user has been exceeded"
},
{
code: 6002,
name: "LevelNotFound",
msg: "Level to be removed not found"
},
{
code: 6003,
name: "UnauthorizedSigner",
msg: "Unauthorized signer"
},
{
code: 6004,
name: "LimitReached",
msg: "Identity limit reached"
},
{
code: 6005,
name: "TokenAccountAlreadyInitialized",
msg: "Token account is already initialized"
},
{
code: 6006,
name: "IdentityCreationRequired",
msg: "Identity creation must be enforced for this feature"
},
{
code: 6007,
name: "MultipleWalletsNotAllowed",
msg: "Multiple wallets are not allowed"
},
{
code: 6008,
name: "WalletAlreadyInUse",
msg: "Wallet already in use"
},
{
code: 6009,
name: "InvalidLevel",
msg: "Invalid level"
},
{
code: 6010,
name: "TokenAccountNotEmpty",
msg: "Token account is not empty"
}
];
var types$1 = [
{
name: "AddLevelsToIdentityEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "levels",
type: "bytes"
},
{
name: "expiries",
type: {
vec: "i64"
}
},
{
name: "sender",
type: "pubkey"
}
]
}
},
{
name: "AttachWalletToIdentityEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "wallet",
type: "pubkey"
},
{
name: "sender",
type: "pubkey"
}
]
}
},
{
name: "ChangeCountryEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "country",
type: "u8"
},
{
name: "sender",
type: "pubkey"
}
]
}
},
{
name: "CreatedIdentityEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "kind",
type: "u8"
},
{
name: "sender",
type: "pubkey"
},
{
name: "owner",
type: "pubkey"
}
]
}
},
{
name: "DetachWalletFromIdentityEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "wallet",
type: "pubkey"
},
{
name: "sender",
type: "pubkey"
}
]
}
},
{
name: "IdentityAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
docs: [
"version of the account"
],
type: "u8"
},
{
name: "identity_registry",
docs: [
"identity registry to which the account belongs"
],
type: "pubkey"
},
{
name: "owner",
docs: [
"owner of the identity account"
],
type: "pubkey"
},
{
name: "num_wallets",
docs: [
"number of wallets attached to this identity account"
],
type: "u16"
},
{
name: "country",
docs: [
"country code of the user"
],
type: "u8"
},
{
name: "levels",
type: {
vec: {
defined: {
name: "IdentityLevel"
}
}
}
}
]
}
},
{
name: "IdentityLevel",
type: {
kind: "struct",
fields: [
{
name: "level",
type: "u8"
},
{
name: "expiry",
type: "i64"
}
]
}
},
{
name: "IdentityRegistryAccount",
type: {
kind: "struct",
fields: [
{
name: "version",
type: "u8"
},
{
name: "bump",
type: "u8"
},
{
name: "asset_mint",
docs: [
"corresponding asset mint"
],
type: "pubkey"
},
{
name: "authority",
docs: [
"authority to manage the registry"
],
type: "pubkey"
}
]
}
},
{
name: "RemoveLevelsFromIdentityEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "levels",
type: "bytes"
},
{
name: "sender",
type: "pubkey"
}
]
}
},
{
name: "RemovedIdentityEvent",
type: {
kind: "struct",
fields: [
{
name: "identity",
type: "pubkey"
},
{
name: "mint",
type: "pubkey"
},
{
name: "kind",
type: "u8"
},
{
name: "sender",
type: "pubkey"
},
{
name: "owner",
type: "pubkey"
}
]
}
},
{
name: "WalletIdentity",
type: {
kind: "struct",
fields: [
{
name: "identity_account",
type: "pubkey"
},
{
name: "wallet",
type: "pubkey"
}
]
}
}
];
var IdentityRegistry$1 = {
address: address$1,
metadata: metadata$1,
instructions: instructions$1,
accounts: accounts$1,
events: events$1,
errors: errors$1,
types: types$1
};
var IdentityRegistryIdl = /*#__PURE__*/Object.freeze({
__proto__: null,
address: address$1,
metadata: metadata$1,
instructions: instructions$1,
accounts: accounts$1,
events: events$1,
errors: errors$1,
types: types$1,
'default': IdentityRegistry$1
});
var address = "FsE8mCJyvgMzqJbfHbJQm3iuf3cRZC6n2vZi1Q8rQCy2";
var metadata = {
name: "policy_engine",
version: "0.0.1",
spec: "0.1.0",
description: "The Policy Registry Program (PRP) enables the creation of policies that can be used to control the flow of funds in a programmatic way."
};
var instructions = [
{
name: "add_lock",
discriminator: [
242,
102,
183,
107,
109,
168,
82,
140
],
accounts: [
{
name: "payer",
writable: true,
signer: true
},
{
name: "signer",
signer: true
},
{
name: "asset_mint",
relations: [
"policy_engine",
"identity_registry"
]
},
{
name: "policy_engine",
writable: true
},
{
name: "identity_registry",
relations: [
"identity_account"
]
},
{
name: "identity_account",
relations: [
"tracker_account"
]
},
{
name: "tracker_account",
writable: true
},
{
name: "system_program",
address: "11111111111111111111111111111111"
},
{
name: "event_authority",
pda: {
seeds: [
{
kind: "const",
value: [
95,
95,
101,
118,
101,
110,
116,
95,
97,
117,
116,
104,
111,
114,
105,
116,
121
]
}
]
}
},
{
name: "program"
}
],
args: [
{
name: "amount",
type: "u64"
},
{
name: "release_timestamp",
type: "i